{"version":3,"file":"igniteui-angular-input-group.mjs","sources":["../../../projects/igniteui-angular/input-group/src/input-group/directives-hint/hint.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.common.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-input/input.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-label/label.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-prefix/prefix.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/directives-suffix/suffix.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/inputGroupType.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.html","../../../projects/igniteui-angular/input-group/src/input-group/directives-input/read-only-input.directive.ts","../../../projects/igniteui-angular/input-group/src/input-group/public_api.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.module.ts","../../../projects/igniteui-angular/input-group/src/igniteui-angular-input-group.ts"],"sourcesContent":["import { Directive, HostBinding, Input, OnInit } from '@angular/core';\n\nenum IgxHintPosition {\n    START,\n    END\n}\n\n@Directive({\n    selector: '[igxHint],igx-hint',\n    standalone: true\n})\nexport class IgxHintDirective implements OnInit {\n    /**\n     * Sets/gets whether the hint position is at the start.\n     * Default value is `false`.\n     * ```typescript\n     * @ViewChild('hint', {read: IgxHintDirective})\n     * public igxHint: IgxHintDirective;\n     * this.igxHint.isPositionStart = true;\n     * ```\n     * ```typescript\n     * let isHintPositionStart = this.igxHint.isPositionStart;\n     * ```\n     *\n     * @memberof IgxHintDirective\n     */\n    @HostBinding('class.igx-input-group__hint-item--start')\n    public isPositionStart = false;\n    /**\n     * Sets/gets whether the hint position is at the end.\n     * Default value is `false`.\n     * ```typescript\n     * @ViewChild('hint', {read: IgxHintDirective})\n     * public igxHint: IgxHintDirective;\n     * this.igxHint.isPositionEnd = true;\n     * ```\n     * ```typescript\n     * let isHintPositionEnd = this.igxHint.isPositionEnd;\n     * ```\n     *\n     * @memberof IgxHintDirective\n     */\n    @HostBinding('class.igx-input-group__hint-item--end')\n    public isPositionEnd = false;\n\n    private _position: IgxHintPosition = IgxHintPosition.START;\n    /**\n     * Sets the position of the hint.\n     * ```html\n     * <igx-input-group>\n     *  <input igxInput type=\"text\"/>\n     *  <igx-hint #hint [position]=\"'start'\">IgxHint displayed at the start</igx-hint>\n     * </igx-input-group>\n     * ```\n     *\n     * @memberof IgxHintDirective\n     */\n    @Input()\n    public set position(value: string) {\n        const position: IgxHintPosition = (IgxHintPosition as any)[value.toUpperCase()];\n        if (position !== undefined) {\n            this._position = position;\n            this._applyPosition(this._position);\n        }\n    }\n    /**\n     * Gets the position of the hint.\n     * ```typescript\n     * @ViewChild('hint', {read: IgxHintDirective})\n     * public igxHint: IgxHintDirective;\n     * let hintPosition =  this.igxHint.position;\n     * ```\n     *\n     * @memberof IgxHintDirective\n     */\n    public get position() {\n        return this._position.toString();\n    }\n    /**\n     * @hidden\n     */\n    public ngOnInit() {\n        this._applyPosition(this._position);\n    }\n\n    private _applyPosition(position: IgxHintPosition) {\n        this.isPositionStart = this.isPositionEnd = false;\n        switch (position) {\n            case IgxHintPosition.START:\n                this.isPositionStart = true;\n                break;\n            case IgxHintPosition.END:\n                this.isPositionEnd = true;\n                break;\n            default: break;\n        }\n    }\n}\n","/** @hidden */\nexport abstract class IgxInputGroupBase {\n    public disabled: boolean;\n    public isFocused: boolean;\n    public isRequired: boolean;\n    public hasPlaceholder: boolean;\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, Input, OnDestroy, Renderer2, booleanAttribute, inject } from '@angular/core';\nimport {\n    AbstractControl,\n    NgControl,\n    NgModel,\n    TouchedChangeEvent\n} from '@angular/forms';\nimport { filter, Subscription } from 'rxjs';\nimport { IgxInputGroupBase } from '../input-group.common';\n\nconst nativeValidationAttributes = [\n    'required',\n    'pattern',\n    'minlength',\n    'maxlength',\n    'min',\n    'max',\n    'step',\n];\n\nexport enum IgxInputState {\n    INITIAL,\n    VALID,\n    INVALID,\n}\n\n/**\n * The `igxInput` directive creates single- or multiline text elements, covering common scenarios when dealing with form inputs.\n *\n * @igxModule IgxInputGroupModule\n *\n * @igxParent Data Entry & Display\n *\n * @igxTheme igx-input-group-theme\n *\n * @igxKeywords input, input group, form, field, validation\n *\n * @igxGroup presentation\n *\n * @example\n * ```html\n * <input-group>\n *  <label for=\"address\">Address</label>\n *  <input igxInput name=\"address\" type=\"text\" [(ngModel)]=\"customer.address\">\n * </input-group>\n * ```\n */\n@Directive({\n    selector: '[igxInput]',\n    exportAs: 'igxInput',\n    standalone: true\n})\nexport class IgxInputDirective implements AfterViewInit, OnDestroy {\n    public inputGroup = inject(IgxInputGroupBase);\n    protected ngModel = inject<NgModel>(NgModel, { optional: true, self: true });\n    protected formControl = inject<NgControl>(NgControl, { optional: true, self: true });\n    protected element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n    protected cdr = inject(ChangeDetectorRef);\n    protected renderer = inject(Renderer2);\n\n    /**\n     * Sets/gets whether the `\"igx-input-group__input\"` class is added to the host element.\n     * Default value is `false`.\n     *\n     * @example\n     * ```typescript\n     * this.igxInput.isInput = true;\n     * ```\n     *\n     * @example\n     * ```typescript\n     * let isCLassAdded = this.igxInput.isInput;\n     * ```\n     */\n    @HostBinding('class.igx-input-group__input')\n    public isInput = false;\n    /**\n     * Sets/gets whether the `\"class.igx-input-group__textarea\"` class is added to the host element.\n     * Default value is `false`.\n     *\n     * @example\n     * ```typescript\n     * this.igxInput.isTextArea = true;\n     * ```\n     *\n     * @example\n     * ```typescript\n     * let isCLassAdded = this.igxInput.isTextArea;\n     * ```\n     */\n    @HostBinding('class.igx-input-group__textarea')\n    public isTextArea = false;\n\n    private _valid = IgxInputState.INITIAL;\n    private _statusChanges$: Subscription;\n    private _valueChanges$: Subscription;\n    private _touchedChanges$: Subscription;\n    private _fileNames: string;\n    private _disabled = false;\n\n    private get ngControl(): NgControl {\n        return this.ngModel ? this.ngModel : this.formControl;\n    }\n\n    /**\n     * Sets the `value` property.\n     *\n     * @example\n     * ```html\n     * <input-group>\n     *  <input igxInput #igxInput [value]=\"'IgxInput Value'\">\n     * </input-group>\n     * ```\n     */\n    @Input()\n    public set value(value: any) {\n        this.nativeElement.value = value ?? '';\n        this.updateValidityState();\n    }\n    /**\n     * Gets the `value` property.\n     *\n     * @example\n     * ```typescript\n     * @ViewChild('igxInput', {read: IgxInputDirective})\n     *  public igxInput: IgxInputDirective;\n     * let inputValue = this.igxInput.value;\n     * ```\n     */\n    public get value() {\n        return this.nativeElement.value;\n    }\n    /**\n     * Sets the `disabled` property.\n     *\n     * @example\n     * ```html\n     * <input-group>\n     *  <input igxInput #igxInput [disabled]=\"true\">\n     * </input-group>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    @HostBinding('disabled')\n    public set disabled(value: boolean) {\n        this._disabled = this.inputGroup.disabled = value;\n        if (this.focused && this._disabled) {\n            // Browser focus may not fire in good time and mess with change detection, adjust here in advance:\n            this.inputGroup.isFocused = false;\n        }\n    }\n    /**\n     * Gets the `disabled` property\n     *\n     * @example\n     * ```typescript\n     * @ViewChild('igxInput', {read: IgxInputDirective})\n     *  public igxInput: IgxInputDirective;\n     * let isDisabled = this.igxInput.disabled;\n     * ```\n     */\n    public get disabled() {\n        return this._disabled;\n    }\n\n    /**\n     * Sets the `required` property.\n     *\n     * @example\n     * ```html\n     * <input-group>\n     *  <input igxInput #igxInput required>\n     * </input-group>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public set required(value: boolean) {\n        this.nativeElement.required = this.inputGroup.isRequired = value;\n    }\n\n    /**\n     * Gets whether the igxInput is required.\n     *\n     * @example\n     * ```typescript\n     * let isRequired = this.igxInput.required;\n     * ```\n     */\n    public get required() {\n        let validation;\n        if (this.ngControl && (this.ngControl.control.validator || this.ngControl.control.asyncValidator)) {\n            validation = this.ngControl.control.validator({} as AbstractControl);\n        }\n        return validation && validation.required || this.nativeElement.hasAttribute('required');\n    }\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostListener('focus')\n    public onFocus() {\n        this.inputGroup.isFocused = true;\n    }\n    /**\n     * @param event The event to invoke the handler\n     *\n     * @hidden\n     * @internal\n     */\n    @HostListener('blur')\n    public onBlur() {\n        this.inputGroup.isFocused = false;\n        if (this.ngControl?.control) {\n            this.ngControl.control.markAsTouched();\n        }\n        this.updateValidityState();\n    }\n    /** @hidden @internal */\n    @HostListener('input')\n    public onInput() {\n        this.checkNativeValidity();\n    }\n    /** @hidden @internal */\n    @HostListener('change', ['$event'])\n    public change(event: Event) {\n        if (this.type === 'file') {\n            const fileList: FileList | null = (event.target as HTMLInputElement)\n                .files;\n            const fileArray: File[] = [];\n\n            if (fileList) {\n                for (const file of Array.from(fileList)) {\n                    fileArray.push(file);\n                }\n            }\n\n            this._fileNames = (fileArray || []).map((f: File) => f.name).join(', ');\n\n            if (this.required && fileList?.length > 0) {\n                this._valid = IgxInputState.INITIAL;\n            }\n        }\n    }\n\n    /** @hidden @internal */\n    public get fileNames() {\n        return this._fileNames;\n    }\n\n    /** @hidden @internal */\n    public clear() {\n        this.ngControl?.control?.setValue('');\n        this.nativeElement.value = null;\n        this._fileNames = '';\n    }\n\n    /** @hidden @internal */\n    public ngAfterViewInit() {\n        this.inputGroup.hasPlaceholder = this.nativeElement.hasAttribute(\n            'placeholder'\n        );\n\n        if (this.ngControl && this.ngControl.disabled !== null) {\n            this.disabled = this.ngControl.disabled;\n        }\n        this.inputGroup.disabled =\n            this.inputGroup.disabled ||\n            this.nativeElement.hasAttribute('disabled');\n        this.inputGroup.isRequired = this.nativeElement.hasAttribute(\n            'required'\n        );\n\n        // Make sure we do not invalidate the input on init\n        if (!this.ngControl) {\n            this._valid = IgxInputState.INITIAL;\n        }\n        // Also check the control's validators for required\n        if (this.required && !this.inputGroup.isRequired) {\n            this.inputGroup.isRequired = this.required;\n        }\n\n        this.renderer.setAttribute(this.nativeElement, 'aria-required', this.required.toString());\n\n        const elTag = this.nativeElement.tagName.toLowerCase();\n        if (elTag === 'textarea') {\n            this.isTextArea = true;\n\n            if (this.nativeElement.getAttribute('rows') === null) {\n                this.renderer.setAttribute(this.nativeElement, 'rows', '3');\n            }\n        } else {\n            this.isInput = true;\n        }\n\n        if (this.ngControl) {\n            this._statusChanges$ = this.ngControl.statusChanges.subscribe(\n                this.onStatusChanged.bind(this)\n            );\n\n            this._valueChanges$ = this.ngControl.valueChanges.subscribe(\n                this.onValueChanged.bind(this)\n            );\n\n            if (this.ngControl.control) {\n                this._touchedChanges$ = this.ngControl.control.events\n                    .pipe(filter(e => e instanceof TouchedChangeEvent))\n                    .subscribe(\n                        this.updateValidityState.bind(this)\n                    );\n            }\n        }\n\n        this.cdr.detectChanges();\n    }\n    /** @hidden @internal */\n    public ngOnDestroy() {\n        if (this._statusChanges$) {\n            this._statusChanges$.unsubscribe();\n        }\n\n        if (this._valueChanges$) {\n            this._valueChanges$.unsubscribe();\n        }\n\n        if (this._touchedChanges$) {\n            this._touchedChanges$.unsubscribe();\n        }\n    }\n    /**\n     * Sets a focus on the igxInput.\n     *\n     * @example\n     * ```typescript\n     * this.igxInput.focus();\n     * ```\n     */\n    public focus() {\n        this.nativeElement.focus();\n    }\n    /**\n     * Gets the `nativeElement` of the igxInput.\n     *\n     * @example\n     * ```typescript\n     * let igxInputNativeElement = this.igxInput.nativeElement;\n     * ```\n     */\n    public get nativeElement() {\n        return this.element.nativeElement;\n    }\n    /** @hidden @internal */\n    protected onStatusChanged() {\n        // Enable/Disable control based on ngControl #7086\n        if (this.disabled !== this.ngControl.disabled) {\n            this.disabled = this.ngControl.disabled;\n        }\n        this.updateValidityState();\n    }\n\n    /** @hidden @internal */\n    protected onValueChanged() {\n        if (this._fileNames && !this.value) {\n            this._fileNames = '';\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    protected updateValidityState() {\n        if (this.ngControl) {\n            if (!this.disabled && this.isTouchedOrDirty) {\n                if (this.hasValidators) {\n                    // Run the validation with empty object to check if required is enabled.\n                    const error = this.ngControl.control.validator({} as AbstractControl);\n                    this.inputGroup.isRequired = error && error.required;\n                    if (this.focused) {\n                        this._valid = this.ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n                    } else {\n                        this._valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n                    }\n                } else {\n                    // If validator is dynamically cleared, reset label's required class(asterisk) and IgxInputState #10010\n                    this.inputGroup.isRequired = false;\n                    this._valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n                }\n            } else {\n                this._valid = IgxInputState.INITIAL;\n            }\n            this.renderer.setAttribute(this.nativeElement, 'aria-required', this.required.toString());\n            const ariaInvalid = this.valid === IgxInputState.INVALID;\n            this.renderer.setAttribute(this.nativeElement, 'aria-invalid', ariaInvalid.toString());\n        } else {\n            this.checkNativeValidity();\n        }\n    }\n\n    private get isTouchedOrDirty(): boolean {\n        return (this.ngControl.control.touched || this.ngControl.control.dirty);\n    }\n\n    private get hasValidators(): boolean {\n        return (!!this.ngControl.control.validator || !!this.ngControl.control.asyncValidator);\n    }\n\n    /**\n     * Gets whether the igxInput has a placeholder.\n     *\n     * @example\n     * ```typescript\n     * let hasPlaceholder = this.igxInput.hasPlaceholder;\n     * ```\n     */\n    public get hasPlaceholder() {\n        return this.nativeElement.hasAttribute('placeholder');\n    }\n    /**\n     * Gets the placeholder element of the igxInput.\n     *\n     * @example\n     * ```typescript\n     * let igxInputPlaceholder = this.igxInput.placeholder;\n     * ```\n     */\n    public get placeholder() {\n        return this.nativeElement.placeholder;\n    }\n\n    /**\n     * @returns An indicator of whether the input has validator attributes or not\n     *\n     * @hidden\n     * @internal\n     */\n    private _hasValidators(): boolean {\n        for (const nativeValidationAttribute of nativeValidationAttributes) {\n            if (this.nativeElement.hasAttribute(nativeValidationAttribute)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    /**\n     * Gets whether the igxInput is focused.\n     *\n     * @example\n     * ```typescript\n     * let isFocused = this.igxInput.focused;\n     * ```\n     */\n    public get focused() {\n        return this.inputGroup.isFocused;\n    }\n    /**\n     * Gets the state of the igxInput.\n     *\n     * @example\n     * ```typescript\n     * let igxInputState = this.igxInput.valid;\n     * ```\n     */\n    public get valid(): IgxInputState {\n        return this._valid;\n    }\n\n    /**\n     * Sets the state of the igxInput.\n     *\n     * @example\n     * ```typescript\n     * this.igxInput.valid = IgxInputState.INVALID;\n     * ```\n     */\n    public set valid(value: IgxInputState) {\n        this._valid = value;\n    }\n\n    /**\n     * Gets whether the igxInput is valid.\n     *\n     * @example\n     * ```typescript\n     * let valid = this.igxInput.isValid;\n     * ```\n     */\n    public get isValid(): boolean {\n        return this.valid !== IgxInputState.INVALID;\n    }\n\n    /**\n     * A function to assign a native validity property of an input.\n     * This should be used when there's no ngControl\n     *\n     * @hidden\n     * @internal\n     */\n    private checkNativeValidity() {\n        if (!this.disabled && this._hasValidators()) {\n            this._valid = this.nativeElement.checkValidity() ?\n                this.focused ? IgxInputState.VALID : IgxInputState.INITIAL :\n                IgxInputState.INVALID;\n        }\n    }\n\n    /**\n     * Returns the input type.\n     *\n     * @hidden\n     * @internal\n     */\n    public get type() {\n        return this.nativeElement.type;\n    }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nlet NEXT_ID = 0;\n\n@Directive({\n    selector: '[igxLabel]',\n    standalone: true\n})\nexport class IgxLabelDirective {\n    @HostBinding('class.igx-input-group__label')\n    public defaultClass = true;\n\n    /**\n     * @hidden\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public id = `igx-label-${NEXT_ID++}`;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @hidden\n */\n@Directive({\n    selector: '[igxPrefix],[igxStart],igx-prefix',\n    standalone: true\n})\nexport class IgxPrefixDirective { }\n","import { Directive } from '@angular/core';\n\n/**\n * @hidden\n */\n@Directive({\n    selector: '[igxSuffix],[igxEnd],igx-suffix',\n    standalone: true\n})\nexport class IgxSuffixDirective { }\n","import { InjectionToken } from '@angular/core';\n\nexport const IgxInputGroupEnum = {\n    Line: 'line',\n    Box: 'box',\n    Border: 'border',\n    Search: 'search'\n} as const;\n\n/**\n * Defines the InputGroupType DI token.\n */\n// Should this go trough Interface https://angular.io/api/core/InjectionToken\nexport const IGX_INPUT_GROUP_TYPE = /*@__PURE__*/new InjectionToken<IgxInputGroupType>('InputGroupType');\n\n/**\n * Determines the InputGroupType.\n */\nexport type IgxInputGroupType = (typeof IgxInputGroupEnum)[keyof typeof IgxInputGroupEnum];\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    HostBinding,\n    HostListener, Input,\n    QueryList, booleanAttribute,\n    inject,\n    DOCUMENT,\n    AfterContentChecked\n} from '@angular/core';\nimport { IInputResourceStrings, InputResourceStringsEN } from 'igniteui-angular/core';\nimport { PlatformUtil, getComponentTheme } from 'igniteui-angular/core';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { IgxHintDirective } from './directives-hint/hint.directive';\nimport {\n    IgxInputDirective,\n    IgxInputState\n} from './directives-input/input.directive';\nimport { IgxPrefixDirective } from './directives-prefix/prefix.directive';\nimport { IgxSuffixDirective } from './directives-suffix/suffix.directive';\n\nimport { IgxInputGroupBase } from './input-group.common';\nimport { IgxInputGroupType, IGX_INPUT_GROUP_TYPE } from './inputGroupType';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { getCurrentResourceStrings, onResourceChangeHandle } from 'igniteui-angular/core';\nimport { IgxTheme, THEME_TOKEN, ThemeToken } from 'igniteui-angular/core';\n\n@Component({\n    selector: 'igx-input-group',\n    templateUrl: 'input-group.component.html',\n    providers: [{ provide: IgxInputGroupBase, useExisting: IgxInputGroupComponent }],\n    imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxInputGroupComponent implements IgxInputGroupBase, AfterContentChecked {\n    public element = inject<ElementRef<HTMLElement>>(ElementRef);\n    private _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n    private document = inject(DOCUMENT);\n    private platform = inject(PlatformUtil);\n    private cdr = inject(ChangeDetectorRef);\n    private themeToken = inject<ThemeToken>(THEME_TOKEN);\n\n    /**\n     * Sets the resource strings.\n     * By default it uses EN resources.\n     */\n    @Input()\n    public set resourceStrings(value: IInputResourceStrings) {\n        this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n    }\n\n    /**\n     * Returns the resource strings.\n     */\n    public get resourceStrings(): IInputResourceStrings {\n        return this._resourceStrings || this._defaultResourceStrings;\n    }\n\n    /**\n     * Property that enables/disables the auto-generated class of the `IgxInputGroupComponent`.\n     * By default applied the class is applied.\n     * ```typescript\n     *  @ViewChild(\"MyInputGroup\")\n     *  public inputGroup: IgxInputGroupComponent;\n     *  ngAfterViewInit(){\n     *  this.inputGroup.defaultClass = false;\n     * ```\n     * }\n     */\n    @HostBinding('class.igx-input-group')\n    public defaultClass = true;\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--placeholder')\n    public hasPlaceholder = false;\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--required')\n    public isRequired = false;\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--focused')\n    public isFocused = false;\n\n    /**\n     * @hidden @internal\n     * When truthy, disables the `IgxInputGroupComponent`.\n     * Controlled by the underlying `IgxInputDirective`.\n     * ```html\n     * <igx-input-group [disabled]=\"true\"></igx-input-group>\n     * ```\n     */\n    @HostBinding('class.igx-input-group--disabled')\n    public disabled = false;\n\n    /**\n     * Prevents automatically focusing the input when clicking on other elements in the input group (e.g. prefix or suffix).\n     *\n     * @remarks Automatic focus causes software keyboard to show on mobile devices.\n     *\n     * @example\n     * ```html\n     * <igx-input-group [suppressInputAutofocus]=\"true\"></igx-input-group>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public suppressInputAutofocus = false;\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--warning')\n    public hasWarning = false;\n\n    /** @hidden */\n    @ContentChildren(IgxHintDirective, { read: IgxHintDirective })\n    protected hints: QueryList<IgxHintDirective>;\n\n    @ContentChildren(IgxPrefixDirective, { read: IgxPrefixDirective, descendants: true })\n    protected _prefixes: QueryList<IgxPrefixDirective>;\n\n    @ContentChildren(IgxSuffixDirective, { read: IgxSuffixDirective, descendants: true })\n    protected _suffixes: QueryList<IgxSuffixDirective>;\n\n    /** @hidden */\n    @ContentChild(IgxInputDirective, { read: IgxInputDirective, static: true })\n    protected input: IgxInputDirective;\n\n    private _destroyRef = inject(DestroyRef);\n    private _type: IgxInputGroupType = null;\n    private _filled = false;\n    private _theme: IgxTheme;\n    private _resourceStrings: IInputResourceStrings = null;\n    private _defaultResourceStrings = getCurrentResourceStrings(InputResourceStringsEN);\n    private _readOnly: undefined | boolean;\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-input-group--readonly')\n    public get readOnly(): boolean {\n        return this._readOnly ?? (this.input?.nativeElement.readOnly || false);\n    }\n\n    /** @hidden @internal */\n    public set readOnly(value: boolean) {\n        this._readOnly = value;\n    }\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--valid')\n    public get validClass(): boolean {\n        return this.input.valid === IgxInputState.VALID;\n    }\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--invalid')\n    public get invalidClass(): boolean {\n        return this.input.valid === IgxInputState.INVALID;\n    }\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--filled')\n    public get isFilled() {\n        return this._filled || (this.input && this.input.value);\n    }\n\n    /** @hidden */\n    @HostBinding('class.igx-input-group--textarea-group')\n    public get textAreaClass(): boolean {\n        return this.input.isTextArea;\n    }\n\n    /**\n     * Sets how the input will be styled.\n     * Allowed values of type IgxInputGroupType.\n     * ```html\n     * <igx-input-group [type]=\"'search'\">\n     * ```\n     */\n    @Input()\n    public set type(value: IgxInputGroupType) {\n        this._type = value;\n    }\n\n    /**\n     * Returns the type of the `IgxInputGroupComponent`. How the input is styled.\n     * The default is `line`.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let inputType = this.inputGroup.type;\n     * }\n     * ```\n     */\n    public get type() {\n        return this._type || this._inputGroupType || 'line';\n    }\n\n    /**\n     * Sets the theme of the input.\n     * Allowed values of type IgxInputGroupTheme.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit() {\n     *  let inputTheme = 'fluent';\n     * }\n     */\n    @Input()\n    public set theme(value: IgxTheme) {\n        this._theme = value;\n    }\n\n    /**\n     * Returns the theme of the input.\n     * The returned value is of type IgxInputGroupType.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit() {\n     *  let inputTheme = this.inputGroup.theme;\n     * }\n     */\n    public get theme(): IgxTheme {\n        return this._theme;\n    }\n\n    constructor() {\n        this._theme = this.themeToken.theme;\n        const themeChange = this.themeToken.onChange((theme) => {\n            if (this._theme !== theme) {\n                this._theme = theme;\n                this.cdr.detectChanges();\n            }\n        });\n        this._destroyRef.onDestroy(() => themeChange.unsubscribe());\n        onResourceChangeHandle(this._destroyRef, () => {\n            this._defaultResourceStrings = getCurrentResourceStrings(InputResourceStringsEN, false);\n        }, this);\n    }\n\n    /** @hidden */\n    @HostListener('click', ['$event'])\n    public onClick(event: MouseEvent) {\n        if (\n            !this.isFocused &&\n            event.target !== this.input.nativeElement &&\n            !this.suppressInputAutofocus\n        ) {\n            this.input.focus();\n        }\n    }\n\n    /** @hidden */\n    @HostListener('pointerdown', ['$event'])\n    public onPointerDown(event: PointerEvent) {\n        if (this.isFocused && event.target !== this.input.nativeElement) {\n            event.preventDefault();\n        }\n    }\n\n    /** @hidden @internal */\n    public hintClickHandler(event: MouseEvent) {\n        event.stopPropagation();\n    }\n\n    /**\n     * Returns whether the `IgxInputGroupComponent` has hints.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let inputHints = this.inputGroup.hasHints;\n     * }\n     * ```\n     */\n    public get hasHints() {\n        return this.hints.length > 0;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-input-group--prefixed')\n    public get hasPrefixes() {\n        return this._prefixes.length > 0;\n    }\n\n    /** @hidden @internal */\n    public set prefixes(items: QueryList<IgxPrefixDirective>) {\n        this._prefixes = items;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-input-group--suffixed')\n    public get hasSuffixes() {\n        return this._suffixes.length > 0 || this.isFileType && this.isFilled;\n    }\n\n    /** @hidden @internal */\n    public set suffixes(items: QueryList<IgxSuffixDirective>) {\n        this._suffixes = items;\n    }\n\n    /**\n     * Returns whether the `IgxInputGroupComponent` has border.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let inputBorder = this.inputGroup.hasBorder;\n     * }\n     * ```\n     */\n    public get hasBorder() {\n        return (\n            (this.type === 'line' || this.type === 'box') &&\n            this._theme === 'material'\n        );\n    }\n\n    /**\n     * Returns whether the `IgxInputGroupComponent` type is line.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeLine = this.inputGroup.isTypeLine;\n     * }\n     * ```\n     */\n    public get isTypeLine(): boolean {\n        return this.type === 'line' && this._theme === 'material';\n    }\n\n    /**\n     * Returns whether the `IgxInputGroupComponent` type is box.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeBox = this.inputGroup.isTypeBox;\n     * }\n     * ```\n     */\n    @HostBinding('class.igx-input-group--box')\n    public get isTypeBox() {\n        return this.type === 'box' && this._theme === 'material';\n    }\n\n    /** @hidden @internal */\n    public clearValueHandler() {\n        this.input.clear();\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-input-group--file')\n    public get isFileType() {\n        return this.input.type === 'file';\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-file-input')\n    public get isFileInput() {\n        return this.input.type === 'file';\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-file-input--filled')\n    public get isFileInputFilled() {\n        return this.isFileType && this.isFilled;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-file-input--focused')\n    public get isFileInputFocused() {\n        return this.isFileType && this.isFocused;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-file-input--disabled')\n    public get isFileInputDisabled() {\n        return this.isFileType && this.disabled;\n    }\n\n    /** @hidden @internal */\n    public get fileNames() {\n        return this.input.fileNames || this.resourceStrings.igx_input_file_placeholder;\n    }\n\n    /**\n     * Returns whether the `IgxInputGroupComponent` type is border.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeBorder = this.inputGroup.isTypeBorder;\n     * }\n     * ```\n     */\n    @HostBinding('class.igx-input-group--border')\n    public get isTypeBorder() {\n        return this.type === 'border' && this._theme === 'material';\n    }\n\n    /**\n     * Returns true if the `IgxInputGroupComponent` theme is Fluent.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeFluent = this.inputGroup.isTypeFluent;\n     * }\n     * ```\n     */\n    @HostBinding('class.igx-input-group--fluent')\n    public get isTypeFluent() {\n        return this._theme === 'fluent';\n    }\n\n    /**\n     * Returns true if the `IgxInputGroupComponent` theme is Bootstrap.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeBootstrap = this.inputGroup.isTypeBootstrap;\n     * }\n     * ```\n     */\n    @HostBinding('class.igx-input-group--bootstrap')\n    public get isTypeBootstrap() {\n        return this._theme === 'bootstrap';\n    }\n\n    /**\n     * Returns true if the `IgxInputGroupComponent` theme is Indigo.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeIndigo = this.inputGroup.isTypeIndigo;\n     * }\n     * ```\n     */\n    @HostBinding('class.igx-input-group--indigo')\n    public get isTypeIndigo() {\n        return this._theme === 'indigo';\n    }\n\n    /**\n     * Returns whether the `IgxInputGroupComponent` type is search.\n     * ```typescript\n     * @ViewChild(\"MyInputGroup1\")\n     * public inputGroup: IgxInputGroupComponent;\n     * ngAfterViewInit(){\n     *    let isTypeSearch = this.inputGroup.isTypeSearch;\n     * }\n     * ```\n     */\n    @HostBinding('class.igx-input-group--search')\n    public get isTypeSearch() {\n        if(!this.isFileType && !this.input.isTextArea) {\n            return this.type === 'search';\n        }\n    }\n\n    /** @hidden */\n    public get filled() {\n        return this._filled;\n    }\n\n    /** @hidden */\n    public set filled(val) {\n        this._filled = val;\n    }\n\n    private setComponentTheme() {\n        if (!this.themeToken.preferToken) {\n            const theme = getComponentTheme(this.element.nativeElement);\n\n            if (theme && theme !== this._theme) {\n                this.theme = theme;\n                this.cdr.markForCheck();\n            }\n        }\n    }\n\n    /** @hidden @internal */\n    public ngAfterContentChecked() {\n        this.setComponentTheme();\n    }\n}\n","@if (isTypeBox) {\n    <div class=\"igx-input-group__wrapper\">\n        <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n    </div>\n} @else {\n    <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n}\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n    <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n    <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n    <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n    <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<!-- Dummy usage to satisfy Angular compiler -->\n<ng-template #dummy><span igxPrefix hidden></span></ng-template>\n\n<ng-template #uploadButton>\n    @if (isFileType) {\n        <div class=\"igx-input-group__upload-button igx-file-input__upload-button-wrapper\">\n            <button\n                igxButton=\"flat\"\n                type=\"button\"\n                tabindex=\"-1\"\n                [disabled]=\"disabled\"\n                class=\"igx-file-input__upload-button\"\n            >\n                {{ resourceStrings.igx_input_upload_button }}\n            </button>\n        </div>\n    }\n</ng-template>\n\n<ng-template #files>\n    @if (isFileType) {\n        <div\n            class=\"igx-input-group__file-input igx-file-input__file-names\"\n            [title]=\"fileNames\"\n        >\n            <span>{{ fileNames }}</span>\n        </div>\n    }\n</ng-template>\n\n<ng-template #clear>\n    @if (isFileType && isFilled) {\n        <igx-suffix\n            class=\"igx-input-group__clear-icon igx-file-input__clear-icon\"\n            (click)=\"clearValueHandler()\"\n            (keydown.Enter)=\"clearValueHandler()\"\n            title=\"clear files\"\n            tabindex=\"0\"\n        >\n            <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n        </igx-suffix>\n    }\n</ng-template>\n\n<ng-template #suffix>\n    <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n    <div class=\"igx-input-group__bundle\">\n        <div class=\"igx-input-group__bundle-start\">\n            <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n        </div>\n\n        <ng-container>\n            <div class=\"igx-input-group__notch\">\n                <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n            </div>\n        </ng-container>\n\n        <div class=\"igx-input-group__bundle-main\">\n            <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n        </div>\n\n        <div class=\"igx-input-group__filler\"></div>\n\n        <div class=\"igx-input-group__bundle-end\">\n            <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n        </div>\n\n        @if (hasBorder) {\n            <div class=\"igx-input-group__line\"></div>\n        }\n    </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n    <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n    <div class=\"igx-input-group__bundle\">\n        <div class=\"igx-input-group__bundle-start\">\n            <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n        </div>\n\n\n        <div class=\"igx-input-group__bundle-main\">\n            <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n        </div>\n\n        <div class=\"igx-input-group__bundle-end\">\n            <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n        </div>\n\n        @if (hasBorder) {\n            <div class=\"igx-input-group__line\"></div>\n        }\n    </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n    <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n    <div class=\"igx-input-group__bundle\">\n        <div class=\"igx-input-group__bundle-start\">\n            <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n        </div>\n\n        <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n        <div class=\"igx-input-group__bundle-end\">\n            <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #bundle>\n    @switch (theme) {\n        @case ('bootstrap') {\n            <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n        }\n        @case ('fluent') {\n            <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n        }\n        @case ('indigo') {\n            <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n        }\n        @default {\n            <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n        }\n    }\n</ng-template>\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { IgxInputGroupComponent } from '../input-group.component';\n\n@Directive({\n    selector: '[igxReadOnlyInput]',\n    exportAs: 'igxReadOnlyInput',\n    standalone: true\n})\nexport class IgxReadOnlyInputDirective {\n    public igxReadOnlyInput = input<boolean>(false);\n\n    private _inputGroup: IgxInputGroupComponent | null = inject(\n        IgxInputGroupComponent,\n        {\n            optional: true\n        }\n    );\n\n    constructor() {\n        effect(() => {\n            if (this._inputGroup) {\n                this._inputGroup.readOnly = this.igxReadOnlyInput();\n            }\n        });\n    }\n}\n","import { IgxHintDirective } from './directives-hint/hint.directive';\nimport { IgxInputDirective } from './directives-input/input.directive';\nimport { IgxLabelDirective } from './directives-label/label.directive';\nimport { IgxPrefixDirective } from './directives-prefix/prefix.directive';\nimport { IgxSuffixDirective } from './directives-suffix/suffix.directive';\nimport { IgxInputGroupComponent } from './input-group.component';\n\nexport * from './input-group.component';\nexport * from './input-group.common';\nexport * from './directives-hint/hint.directive';\nexport * from './directives-input/input.directive';\nexport * from './directives-input/read-only-input.directive';\nexport * from './directives-label/label.directive';\nexport * from './directives-prefix/prefix.directive';\nexport * from './directives-suffix/suffix.directive';\nexport * from './inputGroupType';\n\n/* NOTE: Input group directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_INPUT_GROUP_DIRECTIVES = [\n    IgxInputGroupComponent,\n    IgxInputDirective,\n    IgxLabelDirective,\n    IgxPrefixDirective,\n    IgxSuffixDirective,\n    IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_INPUT_GROUP_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_INPUT_GROUP_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_INPUT_GROUP_DIRECTIVES\n    ]\n})\n\nexport class IgxInputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxInputGroupComponent","i2.IgxInputDirective","i3.IgxLabelDirective","i4.IgxPrefixDirective","i5.IgxSuffixDirective","i6.IgxHintDirective"],"mappings":"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"}