{"version":3,"file":"eui-components-eui-chip.mjs","sources":["../../eui-chip/eui-chip.component.ts","../../eui-chip/eui-chip.component.html","../../eui-chip/models/eui-chip.model.ts","../../eui-chip/index.ts","../../eui-chip/eui-components-eui-chip.ts"],"sourcesContent":["import {\n    Component,\n    HostBinding,\n    Input,\n    ChangeDetectionStrategy,\n    forwardRef,\n    ContentChildren,\n    QueryList,\n    AfterContentInit,\n    Output,\n    EventEmitter,\n    ViewChild,\n    ElementRef,\n    booleanAttribute,\n    inject,\n} from '@angular/core';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { EUI_ICON, EuiIconSvgComponent } from '@eui/components/eui-icon'\nimport { EUI_ICON_BUTTON } from '@eui/components/eui-icon-button';\n\n/**\n * @description\n * Chips are compact elements that allow users to enter information, select a choice, filter content or trigger an action.\n * The eui-chip component can also be displayed dynamically as a group of multiple interactive elements, see eui-chip-list.\n * \n * @usageNotes\n * #### Basic chip\n * ```html\n * <eui-chip>Chip label</eui-chip>\n * ```\n *\n * #### Chip with color variant\n * ```html\n * <eui-chip euiPrimary>Primary</eui-chip>\n * <eui-chip euiSuccess>Success</eui-chip>\n * ```\n *\n * #### Removable chip\n * ```html\n * <eui-chip [isChipRemovable]=\"true\" (remove)=\"onRemove($event)\">\n *   Removable\n * </eui-chip>\n * ```\n *\n * #### Chip with icon\n * ```html\n * <eui-chip>\n *   <eui-icon-svg icon=\"user:outline\"></eui-icon-svg>\n *   User\n * </eui-chip>\n * ```\n *\n * #### Filled chip with tooltip\n * ```html\n * <eui-chip \n *   [isFilled]=\"true\" \n *   euiTooltip=\"Additional information\"\n *   tooltipMessage=\"Chip details\">\n *   Info\n * </eui-chip>\n * ```\n *\n * #### Size variants\n * ```html\n * <eui-chip euiSizeS>Small</eui-chip>\n * <eui-chip>Default</eui-chip>\n * ```\n *\n * ```ts\n * onRemove(data: any): void {\n *   console.log('Chip removed:', data);\n * }\n * ```\n *\n * ### Accessibility\n * - Uses role=\"status\" for screen reader announcements (changes to \"listitem\" within eui-chip-list)\n * - aria-label provides context about chip content (default: \"Chip content\")\n * - Removable chips have keyboard accessible remove button (Enter/Space)\n * - Backspace key can also remove chips when focused\n * - Icon-only chips should have descriptive aria-label\n * - Color variants provide visual meaning supplemented by text\n *\n * ### Notes\n * - Can be used as element (eui-chip) or attribute (span[euiChip], li[euiChip])\n * - Color variants: euiPrimary, euiSecondary, euiSuccess, euiInfo, euiWarning, euiDanger\n * - Size variants: euiSizeS, default (medium)\n * - isChipRemovable adds close button and enables removal\n * - isFilled applies solid background color instead of outline\n * - euiOutline applies outline/ghost styling\n * - euiDisabled disables interaction\n * - colorPalette accepts custom color palette names for extended theming\n * - tooltipMessage displays tooltip on hover\n * - id and euiInternalId for identification (euiInternalId used internally for tracking)\n * - data property holds chip metadata including tooltip configuration\n * - remove event emits chip data when removed\n * - Supports icon content via eui-icon-svg child component\n * - Automatically sets role=\"listitem\" when used within eui-chip-list\n * - Commonly used in eui-chip-list for managing multiple chips\n */\n@Component({\n    templateUrl: './eui-chip.component.html',\n    selector: 'eui-chip, span[euiChip], li[euiChip]',\n    styleUrl: './eui-chip.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        ...EUI_ICON,\n        ...EUI_ICON_BUTTON,\n    ],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiPrimary',\n                'euiSecondary',\n                'euiSuccess',\n                'euiInfo',\n                'euiWarning',\n                'euiDanger',\n                'euiVariant',\n                'euiSizeS',\n                'euiSizeVariant',\n                'euiOutline',\n                'euiDisabled',\n            ],\n        },\n    ],\n})\nexport class EuiChipComponent implements AfterContentInit {\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    get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-chip'),\n            this.isChipRemovable ? 'eui-chip--removable' : '',\n            this.isFilled ? 'eui-chip--filled': '',\n            this.colorPalette ? `eui-chip--${this.colorPalette}` : '',\n        ].join(' ').trim();\n    }\n\n    /**\n     * Sets the `role` attribute for the host element.\n     *\n     * @default 'status'\n     */\n    @HostBinding('attr.role') role = 'status';\n    /**\n     * Sets the `aria-label` attribute for the host element.\n     *\n     * @default 'Chip content'\n     */\n    @Input() @HostBinding('attr.aria-label') ariaLabel = 'Chip content';\n\n    /**\n     * Sets the `data-e2e` attribute for the host element.\n     *\n     * @default 'eui-chip'\n     */\n    @HostBinding('attr.data-e2e')\n    @Input()\n    e2eAttr = 'eui-chip';\n\n    /**\n     * Sets the euiInternalId of the chip.\n     *\n     * @default null\n     */\n    @Input() euiInternalId: string = null;\n    /**\n     * Sets the label of the tooltip to diaply on hover.\n     */\n    @Input() tooltipMessage: string;\n    /**\n     * Sets the id of the chip.\n     */\n    @Input() id: string | number;\n    /**\n     * Sets the data of the chip like tooltip configuration.\n     */\n    // TODO: type should be specific\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    @Input() data: any = {\n        id: crypto.randomUUID(),\n        tooltip: {\n            color: 'euiTooltipPrimary',\n            contentAlignment: null,\n            position: 'above',\n        },\n    };\n\n    /**\n     * Wether the chip can be removed.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChipRemovable = false;\n    /**\n     * Wether the chip is filled with color.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isFilled = false;\n    /**\n     * Extra color palette to be used on the chip.\n     */\n    @Input() colorPalette: string;\n\n    /**\n     * Event emitted when the chip is removed.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    @Output() remove = new EventEmitter<any>();\n\n    /**\n     * Icon declares by user in the chip\n     */\n    @ContentChildren(forwardRef(() => EuiIconSvgComponent)) euiIcons: QueryList<EuiIconSvgComponent>;\n    @ViewChild('chipLabel') chipLabel: ElementRef<HTMLInputElement>;\n    baseStatesDirective = inject(BaseStatesDirective);\n    private _elementRef = inject(ElementRef);\n\n    ngAfterContentInit(): void {\n        if (!this.data.id && this.id) {\n            this.data = Object.assign(this.data, { id: this.id });\n        }\n        // checks if the parent element is an eui-chip-list to set role listitem or if a parent above in case cdkdroplist interferes\n        if (this._elementRef.nativeElement.parentElement?.classList.contains('eui-chip-list__chip-container') || this._elementRef.nativeElement.parentElement?.parentElement?.classList.contains('eui-chip-list__chip-container')) {\n            this.role = 'listitem'\n        }\n    }\n\n    /**\n     * Remove chip handler\n     *\n     * @param event Click event\n     */\n    public onRemove(event?: Event): void {\n        if (event instanceof KeyboardEvent && (event as KeyboardEvent).code === 'Backspace') {\n            this.remove.emit({ chip: this.data, event });\n        } else {\n            this.remove.emit(this.data);\n        }\n    }\n}\n","<div class=\"eui-chip__content-container\" #chipLabel>\n    <ng-content></ng-content>\n</div>\n@if (isChipRemovable) {\n    <eui-icon-button\n        class=\"eui-chip__close\"\n        ariaLabel=\"Remove {{ chipLabel.textContent }} chip\"\n        icon=\"eui-close\"\n        size=\"s\"\n        euiRounded\n        hasNoPadding\n        [euiVariant]=\"baseStatesDirective.euiVariant\"\n        (keydown.enter)=\"onRemove($event)\"\n        (keydown.backspace)=\"onRemove($event)\"\n        (buttonClick)=\"onRemove($event)\">\n    </eui-icon-button>\n}\n","export class EuiChip {\n    id: string | number;\n    euiInternalId: string;\n    label: string;\n    isRemovable = false;\n    isOutline = false;\n    isRounded = false;\n    isDisabled = false;\n    variant: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'danger' | 'accent' = 'primary';\n    tooltip: EuiChipTooltip = new EuiChipTooltip();\n    iconClass?: string;\n    iconSvgName?: string;\n\n    constructor(values = {}) {\n        Object.assign(this, values);\n    }\n}\n\nexport class EuiChipTooltip {\n    tooltipMessage: string;\n    position?: 'above' | 'below' | 'left' | 'right' | 'before' | 'after' = 'above';\n    contentAlignment?: 'center' | 'left' | 'right' | 'justify' = 'center';\n    delay? = 0;\n\n    constructor(values = {}) {\n        Object.assign(this, values);\n    }\n}\n","import { EuiChipComponent } from './eui-chip.component';\n\nexport * from './models/eui-chip.model';\nexport * from './eui-chip.component';\n\nexport const EUI_CHIP = [\n    EuiChipComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}