{"version":3,"file":"taiga-ui-kit-components-filter.mjs","sources":["../../../projects/kit/components/filter/filter.component.ts","../../../projects/kit/components/filter/filter.template.html","../../../projects/kit/components/filter/taiga-ui-kit-components-filter.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject, input, output} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_STRINGIFY} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n    TUI_ITEMS_HANDLERS,\n    TuiWithItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiHintOverflow} from '@taiga-ui/core/portals/hint';\nimport {TuiBadge} from '@taiga-ui/kit/components/badge';\nimport {TUI_BLOCK_OPTIONS, TuiBlock} from '@taiga-ui/kit/components/block';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n    selector: 'tui-filter',\n    imports: [FormsModule, PolymorpheusOutlet, TuiBadge, TuiBlock, TuiHintOverflow],\n    templateUrl: './filter.template.html',\n    styleUrl: './filter.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiFallbackValueProvider([])],\n    hostDirectives: [TuiWithItemsHandlers],\n    host: {'[attr.data-size]': 'size()'},\n})\nexport class TuiFilter<T> extends TuiControl<readonly T[]> {\n    protected readonly handlers = inject(TUI_ITEMS_HANDLERS);\n    public readonly items = input<readonly T[]>([]);\n    public readonly size = input(inject(TUI_BLOCK_OPTIONS).size || 'l');\n\n    public readonly badgeHandler = input<TuiHandler<T, number | null>>((item) =>\n        tuiIsString(item) || tuiIsNumber(item) ? null : Number(item),\n    );\n\n    public readonly content = input(TUI_STRINGIFY);\n    public readonly toggledItem = output<T>();\n\n    public onCheckbox(value: boolean, item: T): void {\n        this.toggledItem.emit(item);\n        this.onChange(\n            value\n                ? [...this.value(), item]\n                : this.value().filter(\n                      (arrItem) => !this.handlers.identityMatcher()(arrItem, item),\n                  ),\n        );\n    }\n\n    protected isCheckboxEnabled(item: T): boolean {\n        return this.value().some((arrItem) =>\n            this.handlers.identityMatcher()(arrItem, item),\n        );\n    }\n}\n","@for (item of items(); track $index) {\n    <label\n        appearance=\"\"\n        class=\"t-item\"\n        [tuiBlock]=\"size()\"\n    >\n        <span\n            *polymorpheusOutlet=\"content() as text; context: {$implicit: item}\"\n            tuiHintOverflow\n            class=\"t-text\"\n        >\n            {{ text }}\n        </span>\n        @if (badgeHandler()(item); as badgeValue) {\n            <div\n                appearance=\"neutral\"\n                tuiBadge\n                [size]=\"size()\"\n            >\n                {{ badgeValue }}\n            </div>\n        }\n        <input\n            tuiBlock\n            type=\"checkbox\"\n            [disabled]=\"handlers.disabledItemHandler()(item)\"\n            [ngModel]=\"isCheckboxEnabled(item)\"\n            [ngModelOptions]=\"{standalone: true}\"\n            (ngModelChange)=\"onCheckbox($event, item)\"\n        />\n    </label>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}