Skip to content

SHtmlEditor

Визуальный HTML-редактор.

В чем отличие от аналогов?

В отличие от популярных библиотек компонентов для Vue3:

  1. Сразу используем самый удобный TinyMCE. Все остальные редакторы по юзабилити сильно хуже.
  2. Поддержка ембеддинга видео из сервиса Kinescope, который в моменте является наиболее удобной заменой блокируемого YouTube

Базовый пример

<SHtmlEditor v-model="content" upload-url="/image/upload" />

Плейсхолдер

<SHtmlEditor v-model="content" upload-url="/image/upload" placeholder="Введите контент" />

Высота редактора

По умолчанию высота равна 300px. Изменить её можно пропом height — например, увеличить до 500px:

<SHtmlEditor v-model="content" upload-url="/image/upload" :height="500" />

Расширяемость

Конфигурацию TinyMCE можно глубоко переопределить пропом init (глубокий merge в дефолты). Поле setup композируется с библиотечным (вызывается после него и не затирает обёртку картинок), а plugins объединяются с базовыми.

<SHtmlEditor
    v-model="content"
    upload-url="/image/upload"
    :plugins="['wordcount']"
    toolbar="blocks | bold italic | link image | fullscreen code"
    :header-offset="60"
    :init="{
        setup(editor) {
            // напр. кастомная кнопка «вставить шаблон ответа техподдержки»
            editor.ui.registry.addButton('reply', {
                text: 'Шаблон',
                onAction: () => editor.insertContent('<p>Здравствуйте! </p>'),
            });
        },
    }"
    @init="onEditorInit"
/>
  • header-offset (или CSS-переменная --s-header-height) задаёт смещение шапки для корректного fullscreen.
  • content-style добавляется к базовым стилям контента, content-css подключает внешние стили.
  • Локаль интерфейса берётся из словаря (htmlEditor.language); язык можно задать и явно через :init="{ language, language_url }".

Интерфейс компонента

Свойства (Props)

НазваниеТипПо умолчаниюОписание
v-modelstringundefinedHTML-содержимое редактора.
upload-urlstringundefinedURL для загрузки изображений на сервер.
placeholderstring''Текст-заполнитель, когда редактор пуст.
heightnumber300Высота редактора, px.
mediabooleanfalseВключить плагин медиа (видео-эмбеды).
pluginsstring[][]Доп. плагины TinyMCE (объединяются с базовыми).
toolbarstring(дефолтный)Переопределение тулбара.
menubarstring | booleanfalseМеню-бар TinyMCE.
content-stylestringundefinedДоп. CSS контента (добавляется к базовому).
content-cssstring | string[]undefinedВнешние CSS контента (content_css).
header-offsetnumberundefinedСмещение шапки для fullscreen, px.
initobjectundefinedГлубокий merge в конфигурацию TinyMCE (наивысший приоритет).

События (Events)

НазваниеПараметрыОписание
changeContent-Вызывается при любом изменении содержимого редактора.
initeditorИнстанс TinyMCE готов — для регистрации кастомных плагинов/кнопок.