Olddevs UI3.38.0
Рецепты

Редактор в форме

FormField, name для FormData, своя проверка обязательности и фокус на поле с ошибкой.

Редактор — поле формы, как TextControl: подпись, подсказка и ошибка из FormField, значение — в FormData под name.

What happened and what you expected.

Нажмите «Create ticket» с пустым описанием — появится ошибка, и фокус уйдёт в Редактор. Напишите текст и отправьте снова: ниже видно, что ушло в FormData.

Как устроено

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

На этой странице