{"version":3,"file":"eui-components-eui-input-text.mjs","sources":["../../eui-input-text/eui-input-text.component.ts","../../eui-input-text/eui-icon.directive.ts","../../eui-input-text/index.ts","../../eui-input-text/eui-components-eui-input-text.ts"],"sourcesContent":["import {\n\tComponent,\n\tDoCheck,\n\tElementRef,\n\tOnDestroy,\n\tOnInit,\n\tRenderer2,\n\tinject,\n\tinput,\n\tbooleanAttribute,\n\teffect,\n\tlinkedSignal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputDirective } from '@eui/components/shared';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { EuiClearableDirective, EuiLoadingDirective } from '@eui/components/directives';\n\n/**\n * @description\n * A custom input text component that extends InputDirective and provides additional functionality\n * such as validation states, clearable input, and loading states.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <input euiInputText [(ngModel)]=\"username\" placeholder=\"Enter username\" />\n * ```\n *\n * ### With Clearable Button\n * ```html\n * <input euiInputText [euiClearable]=\"true\" [(ngModel)]=\"searchTerm\" />\n * ```\n *\n * ### With Loading State\n * ```html\n * <input euiInputText [euiLoading]=\"isSearching\" [(ngModel)]=\"query\" />\n * ```\n *\n * ### Accessibility\n * - Use associated `<label>` with `for` attribute\n * - Invalid state is communicated via visual styling and `aria-invalid`\n * - Clearable button has appropriate ARIA label\n *\n * ### Notes\n * - Supports all standard HTML input attributes\n * - Works with Angular Forms (template-driven and reactive)\n * - Validation state automatically syncs with form control\n */\n@Component({\n\t// eslint-disable-next-line @angular-eslint/component-selector\n\tselector: 'input[euiInputText]',\n\ttemplate: '',\n\tstyleUrls: ['./eui-input-text.scss'],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: EuiClearableDirective,\n\t\t\tinputs: ['euiClearable', 'readonly', 'disabled'],\n\t\t},\n\t\t{\n\t\t\tdirective: EuiLoadingDirective,\n\t\t\tinputs: ['euiLoading', 'readonly'],\n\t\t},\n\t],\n\thost: {\n\t\t'[class]': 'class',\n\t},\n})\nexport class EuiInputTextComponent extends InputDirective implements OnInit, OnDestroy, DoCheck {\n    /**\n     * @description\n     * Gets the CSS classes for the component, including validation state classes\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    public get class(): string {\n        return [super.getCssClasses('eui-input-text'), this._isInvalid() ? 'eui-input-text--invalid' : ''].join(' ').trim();\n    }\n\n    /**\n     * @description\n     * Gets or sets the invalid state of the input\n     * When used with NgControl, this state is automatically managed based on control state\n     *\n     * @returns {boolean} Current invalid state\n     */\n\tisInvalid = input<boolean, BooleanInput>(null, { transform: booleanAttribute });\n\n    /** @internal */\n    protected _isInvalid = linkedSignal({\n\t\tsource: this.isInvalid,\n\t\tcomputation: () => this.isInvalid(),\n\t})\n    protected control = inject(NgControl, { optional: true, self: true })!;\n    protected _elementRef: ElementRef = inject(ElementRef);\n    protected _renderer: Renderer2 = inject(Renderer2);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\teffect(() => {\n\t\t\tthis.setInvalid(this.isInvalid());\n\t\t});\n\t}\n    /**\n     * @description\n     * Initializes the component and sets the root class name\n     */\n    ngOnInit(): void {\n        super.ngOnInit();\n        this._renderer.setProperty(this._elementRef.nativeElement, 'rootClassName', 'eui-input-text');\n    }\n\n    /**\n     * @description\n     * Cleans up component resources\n     */\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    /**\n     * @description\n     * Checks and updates the invalid state when using NgControl\n     */\n    ngDoCheck(): void {\n        if (this.control) {\n            this._isInvalid.set(this.control.invalid && this.control.touched);\n        }\n    }\n\n    /**\n     * @description\n     * Sets the invalid state of the input and updates related properties\n     *\n     * @param {boolean} state - The invalid state to set\n     * @private\n     */\n    private setInvalid(state?: boolean): void {\n        // in case it's controlled by NgControl override\n\t\tthis._isInvalid.set(this.control ? this.control.invalid && this.control.touched : state);\n\n        // set BaseDirective Attribute\n        this.euiDanger = this._isInvalid();\n    }\n}\n","import {\n    booleanAttribute,\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostBinding,\n    Renderer2,\n    ViewContainerRef,\n    inject,\n    input,\n    effect,\n    output,\n    computed,\n    OnDestroy,\n} from '@angular/core';\nimport { EuiIconSvgComponent } from '@eui/components/eui-icon';\n\n/**\n * @description\n * Metadata for the icon directive used in input elements.\n * This interface defines the properties that can be used to configure the icon,\n * including the icon name, aria label, and whether the icon is clickable.\n */\nexport interface InputIconMetadata {\n    /**\n     * @description\n     * The icon name to be displayed. This should correspond to an icon in the icon set.\n     */\n    icon: string;\n    /**\n     * @description\n     * The aria-label for the icon, used for accessibility purposes.\n     * This should describe the icon's function or purpose.\n     */\n    ariaLabel?: string;\n    /**\n     * @description\n     * Indicates whether the icon is clickable. If true, the icon will respond to click events.\n     * If false, the icon will not respond to click events and will not have pointer events enabled.\n     */\n    clickable?: boolean;\n    /**\n     * @description\n     * The color of the icon. This can be used to customize the appearance of the icon.\n     * If not specified, the default color will be used.\n     */\n    colour?: string;\n}\n\n/**\n * @description\n * Directive to add an icon to an eui-input-text element, allowing for click events too.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <input euiInputText [euiIcon]=\"{ icon: 'eui-search' }\" />\n * ```\n *\n * ### Clickable Icon\n * ```html\n * <input euiInputText \n *   [euiIcon]=\"{ icon: 'eui-close', clickable: true, ariaLabel: 'Clear search' }\"\n *   (iconClick)=\"clearSearch()\" />\n * ```\n *\n * ### Accessibility\n * - Non-clickable icons should be decorative (`aria-hidden=\"true\"`)\n * - Clickable icons must have `ariaLabel` for screen readers\n * - Clickable icons are keyboard accessible (Tab + Enter)\n *\n * ### Notes\n * - Icon is positioned at the end of the input\n * - Automatically creates flex wrapper for layout\n * - Supports custom icon colors via `colour` property\n */\n@Directive({\n    selector: 'input[euiInputText][euiIcon]',\n\thost: {\n\t\t'[class]': 'cssClasses',\n\t},\n})\nexport class EuiIconDirective implements OnDestroy {\n    euiIcon = input<InputIconMetadata>()\n    readonly = input(null, { transform: booleanAttribute });\n    iconClick = output()\n    public get cssClasses(): string {\n        return [this._cssClasses, this.euiIcon()?.icon ? `${this._elementRef.nativeElement.rootClassName}--loading` : ''].join(' ').trim();\n    }\n    public set cssClasses(value: string) {\n        this._cssClasses = value;\n    }\n    @HostBinding('attr.readonly') protected _readonly: string | null;\n    protected _icon: ComponentRef<EuiIconSvgComponent>;\n    private _euiUFlexWrapper: HTMLDivElement;\n    private _cssClasses: string;\n    private _elementRef = inject(ElementRef);\n    private _viewContainerRef = inject(ViewContainerRef);\n    private _renderer = inject(Renderer2);\n    private listeners: (() => void)[] = [];\n    private clickable = computed(() => this.euiIcon()?.clickable ?? false);\n    private icon = computed(() => this.euiIcon()?.icon);\n    private iconColour = computed(() => this.euiIcon()?.colour);\n    private readonly DEFAULT_ICON_COLOUR = 'secondary';\n\n    constructor() {\n        effect(() => {\n            this._readonly = this.readonly() ? '' : null;\n            if(this.readonly()) {\n                this.removeIcon();\n                this.removeFlexWrapper();\n            } else if (this.euiIcon()?.icon && this.readonly() === false) {\n                // create wrapper\n                this.createFlexWrapper();\n\n                // dynamically create the icon\n                this.createIcon();\n                this._renderer.appendChild(this._euiUFlexWrapper, this._icon.location.nativeElement);\n            }\n        });\n\n        effect(() => {\n            const icon = this.icon();\n            if(!icon) {\n                this.removeIcon();\n                this.removeFlexWrapper();\n            } else if (!this._icon && !this.readonly()) {\n                this.createFlexWrapper();\n                this.createIcon();\n            } else if (this._icon) {\n                this._icon.setInput('icon', icon);\n            }\n        });\n\n        effect(() => {\n            const clickable = this.clickable();\n            if(!clickable) {\n                this._renderer.removeAttribute(this._icon.location.nativeElement, 'tabindex');\n                this._renderer.setStyle(this._icon.location.nativeElement, 'pointer-events', 'none');\n            } else {\n                this._renderer.setAttribute(this._icon.location.nativeElement, 'tabindex', '0');\n                this._icon.setInput('ariaHidden', false);\n                this._icon.setInput('focusable', true);\n                this._icon.setInput('ariaLabel', this.euiIcon()?.ariaLabel || 'Input icon');\n                this._renderer.removeStyle(this._icon.location.nativeElement, 'pointer-events');\n            }\n        });\n\n        effect(() => {\n            const iconColour = this.iconColour();\n            if (this._icon) {\n                this._icon.setInput('fillColor', iconColour || this.DEFAULT_ICON_COLOUR);\n            }\n        })\n    }\n\n    ngOnDestroy(): void {\n        // Clean up listeners\n        this.listeners?.forEach(listener => listener());\n        this.listeners = [];\n    }\n\n    /**\n     * create a flex wrapper for the input to hold the icon\n     *\n     * @private\n     */\n    private createFlexWrapper(): void {\n        if (!this._euiUFlexWrapper && !this.doesParentHasAFlexWrapper()) {\n            this._euiUFlexWrapper = this._renderer.createElement('div');\n            this._renderer.addClass(this._euiUFlexWrapper, 'eui-u-flex');\n            this._renderer.setAttribute(this._euiUFlexWrapper, 'flexWrapper', null);\n            this._renderer.setStyle(this._euiUFlexWrapper, 'position', 'relative');\n            this._renderer.insertBefore(\n                this._elementRef.nativeElement.parentElement,\n                this._euiUFlexWrapper,\n                this._elementRef.nativeElement,\n            );\n            this._renderer.appendChild(this._euiUFlexWrapper, this._elementRef.nativeElement);\n        }\n        if (!this._euiUFlexWrapper && this.doesParentHasAFlexWrapper()) {\n            this._euiUFlexWrapper = this._elementRef.nativeElement.parentElement;\n        }\n    }\n\n    /**\n     * checks if the parent has a flexWrapper. This is used to avoid creating multiple flexWrappers\n     *\n     * @private\n     */\n    private doesParentHasAFlexWrapper(): boolean {\n        return this._elementRef.nativeElement.parentElement.hasAttribute('flexWrapper');\n    }\n\n    /**\n     * removes the flexWrapper while keeping the input element intact\n     *\n     * @private\n     */\n    private removeFlexWrapper(): void {\n        if (this._euiUFlexWrapper) {\n            this._renderer.insertBefore(this._euiUFlexWrapper.parentElement, this._elementRef.nativeElement, this._euiUFlexWrapper);\n            this._renderer.removeChild(this._euiUFlexWrapper.parentElement, this._euiUFlexWrapper);\n            this._euiUFlexWrapper.remove();\n            this._euiUFlexWrapper = null;\n        }\n    }\n\n    private registerIconClickListener(): void {\n        this.listeners.push(\n            this._renderer.listen(this._icon.location.nativeElement, 'click', this.onIconClicked.bind(this)),\n            this._renderer.listen(this._icon.location.nativeElement, 'keydown.enter', this.onIconClicked.bind(this)),\n            this._renderer.listen(this._icon.location.nativeElement, 'focus', () => {\n                if (!this.readonly() && this.euiIcon()?.clickable) {\n                    this._renderer.setStyle(this._icon.location.nativeElement, 'transition', 'none');\n                    this._renderer.setStyle(this._icon.location.nativeElement, 'outline-offset', '-2px !important');\n                    this._renderer.setStyle(this._icon.location.nativeElement, 'outline', '2px solid var(--eui-c-focus-visible) !important');\n                }\n            }),\n            this._renderer.listen(this._icon.location.nativeElement, 'blur', () => {\n                this._renderer.removeStyle(this._icon.location.nativeElement, 'outline');\n                this._renderer.removeStyle(this._icon.location.nativeElement, 'outline-offset');\n                this._renderer.removeStyle(this._icon.location.nativeElement, 'transition');\n            }),\n        );\n    }\n\n    /**\n     * creates the icon component\n     *\n     * @private\n     */\n    private createIcon(): void {\n        if (!this._icon) {\n            this._icon = this._viewContainerRef.createComponent(EuiIconSvgComponent);\n            this._icon.instance.isInputIcon = true;\n            this._icon.instance.euiEnd = true;\n            this._icon.instance.icon = this.euiIcon()?.icon;\n            this._icon.instance.ariaLabel = this.euiIcon()?.ariaLabel;\n            this._icon.instance.fillColor = this.euiIcon()?.colour || this.DEFAULT_ICON_COLOUR;\n            this.registerIconClickListener();\n\n            this._renderer.appendChild(this._euiUFlexWrapper, this._icon.location.nativeElement);\n        }\n    }\n\n    /**\n     * @description\n     * Handles the click event on the icon.\n     */\n    private onIconClicked(): void {\n        this.iconClick.emit();\n    }\n\n    /**\n     * removes the icon component\n     *\n     * @private\n     */\n    private removeIcon(): void {\n        if (this._icon) {\n            const index = this._viewContainerRef.indexOf(this._icon.hostView);\n            this._viewContainerRef.detach(index);\n            this._icon = null;\n            // Clean up listeners\n            this.listeners.forEach(listener => listener());\n            this.listeners = [];\n        }\n    }\n}\n","import { EuiInputTextComponent } from './eui-input-text.component';\n\nexport * from './eui-icon.directive';\nexport * from './eui-input-text.component';\n\nexport const EUI_INPUT_TEXT = [\n    EuiInputTextComponent,\n] as const;\n\n// export { EuiInputTextComponent as EuiInputText } from './eui-input-text.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}