{"version":3,"file":"taiga-ui-addon-table-directives-table-control.mjs","sources":["../../../projects/addon-table/directives/table-control/table-control.directive.ts","../../../projects/addon-table/directives/table-control/checkbox-row.directive.ts","../../../projects/addon-table/directives/table-control/checkbox-table.directive.ts","../../../projects/addon-table/directives/table-control/table-control.ts","../../../projects/addon-table/directives/table-control/taiga-ui-addon-table-directives-table-control.ts"],"sourcesContent":["import {computed, Directive, type Signal, signal} from '@angular/core';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {type TuiCheckboxRowDirective} from './checkbox-row.directive';\n\n@Directive({\n    selector: '[tuiTable][ngModel],[tuiTable][formControl],[tuiTable][formControlName]',\n    providers: [tuiFallbackValueProvider([])],\n})\nexport class TuiTableControlDirective<T> extends TuiControl<readonly T[]> {\n    private readonly children = signal<ReadonlyArray<TuiCheckboxRowDirective<T>>>([]);\n\n    public readonly checked: Signal<boolean> = computed(\n        () =>\n            !!this.children().length &&\n            this.children().every((i) => this.value().includes(i.tuiCheckboxRow())),\n    );\n\n    public readonly indeterminate: Signal<boolean> = computed(\n        () => !!this.value().length && !this.checked(),\n    );\n\n    public toggleAll(): void {\n        this.onChange(\n            this.checked() ? [] : this.children().map((i) => i.tuiCheckboxRow()),\n        );\n    }\n\n    public process(checkbox: TuiCheckboxRowDirective<T>): void {\n        this.children.update((children) => tuiArrayToggle(children, checkbox));\n    }\n}\n","import {\n    computed,\n    Directive,\n    inject,\n    input,\n    type OnDestroy,\n    type OnInit,\n} from '@angular/core';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiTableControlDirective} from './table-control.directive';\n\n@Directive({\n    selector: '[tuiCheckbox][tuiCheckboxRow]',\n    providers: [{provide: NgControl, useClass: NgModel}],\n    host: {\n        '[checked]': 'checked()',\n        '(change)': 'onChange()',\n    },\n})\nexport class TuiCheckboxRowDirective<T> implements OnInit, OnDestroy {\n    private readonly control = inject(NgControl);\n    private readonly parent: TuiTableControlDirective<T> = inject(\n        TuiTableControlDirective,\n    );\n\n    protected readonly checked = computed((checked = this.parent\n        .value()\n        .includes(this.tuiCheckboxRow())) => {\n        setTimeout(() => this.control.control?.setValue(checked));\n\n        return checked;\n    });\n\n    public readonly tuiCheckboxRow = input.required<T>();\n\n    public ngOnInit(): void {\n        this.parent.process(this);\n    }\n\n    public ngOnDestroy(): void {\n        this.parent.process(this);\n        this.parent.onChange(\n            this.parent.value().filter((item) => item !== this.tuiCheckboxRow()),\n        );\n    }\n\n    protected onChange(): void {\n        this.parent.onChange(tuiArrayToggle(this.parent.value(), this.tuiCheckboxRow()));\n    }\n}\n","import {Directive, effect, inject} from '@angular/core';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TuiTableControlDirective} from './table-control.directive';\n\n@Directive({\n    selector: '[tuiCheckbox][tuiCheckboxTable]',\n    providers: [{provide: NgControl, useClass: NgModel}],\n    host: {'(change)': 'parent.toggleAll()'},\n})\nexport class TuiCheckboxTableDirective {\n    private readonly el = tuiInjectElement<HTMLInputElement>();\n    private readonly control = inject(NgControl);\n\n    protected readonly parent = inject(TuiTableControlDirective);\n    protected readonly update = effect(() => {\n        const indeterminate = this.parent.indeterminate();\n        const checked = this.parent.checked();\n\n        this.el.indeterminate = indeterminate;\n        this.el.checked = checked;\n        this.control.control?.setValue(indeterminate ? null : checked);\n    });\n}\n","import {TuiCheckboxRowDirective} from './checkbox-row.directive';\nimport {TuiCheckboxTableDirective} from './checkbox-table.directive';\nimport {TuiTableControlDirective} from './table-control.directive';\n\nexport const TuiTableControl = [\n    TuiCheckboxRowDirective,\n    TuiCheckboxTableDirective,\n    TuiTableControlDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}