{"version":3,"file":"eui-components-eui-toggle-group.mjs","sources":["../../eui-toggle-group/eui-toggle-group-item.component.ts","../../eui-toggle-group/eui-toggle-group.component.ts","../../eui-toggle-group/index.ts","../../eui-toggle-group/eui-components-eui-toggle-group.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\n/**\n * @description\n * Individual toggle item component within eui-toggle-group for segmented control interfaces.\n * Represents a single selectable option in a group of mutually exclusive or multi-select choices.\n * Manages checked state and emits selection events for parent toggle group coordination.\n * Provides button-based interaction with consistent styling and accessibility.\n * Must be used as a direct child of eui-toggle-group to participate in group selection behavior.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Within toggle group -->\n * <eui-toggle-group>\n *   <eui-toggle-group-item id=\"option1\" [isChecked]=\"true\">\n *     Option 1\n *   </eui-toggle-group-item>\n *   <eui-toggle-group-item id=\"option2\">\n *     Option 2\n *   </eui-toggle-group-item>\n * </eui-toggle-group>\n * ```\n *\n * ### Accessibility\n * - Button element provides native keyboard support\n * - Clear, descriptive text content is essential\n * - Checked state is visually distinct\n *\n * ### Notes\n * - Must be direct child of eui-toggle-group\n * - Requires unique id for state management\n * - Selection behavior controlled by parent toggle group\n */\n@Component({\n    selector: 'eui-toggle-group-item',\n    styleUrl: './eui-toggle-group-item.component.scss',\n    template: '<button (click)=\"buttonClick()\"><ng-content/></button>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiToggleGroupItemComponent {\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-toggle-group-item',\n            this.isChecked ? 'eui-toggle-group-item--checked' : '',\n        ].join(' ').trim();\n    }    \n    /**\n     * Unique identifier for the toggle item.\n     * Used for tracking selection state and programmatic item management.\n     */\n    @HostBinding('attr.id')\n    @Input() id: string;\n\n    /**\n     * Controls the checked state of the toggle item.\n     * When true, applies checked styling and indicates selection.\n     * Managed by parent toggle group for single-select mode or individually for multi-select.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChecked = false;\n\n    /**\n     * Emitted when the toggle item is clicked.\n     * Payload: reference to the clicked EuiToggleGroupItemComponent instance.\n     * Allows parent toggle group to coordinate selection state across items.\n     */\n    @Output() itemClick: EventEmitter<EuiToggleGroupItemComponent> = new EventEmitter<EuiToggleGroupItemComponent>();\n\n    protected buttonClick(): void {\n        this.itemClick.emit(this);\n    }    \n}\n","import {\n    AfterContentInit,\n    Component,\n    ContentChildren,\n    EventEmitter,\n    forwardRef,\n    Input,\n    Output,\n    QueryList,\n    ChangeDetectionStrategy,\n    HostBinding,\n    booleanAttribute,\n} from '@angular/core';\n\nimport { EuiToggleGroupItemComponent } from './eui-toggle-group-item.component';\n\n/**\n * @description\n * Component for grouping multiple buttons together with optional checkbox or radio button behavior.\n * Segmented control component that groups multiple toggle items into a unified selection interface.\n * Supports both single-select (radio button behavior) and multi-select (checkbox behavior) modes.\n * Manages selection state coordination across child toggle items automatically.\n * Provides fluid width option for responsive layouts where items expand to fill available space.\n * Commonly used for view switchers, filter options, or any mutually exclusive or multi-select choice sets.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Single select (radio behavior) -->\n * <eui-toggle-group (itemClick)=\"onViewChange($event)\">\n *   <eui-toggle-group-item id=\"list\" [isChecked]=\"true\">\n *     List View\n *   </eui-toggle-group-item>\n *   <eui-toggle-group-item id=\"grid\">\n *     Grid View\n *   </eui-toggle-group-item>\n * </eui-toggle-group>\n *\n * <!-- Multi-select (checkbox behavior) -->\n * <eui-toggle-group [isMultiple]=\"true\">\n *   <eui-toggle-group-item id=\"bold\">Bold</eui-toggle-group-item>\n *   <eui-toggle-group-item id=\"italic\">Italic</eui-toggle-group-item>\n *   <eui-toggle-group-item id=\"underline\">Underline</eui-toggle-group-item>\n * </eui-toggle-group>\n *\n * <!-- Fluid width -->\n * <eui-toggle-group [isFluid]=\"true\">\n *   <eui-toggle-group-item id=\"option1\">Option 1</eui-toggle-group-item>\n *   <eui-toggle-group-item id=\"option2\">Option 2</eui-toggle-group-item>\n * </eui-toggle-group>\n * ```\n *\n * ### Accessibility\n * - Use role=\"group\" with aria-label describing the group purpose\n * - Each item should have clear, descriptive text\n * - Keyboard navigation (Tab, Arrow keys) should work\n * - Announce selection changes to screen readers\n *\n * ### Notes\n * - Single-select mode (default): only one item can be checked at a time\n * - Multi-select mode (isMultiple=\"true\"): multiple items can be checked\n * - Fluid mode (isFluid=\"true\"): items expand to fill container width\n * - Each item must have unique id for proper state management\n */\n@Component({\n    selector: 'eui-toggle-group',\n    template: '<ng-content/>',\n    styleUrls: ['./eui-toggle-group.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiToggleGroupComponent implements AfterContentInit {\n    /** CSS classes applied to the host element */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-toggle-group',\n            this.isFluid ? 'eui-toggle-group--fluid' : '',\n        ].join(' ').trim();\n    } \n    /**\n     * Whether the several items can be checked\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isMultiple = false;\n    @Input({ transform: booleanAttribute }) isFluid = false;\n\n    /**\n     * Event emitted when any item in the group is clicked\n     * Emits the clicked EuiToggleGroupItemComponent instance\n     */\n    @Output() itemClick: EventEmitter<EuiToggleGroupItemComponent> = new EventEmitter<EuiToggleGroupItemComponent>();\n\n    /**\n     * Query list of all EuiButtonComponent instances within the group\n     */\n    @ContentChildren(forwardRef(() => EuiToggleGroupItemComponent)) items: QueryList<EuiToggleGroupItemComponent>;\n\n    /**\n     * Initializes button click subscriptions after content is initialized\n     */\n    ngAfterContentInit(): void {\n        this.items.map((b: EuiToggleGroupItemComponent) => {\n            b.itemClick.subscribe(() => {\n                this.handleInnerButtonClick(b);\n            });\n        });\n    }\n\n    private handleInnerButtonClick(item: EuiToggleGroupItemComponent): void {\n        try {\n            if (item.isChecked && this.isMultiple) {\n                item.isChecked = false;\n            } else {\n                if (this.isMultiple) {\n                    this.items.find((b) => b.id === item.id).isChecked = true;\n                } else {\n                    this.items.find((b) => b.id === item.id).isChecked = true;\n                    this.items.forEach((b) => {\n                        if (b.id !== item.id) {\n                            b.isChecked = false;\n                        }\n                    });\n                }\n            }\n\n            this.itemClick.emit(item);\n        } catch (e) {\n            console.log(e);\n        }\n    }\n}\n","import { EuiToggleGroupItemComponent } from './eui-toggle-group-item.component';\nimport { EuiToggleGroupComponent } from './eui-toggle-group.component';\n\nexport * from './eui-toggle-group.component';\nexport * from './eui-toggle-group-item.component';\n\nexport const EUI_TOGGLE_GROUP = [\n    EuiToggleGroupComponent,\n    EuiToggleGroupItemComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}