Перейти к основному содержимому
Версия: Next

Настройка боковой панели

При разработке интерфейсов часто возникает необходимость создать боковую панель, позволяющую пользователям быстро получать доступ к настройкам или дополнительным действиям.

Для этого можно воспользоваться соответствующим методом API редактора, настроив нужные параметры.

Возможности боковой панели​

  • Создание вкладок: Боковая панель поддерживает создание собственных вкладок, позволяющих организовывать контент и функционал.
  • Динамическое обновление: Панель может обновляться динамически в зависимости от состояния документа или действий пользователя.
  • Интеграция компонентов: Возможность интеграции интерактивных компонентов (полей ввода, кнопок, текстовых блоков) для взаимодействия с редактором.

Создание вкладки​

Следующий фрагмент демонстрирует, как создать новую боковую вкладку:

function registerSidebarPanel() {
editorApi.ui.sidebar.addTab({
id: 'plugin1:ribbon:settings', // Уникальный идентификатор вкладки
title: 'Настройки', // Заголовок вкладки
resizable: true, // Возможность изменять ширину вручную
icon: 'Settings', // Имя иконки для представления вкладки
});
}

Создание контента вкладки​

Для наполнения содержимого боковой вкладки используются разнообразные компоненты UI, предоставляемые API редактора.

Эти компоненты позволяют структурировать контент и обеспечивать взаимодействие с пользователем.

Основные типы компонентов, доступные для использования​

  • Обычные текстовые блоки: Простое статичное текстовое содержимое.
  • HTML-размеченный текст: Блоки текста с поддержкой HTML-разметки для форматирования.
  • Поля ввода: Компоненты для взаимодействия с пользователем, позволяющие вводить текст или выбирать опции.
  • Кнопки: Элементы для инициирования определенных действий.

Ориентация блоков внутри вкладки​

При проектировании структуры вкладки вы можете определить ориентацию элементов, выбирая горизонтальное или вертикальное расположение. Это особенно актуально для оптимизации пространства и повышения удобочитаемости интерфейса.

Пример настройки расположения текстовых блоков вертикально:

function getSettingsPanelContent() {
return [
{
type: 'controls', // Контейнер для элементов
orientation: 'vertical', // Расположение элементов сверху вниз
items: [
{
id: 'demo-plugin:sidebar:textblock1',
type: 'textblock', // Обычный текстовый блок
content: 'Простой текстовый блок',
},
{
id: 'demo-plugin:sidebar:textblock2',
type: 'textblock', // HTML-текстовый блок
content: '<h2>Форматированный HTML-текст</h2><p>Можно применять стили.</p>',
contentType: 'html', // Уточняет, что контент форматирован HTML
styles: { // CSS-стили для оформления
padding: 10,
height: 300,
border: '2px solid lightgrey',
borderRadius: 4,
backgroundColor: 'lightcyan',
overflow: 'auto',
},
},
],
},
];
}

function registerSidebarPanel() {
editorApi.ui.sidebar.addTab({
id: 'plugin1:ribbon:settings', // Уникальный идентификатор вкладки
title: 'Настройки', // Заголовок вкладки
icon: 'Settings', // Имя иконки
content: getSettingsPanelContent(), // Заполнение вкладки элементами
});
}

Использование поля ввода​

Поля ввода являются важным элементом пользовательского интерфейса, позволяющим собирать вводимую пользователем информацию.

Рассмотрим подробнее реализацию поля ввода с обработчиками событий на примере использования редактора API. Пример создания поля ввода:

function getSettingsPanelContent() {
// Функция обратного вызова для отслеживания изменений
const onInput = editorApi.createCallback(
(value) => console.log(`Пользователь ввёл: ${value}`)
);

// Обработчик события нажатия клавиши Enter
const onEnter = editorApi.createCallback(
() => console.log('Нажали клавишу Enter')
);

return [
{
type: 'controls', // Контейнер для элементов
items: [
{
id: 'demo-plugin:sidebar:input', // Уникальный идентификатор поля
type: 'input', // Тип компонента — поле ввода
title: 'Введите команду', // Надпись над полем
placeholder: 'Введите команду и нажмите Enter', // Вспомогательная подсказка
onInput, // Функция обработки изменения текста
onEnter: doSend, // Функция обработки нажатия Enter
},
],
},
];
}

Изменение внешнего вида кнопки​

Иногда необходимо изменить внешний вид кнопки, чтобы она соответствовала специфическим требованиям дизайна или функционала.

Интерфейсы API предоставляют широкий спектр возможностей для кастомизации кнопок, включая удаление подписей, управление состоянием активности и преобразование в гиперссылки.

Пример использования кнопки без надписи и с проверкой состояния активности (disabled):

function getSettingsPanelContent() {
let currentInputValue = ''; // Текущее состояние ввода пользователя

const doSend = () => {
console.log('Данные отправлены!');
};

return [
{
type: 'controls', // Контейнер для элементов
items: [
{
id: 'demo-plugin:sidebar:button:send', // Уникальный идентификатор кнопки
type: 'button', // Тип элемента — кнопка
variant: 'primary', // Внешний вид кнопки («первичный» вариант)
title: 'Отправить', // Скрытая подпись для всплывающего окна
icon: 'Sent', // Иконка рядом с кнопкой
disabled: !currentInputValue, // Доступность кнопки зависит от текущего ввода
onlyIcon: true, // Отображать только иконку без текста
onClick: doSend, // Функционал кнопки при нажатии
},
],
},
];
}