Хлебные крошки – это элемент навигации, который позволяет пользователю легко ориентироваться на сайте и понимать, где он находится в данный момент относительно главной страницы.
Хлебные крошки имеют несколько размеров для большей гибкости при адаптации к разным интерфейсам.
Внешний вид задают две директивы. kbqBreadcrumbView заменяет содержимое отдельного пункта, а kbqBreadcrumbsSeparator — разделитель между пунктами.
max ограничивает число одновременно показанных пунктов: остальные сворачиваются в выпадающий список за кнопкой раскрытия. Кнопка занимает одно из мест, поэтому [max]="4" отображает три пункта и кнопку. Значение null снимает ограничение, и тогда пункты скрываются при нехватке ширины.
routerLink рекомендуется указывать у каждого kbq-breadcrumb-item: выпадающий список строит скрытые пункты из text и routerLink, поэтому пункт без адреса превращается в строку без перехода.
disabled переводит хлебные крошки в режим только для чтения: пункты и кнопка раскрытия перестают вести на страницы и не принимают фокус по клавише Tab.
@Component({ template: ` <nav kbq-breadcrumbs [disabled]="isReadOnly" >... </nav> ` })
У отдельного пункта есть собственный disabled с тем же действием.
Пункты могут содержать наименования с разной величины.
Режимы ниже — это приемы, а не свойства компонента: каждый из них задает стили, которые приложение применяет к отрисованным пунктам. В примерах эти стили собраны в блоке styles, и переносить их нужно вместе с разметкой.
Стандартный прием сокращения, при котором наименование будет обрезано после первых 14 символов.
Для случаев, когда необходимо выделить уникальный идентификатор в конце наименования
Для случаев, когда необходимо выделить начало наименования и его окончание.
Для случаев, когда наименование можно заменить на сокращенную версию с помощью известной аббревиатуры. Важно, что данное сокращение должно быть уже известно аудитории пользователей сервиса.
По умолчанию панель хлебных крошек смещена влево на --kbq-breadcrumb-item-negative-margin, используя негативный отступ. Это поведение можно изменить при помощи свойства firstItemNegativeMargin.
Для определенных хлебных крошек:
@Component({ template: ` <nav kbq-breadcrumbs [firstItemNegativeMargin]="false" >... </nav> ` })
Для всех хлебных крошек в модуле, используя Dependency Injection при помощи kbqBreadcrumbsConfigurationProvider провайдера:
import { kbqBreadcrumbsConfigurationProvider } from '@koobiq/components/breadcrumbs'; @NgModule({ providers: [ kbqBreadcrumbsConfigurationProvider({ firstItemNegativeMargin: false }) ] })
Иногда родительский контейнер хлебных крошек может быть ужат по ширине, тогда рекомендуется либо использовать сокращение и скрытие пунктов, либо переносить пункты на новую строку.
Данный режим позволяет хлебным крошкам подстраиваться под доступное пространство.
Если необходимо отобразить значение хлебных крошек без сокращений и скрытия пунктов, то можно воспользоваться переносом пунктов на новую строку.
Хлебные крошки — это ориентир навигации. Компонент проставляет роль navigation на <kbq-breadcrumbs>, а у <nav kbq-breadcrumbs> эта роль есть изначально.
Доступное имя приходит из активной локали. Если на странице несколько блоков хлебных крошек, им нужно задать разные имена через aria-label — так вспомогательные технологии их различат:
<nav kbq-breadcrumbs aria-label="Навигация по разделу">...</nav>Разделитель по умолчанию скрыт от вспомогательных технологий, поэтому они не зачитывают знаки между пунктами. Разделитель, переданный через kbqBreadcrumbsSeparator, тоже нужно скрыть:
<ng-template kbqBreadcrumbsSeparator> <span aria-hidden="true">→</span> </ng-template>
Последнему пункту компонент проставляет атрибут aria-current="page". Если хлебные крошки не заканчиваются текущей страницей — например, карточка открыта из списка, — нужный пункт отмечают свойством current.
Клавиша | Поведение |
|---|---|
| Tab | Переход к началу навигации: При переключении фокуса на хлебные крошки, курсор автоматически перемещается на первый элемент навигационного пути. |
| Enter \ Space | Активация элемента. Переход по ссылке: Если выбранный элемент соответствует ссылке на другую страницу, происходит переход. Раскрытие списка: Для элементов с выпадающими списками, открывается список и фокус переносится на первый элемент в списке. Вызов действия: Если элемент имеет связанное с ним действие (например, вызов всплывающего окна), это действие выполняется. Без действия: Для остальных элементов, никаких действий не происходит. |
| Right Arrow \ Left Arrow | Перемещение по элементам: Позволяют перемещаться по элементам навигации вперед или назад. При достижении конца или начала списка, курсор циклически переходит на противоположный конец. |
| Bottom Arrow | Раскрытие выпадающего списка: если текущий элемент содержит вложенный список, он будет раскрыт. |
| Home | Переход к началу: Перемещает фокус на первый элемент навигации. |
| End | Переход к концу: Перемещает фокус на последний элемент навигации, который его принимает. Пункт текущей страницы фокус не принимает, поэтому курсор встает на предыдущий элемент. |