WriteBar
Компонент для создания поля ввода сообщений с поддержкой иконок действий.
Аналог строки ввода в мессенджерах и соцсетях. Принимает все свойства нативного <textarea>.
Режим работы
Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.
Для использования неконтролируемого режима достаточно просто не передавать value или передавать defaultValue, если
требуется задать значение по умолчанию.
Для контролируемого режима используйте связку свойств value/onChange для задания значения и его изменения.
// Неконтролируемое состояние
<WriteBar defaultValue="Текст" />;
// Контролируемое состояние
const [text, setText] = React.useState('Текст');
<WriteBar value={text} onChange={(event) => setText(event.target.value)} />;Основные элементы
before— элементы слева от поля ввода.after— элементы справа.inlineAfter— элементы поверх поля (актуально для iOS).
Использование иконок
Все боковые элементы рекомендуется оборачивать в WriteBarIcon.
Также для адаптирования размеров иконок стоит использовать компонент AdaptiveIconRenderer.
По правилам дизайн-системы в "regular"-режиме используются кнопки размером 28px, в "compact"-режиме — 24px.
Исключение: на платформе iOS допускается использование иконок размером 28px в "compact"-режиме.
WriteBarIcon
Компонент для создания иконок-кнопок внутри WriteBar. Обеспечивает стандартное поведение и доступность
для элементов управления в поле ввода сообщений.
Особенности поведения
- Наследует все свойства
<button>. - Автоматически адаптируется под платформы Android и iOS при использовании готовых пресетов.
Предустановленные режимы
Предустановленные типы кнопок в WriteBar для отрисовки иконки и установки текста кнопки в зависимости от платформы.
Если передать валидное значение для этого свойства, children игнорируются,
а для label по умолчанию используется текст на “ru_RU”.
attach— иконка прикрепления с текстом “Прикрепить файл”.send— иконка отправки с текстом “Отправить”.done— иконка подтверждения с текстом “Готово”.
Использование кастомных иконки
Отображение счётчика
Значение счётчика для кнопки. Например, для количества прикреплённых файлов.
Доступность (a11y)
Укажите текстовое описание одним из способов:
-
Через свойство
label:<WriteBarIcon label="Прикрепить файл"> <Icon24Attachment /> </WriteBarIcon> -
Через ARIA-атрибуты:
<WriteBarIcon aria-label="Отправить сообщение"> <Icon24Send /> </WriteBarIcon> -
С использованием VisuallyHidden:
<WriteBarIcon> <Icon24SmileOutline /> <VisuallyHidden>Эмодзи</VisuallyHidden> </WriteBarIcon> -
С использованием
idвaria-labelledby<VisuallyHidden id="write_bar_icon_voice">Записать голосовое сообщение</VisuallyHidden> <WriteBarIcon aria-labelledby="write_bar_icon_voice"> <Icon28VoiceOutline /> </WriteBarIcon>
Свойства и методы
WriteBar
| Свойство | Описание |
|---|---|
after | ReactNodeСодержимое, отображаемое справа от поля ввода. По умолчанию: - |
before | ReactNodeСодержимое, отображаемое слева от поля ввода. По умолчанию: - |
getRef | Ref<HTMLTextAreaElement>Deprecated: Since 7.9.0. Вместо этого используйте По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
inlineAfter | ReactNodeСодержимое, отображаемое поверх поля ввода (актуально для iOS). По умолчанию: - |
onHeightChange | VoidFunctionВызывается при смене высоты поля ввода. По умолчанию: - |
shadow | booleanДобавляет тень вокруг поля ввода. По умолчанию: false |
slotProps | { root?: (Omit<HTMLAttributes<HTMLDivElement>, "children"> & HasRootRef<HTMLDivElement> & HasDataAttribute); textArea?: (TextareaHTMLAttributes<...> & ... 1 more ... & HasDataAttribute) | undefined; } | undefinedСвойства, которые можно прокинуть внутрь компонента:
По умолчанию: - |
WriteBarIcon
| Свойство | Описание |
|---|---|
count | numberЗначение счётчика для кнопки. Например, для количества прикреплённых файлов. По умолчанию: - |
label | stringТекст кнопки. Необходим для ассистивных технологий. По умолчанию: - |
mode | "done" | "send" | "attach"Предустановленные типы кнопок в WriteBar для отрисовки иконки и установки текста кнопки в зависимости от платформы.
Если передать валидное значение для этого свойства, Валидные значения:
По умолчанию: - |