{"version":3,"file":"eui-components-eui-accordion.mjs","sources":["../../eui-accordion/eui-accordion-item.component.ts","../../eui-accordion/eui-accordion-item.component.html","../../eui-accordion/eui-accordion.component.ts","../../eui-accordion/index.ts","../../eui-accordion/eui-components-eui-accordion.ts"],"sourcesContent":["import { CdkAccordionItem, CdkAccordionModule } from '@angular/cdk/accordion';\nimport { Component, HostBinding, ChangeDetectionStrategy, Directive, inject, output } from '@angular/core';\nimport { consumeEvent } from '@eui/core';\nimport { BaseStatesDirective, euiAnimationCollapse } from '@eui/components/shared';\nimport { EUI_ICON } from '@eui/components/eui-icon';\n\n/**\n * @description\n * Individual accordion item component that can be expanded or collapsed within an eui-accordion container.\n * Provides a collapsible panel with header and content sections, supporting smooth collapse animations.\n * Uses Angular CDK's accordion item functionality for managing expansion state and accessibility.\n * Supports size variants (S, M, L) and disabled state through BaseStatesDirective.\n * Emits toggleItem event when expansion state changes, allowing parent components to track state.\n *\n * @usageNotes\n * ### Basic usage\n * ```html\n * <eui-accordion>\n *   <eui-accordion-item>\n *     <eui-accordion-item-header>Header Text</eui-accordion-item-header>\n *     Panel content goes here\n *   </eui-accordion-item>\n * </eui-accordion>\n * ```\n *\n * ### With initial expanded state and size variant\n * ```html\n * <eui-accordion-item isExpanded euiSizeS (toggleItem)=\"onToggle($event)\">\n *   <eui-accordion-item-header>Small Item</eui-accordion-item-header>\n *   Content\n * </eui-accordion-item>\n * ```\n *\n * ### Disabled item\n * ```html\n * <eui-accordion-item euiDisabled>\n *   <eui-accordion-item-header>Disabled Item</eui-accordion-item-header>\n *   Content\n * </eui-accordion-item>\n * ```\n *\n * ### Accessibility\n * - Header is keyboard accessible with Enter/Space to toggle expansion\n * - ARIA attributes (aria-expanded, aria-controls) automatically managed by CDK\n * - Screen readers announce expansion state and content visibility changes\n * - Focus remains on header after toggling for consistent keyboard navigation\n * - Disabled items are not focusable and announced as disabled to screen readers\n *\n * ### Notes\n * - Must be used within an eui-accordion parent component\n * - Requires eui-accordion-item-header directive for header content\n * - Collapse animation is applied automatically on state changes\n * - Size variants (euiSizeS, euiSizeM, euiSizeL) affect header and content spacing\n * - toggleItem event emits boolean indicating current expanded state (true = expanded)\n * - isExpanded input can be used for programmatic control of expansion state\n */\n@Component({\n    selector: 'eui-accordion-item',\n    templateUrl: './eui-accordion-item.component.html',\n    styleUrl: './eui-accordion-item.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        ...EUI_ICON,\n        CdkAccordionModule,\n    ],\n    hostDirectives: [\n        {\n            directive: CdkAccordionItem,\n            inputs: [\n                'expanded: isExpanded',\n            ],\n        },\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiSizeS',\n                'euiSizeM',\n                'euiSizeL',\n                'euiSizeVariant',\n                'euiDisabled',\n            ],\n        },\n    ],\n    animations: [\n        euiAnimationCollapse,\n    ],\n})\nexport class EuiAccordionItemComponent {\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-accordion-item'),\n        ].join(' ').trim();\n    }\n    /**\n     * Event emitted when the accordion item is toggled\n     */\n    readonly toggleItem = output<boolean>();\n\n    /** @description Instance of BaseStatesDirective for managing component states */\n    protected baseStatesDirective = inject(BaseStatesDirective);\n    protected accItem = inject(CdkAccordionItem);\n\n    /**\n     * Handles the toggle event for expanding/collapsing the accordion item\n     * Prevents event propagation to avoid interfering with parent handlers\n     *\n     * @param event - The toggle event\n     */\n    onToggle(event: Event): void {\n        this.accItem.toggle();\n        this.toggleItem.emit(this.accItem.expanded);\n        consumeEvent(event);\n    }\n}\n\n/**\n * @description\n * Directive for marking and styling the header content of an accordion item.\n * Applied to content that should appear in the clickable header section of the accordion panel.\n * The header acts as the toggle trigger for expanding/collapsing the accordion item.\n * Content projected with this directive is displayed with appropriate styling and interactive behavior.\n *\n * @usageNotes\n * ```html\n * <eui-accordion-item>\n *   <eui-accordion-item-header>\n *     Section Title\n *   </eui-accordion-item-header>\n *   Panel content\n * </eui-accordion-item>\n * ```\n *\n * ### Accessibility\n * - Header content is automatically wrapped in an interactive button element\n * - Keyboard accessible with Enter/Space keys for toggling\n * - Screen readers announce the header text and expansion state\n *\n * ### Notes\n * - Required for proper accordion item structure\n * - Must be a direct child of eui-accordion-item\n * - Only one header directive should be used per accordion item\n * - Header content can include text, icons, or other inline elements\n */\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'eui-accordion-item-header' })\nexport class EuiAccordionItemHeaderDirective { }\n","<button class=\"eui-accordion-item__header\" (click)=\"onToggle($event)\" (keydown.enter)=\"onToggle($event)\">\n    <ng-content select=\"eui-accordion-item-header\"/>\n\n    <div class=\"eui-accordion-item__header-expander\">\n        @if (accItem.expanded) {\n            <eui-icon-svg icon=\"eui-chevron-up\" fillColor=\"primary\"/>\n        } @else {\n            <eui-icon-svg icon=\"eui-chevron-down\" fillColor=\"primary\"/>\n        }\n    </div>\n</button>\n<div [@euiAnimationCollapse]=\"!accItem.expanded\" class=\"eui-accordion-item__body\">\n    <ng-content></ng-content>\n</div>\n\n","import { CdkAccordion } from '@angular/cdk/accordion';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * @description\n * Accordion container component that manages a collection of expandable panel items.\n * Provides collapsible content sections with automatic expansion state coordination across child items.\n * Supports single or multi-expansion modes to control whether multiple panels can be open simultaneously.\n * Built on Angular CDK Accordion for robust expansion state management and accessibility.\n * Content is projected via ng-content, expecting eui-accordion-item children for proper functionality.\n * Typically used for organizing related content in expandable sections like FAQs, settings panels, or navigation menus.\n *\n * @usageNotes\n * #### Single expansion mode (default)\n * ```html\n * <eui-accordion>\n *   <eui-accordion-item>\n *     <eui-accordion-item-header>Section 1</eui-accordion-item-header>\n *     Content for section 1\n *   </eui-accordion-item>\n *   <eui-accordion-item>\n *     <eui-accordion-item-header>Section 2</eui-accordion-item-header>\n *     Content for section 2\n *   </eui-accordion-item>\n * </eui-accordion>\n * ```\n *\n * #### Multi-expansion mode\n * ```html\n * <eui-accordion isMulti>\n *   <eui-accordion-item (toggleItem)=\"onToggle($event)\">\n *     <eui-accordion-item-header>Item 1</eui-accordion-item-header>\n *     Content 1\n *   </eui-accordion-item>\n * </eui-accordion>\n * ```\n *\n * ### Accessibility\n * - Uses Angular CDK Accordion which provides built-in ARIA attributes (aria-expanded, aria-controls)\n * - Each accordion item header is keyboard accessible and can be toggled with Enter/Space\n * - Screen readers announce expansion state changes automatically\n * - Focus management handled by CDK for keyboard navigation between items\n *\n * ### Notes\n * - In single-expansion mode (default), opening one item automatically closes others\n * - Set `isMulti` to allow multiple items to be expanded simultaneously\n * - Must contain eui-accordion-item children for proper functionality\n * - Expansion state is managed internally by Angular CDK Accordion\n * - Use toggleItem event on items to track expansion state changes\n */\n@Component({\n    selector: 'eui-accordion',\n    template: '<ng-content/>',\n    styleUrl: './eui-accordion.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [\n        {\n            directive: CdkAccordion,\n            inputs: [ 'multi: isMulti' ],\n        },\n    ],\n    host: {\n        '[class]': 'cssClasses()',\n    },\n})\nexport class EuiAccordionComponent {\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    cssClasses(): string {\n        return [\n            'eui-accordion',\n        ].join(' ').trim();\n    }\n}\n","import { EuiAccordionItemComponent, EuiAccordionItemHeaderDirective } from './eui-accordion-item.component';\nimport { EuiAccordionComponent } from './eui-accordion.component';\n\nexport * from './eui-accordion.component';\nexport * from './eui-accordion-item.component';\n\nexport const EUI_ACCORDION = [\n    EuiAccordionComponent,\n    EuiAccordionItemComponent,\n    EuiAccordionItemHeaderDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}