.. _spec_work-center_navhub:
Навигационный хаб
=================
.. versionadded:: 1.29.0-ms3
:term:`Навигационный хаб` (Хаб) позволяет пользователю настраивать пространство навигации в текущем приложении системы.
Обзор возможностей Навигационного хаба:
.. raw:: html
.. role:: raw-html(raw)
:format: html
.. _spec_work-center_navhub_concepts:
Основные понятия
----------------
Тайл
Элемент системы в Хабе: пункт :term:`главного меню <Главное меню>` или :term:`выборка <Выборка>`.
Тайл визуализируется как прямоугольный элемент с названием и цветом фона.
Группа
Контейнер тайлов с заголовком, заданным цветом и позицией в компоновке.
Группа "по умолчанию"
Группа, находящаяся первой в секции "Закрепленное". В неё попадают тайлы, закреплённые без указания группы,
и тайлы удалённой группы при варианте удаления "Удалить только группу". Удалить группу "по умолчанию" нельзя.
Секция
Область режима "Избранное", в которой отображаются тайлы одного источника: закреплённые пользователем, часто
используемые или недавно закрытые. Состав секций описан в разделе :ref:`spec_work-center_navhub_favorite`.
Вызов и закрытие
----------------
Навигационный хаб можно открыть в любом состоянии интерфейса, кроме случаев, когда открыто
:term:`модальная форма <Модальная форма>` или :term:`диалоговое окно <Диалоговое окно>`.
Открытие выполняется одним из способов:
- Горячей клавишей :kbd:`Ctrl+K` (значение по умолчанию, которое прикладное решение может переопределить).
- Горячей клавишей :kbd:`Ctrl+Shift+K` (значение по умолчанию, которое прикладное решение может переопределить) — то же,
что :kbd:`Ctrl+K`, но Хаб открывается с областью поиска "Все" (см. :ref:`строку поиска
`), без учёта и изменения сохранённого значения области поиска.
- Кликом :kbd:`ЛКМ` по элементу вызова "Поиск..." в верхней части интерфейса:
.. image:: assets/navhub-open-control.jpg
:scale: 50
:alt: Контрол вызова Навигационного хаба
Закрытие выполняется одним из способов:
- Нажатием :kbd:`Esc`.
- Кликом вне окна Хаба (по затемнённой области).
- Активацией тайла или элемента результата поиска.
- Нажатием :term:`горячей клавиши <Горячие клавиши>` закреплённой за пунктом :term:`главного меню <Главное меню>`.
Хаб закрывается и выполняется операция этого пункта.
.. seealso::
:ref:`Горячие клавиши `
.. _spec_work-center_navhub_search-bar:
Строка поиска
-------------
Строка поиска — основной инструмент поиска и фильтрации данных в Навигационном хабе.
Элемент зафиксирован в верхней части окна Хаба и включает поле ввода, кнопку очистки запроса и переключатель области поиска.
.. image:: assets/navhub-search-control.png
:scale: 50
:alt: Строка поиска Навигационного хаба
Область поиска
~~~~~~~~~~~~~~
Переключатель имеет два состояния, определяющих поведение при вводе запроса:
- **Закрепленные**: выполняется фильтрация тайлов "по месту" во всех трёх секциях Хаба.
- **Все**: при непустом запросе Хаб переходит в :ref:`режим "Поиск" `, где выполняется агрегированный поиск по тайлам всех секций Хаба и доступным пунктам :term:`главного меню <Главное меню>`.
Выбранная область поиска сохраняется в браузере пользователя и восстанавливается при следующем открытии Хаба. По умолчанию используется область "Закрепленные".
Исключение — открытие Хаба горячей клавишей :kbd:`Ctrl+Shift+K`: область поиска принудительно устанавливается в «Все» независимо от сохранённого значения, а само сохранённое значение при этом не изменяется.
Область поиска можно переключить с клавиатуры:
- :kbd:`Alt+1` — "Закрепленные".
- :kbd:`Alt+2` — "Все".
При удержании :kbd:`Alt` на кнопках переключателя отображаются подсказки с цифрами клавиш.
.. note::
При открытом окне Хаба фокус ввода автоматически устанавливается в строку поиска. Ввод текста с клавиатуры
направляется в неё, даже если фокус явно не установлен (при условии отсутствия других активных полей ввода).
Режимы
------
Навигационный хаб работает в двух режимах: "Избранное" (открывается по умолчанию) и "Поиск".
.. _spec_work-center_navhub_favorite:
Режим "Избранное"
~~~~~~~~~~~~~~~~~
.. image:: assets/navhub-favorite-mode.png
:scale: 50
:alt: Режим "Избранное" Навигационного хаба
Режим отображает настроенное пользователем пространство навигации и содержит три секции, расположенные сверху вниз.
.. list-table::
:header-rows: 1
:width: 100%
:widths: 26 74
* - Секция
- Описание
* - "Закрепленное"
- Редактируемая пользователем секция с закреплёнными элементами системы (тайлами) для быстрого доступа. Позволяет создавать группы и закреплять в них тайлы.
* - "Часто используемое"
- Наполняется автоматически, исходя из часто используемых пользовательских действий в текущем приложении системы.
* - "Недавно закрытые"
- Наполняется автоматически, исходя из недавно закрытых пользовательских действий в текущем приложении системы.
Секции состоят из :ref:`тайлов и групп `.
Активация тайла доступна в любой секции. Закрепление доступно для тайлов секций "Часто используемое" и
"Недавно закрытые". Остальные изменения состава и компоновки: открепление, переименование и перемещение тайлов,
а также все операции с группами, доступны только в секции "Закрепленное".
.. note::
Сервер передаёт для каждой коллекции тайлов признак ``editable``. При ``editable = false`` (режим "Только чтение")
изменение состава и компоновки недоступно: операции закрепления, перетаскивания, создания групп и действия контекстных
меню заблокированы. Признак берётся из атрибута прикладной выборки, имя которого задаётся в
:xsd:attr:`View.Representation.Layout.Frame.NavigationHub.editableAttr`.
Действия с тайлами
^^^^^^^^^^^^^^^^^^
Активация
"""""""""
Клик :kbd:`ЛКМ` по тайлу или нажатие :kbd:`Enter` при фокусе на нём выполняет связанное с тайлом действие — открытие :term:`выборки <Выборка>` или вызов операции :term:`главного меню <Главное меню>`. После активации окно Хаба закрывается.
Закрепление
"""""""""""
Добавление тайла в секцию "Закрепленное". Доступно для тайлов секций "Часто используемое" и "Недавно закрытые", а также для пунктов меню в результатах :ref:`режима "Поиск" `.
Способы:
- Через контекстное меню тайла (:kbd:`ПКМ`) — пункт "Закрепить в группу" (с выбором группы).
- Через перетаскивание тайла в нужную группу секции "Закрепленное".
- Через нажатие :kbd:`ЛКМ` по кнопке "Закрепить элемент" у пункта меню в результатах режима "Поиск".
При закреплении через контекстное меню или кнопку в результатах поиска новый тайл добавляется в конец выбранной группы
(или группы "по умолчанию", если группа не указана). При перетаскивании тайл встаёт в место броска.
Открепление
"""""""""""
Удаление тайла из секции "Закрепленное". Не затрагивает исходный раздел :term:`главного меню <Главное меню>` или выборку.
Способы:
- Через контекстное меню тайла (:kbd:`ПКМ`) — пункт "Открепить элемент группы".
- Через нажатие :kbd:`ЛКМ` по кнопке "Открепить элемент" у уже закреплённого элемента в результатах :ref:`режима "Поиск" `.
Переименование
""""""""""""""
Изменение названия закреплённого тайла через контекстное меню тайла (:kbd:`ПКМ`) — пункт "Переименовать элемент группы".
Ограничения:
- Максимальная длина имени ``255`` символов.
- Пустое значение (в том числе из одних пробелов) не применяется: диалог закрывается, название остаётся прежним.
Перемещение
"""""""""""
Изменение порядка тайла внутри группы или перенос в другую группу секции "Закрепленное".
Способы:
- Через перетаскивание тайла внутри группы или между группами.
- Через контекстное меню тайла (:kbd:`ПКМ`) — пункт "Перенести в другую группу" (с выбором группы).
Действия с группами
^^^^^^^^^^^^^^^^^^^
Все действия с группой (кроме создания) вызываются из её контекстного меню (клик :kbd:`ЛКМ` по кебаб-меню (⋮) в заголовке группы).
Создание
""""""""
Кнопка "Добавить группу", расположенная над секцией "Закрепленное", открывает диалог создания группы.
Диалог также вызывается горячей клавишей :kbd:`Alt+3`; при удержании :kbd:`Alt` на кнопке отображается подсказка клавиши.
.. image:: assets/create-group.png
:scale: 50
:alt: Создание группы
В диалоге можно указать необязательное название. После подтверждения группа добавляется в конец списка с указанным
названием и цветом по умолчанию (:raw-html:``). Если в момент создания активен поисковый запрос в :ref:`строке поиска `, он сбрасывается, а содержимое прокручивается к новой группе.
Переименование
""""""""""""""
Изменение заголовка группы — пункт "Переименовать группу". Максимальная длина имени ``255`` символов.
Смена цвета
"""""""""""
Изменение цвета группы — пункт "Изменить цвет группы" (выбор из набора). Цвет применяется ко всем тайлам группы, у которых не задан индивидуальный цвет.
Перемещение
"""""""""""
Изменение позиции группы в списке.
Способы:
- Через перетаскивание группы за заголовок.
- Через контекстное меню группы — пункт "Переместить группу" (с выбором целевой позиции).
Группа, перемещённая в начало списка, становится группой "по умолчанию". При активном поиске перетаскивание групп недоступно.
Удаление
""""""""
Удаление группы вызывается через пункт контекстного меню "Удалить группу" с выбором одного из вариантов:
- "Удалить только группу" — тайлы переносятся в группу "по умолчанию";
- "Удалить группу с содержимым" — группа и все её тайлы удаляются безвозвратно.
Если в группе есть тайлы, выбранный вариант удаления необходимо подтвердить. Пустая группа удаляется сразу.
Первую группу в списке (группу "по умолчанию") удалить нельзя.
.. _spec_work-center_navhub_search:
Режим "Поиск"
~~~~~~~~~~~~~
.. image:: assets/navhub-search-mode.png
:scale: 50
:alt: Режим "Поиск" Навигационного хаба
Режим активируется при выбранной области поиска "Все" и непустом запросе в :ref:`строке поиска `.
Поиск выполняется агрегированно по двум источникам:
1. Тайлам всех трёх секций Навигационного хаба.
2. Доступным пунктам :term:`главного меню <Главное меню>`.
Результаты отображаются списком. Каждая строка содержит название с подсветкой найденного совпадения, а также при
наличии путь до элемента и назначенную горячую клавишу. Для элементов, которые можно добавлять в Хаб, отображается
кнопка закрепления или открепления.
Особенности поведения:
- Активация строки (:kbd:`Enter` или клик :kbd:`ЛКМ`) выполняет действие элемента и закрывает Хаб.
- Возврат из режима "Поиск" в режим "Избранное" происходит при очистке строки поиска или при повторном открытии Хаба.
- Один и тот же элемент может присутствовать в результатах несколькими строками, если найден в разных секциях, где каждая строка показывает свой источник.
Клавиатурная навигация
----------------------
Перемещение фокуса между элементами Хаба и их активация доступны с клавиатуры. Набор клавиш зависит от активного
режима.
.. list-table::
:header-rows: 1
:width: 100%
:widths: 24 30 46
* - Режим
- Клавиши
- Действие
* - "Избранное"
- :kbd:`←` :kbd:`↑` :kbd:`↓` :kbd:`→`
- Перемещение фокуса по сетке тайлов.
* - "Избранное"
- :kbd:`Ctrl` / :kbd:`Cmd` + :kbd:`↑` / :kbd:`↓`
- Переход между группами (сквозной обход секций).
* - "Поиск"
- :kbd:`↑` :kbd:`↓`
- Перемещение по строкам результатов; :kbd:`↑` с первой строки возвращает фокус в строку поиска.
* - "Поиск"
- :kbd:`PageUp` :kbd:`PageDown`
- Постраничное перемещение по списку результатов.
* - "Избранное" / "Поиск"
- :kbd:`Enter`
- Активация сфокусированного тайла или строки результата поиска.
* - "Избранное" / "Поиск"
- :kbd:`Tab` / :kbd:`Shift+Tab`
- Последовательный перебор элементов внутри окна Хаба.
* - "Избранное" / "Поиск"
- :kbd:`Alt+1` / :kbd:`Alt+2`
- Переключение области поиска: "Закрепленные" / "Все". При удержании :kbd:`Alt` на переключателе
отображаются подсказки клавиш.
* - "Избранное"
- :kbd:`Alt+3`
- Создание новой группы в секции "Закрепленное" (когда секция доступна для редактирования).
* - "Избранное" / "Поиск"
- :kbd:`Esc`
- При фокусе в строке поиска очищает её при наличии текста, иначе закрывает Хаб. При фокусе вне строки поиска закрывает Хаб.
Для прикладного программиста
----------------------------
Подключение Навигационного хаба к приложению и наполнение секций истории:
.. toctree::
:maxdepth: 1
markup
history-hooks