Перейти к основному содержимому

Конфигурация

Вы можете настроить внешний вид и поведение RichText с помощью следующих свойств:

  • menubar — показать или скрыть верхнюю строку меню
  • toolbar — настроить видимость панели инструментов и её кнопки
  • fullscreenMode — открыть редактор в полноэкранном режиме
  • layoutMode — переключиться между макетами "classic" и "document"
  • value — задать начальное HTML-содержимое
  • locale — применить объект локализации при инициализации
  • defaultStyles — задать стили по умолчанию для конкретных типов блоков
  • imageUploadUrl — задать конечную точку для загрузки изображений
  • triggers — включить @упоминания, #теги и пользовательские триггеры выпадающих списков (см. руководство Упоминания и теги)

Режимы макета

RichText поддерживает два режима макета для области редактирования:

  • "classic" — область редактирования занимает всю страницу

Редактор DHTMLX RichText в классическом режиме разметки

  • "document" — область редактирования имитирует страницу документа

Редактор DHTMLX RichText в режиме документа

Задайте свойство layoutMode при инициализации, чтобы выбрать режим:

const editor = new richtext.Richtext("#root", {
layoutMode: "document"
});

Связанный пример: RichText. Режимы документа и классический

Панель инструментов

Панель инструментов RichText группирует элементы управления в несколько блоков, которые можно настраивать.

Стандартные элементы управления панели инструментов

В панель инструментов RichText можно включить следующие кнопки и элементы управления:

КнопкаОписание
undoОтменяет последнее действие пользователя
redoПовторяет ранее отменённое действие
styleВыбирает стиль текста (например, заголовок, абзац, цитата)
font-familyИзменяет шрифт выделенного текста
font-sizeИзменяет размер выделенного текста
boldПрименяет полужирное форматирование к выделенному тексту
italicПрименяет курсивное форматирование к выделенному тексту
underlineПодчёркивает выделенный текст
strikeПрименяет зачёркивание
subscriptФорматирует текст как подстрочный
superscriptФорматирует текст как надстрочный
text-colorИзменяет цвет текста
background-colorИзменяет цвет фона (выделения) текста
alignЗадаёт выравнивание текста (по левому краю, по центру, по правому краю, по ширине)
indentУвеличивает отступ абзаца
outdentУменьшает отступ абзаца
line-heightИзменяет межстрочный интервал
quoteФорматирует текст как цитату
bulleted-listСоздаёт маркированный список
numbered-listСоздаёт нумерованный список
linkВставляет или редактирует гиперссылку
imageВставляет изображение
lineВставляет горизонтальную линию
clearУдаляет всё форматирование выделенного текста
printОткрывает диалог печати
fullscreenПереключает полноэкранный режим
modeПереключает между двумя режимами макета: classic и document
shortcutsОтображает список доступных сочетаний клавиш
separatorДобавляет визуальный разделитель между элементами управления

Используйте свойство toolbar, чтобы задать панель инструментов в виде массива строк с именами элементов управления:

new richtext.Richtext("#root", {
toolbar: [
"undo",
"redo",
"separator",
"style",
"separator",
"font-family",
"font-size",
"separator",
"bold",
"italic",
"underline",
"strike",
"separator",
"text-color",
"background-color",
"separator",
"align",
"line-height",
"outdent",
"indent",
"separator",
"bulleted-list",
"numbered-list",
"quote",
"separator",
"link",
"image",
"separator",
"clear",
"separator",
"fullscreen",
"mode"
// другие кнопки
],
// другие свойства конфигурации
});

Связанный пример: RichText. Полная панель инструментов

Добавление пользовательских элементов управления панели инструментов

Передайте объект в массив toolbar с одним из следующих полей:

  • type: string — обязательное. Тип элемента управления: "button", "richselect" или "colorpicker"
  • id: string — необязательное. Идентификатор пользовательского элемента управления; не должен совпадать с существующими идентификаторами
  • icon: string — необязательное. Имя CSS-класса иконки; используется совместно с меткой
  • label: string — необязательное. Метка кнопки; используется совместно с иконкой
  • tooltip: string — необязательное. Всплывающая подсказка при наведении; по умолчанию равна label, если не задана
  • css: string — необязательное. CSS-класс для элемента управления. Встроенные классы: wx-primary, wx-secondary
  • handler: () => void — необязательное. Калбэк, выполняемый при нажатии

В приведённом ниже примере сочетаются встроенные кнопки, предустановленный элемент управления типа richselect и две пользовательские кнопки:

new richtext.Richtext("#root", {
toolbar: [
// строковые записи соответствуют встроенным кнопкам
"bold",
"italic",
// предустановленные кнопки принимают только { type: "button", id: string }
{
type: "button",
id: "fullscreen",
},
// для предустановленных элементов richselect/colorpicker задайте соответствующий тип
// записи с несовпадающим типом игнорируются
{
type: "richselect", // type: "button" здесь будет проигнорирован
id: "mode",
},
// пользовательские кнопки (richselect/colorpicker не поддерживаются для пользовательских элементов)
{
type: "button",
id: "some",
label: "Some",
handler: () => {/* пользовательская логика */}
},
{
type: "button",
id: "other",
icon: "wxo-help",
label: "Other",
tooltip: "Some tooltip",
handler: () => {/* пользовательская логика */}
}
],
// другие свойства конфигурации
});

