{"version":3,"file":"fundamental-ngx-core-breadcrumb.mjs","sources":["../../../../libs/core/breadcrumb/tokens.ts","../../../../libs/core/breadcrumb/breadcrumb-item.component.ts","../../../../libs/core/breadcrumb/breadcrumb.component.ts","../../../../libs/core/breadcrumb/breadcrumb.component.html","../../../../libs/core/breadcrumb/breadcrumb.module.ts","../../../../libs/core/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_BREADCRUMB_ITEM_COMPONENT = new InjectionToken('FdBreadcrumbItemComponent');\nexport const FD_BREADCRUMB_COMPONENT = new InjectionToken('FdBreadcrumbComponent');\n","import { DomPortal } from '@angular/cdk/portal';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ElementRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { FD_LINK_COMPONENT, LinkComponent } from '@fundamental-ngx/core/link';\nimport { FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n *     <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Component({\n    selector: 'fd-breadcrumb-item',\n    template: `<ng-content></ng-content> <span class=\"fd-breadcrumb__separator\" aria-hidden=\"true\"></span>`,\n    host: {\n        class: 'fd-breadcrumb__item'\n    },\n    providers: [\n        {\n            provide: FD_BREADCRUMB_ITEM_COMPONENT,\n            useExisting: BreadcrumbItemComponent\n        }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbItemComponent implements AfterViewInit {\n    /** @hidden */\n    @ContentChild(FD_LINK_COMPONENT)\n    breadcrumbLink: LinkComponent;\n\n    /** In case there is no link in Item and breadcrumb item is non-interactive, we move whole item content to menu item title */\n    breadcrumbItemPortal: DomPortal<Element>;\n\n    /** When breadcrumb item has link in it, we are moving link content to menu item title */\n    linkContentPortal: DomPortal;\n\n    /**\n     * Breadcrumb item dom portal.\n     */\n    portal: DomPortal;\n\n    /** @hidden */\n    private _attached = false;\n\n    /** @hidden */\n    constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._attach();\n    }\n\n    /**\n     * Sets breadcrumb item dom portal.\n     */\n    setPortal(): void {\n        if (!this.portal) {\n            this.portal = new DomPortal(this.elementRef);\n        }\n    }\n\n    /** @hidden */\n    _detach(): void {\n        if (!this._attached) {\n            return;\n        }\n\n        if (this.linkContentPortal?.isAttached) {\n            this.linkContentPortal?.detach();\n        }\n\n        if (this.breadcrumbItemPortal?.isAttached) {\n            this.breadcrumbItemPortal?.detach();\n        }\n\n        this._attached = false;\n    }\n\n    /** @hidden */\n    _attach(): void {\n        if (this._attached) {\n            return;\n        }\n\n        const contentSpan = this.breadcrumbLink?.contentSpan();\n        if (this.breadcrumbLink && contentSpan) {\n            this.linkContentPortal = new DomPortal<HTMLElement>(contentSpan.nativeElement);\n        }\n\n        this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild as Element);\n        this._attached = true;\n    }\n}\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { PortalModule } from '@angular/cdk/portal';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewEncapsulation,\n    computed,\n    effect,\n    inject,\n    input,\n    signal\n} from '@angular/core';\nimport { HasElementRef, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport {\n    GlyphMenuAddonDirective,\n    MenuAddonDirective,\n    MenuComponent,\n    MenuInteractiveComponent,\n    MenuItemComponent,\n    MenuTitleDirective,\n    MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n    OverflowExpandDirective,\n    OverflowItemRefDirective,\n    OverflowLayoutComponent,\n    OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FD_LANGUAGE_SIGNAL, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { FD_BREADCRUMB_COMPONENT, FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';\n\nexport type BreadcrumbSeparatorStyle =\n    | ''\n    | 'backslash'\n    | 'double-slash'\n    | 'double-backslash'\n    | 'greater-than'\n    | 'double-greater-than';\n\n/**\n * Breadcrumb parent wrapper directive. Must have breadcrumb item child directives.\n *\n * ```html\n * <fd-breadcrumb>\n *     <fd-breadcrumb-item>\n *         <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n *     </fd-breadcrumb-item>\n * </fd-breadcrumb>\n * ```\n */\n@Component({\n    selector: 'fd-breadcrumb',\n    host: {\n        role: 'navigation',\n        '[class]': '_cssClass()',\n        '[attr.aria-label]': '_ariaLabel',\n        '(keydown)': 'onKeydown($event)'\n    },\n    templateUrl: './breadcrumb.component.html',\n    styleUrl: './breadcrumb.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: FD_BREADCRUMB_COMPONENT,\n            useExisting: BreadcrumbComponent\n        }\n    ],\n    imports: [\n        OverflowLayoutComponent,\n        OverflowItemRefDirective,\n        OverflowLayoutItemDirective,\n        PortalModule,\n        OverflowExpandDirective,\n        MenuComponent,\n        MenuItemComponent,\n        MenuInteractiveComponent,\n        GlyphMenuAddonDirective,\n        MenuAddonDirective,\n        MenuTitleDirective,\n        MenuTriggerDirective,\n        LinkComponent,\n        IconComponent,\n        FdTranslatePipe\n    ]\n})\nexport class BreadcrumbComponent implements AfterViewInit, HasElementRef {\n    /** Whether to append items to the overflow dropdown in reverse order. Default is true. */\n    @Input()\n    reverse = false;\n\n    /** Tabindex of the breadcrumb. */\n    @Input()\n    tabIndex = '0';\n\n    /**\n     * Event emitted when visible items count is changed.\n     */\n    @Output()\n    visibleItemsCount = new EventEmitter<number>();\n\n    /**\n     * Event emitted when hidden items count is changed.\n     */\n    @Output()\n    hiddenItemsCount = new EventEmitter<number>();\n\n    /** @hidden */\n    @ContentChildren(FD_BREADCRUMB_ITEM_COMPONENT)\n    private readonly _contentItems: QueryList<BreadcrumbItemComponent>;\n\n    /** @hidden */\n    @ViewChild(MenuComponent)\n    private readonly _menuComponent: MenuComponent;\n\n    /** @hidden */\n    @ViewChild(OverflowLayoutComponent)\n    private readonly _overflowLayout: OverflowLayoutComponent;\n\n    /**\n     * Separator style for the breadcrumb items.\n     * Can be 'backslash' | 'double-slash' | 'double-backslash' | 'greater-than' | 'double-greater-than'\n     * Omit for default (slash)\n     */\n    separatorStyle = input<BreadcrumbSeparatorStyle>('');\n\n    /** @hidden */\n    _ariaLabel: string;\n\n    /**\n     * @hidden\n     * Array of breadcrumb items.\n     */\n    _items$ = signal<BreadcrumbItemComponent[]>([]);\n\n    /** @hidden */\n    readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    /** @hidden */\n    protected readonly placement = computed<Placement>(() => (this._rtlService?.rtl() ? 'bottom-end' : 'bottom-start'));\n\n    /** @hidden */\n    protected readonly _cssClass = computed(() => {\n        const classes = ['fd-breadcrumb'];\n        const style = this.separatorStyle();\n        if (style) {\n            classes.push(`fd-breadcrumb--${style}`);\n        }\n        return classes.join(' ');\n    });\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    private readonly _translationResolver = new TranslationResolver();\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        effect(() => {\n            const lang = this._langSignal();\n            this._ariaLabel = this._translationResolver.resolve(lang, 'coreBreadcrumb.breadcrumbTrailLabel');\n        });\n    }\n\n    /** @hidden */\n    onResize(): void {\n        this._overflowLayout.triggerRecalculation();\n    }\n\n    /**\n     * Function that handles click, touch, enter and space events.\n     */\n    itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: Event): void {\n        $event.preventDefault();\n        breadcrumbItem.breadcrumbLink.elementRef.nativeElement.click();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._setItems();\n\n        this._contentItems.changes.subscribe(() => {\n            this._setItems();\n            this._updateAriaLabels();\n        });\n\n        // Set menu roles for breadcrumb context\n        (this._menuComponent as any)._navContainerRole = 'dialog';\n        (this._menuComponent as any)._menuListContainerRole = 'menu';\n\n        /**\n         * Set initial aria-labels\n         * Roving tabindex is applied in _onVisibleItemsCountChange once overflow layout resolves\n         */\n        this._updateAriaLabels();\n    }\n\n    /** @hidden */\n    _onHiddenChange(isHidden: boolean, breadcrumb: BreadcrumbItemComponent): void {\n        if (!isHidden) {\n            breadcrumb._detach();\n        } else {\n            breadcrumb._attach();\n        }\n    }\n\n    /** @hidden */\n    _onVisibleItemsCountChange(visibleItemsCount: number): void {\n        this.visibleItemsCount.emit(visibleItemsCount);\n\n        /**\n         * Defer tabindex update: the overflow layout emits this event before detectChanges(),\n         * so soft-hidden CSS classes haven't been applied yet.\n         * A microtask ensures the DOM is up to date.\n         */\n        Promise.resolve().then(() => this._updateTabIndexes());\n    }\n\n    /** @hidden */\n    _onHiddenItemsCountChange(hiddenItemsCount: number): void {\n        this.hiddenItemsCount.emit(hiddenItemsCount);\n    }\n\n    /**\n     * @hidden\n     * Opens the overflow menu on keyboard activation.\n     * Bound to keyup (not keydown) so that by the time the menu opens and captures focus,\n     * the key has been fully released and no stale key events reach the first menu item.\n     */\n    protected openOverflowMenu(event: Event): void {\n        event.preventDefault();\n        if (!this._menuComponent.isOpen()) {\n            this._menuComponent.open();\n        }\n    }\n\n    /** @hidden */\n    protected onKeydown(event: KeyboardEvent): void {\n        if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW])) {\n            return;\n        }\n\n        const links = this._getVisibleLinks();\n        if (links.length === 0) {\n            return;\n        }\n\n        const activeEl = document.activeElement as HTMLElement;\n        const currentIndex = links.indexOf(activeEl);\n        if (currentIndex === -1) {\n            return;\n        }\n\n        const isRtl = this._rtlService?.rtl();\n        const isNext =\n            KeyUtil.isKeyCode(event, DOWN_ARROW) || KeyUtil.isKeyCode(event, isRtl ? LEFT_ARROW : RIGHT_ARROW);\n        const nextIndex = isNext ? Math.min(currentIndex + 1, links.length - 1) : Math.max(currentIndex - 1, 0);\n\n        if (nextIndex !== currentIndex) {\n            // Update roving tabindex: old item becomes unfocusable, new item becomes the tab stop\n            links[currentIndex].setAttribute('tabindex', '-1');\n            links[nextIndex].setAttribute('tabindex', '0');\n            links[nextIndex].focus();\n            event.preventDefault();\n        }\n    }\n\n    /**\n     * @hidden\n     * Returns all focusable breadcrumb elements in DOM order: visible link items,\n     * the overflow \"...\" collapse button, and the aria-current page span.\n     * Excludes items hidden by the overflow layout (soft-hidden).\n     *\n     * Uses querySelectorAll rather than Angular queries because:\n     * - The overflow \"...\" button is rendered in the component template, not projected\n     *   as a content child, so it cannot be captured via @ContentChildren.\n     * - The aria-current span is user-provided content inside fd-breadcrumb-item and\n     *   is not an Angular component/directive — there's no token to query it.\n     * - querySelectorAll naturally returns elements in DOM (visual) order, which is\n     *   exactly what arrow key navigation needs, without manual sorting.\n     */\n    private _getVisibleLinks(): HTMLElement[] {\n        const el = this.elementRef.nativeElement;\n        return Array.from(\n            el.querySelectorAll<HTMLElement>(\n                '.fd-overflow-layout__item:not(.fd-overflow-layout__item--soft-hidden) a.fd-link, .fd-overflow-layout__item:not(.fd-overflow-layout__item--soft-hidden) [aria-current], .fd-breadcrumb__collapsed'\n            )\n        );\n    }\n\n    /**\n     * @hidden\n     * Applies roving tabindex: sets all focusable breadcrumb elements to tabindex=\"-1\",\n     * then promotes the first visible one to tabindex=\"0\".\n     * This ensures Tab enters/exits the breadcrumb as a single stop,\n     * and non-href elements (click-only links, aria-current spans) are programmatically focusable.\n     */\n    private _updateTabIndexes(): void {\n        const el = this.elementRef.nativeElement;\n        // Set ALL focusable breadcrumb elements to -1 (including hidden ones)\n        const allLinks = el.querySelectorAll<HTMLElement>('a.fd-link, [aria-current], .fd-breadcrumb__collapsed');\n        allLinks.forEach((link) => link.setAttribute('tabindex', '-1'));\n\n        // Promote the first visible one to 0\n        const visibleLinks = this._getVisibleLinks();\n        if (visibleLinks.length > 0) {\n            visibleLinks[0].setAttribute('tabindex', '0');\n        }\n    }\n\n    /** @hidden */\n    private _setItems(): void {\n        this._contentItems.forEach((item) => item.setPortal());\n        this._items$.set(this._contentItems.toArray());\n    }\n\n    /** @hidden */\n    private _updateAriaLabels(): void {\n        const items = this._contentItems.toArray();\n        const totalCount = items.length;\n        const lang = this._langSignal();\n\n        items.forEach((item, index) => {\n            const position = index + 1;\n            const positionLabel = this._translationResolver.resolve(lang, 'coreBreadcrumb.positionLabel', {\n                current: position,\n                total: totalCount\n            });\n\n            // Set aria-label on link if present\n            if (item.breadcrumbLink) {\n                const linkEl = item.breadcrumbLink.elementRef.nativeElement;\n                const linkText = linkEl.textContent?.trim() || '';\n                linkEl.setAttribute('aria-label', `${linkText}, ${positionLabel}`);\n            } else {\n                // Set aria-label on direct child span with aria-current if present\n                const itemElement = item.elementRef.nativeElement;\n                const directChildSpan = Array.from(itemElement.children).find(\n                    (child) => child.tagName === 'SPAN' && child.hasAttribute('aria-current')\n                ) as HTMLElement;\n                if (directChildSpan) {\n                    const spanText = directChildSpan.textContent?.trim() || '';\n                    directChildSpan.setAttribute('aria-label', `${spanText}, ${positionLabel}`);\n                }\n            }\n        });\n    }\n}\n","<fd-overflow-layout\n    [reverseHiddenItems]=\"!reverse\"\n    showMorePosition=\"left\"\n    [enableKeyboardNavigation]=\"false\"\n    (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n    (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n    ariaRole=\"list\"\n>\n    @for (breadcrumb of _items$(); track breadcrumb) {\n        <div\n            *fdOverflowItemRef=\"breadcrumb; let hidden\"\n            fdOverflowLayoutItem\n            (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n        >\n            <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n        </div>\n    }\n    <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n        <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement()\">\n            @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n                <li\n                    fd-menu-item\n                    [disabled]=\"\n                        breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled() : false\n                    \"\n                >\n                    <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n                        @if (breadcrumbItem?.item.breadcrumbLink) {\n                            @if (breadcrumbItem.item.breadcrumbLink.prefixIconName()) {\n                                <fd-menu-addon\n                                    position=\"before\"\n                                    [glyph]=\"breadcrumbItem.item.breadcrumbLink.prefixIconName()\"\n                                ></fd-menu-addon>\n                            }\n                            <span fd-menu-title>\n                                <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n                            </span>\n                            @if (breadcrumbItem.item.breadcrumbLink.postfixIconName()) {\n                                <fd-menu-addon\n                                    [glyph]=\"breadcrumbItem.item.breadcrumbLink.postfixIconName()\"\n                                ></fd-menu-addon>\n                            }\n                        } @else {\n                            <span fd-menu-title>\n                                <ng-container\n                                    [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n                                ></ng-container>\n                            </span>\n                        }\n                    </a>\n                </li>\n            }\n        </fd-menu>\n        @if (breadcrumbs.length > 0) {\n            <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\" #menuTriggerSpan>\n                <a\n                    fd-link\n                    [attr.aria-label]=\"('coreBreadcrumb.overflowTitleMore' | fdTranslate)()\"\n                    aria-haspopup=\"menu\"\n                    tabindex=\"-1\"\n                    class=\"fd-breadcrumb__collapsed\"\n                    (keyup.enter)=\"openOverflowMenu($event)\"\n                    (keyup.space)=\"openOverflowMenu($event)\"\n                    (keydown.enter)=\"$event.preventDefault()\"\n                    (keydown.space)=\"$event.preventDefault()\"\n                >\n                    <fd-icon\n                        glyph=\"overflow\"\n                        [title]=\"('coreBreadcrumb.overflowTitleMore' | fdTranslate)()\"\n                        [ariaLabel]=\"('coreBreadcrumb.overflowTitleMore' | fdTranslate)()\"\n                    ></fd-icon>\n                    <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n                </a>\n                <span class=\"fd-breadcrumb__separator\" aria-hidden=\"true\"></span>\n            </span>\n        }\n    </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\nconst components = [BreadcrumbComponent, BreadcrumbItemComponent, LinkComponent, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class BreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}