WC-WYSIWYG
Демонстрация возможностей веб-компонента
Демонстрация и обзор возможностей веб-компонента wc-wysiwyg
а
ц
WYSIWYG (произносится [ˈwɪziwɪɡ], является аббревиатурой от англ. What You See Is What You Get, «что видишь, то и получишь») — свойство прикладных программ или веб-интерфейсов, в которых содержание отображается в процессе редактирования и выглядит максимально близко похожим на конечную продукцию, которая может быть печатным документом, веб-страницей или презентацией. В настоящее время для подобных программ также широко используется понятие «визуальный редактор».
Редактор вдохновлен HTML5 идеями семантики веба и старается максимально их поддерживать. В основе интерактивности редактора лежит нативная javascript реализация с применением веб-компонентов и браузерных API. Данный веб-компонент не имеет зависимостей в package.json и не требует дополнительной установки каких либо библиотек и javascript фреймворков.
package.json
Текстовое базовое форматирование основано на HTML5 тегах, вместо CSS стилей. Базовая палитра цветов взята из materialui.co
b
u
s
i
q
цитата
small
sup
sub
mark
strong
samp
kbd
del
ins
code
код
var
dfn
abbr
wc-time
is="wc-time"
a is="wc-a"
Использование аббревиатур в статьях и комментариях бывает уместно и позволяет подсказать пользователям, что такое HTML или как расшифровать ИМХО или Синхрофазотрон
В блочные элементы входят все заголовки, а также:
details
pre
Strike while the iron is hot
содержимое file.txt
window.customElements.define('wc-wysiwyg', WCWYSIWYG);
is="wc-pre"
audio
video
figure
blockquote
для большихцитат
Для спойлеров используется тег details
Ура, спойлерить в комментариях можно! Но скрыть одно или пару можно и аббривеатурой.
Можно спрятать код в спойлер, если его чтение опционально или затрудняет статью
//Все знакомые редатору теги const allTags = [ { tag: 'h1' }, { tag: 'h2' }, { tag: 'h3' }, { tag: 'h4' }, { tag: 'h5' }, { tag: 'h6' }, { tag: 'span' }, { tag: 'mark' }, { tag: 'small' }, { tag: 'dfn' }, { tag: 'a'}, { tag: 'q'}, { tag: 'b'}, { tag: 'i'}, { tag: 'u'}, { tag: 's'}, { tag: 'sup'}, { tag: 'sub'}, { tag: 'kbd'}, { tag: 'abbr'}, { tag: 'strong'}, { tag: 'code'}, { tag: 'samp'}, { tag: 'del'}, { tag: 'ins'}, { tag: 'var'}, { tag: 'ul'}, { tag: 'ol'}, { tag: 'pre'}, { tag: 'time'}, { tag: 'img'}, { tag: 'audio'}, { tag: 'video'}, { tag: 'blockquote'}, ] as WCWYSIWYGTag[];
Используем тег q для коротких inline цитат
Есть такая фраза Я не слишком богат, чтобы покупать вещи дважды - вы слышали?
Я не слишком богат, чтобы покупать вещи дважды
Используем тег blockquote для блока цитаты
БлокЦитаты - лучше использовать отдельно Он лучше подходит для цитат и выдержек на несколько строк
Для интеграции редактора на страницу достаточно в HTML разместить разметку
< wc-wysiwyg id="wc-demo-comment" data-allow-tags="strong,u,i,b,q,blockquote,a,img,pre" data-storage="demo-comment" data-hide-bottom-actions="1" is="wc-wysiwyg" required minlength="5" maxlength="500"> < textarea>< /textarea>< wc-wysiwyg>
Подключить модуль компонента на странице или импортировать его из javaScript и вызвать метод define. Пример подключения на этой странице:
javaScript
define
import('/wp-content/themes/wl/ts/components/web/wc-editor.js').then(esm => { esm.define(); });
Попытки вставить javaScript и прочие пакости как value для этого веб-компонента должны обрезаться и пресекаться на стороне сервера, список доступных тегов для каждого ресурса может быть индивидуален.
В будущем автор возможно добавит выравнивание элементов кнопками, но на уровне CSS классов это доступно уже сейчас
Текст по центру с применением CSS класса -text-center
-text-center
Текст по правому краю с применением CSS класса -text-right
-text-right
Текст по левому краю с применением CSS класса -text-left
-text-left
А что если прямо в редакторе:
все кроме скрытого содержания спойлеров вернется на место, но будет вставлено в виде форматированного инлайн стилями html
🔥 Cписок возможностей textarea is="wc-wysiwyg" или
textarea is="wc-wysiwyg"
data-content-class
window.localStorage
h1-6
a
ul > li
/
required
minlength
maxlength
filtertags
colorPicker
Изображение c описанием будет вставлено как figure->img+figcaption также описание картинки будет продублировано в alt="" аттрибут img
figure->img+figcaption
alt=""
img
custom-elements
figcaption
Изображение без описания будет вставлено как img
А что если редактор прямо в редактор вставить? wc-wysiwyg же расширяет нативный тег textarea и сам по себе поддерживает веб-компоненты. Давайте попробуем.
wc-wysiwyg
textarea
Напоминаю, что автор не использует JS фреймворков, все это демонстрация нативных возможностей браузера.
wc-wysiwyg внутри wc-wysiwyg - возможно, но бесполезно также как и верстать `textarea` внутри `textarea` Пример просто для демонстрации возможностей
Предварительный просмотр
Пример textarea как формы для комментариев
Example
< wc-wysiwyg id="wc-demo-comment" data-allow-tags="strong,u,i,b,q,blockquote,a,img,pre" data-storage="demo-comment" data-hide-bottom-actions="1" is="wc-wysiwyg" required minlength="5" maxlength="500"> < textarea>< /textarea> < /wc-wysiwyg>