{"version":3,"file":"fundamental-ngx-core-input-group.mjs","sources":["../../../../libs/core/input-group/input-group-directives.ts","../../../../libs/core/input-group/input-group.component.ts","../../../../libs/core/input-group/input-group.component.html","../../../../libs/core/input-group/input-group.module.ts","../../../../libs/core/input-group/fundamental-ngx-core-input-group.ts"],"sourcesContent":["import {\n    AfterContentInit,\n    Directive,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Renderer2\n} from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription } from 'rxjs';\nimport { InputGroupPlacement } from './types';\n\n@Directive({\n    selector: '[fdInputGroupInput], [fd-input-group-input]',\n    providers: [contentDensityObserverProviders()],\n    standalone: true\n})\nexport class InputGroupInputDirective implements CssClassBuilder, OnInit, OnChanges, OnDestroy {\n    /** user's custom classes */\n    @Input()\n    class: string;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef,\n        _contentDensityObserver: ContentDensityObserver\n    ) {\n        _contentDensityObserver.subscribe();\n    }\n\n    /** @hidden\n     * CssClassBuilder interface implementation\n     * function must return single string\n     * function is responsible for order which css classes are applied\n     */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        return ['fd-input', 'fd-input-group__input'];\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngOnChanges(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n}\n\n@Directive({\n    selector: '[fdTextareaGroupInput], [fd-textarea-group-input]',\n    standalone: true\n})\nexport class InputGroupTextareaDirective {}\n\n@Directive({\n    selector: '[fdInputGroupAddon], [fd-input-group-addon]',\n    providers: [contentDensityObserverProviders()],\n    standalone: true\n})\nexport class InputGroupAddOnDirective implements OnInit, OnChanges, CssClassBuilder, AfterContentInit, OnDestroy {\n    /** user's custom classes */\n    @Input()\n    class: string;\n\n    /** @hidden */\n    @HostBinding('class.fd-input-group__addon')\n    fdInputGroupAddonClass = true;\n\n    /**\n     * The placement of the add-on. Options include *before* and *after*\n     */\n    @Input()\n    placement: InputGroupPlacement = 'after';\n\n    /**\n     * The placement of the add-on. Options include *before* and *after*\n     */\n    @Input()\n    type: string;\n\n    /**\n     *  The state of the form control - applies css classes.\n     *  Can be `success`, `error`, `warning`, `information` or blank for default.\n     */\n    @Input()\n    state?: FormStates;\n\n    /**\n     * Whether the icon add-on or the text add-on is a button.\n     */\n    @Input()\n    button = false;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef,\n        private readonly renderer: Renderer2,\n        _contentDensityObserver: ContentDensityObserver\n    ) {\n        _contentDensityObserver.subscribe();\n    }\n\n    /** @hidden\n     * CssClassBuilder interface implementation\n     * function must return single string\n     * function is responsible for order which css classes are applied\n     */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        return [\n            'fd-input-group__addon',\n            this.button ? 'fd-input-group__addon--button' : '',\n            this.type ? 'fd-input-group__addon--' + this.type : '',\n            this.state ? 'is-' + this.state : ''\n        ];\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngOnChanges(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        /** Add fd-input-group__button to button child element */\n        const button = this.elementRef.nativeElement.querySelector('button');\n        if (button) {\n            this.renderer.addClass(button, 'fd-input-group__button');\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n}\n\n@Directive({\n    selector: '[fdInputGroupAddonButton], [fd-input-group-addon-button]',\n    host: {\n        class: 'fd-input-group__button'\n    },\n    standalone: true\n})\nexport class InputGroupAddonButtonDirective {}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { debounceTime, filter, fromEvent, map, merge, Observable } from 'rxjs';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport {\n    InputGroupAddonButtonDirective,\n    InputGroupAddOnDirective,\n    InputGroupInputDirective\n} from './input-group-directives';\nimport { InputGroupPlacement } from './types';\n\nlet addOnNonButtonRandomId = 0;\nlet addOnButtonRandomId = 0;\nlet addOnInputRandomId = 0;\n\n/**\n * The component that represents an input group.\n * The input group includes form inputs with add-ons that allow the user to better understand the information being entered.\n *\n * ```html\n * <fd-input-group placement=\"after\" addOnText=\"$\" placeholder=\"Amount\">\n * </fd-input-group>\n * ```\n */\n@Component({\n    selector: 'fd-input-group',\n    templateUrl: './input-group.component.html',\n    styleUrl: './input-group.component.scss',\n    hostDirectives: [\n        {\n            directive: CvaDirective,\n            inputs: ['placeholder', 'disabled', 'readonly', 'state', 'name', 'stateMessage', 'type']\n        }\n    ],\n    providers: [\n        CvaControl,\n        { provide: FD_FORM_FIELD_CONTROL, useExisting: InputGroupComponent, multi: true },\n        contentDensityObserverProviders(),\n        registerFormItemControl(InputGroupComponent)\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgTemplateOutlet,\n        InputGroupAddOnDirective,\n        ButtonComponent,\n        InputGroupAddonButtonDirective,\n        FormsModule,\n        InputGroupInputDirective,\n        AsyncPipe,\n        IconComponent\n    ]\n})\nexport class InputGroupComponent implements AfterViewInit, FormItemControl, OnInit {\n    /**\n     * The placement of the add-on.\n     * Options include *before* and *after*\n     */\n    @Input()\n    placement: InputGroupPlacement = 'after';\n\n    /** If it is mandatory field */\n    @Input()\n    required = false;\n\n    /** Whether the input group is inline. */\n    @Input()\n    inline = false;\n\n    /** The text for the add-on. */\n    @Input()\n    addOnText: string;\n\n    /** Whether AddOn Button should be focusable */\n    @Input()\n    buttonFocusable = true;\n\n    /** The type of the input, used in Input Group. By default, value is set to 'text' */\n    @Input()\n    type = 'text';\n\n    /** The icon value for the add-on. */\n    @Input()\n    glyph: Nullable<string>;\n\n    /** Glyph font family */\n    @Input()\n    glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** Whether the icon add-on or the text add-on is a button. */\n    @Input()\n    button: boolean;\n\n    /**\n     * Whether the input group is a popover control\n     */\n    @Input()\n    isControl = false;\n\n    /**\n     * Whether should show focus outline\n     */\n    @Input()\n    showFocus = true;\n\n    /** @hidden */\n    @Input()\n    isExpanded = false;\n\n    /** Label applied to button with glyph element. */\n    @Input()\n    glyphAriaLabel: Nullable<string>;\n\n    /**\n     * Whether the input group addon button should be aria-hidden\n     * Useful in cases when the title is already applied on the\n     * input group parent component\n     **/\n    @Input()\n    addonButtonAriaHidden: Nullable<boolean>;\n\n    /** @deprecated Title attributes are being removed from the library. */\n    @Input()\n    iconTitle: Nullable<string>;\n\n    /** the associated ids for the input aria-labelledby field */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /** aria-label for the input field */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /** Event emitted when the add-on button is clicked. */\n    @Output()\n    addOnButtonClicked = new EventEmitter<Event>();\n\n    /**\n     * Event emitted when the native clear button is clicked, or when native search is executed.\n     * Works only for native search for input[type=\"search\"]\n     */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() search = new EventEmitter<Event>();\n\n    /** @hidden */\n    @ContentChild(InputGroupInputDirective)\n    inputElement: InputGroupInputDirective;\n\n    /** @hidden */\n    @ViewChild(InputGroupInputDirective)\n    localInputElement: InputGroupInputDirective;\n\n    /** @hidden */\n    @ContentChild(InputGroupAddOnDirective)\n    addOnElement: InputGroupAddOnDirective;\n\n    /** @hidden */\n    @ViewChild(InputGroupAddonButtonDirective, { static: false, read: ElementRef })\n    private readonly _localButtonElement: ElementRef;\n\n    /** @hidden */\n    _inputTextValue: string;\n\n    /** @hidden */\n    _inputId = `fd-input-group-input-id-${addOnInputRandomId++}`;\n\n    /** @hidden */\n    _addOnNonButtonId = `fd-input-group-non-button-id-${addOnNonButtonRandomId++}`;\n\n    /** @hidden */\n    _addOnButtonId = `fd-input-group-button-id-${addOnButtonRandomId++}`;\n\n    /** @hidden */\n    _inputFocused$: Observable<boolean>;\n\n    /**\n     * Whether the input group is in the shellbar. Only for internal use by combobox component.\n     * @hidden\n     */\n    inShellbar = false;\n\n    /** An RxJS Subject that will kill the stream upon component’s destruction (for unsubscribing)  */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** Value of the text input. */\n    set inputText(value) {\n        this._cva.setValue(value, true);\n        this._cva.onTouched();\n    }\n\n    get inputText(): string {\n        return this._cva.value;\n    }\n    /** @hidden\n     *  Calculate the correct ids for input aria-labelledby\n     */\n    get _inputAriaLabelledBy(): string {\n        let ariaLabelledByIds = this.ariaLabelledBy ? this.ariaLabelledBy + ' ' : '';\n\n        if (!this.button) {\n            ariaLabelledByIds += this._addOnNonButtonId;\n        }\n\n        return ariaLabelledByIds;\n    }\n\n    /** @hidden */\n    constructor(\n        readonly _cvaControl: CvaControl<string | number>,\n        readonly elementRef: ElementRef,\n        private readonly _changeDetectorRef: ChangeDetectorRef,\n        private _contentDensityObserver: ContentDensityObserver,\n        private readonly _cva: CvaDirective\n    ) {\n        this._contentDensityObserver.subscribe();\n    }\n\n    /** @hidden */\n    @HostListener('focusout', ['$event'])\n    protected _focusOut(event: FocusEvent): void {\n        if (!this.elementRef.nativeElement.contains(event.relatedTarget)) {\n            this._cva.onTouched();\n        }\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._cvaControl.listenToChanges();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._listenInputFocus();\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: boolean): void {\n        this._cva.disabled = isDisabled;\n\n        this._changeDetectorRef.detectChanges();\n    }\n\n    /** @hidden */\n    setInShellbar(value: boolean): void {\n        this.inShellbar = value;\n\n        this._changeDetectorRef.detectChanges();\n    }\n\n    /** @hidden */\n    _buttonClicked(event: Event): void {\n        this.addOnButtonClicked.emit(event);\n    }\n\n    /** @hidden */\n    _onSearchEvent(event: Event): void {\n        this.search.emit(event);\n    }\n\n    /** @hidden */\n    _preventFocus(event: MouseEvent): void {\n        if (!this.buttonFocusable) {\n            event.preventDefault();\n        }\n    }\n\n    /** @hidden */\n    private _listenInputFocus(): void {\n        const inputElement =\n            this.inputElement?.elementRef?.nativeElement || this.localInputElement?.elementRef?.nativeElement;\n\n        if (!inputElement) {\n            return;\n        }\n\n        const focusEvents = [\n            fromEvent(inputElement, 'focusin').pipe(map(() => true)),\n            fromEvent(inputElement, 'focusout').pipe(map(() => false))\n        ];\n\n        if (this._localButtonElement) {\n            focusEvents.push(\n                fromEvent(this._localButtonElement.nativeElement, 'mousedown').pipe(map(() => !this.buttonFocusable))\n            );\n        }\n\n        this._inputFocused$ = merge(...focusEvents).pipe(\n            // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n            debounceTime(10),\n            filter(() => this.showFocus),\n            takeUntilDestroyed(this._destroyRef)\n        );\n\n        this._changeDetectorRef.markForCheck();\n    }\n}\n","<div\n    class=\"fd-input-group\"\n    [class.fd-input-group--inline]=\"inline\"\n    [class.is-disabled]=\"_cvaControl.cvaDirective?.disabled\"\n    [class.is-readonly]=\"_cvaControl.cvaDirective?.readonly\"\n    [class.fd-shellbar__input-group]=\"inShellbar\"\n    [class.fd-input-group--control]=\"isControl\"\n    [class.is-focus]=\"_inputFocused$ | async\"\n    [class]=\"_cvaControl.cvaDirective?.state ? 'is-' + _cvaControl.cvaDirective?.state : ' '\"\n>\n    @if (placement === 'after' && !inputElement) {\n        <ng-template [ngTemplateOutlet]=\"input\"></ng-template>\n    }\n    <ng-content></ng-content>\n    @if (!addOnElement && (glyph || addOnText)) {\n        @if (button) {\n            <span\n                fd-input-group-addon\n                [button]=\"true\"\n                [placement]=\"placement\"\n                [class.fd-shellbar__input-group-addon]=\"inShellbar\"\n            >\n                <button\n                    fd-button\n                    fdInputGroupAddonButton\n                    type=\"button\"\n                    [attr.aria-hidden]=\"addonButtonAriaHidden\"\n                    [fdType]=\"inShellbar ? 'standard' : 'transparent'\"\n                    [id]=\"_addOnButtonId\"\n                    [attr.tabindex]=\"buttonFocusable ? 0 : -1\"\n                    [glyph]=\"glyph\"\n                    [glyphFont]=\"glyphFont\"\n                    [class.fd-shellbar__button]=\"inShellbar\"\n                    [class.is-expanded]=\"isExpanded\"\n                    [attr.aria-haspopup]=\"isControl\"\n                    [attr.aria-expanded]=\"inShellbar ? isExpanded : null\"\n                    [ariaLabel]=\"glyphAriaLabel || glyph || addOnText\"\n                    [attr.aria-controls]=\"_inputId\"\n                    [disabled]=\"_cvaControl.cvaDirective?.disabled\"\n                    (mousedown)=\"_preventFocus($event)\"\n                    (keydown.enter)=\"$event.preventDefault()\"\n                    (keyup.enter)=\"_buttonClicked($event)\"\n                    (click)=\"_buttonClicked($event)\"\n                >\n                    @if (!glyph) {\n                        {{ addOnText }}\n                    }\n                </button>\n            </span>\n        } @else {\n            <span\n                fd-input-group-addon\n                [id]=\"_addOnNonButtonId\"\n                [placement]=\"placement\"\n                [attr.aria-label]=\"glyphAriaLabel || glyph || addOnText\"\n            >\n                @if (!glyph) {\n                    {{ addOnText }}\n                } @else {\n                    <fd-icon [glyph]=\"glyph\" [font]=\"glyphFont\"></fd-icon>\n                }\n            </span>\n        }\n    }\n    @if (placement === 'before' && !inputElement) {\n        <ng-template [ngTemplateOutlet]=\"input\"></ng-template>\n    }\n</div>\n<ng-template #input>\n    <input\n        [(ngModel)]=\"inputText\"\n        [id]=\"_inputId\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-labelledby]=\"ariaLabel ? null : _inputAriaLabelledBy\"\n        [class.fd-shellbar__input-group-input]=\"inShellbar\"\n        fd-input-group-input\n        [type]=\"type\"\n        [class.is-disabled]=\"!!_cvaControl.cvaDirective?.disabled\"\n        [disabled]=\"!!_cvaControl.cvaDirective?.disabled\"\n        [readonly]=\"_cvaControl.cvaDirective?.readonly\"\n        [attr.placeholder]=\"_cvaControl.cvaDirective?.placeholder || null\"\n        [attr.aria-required]=\"required\"\n        (search)=\"_onSearchEvent($event)\"\n    />\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport {\n    InputGroupAddonButtonDirective,\n    InputGroupAddOnDirective,\n    InputGroupInputDirective,\n    InputGroupTextareaDirective\n} from './input-group-directives';\nimport { InputGroupComponent } from './input-group.component';\n\nconst components = [\n    InputGroupComponent,\n    InputGroupInputDirective,\n    InputGroupTextareaDirective,\n    InputGroupAddOnDirective,\n    InputGroupAddonButtonDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class InputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}