fix(tradein/v2): a11y P3b — клавиатурная форма 01 (#2062) #2078

Merged
lekss361 merged 1 commit from fix/tradein-v2-a11y-form into main 2026-06-28 18:58:35 +00:00
Owner

CRITICAL-доступность, часть 2 (#2062 P3) — закрывает headline аудита: «вся интерактивность = click-only <div>, с клавиатуры/скринридера оценку завершить нельзя». Теперь форму 01 можно полностью пройти с клавиатуры. 0 визуальных изменений (Tailwind preflight в tradein-mvp не подключён → UA-chrome кнопок сброшен явно; code-reviewer проверил покрытие). next build зелёный, tsc чисто.

Изменения (ParamsPanel)

  • Dd-дропдаун (КОМНАТ/ТИП/РЕМОНТ) + РАДИУС: trigger <div><button role=combobox aria-haspopup=listbox aria-expanded aria-controls aria-activedescendant aria-label>; панель role=listbox, опции role=option/aria-selected + active-highlight. Клавиши ↑↓/Home/End/Enter/Space/Esc/Tab (общий comboKeyDown, паттерн aria-activedescendant — фокус остаётся на кнопке).
  • БАЛКОНrole=radiogroup + два <button role=radio aria-checked> (roving tabindex + стрелки + Space/Enter); tri-state (null = ни один не выбран) сохранён.
  • Инпуты: <label htmlFor>/id; aria-invalid + aria-describedby на ошибках адреса/площади.
  • Кнопки зума карты: <div><button aria-label>, «−» реально disabled на полу зума.

Мышиный поток идентичен прежнему; клавиатура аддитивна. code-reviewer ⚠️ (UA-chrome покрыт, keyboard/mouse корректны; 2 пиксельные заметки сведены к inherit для строгой паритетности).

Контекст P3

P3a (#2076, смержен): нативные контролы вне формы (nav/Подробнее/СВОДКА/оверлей-диалог/aria-live). Этот PR (P3b) — форма 01. Вместе закрывают CRITICAL-a11y из #2062.

Прод-QA (клавиатурное прохождение оценки + axe) — после деплоя. Дочерняя к #2036.

CRITICAL-доступность, часть 2 (#2062 P3) — закрывает **headline аудита**: «вся интерактивность = click-only `<div>`, с клавиатуры/скринридера оценку завершить нельзя». Теперь форму 01 можно полностью пройти с клавиатуры. **0 визуальных изменений** (Tailwind preflight в `tradein-mvp` не подключён → UA-chrome кнопок сброшен явно; code-reviewer проверил покрытие). `next build` зелёный, `tsc` чисто. ## Изменения (ParamsPanel) - **Dd-дропдаун** (КОМНАТ/ТИП/РЕМОНТ) **+ РАДИУС**: trigger `<div>`→`<button role=combobox aria-haspopup=listbox aria-expanded aria-controls aria-activedescendant aria-label>`; панель `role=listbox`, опции `role=option`/`aria-selected` + active-highlight. Клавиши ↑↓/Home/End/Enter/Space/Esc/Tab (общий `comboKeyDown`, паттерн `aria-activedescendant` — фокус остаётся на кнопке). - **БАЛКОН** → `role=radiogroup` + два `<button role=radio aria-checked>` (roving tabindex + стрелки + Space/Enter); tri-state (`null` = ни один не выбран) сохранён. - **Инпуты**: `<label htmlFor>`/`id`; `aria-invalid` + `aria-describedby` на ошибках адреса/площади. - **Кнопки зума карты**: `<div>`→`<button aria-label>`, «−» реально `disabled` на полу зума. Мышиный поток идентичен прежнему; клавиатура аддитивна. code-reviewer ⚠️→✅ (UA-chrome покрыт, keyboard/mouse корректны; 2 пиксельные заметки сведены к `inherit` для строгой паритетности). ## Контекст P3 P3a (#2076, смержен): нативные контролы вне формы (nav/Подробнее/СВОДКА/оверлей-диалог/aria-live). Этот PR (P3b) — форма 01. Вместе закрывают CRITICAL-a11y из #2062. Прод-QA (клавиатурное прохождение оценки + axe) — после деплоя. Дочерняя к #2036.
lekss361 added 1 commit 2026-06-28 18:58:27 +00:00
fix(tradein/v2): a11y P3b — клавиатурная форма 01 (#2062)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
32a58c91c5
Закрывает headline аудита: «с клавиатуры/скринридера нельзя завершить оценку».
Визуально без изменений — UA-chrome кнопок сброшен явно (Tailwind preflight в
tradein-mvp не подключён, кнопки не наследуют font-family).

- Dd-дропдаун (КОМНАТ/ТИП/РЕМОНТ) + РАДИУС: trigger div→<button role=combobox
  aria-haspopup=listbox aria-expanded aria-controls aria-activedescendant
  aria-label>; панель role=listbox, опции role=option/aria-selected + active-
  highlight. Клавиши Arrow↑↓/Home/End/Enter/Space/Esc/Tab (общий comboKeyDown,
  паттерн aria-activedescendant — фокус остаётся на кнопке).
- БАЛКОН → role=radiogroup + два <button role=radio aria-checked> (roving
  tabindex + стрелки + Space/Enter); tri-state (null = ни один не выбран) сохранён.
- Инпуты: <label htmlFor>/id; aria-invalid + aria-describedby на ошибках
  адреса/площади (id ошибки).
- Кнопки зума карты: div→<button aria-label>, «−» реально disabled на полу зума.

Мышиный поток идентичен прежнему; клавиатура аддитивна. code-reviewer  (UA-chrome
покрыт, keyboard/mouse корректны).
lekss361 merged commit 565d5c906b into main 2026-06-28 18:58:35 +00:00
lekss361 deleted branch fix/tradein-v2-a11y-form 2026-06-28 18:58:35 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2078
No description provided.