{"version":3,"file":"eui-components-eui-navbar.mjs","sources":["../../eui-navbar/eui-navbar.component.ts","../../eui-navbar/eui-navbar.component.html","../../eui-navbar/eui-navbar-item.component.ts","../../eui-navbar/index.ts","../../eui-navbar/eui-components-eui-navbar.ts"],"sourcesContent":["import {\n    Component,\n    ChangeDetectionStrategy,\n    HostBinding,\n    Output,\n    EventEmitter,\n    ContentChildren,\n    forwardRef,\n    QueryList,\n    ElementRef,\n    AfterViewInit,\n    AfterContentInit,\n    inject,\n} from '@angular/core';\nimport { EuiNavbarItemComponent } from './eui-navbar-item.component';\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_DROPDOWN } from '@eui/components/eui-dropdown';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { AsyncPipe } from '@angular/common';\nimport { BaseStatesDirective } from '@eui/components/shared';\n\n/**\n * A horizontal navigation bar component that displays a collection of selectable items.\n * Automatically adapts to a dropdown view when the available width is insufficient to display all items inline.\n * Supports primary and secondary visual variants through the BaseStatesDirective.\n * Manages the active state of child navbar items and emits selection events.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-navbar (itemClick)=\"onNavItemClick($event)\">\n *   <eui-navbar-item id=\"home\" label=\"Home\" [isActive]=\"true\"></eui-navbar-item>\n *   <eui-navbar-item id=\"about\" label=\"About\"></eui-navbar-item>\n *   <eui-navbar-item id=\"contact\" label=\"Contact\"></eui-navbar-item>\n * </eui-navbar>\n * ```\n *\n * ```typescript\n * onNavItemClick(itemId: string) {\n *   console.log('Selected:', itemId);\n * }\n * ```\n *\n * ### Accessibility\n * - Navbar items are keyboard navigable with Tab key\n * - Enter and Space keys activate items\n * - Active item is visually distinguished and announced to screen readers\n *\n * ### Notes\n * - Automatically switches to dropdown when width is constrained\n * - Only one item can be active at a time\n * - Supports primary and secondary visual variants\n */\n@Component({\n    selector: 'eui-navbar',\n    templateUrl: './eui-navbar.component.html',\n    styleUrl: './eui-navbar.scss',\n    changeDetection: ChangeDetectionStrategy.Default,\n    imports: [\n        AsyncPipe,\n        ...EUI_DROPDOWN,\n        ...EUI_ICON,\n        ...EUI_BUTTON,\n    ],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiPrimary',\n                'euiSecondary',\n            ],\n        },\n    ],\n})\nexport class EuiNavbarComponent implements AfterContentInit, AfterViewInit {\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-navbar'),\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Emitted when a navbar item is selected by user interaction.\n     * Payload contains the id of the selected navbar item.\n     * Triggered by click or keyboard activation (Enter/Space) on any child EuiNavbarItemComponent.\n     */\n    @Output() itemClick: EventEmitter<string> = new EventEmitter();\n\n    @ContentChildren(forwardRef(() => EuiNavbarItemComponent)) items: QueryList<EuiNavbarItemComponent>;\n\n    public baseItemSelected: EuiNavbarItemComponent;\n    public isDropdownView = false;\n    asService = inject(EuiAppShellService);\n    baseStatesDirective = inject(BaseStatesDirective);\n    private elementRef = inject(ElementRef);\n\n    ngAfterContentInit(): void {\n        this.baseItemSelected = this.items.filter((i) => i.isActive)[0];\n    }\n\n    ngAfterViewInit(): void {\n        const parentWidth = this.elementRef.nativeElement.parentWidth;\n        const width = this.elementRef.nativeElement.clientWidth;\n\n        if (width > parentWidth) {\n            setTimeout(() => {\n                this.isDropdownView = true;\n            }, 1);\n        }\n    }\n\n    public itemSelected(id: string): void {\n        this.items.forEach((item) => {\n            if (item.id === id) {\n                item.isActive = true;\n            } else {\n                item.isActive = false;\n            }\n        });\n        this.itemClick.emit(id);\n    }\n}\n","@if ( (asService.breakpoints$ | async).isLtLargeTablet || isDropdownView ) {\n    <eui-dropdown isLabelUpdatedFromSelectedItem>\n        <button euiButton euiSecondary euiSizeS [attr.aria-label]=\"'Button trigger'\">\n            {{ baseItemSelected.label }\n            <eui-icon-svg icon=\"eui-chevron-down\" size=\"s\"></eui-icon-svg>\n        </button>\n        <eui-dropdown-content>\n            @for (item of items; track item) {\n            <button euiDropdownItem (click)=\"itemSelected(item.id)\" ariaLabel=\"{{ item.label }}\">\n                {{ item.label }}\n            </button>\n            }\n        </eui-dropdown-content>\n    </eui-dropdown>\n} @else {\n    <ng-content />\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    HostBinding,\n    HostListener,\n    Input,\n    booleanAttribute,\n    forwardRef,\n    inject,\n} from '@angular/core';\nimport { EuiNavbarComponent } from './eui-navbar.component';\n\n/**\n * A selectable navigation item that must be used as a child of EuiNavbarComponent.\n * Displays a text label and manages its own active state through visual styling.\n * Supports keyboard navigation with Enter and Space keys.\n * Automatically communicates selection events to the parent navbar component.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-navbar>\n *   <eui-navbar-item id=\"dashboard\" label=\"Dashboard\" [isActive]=\"true\"></eui-navbar-item>\n *   <eui-navbar-item id=\"reports\" label=\"Reports\"></eui-navbar-item>\n * </eui-navbar>\n * ```\n *\n * ### Accessibility\n * - Focusable with `tabindex=\"0\"`\n * - Activatable with Enter or Space keys\n * - Active state is visually indicated\n *\n * ### Notes\n * - Must be direct child of `eui-navbar`\n * - Requires unique `id` for selection tracking\n * - Label is required for display\n */\n@Component({\n    selector: 'eui-navbar-item',\n    template: '{{ label }}',\n    styleUrl: './eui-navbar-item.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiNavbarItemComponent {\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-navbar-item',\n            this.isActive ? 'eui-navbar-item--active' : '',\n        ].join(' ').trim();\n    }\n\n    @HostBinding('attr.tabindex') tabindex = 0;\n\n    /**\n     * Unique identifier for the navbar item.\n     * Used to track selection state and emitted in the parent navbar's itemClick event.\n     * Required for proper item selection management.\n     */\n    @Input() id: string;\n    \n    /**\n     * Text label displayed for the navbar item.\n     * Rendered directly in the component template.\n     * Required for meaningful user interaction.\n     */\n    @Input() label: string;\n    \n    /**\n     * Determines whether this navbar item is currently selected.\n     * When true, applies the 'eui-navbar-item--active' CSS class for visual distinction.\n     * Defaults to false. Managed by the parent EuiNavbarComponent during selection.\n     */\n    @Input({ transform: booleanAttribute }) isActive = false;\n\n    navBarComponentParent: EuiNavbarComponent;\n\n    constructor() {\n        const navBarComponent = inject(EuiNavbarComponent, { host: true, optional: true })!;\n\n        this.navBarComponentParent = navBarComponent;\n    }\n\n    @HostListener('click')\n    protected onClick(): void {\n        this._click();\n    }\n\n    @HostListener('keydown', ['$event'])\n    protected onKeydown(event: KeyboardEvent): void {\n        switch (event.code) {\n            case 'Enter':\n            case 'Space':\n                event.preventDefault();\n                event.stopPropagation();\n                this._click();\n                break;\n        }\n    }\n\n    private _click(): void {\n        this.navBarComponentParent.itemSelected(this.id);\n    }\n}\n","import { EuiNavbarItemComponent } from './eui-navbar-item.component';\nimport { EuiNavbarComponent } from './eui-navbar.component';\n\nexport * from './eui-navbar.component';\nexport * from './eui-navbar-item.component';\n\nexport const EUI_NAVBAR = [\n    EuiNavbarComponent,\n    EuiNavbarItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}