{"version":3,"file":"taiga-ui-layout-components-search.mjs","sources":["../../../projects/layout/components/search/search.component.ts","../../../projects/layout/components/search/search-filter.component.ts","../../../projects/layout/components/search/search-filters.component.ts","../../../projects/layout/components/search/search-filters.template.html","../../../projects/layout/components/search/search.ts","../../../projects/layout/components/search/taiga-ui-layout-components-search.ts"],"sourcesContent":["import {\n    ChangeDetectionStrategy,\n    Component,\n    signal,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {tuiBlockOptionsProvider} from '@taiga-ui/kit/components/block';\nimport {tuiSwitchOptionsProvider} from '@taiga-ui/kit/components/switch';\n\n@Component({\n    selector: 'search[tuiSearch]',\n    template: '<ng-content/>',\n    styles: `\n        [data-tui-version='${TUI_VERSION}'] {\n            @import './search.styles.less';\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        tuiButtonOptionsProvider({size: 'm'}),\n        tuiBlockOptionsProvider({size: 's'}),\n        tuiSwitchOptionsProvider({size: 's'}),\n        tuiTextfieldOptionsProvider({size: signal('m')}),\n    ],\n    host: {'data-tui-version': TUI_VERSION},\n})\nexport class TuiSearchComponent {}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    effect,\n    inject,\n    TemplateRef,\n    viewChild,\n} from '@angular/core';\nimport {\n    tuiDropdown,\n    TuiDropdownDirective,\n    tuiDropdownOptionsProvider,\n    TuiWithDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_ICON_START} from '@taiga-ui/core/tokens';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/layout/tokens';\n\n@Component({\n    selector: 'button[tuiSearchFilter]',\n    template: '<ng-template><ng-content /></ng-template>filters',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        tuiDropdownOptionsProvider({align: 'end'}),\n        {\n            provide: TUI_ICON_START,\n            useFactory: () => inject(TUI_COMMON_ICONS).filter,\n        },\n    ],\n    hostDirectives: [TuiDropdownDirective, TuiWithDropdownOpen],\n})\nexport class TuiSearchFilterComponent {\n    private readonly dropdown = tuiDropdown(null);\n    protected readonly template = viewChild(TemplateRef);\n    protected readonly ef = effect(() => this.dropdown.set(this.template()));\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    contentChildren,\n    ElementRef,\n    inject,\n    input,\n    TemplateRef,\n    viewChild,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {tuiZonefull} from '@taiga-ui/cdk/observables';\nimport {tuiIsControlEmpty} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton, tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiTextfieldOptionsDirective} from '@taiga-ui/core/components/textfield';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\nimport {distinctUntilChanged, map} from 'rxjs';\n\nimport {TuiSearchFilterComponent} from './search-filter.component';\n\nconst WIDTH = 12;\n\n@Component({\n    selector: 'tui-search-filters',\n    imports: [NgTemplateOutlet, TuiButton, TuiSearchFilterComponent],\n    templateUrl: './search-filters.template.html',\n    styleUrl: './search-filters.styles.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        WaResizeObserverService,\n        tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n    ],\n    hostDirectives: [\n        {\n            directive: TuiTextfieldOptionsDirective,\n            inputs: ['tuiTextfieldSize: size'],\n        },\n    ],\n})\nexport class TuiSearchFiltersComponent {\n    private readonly rem = viewChild<ElementRef<HTMLDivElement>>('rem');\n\n    private readonly button = viewChild(TuiButton, {read: ElementRef});\n\n    private readonly controls = contentChildren(NgControl, {descendants: true});\n\n    protected readonly templates = contentChildren(TuiItem, {\n        descendants: true,\n        read: TemplateRef,\n    });\n\n    protected readonly overflown = toSignal(\n        inject(WaResizeObserverService, {self: true}).pipe(\n            map((entry) => {\n                const width = entry[0]?.contentRect.width ?? 0;\n\n                return Math.floor((width - this.more) / WIDTH / this.unit);\n            }),\n            distinctUntilChanged(),\n            tuiZonefull(),\n        ),\n        {initialValue: 0},\n    );\n\n    protected readonly enabled = computed(() =>\n        this.controls().some(\n            ({control}, index) =>\n                control && index >= this.overflown() && !tuiIsControlEmpty(control),\n        ),\n    );\n\n    public readonly size = input<TuiSizeS>('m');\n\n    protected onReset(): void {\n        this.controls().forEach(({control}, index) => {\n            if (control && index >= this.overflown()) {\n                control.setValue(null);\n            }\n        });\n    }\n\n    private get unit(): number {\n        return this.rem()?.nativeElement.offsetWidth || 16;\n    }\n\n    private get more(): number {\n        return this.button()?.nativeElement.clientWidth || 0;\n    }\n}\n","@for (template of templates(); track template) {\n    @if ($index < overflown()) {\n        <ng-container [ngTemplateOutlet]=\"template\" />\n    }\n}\n<div\n    #rem\n    class=\"t-rem\"\n></div>\n@if (overflown() < templates().length) {\n    <button\n        appearance=\"secondary\"\n        tuiIconButton\n        tuiSearchFilter\n        type=\"button\"\n        class=\"t-button\"\n        [class._active]=\"enabled()\"\n        [size]=\"size()\"\n    >\n        <form\n            class=\"t-form\"\n            (reset)=\"onReset()\"\n        >\n            <fieldset\n                class=\"t-header\"\n                [disabled]=\"!enabled()\"\n            >\n                <ng-content />\n            </fieldset>\n            @for (template of templates(); track template) {\n                @if ($index >= overflown()) {\n                    <ng-container [ngTemplateOutlet]=\"template\" />\n                }\n            }\n        </form>\n    </button>\n}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiSearchComponent} from './search.component';\nimport {TuiSearchFiltersComponent} from './search-filters.component';\n\nexport const TuiSearch = [\n    TuiSearchComponent,\n    TuiSearchFiltersComponent,\n    TuiItem,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}