Связанный пример: RichText. Пользовательский элемент управления и упрощённая панель инструментов

Скрытие панели инструментов

Задайте свойству toolbar значение false, чтобы скрыть панель инструментов:

new richtext.Richtext("#root", {
toolbar: false,
// другие свойства конфигурации
});

Отображение строки меню

Включите свойство menubar, чтобы отобразить верхнюю строку меню над панелью инструментов. Значение по умолчанию — false.

new richtext.Richtext("#root", {
menubar: true
// другие свойства конфигурации
});

Связанный пример: RichText. Инициализация со строкой меню

Задание начального содержимого

Используйте свойство value, чтобы передать начальное HTML-содержимое в редактор при инициализации:

new richtext.Richtext("#root", {
value: "<h1>some value</h1>"
// другие свойства конфигурации
});

Чтобы заменить содержимое после инициализации или загрузить его в формате, отличном от HTML, с использованием пользовательского энкодера, вызовите метод setValue().

Связанный пример: RichText. Работа с различными форматами (Markdown, HTML, текст)

Задание начальной локали

Используйте свойство locale, чтобы применить объект локализации при инициализации:

new richtext.Richtext("#root", {
locale: richtext.locales.cn
// другие свойства конфигурации
});

Подробности и динамическое переключение локали с помощью setLocale() см. в руководстве Локализация.

Запуск в полноэкранном режиме

Задайте свойству fullscreenMode значение true, чтобы редактор открывался в полноэкранном режиме при инициализации. Значение по умолчанию — false.

new richtext.Richtext("#root", {
fullscreenMode: true
// другие свойства конфигурации
});

Настройка вставки изображений

RichText поддерживает два режима вставки изображений через панель инструментов, строку меню, вставку из буфера или перетаскивание. Режим выбирается автоматически на основе свойства imageUploadUrl.

Загрузка изображений на сервер

Передайте URL в свойство imageUploadUrl, чтобы загружать каждое вставляемое изображение на ваш сервер. RichText отправляет файл в формате multipart/form-data (имя поля upload) и вставляет URL, возвращённый сервером:

new richtext.Richtext("#root", {
imageUploadUrl: "https://example.com/upload"
// другие свойства конфигурации
});

Вставка изображений в строку как base64

Не задавайте imageUploadUrl (или задайте ему пустую строку), чтобы встраивать изображения непосредственно в содержимое документа в виде data URL в формате base64. Сервер при этом не требуется:

new richtext.Richtext("#root", {
// imageUploadUrl не задан, изображения вставляются в строку
// другие свойства конфигурации
});

Встроенные изображения размером больше 1024×800 отображаются в уменьшенном виде (атрибуты width/height ограничены, чтобы вписаться в эти пределы), однако встроенные байты представляют собой исходный файл в полном разрешении — клиент не уменьшает и не перекодирует его.

Примечание

Встроенные (base64) изображения не сохраняются при встроенном экспорте в форматы DOCX / PDF. Если вы используете экспорт, укажите imageUploadUrl, чтобы изображения ссылались на внешний ресурс.

Полный контракт запроса/ответа, который должна реализовывать конечная точка загрузки, а также подробности резервного варианта со встроенными изображениями см. в разделе Работа с сервером.

Настройка стилей по умолчанию

Используйте свойство defaultStyles, чтобы задать стили по умолчанию для каждого типа блока.

Свойство defaultStyles имеет следующую сигнатуру типа:

defaultStyles?: boolean | {
"*"?: { // применяется ко всем блокам; задаёт общие свойства для каждого блока
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
p?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
blockquote?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
h1?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
h2?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
h3?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
h4?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
h5?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
},
h6?: {
"font-family"?: string; // "Roboto"| "Arial" | "Georgia" | "Tahoma" | "Times New Roman" | "Verdana"
"font-size"?: string; // "12px" | "14px" | "16px" | "18px" | "20px" | "24px" | "28px" | "32px" | "36px"
color?: string;
background?: string;
}
};

Свойство defaultStyles не применяет CSS к затронутым блокам. Применяйте соответствующие CSS-стили отдельно:

index.html
<div id="root"></div>
index.js
const editor = new richtext.Richtext("#root", {
defaultStyles: {
h2: {
"font-family": "Roboto",
"font-size": "28px",
color: "purple",
background: "#FFC0CB"
}
}
});
index.css
#root h2 {
font-family: Roboto;
font-size: 28px;
color: purple;
background: #FFC0CB;
}

В этом примере все блоки h2 используют семейство шрифтов "Roboto" размером 28px с фиолетовым текстом на розовом фоне. Соответствующее CSS-правило применяет те же значения к отображаемым элементам h2.

Связанный пример: RichText. Изменение значения по умолчанию для типографики (шрифт, размер шрифта и т.д.)