{"version":3,"file":"taiga-ui-layout-components-input-search.mjs","sources":["../../../projects/layout/components/input-search/input-search.component.ts","../../../projects/layout/components/input-search/input-search.component.html","../../../projects/layout/components/input-search/taiga-ui-layout-components-input-search.ts"],"sourcesContent":["import {\n    ChangeDetectionStrategy,\n    Component,\n    type ElementRef,\n    type EmbeddedViewRef,\n    EventEmitter,\n    inject,\n    Input,\n    type OnChanges,\n    Output,\n    TemplateRef,\n    ViewChild,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n    tuiContainsOrAfter,\n    tuiInjectElement,\n    tuiIsElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetClosestFocusable} from '@taiga-ui/cdk/utils/focus';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n    TuiTextfieldComponent,\n    TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiIcons} from '@taiga-ui/core/directives/icons';\nimport {TuiPopupService} from '@taiga-ui/core/directives/popup';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {tuiCellOptionsProvider} from '@taiga-ui/layout/components/cell';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n    standalone: true,\n    selector: 'input[tuiInputSearch]',\n    imports: [PolymorpheusOutlet],\n    templateUrl: './input-search.component.html',\n    styleUrls: ['./input-search.component.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiCellOptionsProvider({size: 'm'})],\n    hostDirectives: [TuiWithTextfield],\n    host: {\n        ngSkipHydration: 'true',\n        '(focus)': 'open()',\n        '(keydown.tab.prevent)': '0',\n        '(keydown.arrowDown.prevent)': 'onArrow()',\n    },\n})\nexport class TuiInputSearch implements OnChanges {\n    @ViewChild(TemplateRef)\n    private readonly template?: TemplateRef<any>;\n\n    @ViewChild('container')\n    private readonly container?: ElementRef<HTMLElement>;\n\n    private readonly el = tuiInjectElement<HTMLInputElement>();\n    private readonly service = inject(TuiPopupService);\n    private readonly textfield = inject(TuiTextfieldComponent);\n    private readonly i18n = toSignal(inject(TUI_INPUT_SEARCH));\n    private parent = this.textfield.el.parentElement;\n    private neighbor = this.textfield.el.nextSibling;\n    private placeholder = '';\n    private ref?: EmbeddedViewRef<unknown>;\n\n    protected readonly icon = tuiDirectiveBinding(\n        TuiIcons,\n        'iconStart',\n        inject(TUI_COMMON_ICONS).search,\n        {},\n    );\n\n    @Input()\n    public tuiInputSearch: PolymorpheusContent;\n\n    @Input()\n    public tuiInputSearchOpen = false;\n\n    @Output()\n    public readonly tuiInputSearchOpenChange = new EventEmitter<boolean>();\n\n    public ngOnChanges(): void {\n        if (this.tuiInputSearchOpen) {\n            this.open();\n        } else {\n            this.close();\n        }\n    }\n\n    public open(): void {\n        if (this.ref?.destroyed === false || !this.template) {\n            return;\n        }\n\n        this.placeholder = this.el.placeholder;\n        this.parent = this.textfield.el.parentElement;\n        this.neighbor = this.textfield.el.nextSibling;\n        this.ref = this.service.addTemplate(this.template);\n        this.ref.rootNodes[0]?.insertAdjacentElement('afterbegin', this.textfield.el);\n        this.el.focus({preventScroll: true});\n        this.el.placeholder = this.i18n()?.placeholder || this.el.placeholder;\n        this.tuiInputSearchOpen = true;\n        this.tuiInputSearchOpenChange.emit(true);\n    }\n\n    public close(): void {\n        this.el.placeholder = this.placeholder || this.el.placeholder;\n        this.parent?.insertBefore(this.textfield.el, this.neighbor);\n        this.ref?.destroy();\n        this.tuiInputSearchOpen = false;\n        this.tuiInputSearchOpenChange.emit(false);\n    }\n\n    protected onArrow(): void {\n        tuiGetClosestFocusable({\n            initial: this.container?.nativeElement || this.el,\n            root: this.container?.nativeElement || this.el,\n        })?.focus();\n    }\n\n    protected onFocus({target}: Event): void {\n        if (\n            this.container &&\n            target !== this.el &&\n            tuiIsElement(target) &&\n            !tuiContainsOrAfter(this.container.nativeElement, target)\n        ) {\n            this.close();\n        }\n    }\n}\n","<ng-template>\n    <div\n        tuiTheme=\"dark\"\n        class=\"t-container\"\n        (document:focusin)=\"onFocus($event)\"\n        (keydown.esc)=\"close()\"\n        (pointerdown.self)=\"close()\"\n    >\n        <div\n            #container\n            class=\"t-content\"\n        >\n            <ng-container *polymorpheusOutlet=\"tuiInputSearch\" />\n        </div>\n    </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}