keyboard support
Поддержка клавиатуры — техническая документация
🎯 Обзор
Поддержка клавиатуры ускоряет навигацию и действия в web-app с помощью контекстных сочетаний клавиш. Доступные сочетания адаптируются к текущему экрану, а подсказки в интерфейсе помогают пользователям находить и изучать действия быстрее.
Текущая реализация объединяет глобальные сочетания, сочетания для конкретных экранов, стандартную навигацию Tab и подсказки на уровне компонентов. Shift + ? открывает в AI Advisor список сочетаний для текущего экрана и включает визуальные подсказки, а не отдельное standalone-модальное окно.
🎬 Демо-видео
✅ Ключевые модели поведения
- Глобальные сочетания:
Shift + ?открывает помощь по сочетаниям в AI Advisor,Ctrl + Mпереключает левое меню, а1-9 / 0ведут в основные разделы приложения. - Контекстные сочетания: активны только комбинации, релевантные текущему экрану или модальному окну.
- Без конфликта с вводом: app-level shortcuts игнорируют
input,textarea,selectи редактируемый контент. - Навигация Tab: нативные кнопки, ссылки, поля форм, фокусируемые строки пасек, сортируемые заголовки и поддерживаемые диалоги доступны через Tab / Shift+Tab.
- Видимые подсказки: общий компонент
KeyboardHintsпоказывает бейджи сочетаний на поддерживаемых контролах, особенно в инструментах рисования. - Безопасные destructive actions: Delete и Backspace открывают подтверждение вместо немедленного удаления.
⌨️ Реализованные области сочетаний
| Область | Реализованное поведение |
|---|---|
| Глобальная навигация | Shift + ? открывает помощь по текущему экрану в AI Advisor; Ctrl + M переключает меню; 1-9 / 0 переходят в Apiaries, Queens/Queen Detection, Insights, Warehouse, Devices, Alerts, Account, AI Advisor, Billing и Tokens, если раздел доступен. |
| Список пасек | Стрелки фокусируют и перемещают выбор между ульями в table/card layout; на границах списка возможен переход к соседним пасекам; сортируемые заголовки реагируют на Enter/Space. |
| Детали улья | H возвращает к списку ульев, A возвращает к текущей пасеке, E открывает редактирование основной информации улья, если улей доступен для редактирования. |
| Структура улья | Arrow Up/Down переключают секции/корпуса, Arrow Left/Right переключают рамки, Backspace открывает удаление секции, Delete/Del открывает удаление рамки. |
| Canvas стороны рамки | C, F, X, N, Y, P, G, B, K, D, U, +, =, - и Ctrl/⌘ + Z переключают инструменты/типы ячеек, размер кисти или отменяют последний штрих. |
| Devices | Arrow Up/Down выбирают устройство; Delete/Del открывает подтверждение удаления выбранного устройства. |
| Warehouse hive systems | Arrow Up/Down выбирают hive system, Enter открывает выбранную систему, Delete/Del запускает архивирование/деактивацию для non-default system. |
| Диалоги и popovers | Enter подтверждает поддерживаемые действия, Escape отменяет поддерживаемые диалоги или закрывает popover/drawer, generic confirmation modal удерживает Tab между Confirm/Cancel. |
🔧 Технический обзор
Поддержка клавиатуры реализована через контекстные keydown handlers в web app. Глобальные сочетания находятся в общем компоненте меню. Page-specific handlers находятся рядом со списком пасек, деталями/структурой улья, devices, warehouse hive systems, диалогами и компонентами рисования на рамках.
Handlers проверяют активный target перед действием: они не мешают обычному вводу текста и часто пропускают повторные события, modifier-комбинации или modal targets. Когда shortcut принят, компонент обновляет локальный selection state, фокусирует нужный DOM-элемент, прокручивает выбранный элемент в видимую область, выполняет routing по текущим entity identifiers, переключает drawing tools или открывает confirmation flow.
📋 Текущий acceptance coverage
Shift + ?показывает помощь по текущему экрану через AI Advisor и включает визуальные подсказки.- Глобальные navigation shortcuts и menu toggle работают вне полей ввода.
- Arrow-key navigation работает в apiary/hive, hive-structure, devices и hive-system lists без конфликта с вводом текста.
- Фокус перемещается к выбранным apiary/hive элементам и удерживает их видимыми там, где это реализовано.
- Hive structure shortcuts переключают boxes и frames на основе текущего URL context.
- Drawing shortcuts переключают инструменты, cell types, размер кисти и отменяют strokes.
- Delete и Backspace открывают confirmation flows для выбранных removable entities.
- Enter/Escape работают в поддерживаемых confirmation dialogs и не запускаются во время активной mutation.
- Сортируемые apiary headers активируются с клавиатуры.
🚫 Текущие ограничения
Shift + ?реализован через AI Advisor drawer/view, а не через отдельное модальное окно.- User-customizable shortcut mapping не реализован.
- Full command palette не реализована.
- Сочетания клавиш не гарантированы для каждой страницы приложения.
- Warehouse queens page сейчас поддерживает Enter в delete dialog, но list-level Arrow/Delete shortcuts там не реализованы, хотя часть help text их показывает.
- Перед утверждением complete no-mouse coverage everywhere нужен отдельный задокументированный full-app keyboard-only audit.
🔗 Связанные функции
💬 Примечания
Keyboard shortcuts намеренно консервативны: они не срабатывают в полях ввода, избегают небезопасных modifier-key combinations в большинстве экранов и проводят destructive operations через confirmation dialogs, чтобы снизить риск случайной потери данных.
Last Updated: June 24, 2026