{"version":3,"file":"eui-components-eui-tree-list.mjs","sources":["../../eui-tree-list/toolbar/toolbar.component.ts","../../eui-tree-list/toolbar/toolbar.component.html","../../eui-tree-list/eui-tree-list.component.ts","../../eui-tree-list/eui-tree-list.component.html","../../eui-tree-list/item-content/item-content.component.ts","../../eui-tree-list/eui-tree-list-item.component.ts","../../eui-tree-list/eui-tree-list-item.component.html","../../eui-tree-list/index.ts","../../eui-tree-list/eui-components-eui-tree-list.ts"],"sourcesContent":["import {\n    Component,\n    Input,\n    Output,\n    EventEmitter,\n    OnInit,\n    OnChanges,\n    SimpleChanges,\n    ViewEncapsulation,\n    booleanAttribute,\n    HostBinding,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n/**\n * @description\n * Toolbar component for eui-tree-list providing filter and expand/collapse controls.\n * Displays search input for filtering tree items and buttons for expanding or collapsing all items.\n * Automatically emits filter events on initialization if filter value is provided.\n * Manages toggle state for expand/collapse button display.\n * Must be used within eui-tree-list component to control tree list behavior.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Toolbar is typically used internally by eui-tree-list -->\n * <eui-tree-list [isShowToolbar]=\"true\">\n *   <eui-tree-list-item label=\"Item 1\" />\n *   <eui-tree-list-item label=\"Item 2\" />\n * </eui-tree-list>\n *\n * <!-- Custom labels -->\n * <eui-tree-list\n *   [isShowToolbar]=\"true\"\n *   filterLabel=\"Search items...\"\n *   expandAllLabel=\"Expand\"\n *   collapseAllLabel=\"Collapse\">\n *   <!-- items -->\n * </eui-tree-list>\n * ```\n *\n * ```typescript\n * // Listen to toolbar events\n * onFilter(keyword: string): void {\n *   console.log('Filtering by:', keyword);\n * }\n *\n * onExpandAll(): void {\n *   console.log('All items expanded');\n * }\n * ```\n *\n * ### Accessibility\n * - Search input has proper placeholder and label\n * - Expand/collapse buttons have aria-labels\n * - Icons have descriptive aria-labels\n * - Keyboard accessible controls\n *\n * ### Notes\n * - Automatically managed by parent eui-tree-list component\n * - Filter emits on initialization if filterValue is set\n * - Toggle button switches between expand and collapse states\n * - Supports icon-only buttons when labels are empty strings\n * - Clearable search input for easy filter reset\n */\n@Component({\n    selector: 'eui-tree-list-toolbar',\n    templateUrl: './toolbar.component.html',\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        FormsModule,\n        ...EUI_INPUT_TEXT,\n        ...EUI_BUTTON,\n        ...EUI_ICON,\n        ...EUI_ICON_INPUT,\n    ],\n})\nexport class EuiTreeListToolbarComponent implements OnInit, OnChanges {\n    @HostBinding('class') classes = 'eui-tree-list-toolbar';\n\n    @Input() e2eAttr = 'eui-tree-list-toolbar';\n    /**\n     * Shows or hides the toolbar\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isVisible = false;\n    /**\n     * The value of the filter placeholder\n     * @type {string}\n     */\n    @Input() filterLabel: string;\n    /**\n     * The label for the expand all button\n     * @type {string}\n     */\n    @Input() expandAllLabel: string;\n    /**\n     * The label for the collapse all button\n     * @type {string}\n     */\n    @Input() collapseAllLabel: string;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) isFilterVisible = true;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) isToggleVisible = true;\n    /**\n     * Option that toggles the expanded/collapsed state of the corresponding button\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isToggleExpanded = false;\n    /**\n     * The value of the filter input\n     * @default ''\n     */\n    @Input() filterValue = '';\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) hasLabels = true;\n    /**\n     * Event emitted if there is or if a filter value changes.\n     */\n    @Output() filter = new EventEmitter<string>();\n    /**\n     * Event emitted when the expand all button is clicked.\n     */\n    @Output() expandAll = new EventEmitter<MouseEvent>();\n    /**\n     * Event emitted when the collapse all button is clicked.\n     */\n    @Output() collapseAll = new EventEmitter<MouseEvent>();\n\n    ngOnInit(): void {\n        if (this.filterValue !== '' && this.filterValue !== undefined) {\n            this.filter.emit(this.filterValue);\n        }\n    }\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c && c.filterValue && this.filterValue !== undefined) {\n            this.filter.emit(this.filterValue);\n        }\n    }\n    /**\n     * This method is called when the filter input value changes.\n     * It emits the filter value to the parent component.\n     * @protected\n     */\n    protected onFilter(): void {\n        if (this.filterValue === '') {\n            if (!this.isToggleExpanded) {\n                this.collapseAll.emit(null);\n            }\n        }\n        this.filter.emit(this.filterValue);\n    }\n    /**\n     * This method is called when the expand all button is clicked.\n     * It emits the expand all event to the parent component.\n     * @param event The mouse event\n     * @protected\n     */\n    protected onExpandAll(event: MouseEvent): void {\n        this.isToggleExpanded = !this.isToggleExpanded;\n        this.expandAll.emit(event);\n    }\n    /**\n     * This method is called when the collapse all button is clicked.\n     * It emits the collapse all event to the parent component.\n     * @param event The mouse event\n     * @protected\n     */\n    protected onCollapseAll(event: MouseEvent): void {\n        this.isToggleExpanded = !this.isToggleExpanded;\n        this.collapseAll.emit(event);\n    }\n}\n","@if (isVisible) {\n    <eui-icon-input>\n        <eui-icon-svg icon=\"eui-search\" fillColor=\"secondary\" aria-label=\"Search Icon\" />\n        <input\n            euiInputText\n            euiClearable\n            [(ngModel)]=\"filterValue\"\n            [placeholder]=\"filterLabel\"\n            (ngModelChange)=\"onFilter()\" />\n    </eui-icon-input>\n\n    @if (!isToggleExpanded) {\n        <button euiButton euiSecondary euiOutline (click)=\"onExpandAll($event)\" [euiIconButton]=\"expandAllLabel === ''\" aria-label=\"Expand all\">\n            @if (expandAllLabel !== '') {\n                {{ expandAllLabel }}\n            }\n            <eui-icon-svg icon=\"eui-level-down\" aria-label=\"Expand all tree items icon\" />\n        </button>\n    } @else {\n        <button euiButton euiSecondary euiOutline (click)=\"onCollapseAll($event)\" [euiIconButton]=\"collapseAllLabel === ''\" aria-label=\"Collapse all\">\n            @if (collapseAllLabel !== '') {\n                {{ collapseAllLabel }}\n            }\n            <eui-icon-svg icon=\"eui-level-up\" aria-label=\"Collapse all tree items icon\" />\n        </button>\n    }\n}\n","import {\n    Component,\n    Input,\n    Output,\n    EventEmitter,\n    ContentChildren,\n    QueryList,\n    forwardRef,\n    AfterViewInit,\n    OnChanges,\n    SimpleChanges,\n    ElementRef,\n    ViewEncapsulation,\n    booleanAttribute,\n    inject,\n} from '@angular/core';\nimport { EuiTreeListItemComponent } from './eui-tree-list-item.component';\nimport { EuiTreeListToolbarComponent } from './toolbar/toolbar.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface EuiTreeListFilterParams {\n    readonly level: number;\n    readonly item: EuiTreeListItemComponent;\n    readonly keyword: string;\n}\n\n/**\n * @description\n * Hierarchical tree list component for displaying nested navigation or content structures.\n * Provides expand/collapse functionality, filtering, and keyboard navigation support.\n * Supports optional toolbar with expand-all, collapse-all, and filter controls.\n * Implements ARIA tree role for accessibility compliance.\n * Commonly used for navigation menus, file explorers, or any hierarchical list display.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tree-list [isShowToolbar]=\"true\">\n *   <eui-tree-list-item label=\"Documents\">\n *     <eui-tree-list-item label=\"Reports\" />\n *     <eui-tree-list-item label=\"Invoices\" />\n *   </eui-tree-list-item>\n *   <eui-tree-list-item label=\"Images\">\n *     <eui-tree-list-item label=\"Photos\" />\n *   </eui-tree-list-item>\n * </eui-tree-list>\n * ```\n *\n * ### With Custom Filter\n * ```html\n * <eui-tree-list\n *   [isShowToolbar]=\"true\"\n *   [filterFunction]=\"customFilter\">\n *   <!-- tree items -->\n * </eui-tree-list>\n * ```\n *\n * ```typescript\n * customFilter = (params: EuiTreeListFilterParams) => {\n *   return params.item.label.toLowerCase().includes(params.keyword.toLowerCase());\n * };\n * ```\n *\n * ### Accessibility\n * - Use role=\"tree\" on container (automatically applied)\n * - Each item has role=\"treeitem\"\n * - Keyboard navigation: Arrow keys to navigate, Enter to activate\n * - Expandable items announce their state to screen readers\n *\n * ### Notes\n * - Toolbar provides expand-all, collapse-all, and filter functionality\n * - Filter function receives level, item, and keyword for custom filtering\n * - Items can be nested to any depth\n * - Supports keyboard navigation for accessibility\n */\n@Component({\n    selector: 'eui-tree-list',\n    templateUrl: './eui-tree-list.component.html',\n    styleUrl: './eui-tree-list.scss',\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        EuiTreeListToolbarComponent,\n        TranslateModule,\n    ],\n})\nexport class EuiTreeListComponent implements AfterViewInit, OnChanges {\n    /**\n     * Option to show the toolbar\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isShowToolbar = false;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) isShowToolbarToggle = true;\n    /**\n     * Sets the expanded state of the tree list\n     */\n    @Input({ transform: booleanAttribute }) isExpanded = false;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) hasItemsUrl = false;\n    /**\n     * Sets the label for the filter input\n     * @type {string}\n     */\n    @Input() filterLabel: string;\n    /**\n     * Function to filter the tree list items based on the provided params\n     * @param {EuiTreeListFilterParams} params\n     * @returns {boolean}\n     */\n    @Input() filterFunction: (params: EuiTreeListFilterParams) => boolean;\n    /**\n     * Sets the label for the expand-all button\n     * @type {string}\n     */\n    @Input() expandAllLabel: string;\n    /**\n     * Sets the label for the collapse-all button\n     * @type {string}\n     */\n    @Input() collapseAllLabel: string;\n    /**\n     * Sets the tabindex attribute to handle the focus state\n     * @default '0'\n     */\n    @Input() tabindex = '0';\n    /**\n     * Sets the aria-label attribute for the tree list\n     * @default ''\n     */\n    @Input() ariaLabel = '';\n    /**\n     * Sets the filter value of the toolbar\n     * @default ''\n     */\n    @Input() toolbarFilterValue = '';\n    /**\n     * Sets the end-to-end attribute for the tree list\n     * @default 'eui-tree-list'\n     */\n    @Input() e2eAttr = 'eui-tree-list';\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Output() itemSelected = new EventEmitter<string>();\n    /**\n     * Event that emits the filter value upon filtering.\n     */\n    @Output() filter = new EventEmitter<string>();\n    /**\n     * Event emitted upon expanding all items.\n     */\n    @Output() expandAll = new EventEmitter();\n    /**\n     * Event emitted upon collapsing all items.\n     */\n    @Output() collapseAll = new EventEmitter();\n\n    @ContentChildren(forwardRef(() => EuiTreeListItemComponent)) items: QueryList<EuiTreeListItemComponent>;\n\n    public ariaOwns = '';\n    public originalTabindex = '0';\n    public classes = '';\n    public ariaRoleTree = 'tree';\n    private elementRef = inject(ElementRef);\n\n    ngAfterViewInit(): void {\n        const treeItemIds = [];\n        if (this.items) {\n            this.items.forEach((treeItem: EuiTreeListItemComponent) => {\n                treeItemIds.push(treeItem.id);\n            });\n        }\n        setTimeout(() => {\n            this.ariaOwns = treeItemIds.join(' ');\n            this.originalTabindex = this.tabindex;\n            if (this.isExpanded) {\n                this.setExpandedState(true);\n            }\n        }, 0);\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes && changes['tabindex']) {\n            this.originalTabindex = this.tabindex;\n        }\n    }\n    /**\n     * Getter function that returns true if the expandAllLabel exists.\n     * @returns {boolean}\n     */\n    get hasExpandAllLabel(): boolean {\n        return this.expandAllLabel !== undefined && this.expandAllLabel !== null;\n    }\n    /**\n     * Getter function that returns true if the collapseAllLabel exists.\n     * @returns {boolean}\n     */\n    get hasCollapseAllLabel(): boolean {\n        return this.collapseAllLabel !== undefined && this.collapseAllLabel !== null;\n    }\n    /**\n     * Method that sets the expanded state and emits the expand-all event.\n     */\n    onExpandAll(event: Event): void {\n        this.setExpandedState(true);\n        this.expandAll.next(void 0);\n    }\n    /**\n     * Method that sets the collapsed state and emits the collapse-all event.\n     */\n    onCollapseAll(event: Event): void {\n        this.setExpandedState(false);\n        this.collapseAll.next(void 0);\n    }\n    /**\n     * Method that handles the visibility of the items based on the filter value and emits the filter event.\n     * @param {string} filterValue - The filter value to set.\n     */\n    onFilter(filterValue: string): void {\n        // TODO find a recursive way of doing the filtering throughout the tree structure\n        if (filterValue && filterValue !== '') {\n            this.setVisibleState(false);\n            this.items.toArray().forEach((item1) => {\n                item1.isVisible = this.filterMatched(0, item1, filterValue);\n                if (item1.subTreeList.length !== 0) {\n                    item1.subTreeList.toArray().forEach((item1SubTreeList) => {\n                        item1SubTreeList.items.toArray().forEach((item2) => {\n                            if (this.filterMatched(1, item2, filterValue)) {\n                                item2.isVisible = true;\n                                item1.isVisible = true;\n                                item1.isExpanded = true;\n\n                                if (item2.subTreeList.length !== 0) {\n                                    item2.subTreeList.toArray().forEach((item2SubTreeList) => {\n                                        item2SubTreeList.items.toArray().forEach((item3) => {\n                                            item3.isVisible = true;\n                                        });\n                                    });\n                                }\n                            }\n\n                            if (item2.subTreeList.length !== 0) {\n                                item2.subTreeList.toArray().forEach((item2SubTreeList) => {\n                                    item2SubTreeList.items.toArray().forEach((item4) => {\n                                        if (this.filterMatched(2, item4, filterValue)) {\n                                            item4.isVisible = true;\n                                            item2.isVisible = true;\n                                            item2.isExpanded = true;\n                                            item1.isVisible = true;\n                                            item1.isExpanded = true;\n                                        }\n                                    });\n                                });\n                            }\n                        });\n                    });\n                }\n            });\n        } else {\n            this.setVisibleState(true);\n        }\n\n        this.filter.next(filterValue);\n    }\n    /**\n     * @deprecated This method is not used anymore and will be removed in the next major version. You can use the `focus()` method instead.\n     */\n    onFocus(): void {\n        this.focus();\n    }\n    /**\n     * Method that sets the visibility state of the tree list items.\n     * @param {boolean} state\n     */\n    public setVisibleState(state: boolean): void {\n        this.items.toArray().forEach((item) => item.setVisibleState(state));\n    }\n    /**\n     * Method that sets the expanded state of the tree list items.\n     * @param {boolean} state\n     */\n    public setExpandedState(state: boolean): void {\n        this.items.toArray().forEach((item) => item.setExpandedState(state));\n    }\n    /**\n     * Method that puts the focus on the first child tree item.\n     */\n    public focus(): void {\n        // Focus on the first child tree item:\n        if (this.items && this.items.length > 0) {\n            this.items.first.focus();\n        }\n    }\n    /**\n     * Method that makes the tree list not focusable.\n     */\n    public disableFocus(): void {\n        this.tabindex = '-1';\n    }\n    /**\n     * Method used to focus on the previous tree item in the list.\n     * @param {EuiTreeListItemComponent} currentTreeListItem - The current tree list item.\n     * @return {boolean} - Returns true if the focus was set on the previous tree item, false otherwise.\n     */\n    public focusOnPreviousTreeItem(currentTreeListItem: EuiTreeListItemComponent): boolean {\n        if (this.items && this.items.length > 0) {\n            let previousTreeListItem: EuiTreeListItemComponent = null;\n            for (const treeListItem of this.items.toArray()) {\n                if (treeListItem !== currentTreeListItem) {\n                    previousTreeListItem = treeListItem;\n                } else if (previousTreeListItem) {\n                    previousTreeListItem.focusOnLastExpandedTreeItem();\n                    return true;\n                }\n            }\n\n            // Focus on the last item of the previous parent:\n            // First find the parent list item:\n            if (this.elementRef) {\n                let parent = this.elementRef.nativeElement.parentElement;\n                while (parent && !parent.classList.contains('eui-tree-list-item')) {\n                    parent = parent.parentElement;\n                }\n\n                if (parent) {\n                    // parent tree-item is found\n                    const content = parent.querySelector('.eui-tree-list-item-header__content');\n                    if (content) {\n                        content.setAttribute('tabindex', '0');\n                        content.focus();\n                        return true;\n                    }\n                }\n            }\n        }\n\n        return false;\n    }\n    /**\n     * Method used to focus on the next tree item in the list.\n     * @param {EuiTreeListItemComponent} currentTreeListItem - The current tree list item.\n     * @return {boolean} - Returns true if the focus was set on the next tree item, false otherwise.\n     */\n    public focusOnNextTreeItem(currentTreeListItem: EuiTreeListItemComponent): boolean {\n        if (this.items && this.items.length > 0) {\n            if (currentTreeListItem !== this.items.last) {\n                let previousTreeListItem: EuiTreeListItemComponent = null;\n                for (const treeListItem of this.items.toArray()) {\n                    if (previousTreeListItem !== currentTreeListItem) {\n                        previousTreeListItem = treeListItem;\n                    } else {\n                        treeListItem.focus();\n                        return true;\n                    }\n                }\n            } else {\n                // The current focused tree item is the last one; find the first next tree item:\n                if (this.elementRef) {\n                    // First find the parent tree list item:\n                    let parent = this.elementRef.nativeElement.parentElement;\n                    // Find the parent that is not a last child itself:\n                    while (parent && (parent.tagName.toLowerCase() !== 'eui-tree-list-item' || parent.nextElementSibling === null)) {\n                        parent = parent.parentElement;\n                    }\n\n                    if (parent) {\n                        // parent tree list item is found; focus on the first child of the next list item\n                        const nextTreeListItem = parent.nextElementSibling;\n                        if (nextTreeListItem) {\n                            const next = nextTreeListItem.querySelector('.eui-tree-list-item-header__content');\n                            next.setAttribute('tabindex', '0');\n                            next.focus();\n                            return true;\n                        }\n                    }\n                }\n            }\n        }\n\n        return false;\n    }\n    /**\n     * Method that sets the default filter function to filter the tree list items.\n     * @param {EuiTreeListFilterParams} params - The filter parameters.\n     * @returns {boolean} - Returns true if the item matches the filter, false otherwise.\n     * @private\n     */\n    private defaultFilterFunction(params: EuiTreeListFilterParams): boolean {\n        if (!params.item.label) {\n            return false;\n        } else if (params.item.label.toUpperCase().indexOf(params.keyword.toUpperCase()) !== -1) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n    /**\n     * Method that filters the tree list items based on the provided params.\n     * @param {number} level - The level of the item in the tree list.\n     * @param {EuiTreeListItemComponent} item - The tree list item to filter.\n     * @param {string} keyword - The keyword to filter by.\n     * @returns {boolean} - Returns true if the item matches the filter, false otherwise.\n     * @private\n     */\n    private filterMatched(level: number, item: EuiTreeListItemComponent, keyword: string): boolean {\n        if (this.filterFunction) {\n            return this.filterFunction({ level, item, keyword });\n        } else {\n            return this.defaultFilterFunction({ level, item, keyword });\n        }\n    }\n}\n","@if (isShowToolbar) {\n    <eui-tree-list-toolbar\n        [isVisible]=\"isShowToolbar\"\n        [isToggleVisible]=\"isShowToolbarToggle\"\n        (filter)=\"onFilter($event)\"\n        [filterValue]=\"toolbarFilterValue\"\n        (expandAll)=\"onExpandAll($event)\"\n        (collapseAll)=\"onCollapseAll($event)\"\n        [filterLabel]=\"filterLabel ? filterLabel : 'eui.FILTER' | translate\"\n        [expandAllLabel]=\"hasExpandAllLabel ? expandAllLabel : 'eui.EXPANDALL' | translate\"\n        [collapseAllLabel]=\"hasCollapseAllLabel ? collapseAllLabel : 'eui.COLLAPSEALL' | translate\"\n        [isToggleExpanded]=\"isExpanded\"\n        attr.data-e2e=\"{{ e2eAttr }}-a-toolbar-filter\" />\n}\n\n<div\n    class=\"eui-tree-list\"\n    [attr.role]=\"ariaRoleTree\"\n    [attr.data-tabindex]=\"originalTabindex\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-owns]=\"ariaOwns\"\n    attr.data-e2e=\"{{ e2eAttr }}\">\n    <ng-content></ng-content>\n</div>\n","import { Component, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Content projection component for custom content within eui-tree-list-item.\n * Provides a structured container for rich content beyond simple labels.\n * Applies consistent styling for custom item content.\n * Must be used within eui-tree-list-item to define custom content areas.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-tree-list-item>\n *   <eui-tree-list-item-content>\n *     <eui-icon-svg icon=\"eui-file\" size=\"s\" />\n *     <span>Document.pdf</span>\n *     <eui-badge euiInfo>New</eui-badge>\n *   </eui-tree-list-item-content>\n * </eui-tree-list-item>\n *\n * <!-- Complex content -->\n * <eui-tree-list-item>\n *   <eui-tree-list-item-content>\n *     <div class=\"custom-layout\">\n *       <img src=\"icon.png\" alt=\"File icon\" />\n *       <div>\n *         <strong>File Name</strong>\n *         <small>Last modified: 2 hours ago</small>\n *       </div>\n *     </div>\n *   </eui-tree-list-item-content>\n * </eui-tree-list-item>\n * ```\n *\n * ### Accessibility\n * - Content should include appropriate semantic HTML\n * - Images should have alt text\n * - Interactive elements should be keyboard accessible\n *\n * ### Notes\n * - Replaces default label rendering when used\n * - Supports any HTML content or Angular components\n * - Maintains consistent spacing and alignment\n * - Works with expand/collapse functionality\n */\n@Component({\n    selector: 'eui-tree-list-item-content',\n    template: '<ng-content />',\n})\nexport class EuiTreeListItemContentComponent {\n    @HostBinding('class') string = 'eui-tree-list-item-content';\n}\n","import {\n    AfterContentInit,\n    booleanAttribute,\n    Component,\n    ContentChild,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewEncapsulation,\n    inject,\n} from '@angular/core';\nimport { UxLinkLegacy } from '@eui/core';\n\nimport { EuiTreeListComponent } from './eui-tree-list.component';\nimport { consumeEvent, uniqueId } from '@eui/core';\nimport { EuiTreeListItemContentComponent } from './item-content/item-content.component';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_ICON_BUTTON_EXPANDER } from '@eui/components/eui-icon-button-expander';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * @description\n * Individual item component within eui-tree-list representing a single node in the hierarchical structure.\n * Supports nested sub-items, expand/collapse functionality, and custom content projection.\n * Implements keyboard navigation and ARIA treeitem role for accessibility.\n * Integrates with BaseStatesDirective for theming variants (primary, secondary, success, warning, danger).\n * Must be used as a direct child of eui-tree-list or nested within other tree list items.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Simple tree item -->\n * <eui-tree-list-item label=\"Documents\" />\n *\n * <!-- Tree item with nested items -->\n * <eui-tree-list-item label=\"Projects\" [isExpanded]=\"true\">\n *   <eui-tree-list>\n *     <eui-tree-list-item label=\"Project A\" />\n *     <eui-tree-list-item label=\"Project B\" />\n *   </eui-tree-list>\n * </eui-tree-list-item>\n *\n * <!-- With sublabel and active state -->\n * <eui-tree-list-item\n *   label=\"Current File\"\n *   subLabel=\"Modified today\"\n *   [isActive]=\"true\"\n *   euiPrimary />\n * ```\n *\n * ### Custom Content\n * ```html\n * <eui-tree-list-item>\n *   <eui-tree-list-item-content>\n *     <eui-icon-svg icon=\"eui-folder\" />\n *     <span>Custom Content</span>\n *   </eui-tree-list-item-content>\n * </eui-tree-list-item>\n *\n * <!-- Custom label -->\n * <eui-tree-list-item>\n *   <eui-tree-list-item-label>\n *     <strong>Bold Label</strong>\n *   </eui-tree-list-item-label>\n * </eui-tree-list-item>\n * ```\n *\n * ### Accessibility\n * - Implements ARIA treeitem role automatically\n * - Keyboard navigation: Arrow keys (up/down/left/right), Enter/Space to toggle\n * - Expanded state announced to screen readers\n * - Focus management with proper tabindex handling\n * - Aria-label generated from label or custom content\n *\n * ### Notes\n * - Nested items must be wrapped in eui-tree-list component\n * - Supports color variants via BaseStatesDirective (euiPrimary, euiSuccess, etc.)\n * - isActive highlights the current/selected item\n * - isAlwaysExpanded keeps item permanently expanded without toggle button\n * - Custom content projections: eui-tree-list-item-label, eui-tree-list-item-details, eui-tree-list-item-sub-container\n */\n@Component({\n    selector: 'eui-tree-list-item',\n    templateUrl: './eui-tree-list-item.component.html',\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        TranslateModule,\n        FormsModule,\n        NgTemplateOutlet,\n        ...EUI_LABEL,\n        ...EUI_ICON_INPUT,\n        ...EUI_ICON_BUTTON_EXPANDER,\n    ],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: ['euiPrimary', 'euiSecondary', 'euiInfo', 'euiSuccess', 'euiWarning', 'euiDanger', 'euiVariant'],\n        },\n    ],\n})\nexport class EuiTreeListItemComponent implements AfterContentInit {\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return this.getCssClasses();\n    }\n    @HostBinding('attr.tabindex') tabIndex = '0';\n    @HostBinding('attr.role') protected ariaRole = 'treeitem';\n\n    @HostBinding('attr.id') @Input() id: string;\n    @HostBinding('attr.aria-label') @Input() ariaLabel: string;\n    @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-tree-list-item';\n    /**\n     * The label of the tree list item if there is no customLabel.\n     * @type {string}\n     */\n    @Input() label: string;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input() linkUrl: string;\n    /**\n     * The sublabel of the tree list item if there is no customLabel.\n     * @type {string}\n     */\n    @Input() subLabel: string;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input() url: string;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input() subLinks: UxLinkLegacy[] = [];\n    /**\n     * Option that enables a corresponding class if it is set to true.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isActive = false;\n    /**\n     * Option to set the expanded state of the list item.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isExpanded = false;\n    /**\n     * Option to set the expanded state of the list item when it is always expanded.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isAlwaysExpanded = false;\n    /**\n     * Option to set the visible state of the list item and apply the corresponding hidden class if it is set to false.\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isVisible = true;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) isDisplaySubLinksOnHover = false;\n    /**\n     * @deprecated This property is not used anymore and will be removed in the next major version.\n     */\n    @Input({ transform: booleanAttribute }) isNavigateOnlyOnLabelClick = false;\n    /**\n     * Event emitted upon toggling the expanded state.\n     */\n    @Output() toggled = new EventEmitter<EuiTreeListItemComponent>();\n\n    isHovered = false;\n    treeListComponent: EuiTreeListComponent = inject(EuiTreeListComponent, { host: true, optional: true })!\n\n    // tree states\n    hasSub = false;\n\n    // custom content\n    hasCustomContent = false;\n\n    @ViewChild('focusable') focusable: ElementRef<HTMLDivElement>;\n\n    @ContentChild(forwardRef(() => EuiTreeListItemLabelTagDirective))\n    customLabel: QueryList<EuiTreeListItemLabelTagDirective>;\n\n    @ContentChild(forwardRef(() => EuiTreeListItemDetailsContentTagDirective))\n    customDetailContent: QueryList<EuiTreeListItemDetailsContentTagDirective>;\n\n    @ContentChild(forwardRef(() => EuiTreeListItemSubContainerContentTagDirective))\n    customSubContainerContent: QueryList<EuiTreeListItemSubContainerContentTagDirective>;\n\n    @ContentChildren(forwardRef(() => EuiTreeListComponent), { descendants: true })\n    subTreeList: QueryList<EuiTreeListComponent>;\n\n    @ContentChildren(forwardRef(() => EuiTreeListItemContentComponent), { descendants: false })\n    customContent: QueryList<EuiTreeListItemContentComponent>;\n    protected elementRef = inject(ElementRef);\n    baseStatesDirective = inject(BaseStatesDirective);\n\n    ngAfterContentInit(): void {\n        if (!this.ariaLabel) {\n            this.ariaLabel = this.label ? this.label : 'Custom content';\n        }\n\n        // make sure that the tree item can be aria-owned by a parent tree for WAI-ARIA attributes:\n        if (!this.id) {\n            this.id = uniqueId();\n        }\n\n        // setting tree states\n        if (this.subTreeList.length !== 0) {\n            this.hasSub = true;\n        }\n\n        // checking if customContent set\n        if (this.customContent.length !== 0) {\n            this.hasCustomContent = true;\n        }\n\n        // make sure that any child tree-list is non-focusable and that it has the role of a WAI-ARIA group:\n        if (this.subTreeList) {\n            this.subTreeList.forEach((subtree: EuiTreeListComponent) => {\n                subtree.disableFocus();\n                subtree.ariaRoleTree = 'group';\n            });\n        }\n    }\n    /**\n     * Method fired when the expander button is clicked.\n     * @param {Event} event - The click event.\n     */\n    toggle(event: Event): void {\n        event.preventDefault();\n        event.stopPropagation();\n        this.isExpanded = !this.isExpanded;\n        this.toggled.next(this);\n    }\n    /**\n     * Method fired when a key is pressed down.\n     * @param {KeyboardEvent} event - The keyboard event.\n     */\n    onKeyDown(event: KeyboardEvent): void {\n        switch (event.keyCode) {\n            case 13: // ENTER\n            case 32: // SPACE\n                this.isExpanded = !this.isExpanded;\n                consumeEvent(event);\n                break;\n            case 37: // ARROW LEFT\n                this.isExpanded = false;\n                consumeEvent(event);\n                break;\n            case 38: // ARROW UP\n                if (this.treeListComponent) {\n                    if (this.treeListComponent.focusOnPreviousTreeItem(this)) {\n                        this.disableFocus();\n                    }\n                }\n\n                consumeEvent(event);\n                break;\n            case 39: // ARROW RIGHT\n                this.isExpanded = true;\n                consumeEvent(event);\n                break;\n            case 40: // ARROW DOWN\n                if (this.focusOnNextTreeItem()) {\n                    this.disableFocus();\n                }\n\n                consumeEvent(event);\n                break;\n        }\n    }\n    /**\n     * Method that sets the visible state.\n     * @param {boolean} state - The visible state.\n     */\n    public setVisibleState(state: boolean): void {\n        this.isVisible = state;\n\n        if (this.subTreeList && this.subTreeList.length !== 0) {\n            this.subTreeList.toArray().forEach((item) => {\n                item.setVisibleState(state);\n            });\n        }\n    }\n    /**\n     * Method that sets the expanded state.\n     * @param {boolean} state - The expanded state.\n     */\n    public setExpandedState(state: boolean): void {\n        this.isExpanded = state;\n\n        if (this.subTreeList.length !== 0) {\n            this.subTreeList.toArray().forEach((item) => {\n                item.setExpandedState(state);\n            });\n        }\n    }\n    /**\n     * Method used to enable/disable the focus state.\n     */\n    public focus(): void {\n        if (this.focusable) {\n            this.enableFocus();\n            this.focusable.nativeElement.focus();\n        }\n        if (this.treeListComponent) {\n            this.treeListComponent.disableFocus();\n        }\n    }\n    /**\n     * Method used to focus on the last expanded tree item.\n     */\n    public focusOnLastExpandedTreeItem(): void {\n        const lastExpanded = this.elementRef.nativeElement.querySelectorAll('.eui-tree-list-item-header__content');\n        if (lastExpanded && lastExpanded.length > 0) {\n            const element = lastExpanded[lastExpanded.length - 1];\n            element.setAttribute('tabindex', '0');\n            element.focus();\n        } else {\n            this.focus();\n        }\n    }\n    /**\n     * Method used to focus on the next tree item.\n     * @returns {boolean} - Returns true if the focus was set, false otherwise.\n     * @protected\n     */\n    protected focusOnNextTreeItem(): boolean {\n        if (this.isExpanded && this.subTreeList && this.subTreeList.length > 0) {\n            this.subTreeList.first.focus();\n            return true;\n        } else if (this.treeListComponent) {\n            return this.treeListComponent.focusOnNextTreeItem(this);\n        }\n\n        return false;\n    }\n    /**\n     * Method used to disable the focus state.\n     * @protected\n     */\n    protected disableFocus(): void {\n        if (this.focusable) {\n            this.focusable.nativeElement.setAttribute('tabindex', '-1');\n        }\n    }\n    /**\n     * Method used to enable the focus state.\n     * @protected\n     */\n    protected enableFocus(): void {\n        if (this.focusable) {\n            this.focusable.nativeElement.setAttribute('tabindex', '0');\n        }\n    }\n    /**\n     * Method used to get the CSS classes for the tree list item.\n     * @returns {string} - The CSS classes.\n     * @private\n     */\n    private getCssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-tree-list-item'),\n            this.isActive ? 'eui-tree-list-item--active' : '',\n            !this.isVisible ? 'eui-tree-list-item--hidden' : '',\n        ]\n            .join(' ')\n            .trim();\n    }\n}\n\n/* eslint-disable */\n/**\n * @description\n * Directive for projecting custom label content into eui-tree-list-item.\n * Replaces the default label rendering with custom HTML or components.\n *\n * @usageNotes\n * ```html\n * <eui-tree-list-item>\n *   <eui-tree-list-item-label>\n *     <eui-icon-svg icon=\"eui-star\" />\n *     <strong>Custom Label</strong>\n *   </eui-tree-list-item-label>\n * </eui-tree-list-item>\n * ```\n *\n * ### Accessibility\n * - Ensure custom content is semantically meaningful\n * - Include text alternatives for icons\n *\n * ### Notes\n * - Overrides label and subLabel inputs when used\n * - Supports any HTML content\n */\n@Directive({ selector: 'eui-tree-list-item-label', })\nexport class EuiTreeListItemLabelTagDirective {}\n\n/**\n * @description\n * Directive for projecting additional details content below the main label in eui-tree-list-item.\n * Provides a secondary content area for metadata or additional information.\n *\n * @usageNotes\n * ```html\n * <eui-tree-list-item label=\"Document\">\n *   <eui-tree-list-item-details>\n *     <small>Last modified: 2 hours ago</small>\n *     <eui-badge euiInfo>Draft</eui-badge>\n *   </eui-tree-list-item-details>\n * </eui-tree-list-item>\n * ```\n *\n * ### Accessibility\n * - Details content should be supplementary, not critical\n * - Use appropriate semantic elements\n *\n * ### Notes\n * - Renders below the main label area\n * - Useful for metadata, timestamps, or status indicators\n */\n@Directive({ selector: 'eui-tree-list-item-details', })\nexport class EuiTreeListItemDetailsContentTagDirective {}\n\n/**\n * @description\n * Directive for projecting custom container content within eui-tree-list-item.\n * Provides a flexible content area for complex layouts or additional UI elements.\n *\n * @usageNotes\n * ```html\n * <eui-tree-list-item label=\"Folder\">\n *   <eui-tree-list-item-sub-container>\n *     <div class=\"custom-actions\">\n *       <button euiButton euiSecondary>Action</button>\n *     </div>\n *   </eui-tree-list-item-sub-container>\n * </eui-tree-list-item>\n * ```\n *\n * ### Accessibility\n * - Interactive elements should be keyboard accessible\n * - Maintain logical tab order\n *\n * ### Notes\n * - Renders in a dedicated container area\n * - Useful for action buttons or complex UI\n */\n@Directive({ selector: 'eui-tree-list-item-sub-container', })\nexport class EuiTreeListItemSubContainerContentTagDirective {}\n/* eslint-enable */\n","<div class=\"eui-tree-list-item-header\">\n    <div\n        #focusable\n        class=\"eui-tree-list-item-header__content\"\n        (keydown)=\"onKeyDown($event)\"\n        attr.aria-label=\"{{ label }} {{ subLabel }}\">\n\n        @if (hasCustomContent) {\n            <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n            <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n        } @else {\n            <div class=\"eui-u-flex\">\n                <eui-label>\n                    @if (!customLabel) {\n                        {{label}}\n                        @if (subLabel) {\n                        <eui-label euiSublabel>{{subLabel}}</eui-label>\n                        }\n                    } @else {\n                        <div class=\"eui-u-flex\">\n                            <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n                        </div>\n                    }\n                </eui-label>\n            </div>\n            <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n        }\n    </div>\n\n    @if (customDetailContent) {\n        <div class=\"eui-tree-list-item-header__details-content\">\n            <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n        </div>\n    }\n\n    @if (customSubContainerContent) {\n        <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n    }\n</div>\n\n@if (isExpanded || isAlwaysExpanded) {\n    <ng-content />\n}\n\n<ng-template #rightContent>\n    <div class=\"eui-tree-list-item-header__content-right-content\">\n        <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n            @if (hasSub && !isAlwaysExpanded) {\n                <eui-icon-button-expander\n                    (buttonClick)=\"toggle($event)\"\n                    [isExpanded]=\"isExpanded\"\n                    isDirectionForward>\n                </eui-icon-button-expander>\n            }\n        </div>\n    </div>\n</ng-template>\n","import { EuiTreeListItemComponent, EuiTreeListItemDetailsContentTagDirective, EuiTreeListItemLabelTagDirective, EuiTreeListItemSubContainerContentTagDirective } from './eui-tree-list-item.component';\nimport { EuiTreeListComponent } from './eui-tree-list.component';\nimport { EuiTreeListItemContentComponent } from './item-content/item-content.component';\nimport { EuiTreeListToolbarComponent } from './toolbar/toolbar.component';\n\nexport * from './eui-tree-list.component';\nexport * from './eui-tree-list-item.component';\n\nexport * from './item-content/item-content.component';\nexport * from './toolbar/toolbar.component';\n\nexport const EUI_TREE_LIST = [\n        EuiTreeListComponent,\n        EuiTreeListItemComponent,\n        EuiTreeListItemLabelTagDirective,\n        EuiTreeListItemDetailsContentTagDirective,\n        EuiTreeListItemSubContainerContentTagDirective,\n        EuiTreeListItemContentComponent,\n        EuiTreeListToolbarComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}