From 334ce959350a63ec653f16eb93d6478fd08c3219 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 24 Aug 2026 06:10:18 +0000 Subject: [PATCH] =?UTF-8?q?ADR-064:=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0=20=D1=87=D0=B0=D1=82=D0=B0=20?= =?UTF-8?q?=E2=80=94=20div=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Убирает системную панель навигации по полям над клавиатурой на iOS (Safari и Chrome): она держится на элементе
, а не на textarea как таковом. Дешёвый вариант вместо contenteditable — сначала пробуем его, дороже (переписывать paste/placeholder/лимит руками) не потребовалось. Отправка теперь идёт по click на кнопке и по keydown Enter вместо события submit — форму убрали, role="form" держит ту же семантику для скринридера. --- docs/decisions/064-composer-not-form.md | 28 +++++++++++++++++++++++++ docs/open-questions.md | 1 - web/js/ui/chat.js | 19 ++++++++++------- 3 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 docs/decisions/064-composer-not-form.md diff --git a/docs/decisions/064-composer-not-form.md b/docs/decisions/064-composer-not-form.md new file mode 100644 index 0000000..172c7b2 --- /dev/null +++ b/docs/decisions/064-composer-not-form.md @@ -0,0 +1,28 @@ +# ADR-064: строка ввода — div, а не form + +Уточняет `docs/ui.md`, «Доступность»: `form` в списке семантики держит `role="form"`, а не элемент ``, — для строки ввода чата. + +## Контекст + +Тест с реальными пользователями (iPhone, Safari и Chrome): над клавиатурой при фокусе в строке ввода всплывает системная панель навигации между полями — «‹ ›» и «готово», около 50 px. Полю переходить некуда — оно на экране одно, — а место съедено. + +Панель — не наша вёрстка, это поведение WebKit для полей, лежащих внутри ``. Строка ввода была оформлена именно так: `` с `