Рецепты
Редактор в форме
FormField, name для FormData, своя проверка обязательности и фокус на поле с ошибкой.
Редактор — поле формы, как TextControl: подпись, подсказка и ошибка из FormField, значение — в
FormData под name.
Нажмите «Create ticket» с пустым описанием — появится ошибка, и фокус уйдёт в Редактор. Напишите
текст и отправьте снова: ниже видно, что ушло в FormData.
Как устроено
- Имя — из подписи
FormField.contenteditableне связывается с<label for>, поэтомуFormFieldпубликует id подписи, а Редактор ссылается на неё черезaria-labelledby. Щелчок по подписи ставит фокус в Документ.aria-labelздесь не нужен. - Подсказка и ошибка уходят в
aria-describedby, ошибка ставитaria-invalidи красит рамку. - Значение в форме — HTML Документа в скрытом поле с
name. - Обязательность.
Formкита —noValidate, поэтому проверка — забота экрана:isEmpty()решает по правилу кита (атом и картинка — содержимое, пустой абзац — нет). В обычной<form>пропrequiredблокирует отправку пустого Документа сам, как нативное поле.