Компонент Breadcrumbs для Angular | ng-hub-ui-breadcrumbs

Компонент breadcrumbs для Angular с интеграцией с Router, пользовательскими шаблонами, поддержкой RTL и гибкими токенами стилизации.

Справочник API

Вот полный контракт breadcrumbs: всё, что можно привязать, прослушать, спроецировать и тематизировать, собрано в одном месте. Подключите то, что нужно, и оформите так, как хотите — это standalone и дружит с сигналами.

Входные свойства

Настройте breadcrumbs с помощью 7 входных свойств. Привязывайте их, как любой @Input в Angular.

ИмяТипПо умолчаниюОписание
itemsBreadcrumbItem[] | nullnullЦепочка, предоставленная потребителем, заменяет полученную из маршрутизатора. При значении null компонент продолжает читать HubBreadcrumbsService.
variantstring—Семантический акцент для ссылок хлебных крошек (например, primary, success) или любое пользовательское имя токена.
truncateItemsbooleanfalseЕсли true, каждая подпись обрезается до --hub-breadcrumb-max-item-width многоточием, а при переполнении показывается тултип. Шаблон hubBreadcrumbItem тоже охвачен: компонент оборачивает проецируемое содержимое в собственный span.hub-breadcrumb__custom и обрезает эту коробку, потому что инкапсулированные стили не достают до элементов, принадлежащих компоненту-потребителю.
maxItemsnumber | undefinedundefinedДлина, начиная с которой цепочка сворачивается за индикатором. Undefined не сворачивает никогда, какой бы длинной она ни стала.
itemsBeforeCollapsenumber1Элементы, сохраняемые в начале свёрнутой цепочки.
itemsAfterCollapsenumber1Элементы, сохраняемые в конце свёрнутой цепочки, включая текущую страницу.
collapsedAriaLabelstring'Show the hidden breadcrumb items'Доступное имя свёрнутого индикатора, чтобы единственную объявляемую этим компонентом строку могло перевести хост-приложение.

События

Реагируйте на то, что делает breadcrumbs, — 1 событий, к которым можно подключить вашу логику.

ИмяТипОписание
collapsedClickvoidСрабатывает при активации свёрнутого индикатора. Цепочка разворачивается сама; событие — для потребителей, которые тоже хотят отреагировать.

Методы

Управляйте breadcrumbs из кода — 3 методов его программного интерфейса.

ИмяСигнатураВозвращаетОписание
HubBreadcrumbsService.breadcrumbsbreadcrumbs: Signal<BreadcrumbItem[]>Signal<BreadcrumbItem[]>Цепочка как сигнал — та же поверхность, которую читает сам компонент. Она обёрнута один раз внутри сервиса и подписана один раз на всё приложение, поэтому заголовок страницы, title документа или любой другой читатель выводится из неё без async-пайпа.
HubBreadcrumbsService.breadcrumbs$breadcrumbs$: Observable<BreadcrumbItem[]>Observable<BreadcrumbItem[]>Та же цепочка в виде Observable — оставлена для кода, который уже собирается на rxjs. Оба члена сообщают об одной и той же навигации: берите тот, на котором вызывающий код уже говорит.
provideHubBreadcrumbTooltipprovideHubBreadcrumbTooltip(adapter: HubBreadcrumbTooltipAdapter): EnvironmentProvidersEnvironmentProvidersРегистрирует адаптер тултипа один раз на всё приложение, чтобы усечённая подпись показывала более богатый тултип hub-ui вместо нативного атрибута title. Уберите провайдер — и подписи вернутся к title.

Шаблоны

Сделайте его своим — 2 слотов шаблона позволяют проецировать собственную разметку.

ИмяОписаниеПример
hubBreadcrumbItemПользовательский шаблон для отрисовки отдельных элементов хлебных крошек<ng-template hubBreadcrumbItem let-item let-isLast="isLast"> @if (!isLast) { <a [routerLink]="item.url" class="breadcrumb-link">{{ item.label }}</a> } @else { <span class="breadcrumb-current">{{ item.label }}</span> } </ng-template>
hubBreadcrumbLabelДиректива, показывающая полный текст обрезанной подписи как тултип. Компонент применяет её к подписям, которые рисует сам, и к коробке, в которую заворачивает шаблон hubBreadcrumbItem, так что ставить её вручную нужно только для замены текста тултипа.<a class="my-crumb" hubBreadcrumbLabel [routerLink]="item.url">{{ item.label }}</a>