@taiga-ui/addon-table 5.27.0 → 5.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,10 +4,12 @@ export declare class TuiCheckboxRowDirective<T> implements OnInit, OnDestroy {
4
4
  private readonly control;
5
5
  private readonly parent;
6
6
  protected readonly checked: import("@angular/core").Signal<boolean>;
7
+ protected readonly toggle: import("@angular/core").EffectRef;
7
8
  readonly tuiCheckboxRow: import("@angular/core").InputSignal<T>;
9
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
8
10
  ngOnInit(): void;
9
11
  ngOnDestroy(): void;
10
12
  protected onChange(): void;
11
13
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiCheckboxRowDirective<any>, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiCheckboxRowDirective<any>, "[tuiCheckbox][tuiCheckboxRow]", never, { "tuiCheckboxRow": { "alias": "tuiCheckboxRow"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiCheckboxRowDirective<any>, "[tuiCheckbox][tuiCheckboxRow]", never, { "tuiCheckboxRow": { "alias": "tuiCheckboxRow"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
15
  }
@@ -1,11 +1,11 @@
1
- import { type Signal } from '@angular/core';
2
1
  import { TuiControl } from '@taiga-ui/cdk/classes';
3
2
  import { type TuiCheckboxRowDirective } from './checkbox-row.directive';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class TuiTableControlDirective<T> extends TuiControl<readonly T[]> {
6
5
  private readonly children;
7
- readonly checked: Signal<boolean>;
8
- readonly indeterminate: Signal<boolean>;
6
+ private readonly enabled;
7
+ readonly checked: import("@angular/core").Signal<boolean>;
8
+ readonly indeterminate: import("@angular/core").Signal<boolean>;
9
9
  toggleAll(): void;
10
10
  process(checkbox: TuiCheckboxRowDirective<T>): void;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableControlDirective<any>, never>;
@@ -119,11 +119,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
119
119
  const EMPTY_COMPARATOR = () => 0;
120
120
  class Styles {
121
121
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-table-5.27.0"], ngImport: i0, template: '', isInline: true, styles: ["table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]){border-collapse:separate;border-spacing:0;isolation:isolate}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiCell]:not(tui-textfield [tuiCell]){padding:0}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTitle]{white-space:nowrap}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTitle] tui-icon{font-size:1rem}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiSubtitle]{color:var(--tui-text-secondary)}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTh] [tuiCell],table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTh] [tuiTitle]{font:inherit;color:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-table-5.28.0"], ngImport: i0, template: '', isInline: true, styles: ["table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]){border-collapse:separate;border-spacing:0;isolation:isolate}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiCell]:not(tui-textfield [tuiCell]){padding:0}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTitle]{white-space:nowrap}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTitle] tui-icon{font-size:1rem}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiSubtitle]{color:var(--tui-text-secondary)}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTh] [tuiCell],table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTh] [tuiTitle]{font:inherit;color:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
123
123
  }
124
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
125
125
  type: Component,
126
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-table-${TUI_VERSION}`, styles: ["table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]){border-collapse:separate;border-spacing:0;isolation:isolate}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiCell]:not(tui-textfield [tuiCell]){padding:0}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTitle]{white-space:nowrap}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTitle] tui-icon{font-size:1rem}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiSubtitle]{color:var(--tui-text-secondary)}table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTh] [tuiCell],table[tuiTable]:where(*[data-tui-version=\"5.27.0\"]) [tuiTh] [tuiTitle]{font:inherit;color:inherit}\n"] }]
126
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-table-${TUI_VERSION}`, styles: ["table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]){border-collapse:separate;border-spacing:0;isolation:isolate}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiCell]:not(tui-textfield [tuiCell]){padding:0}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTitle]{white-space:nowrap}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTitle] tui-icon{font-size:1rem}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiSubtitle]{color:var(--tui-text-secondary)}table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTh] [tuiCell],table[tuiTable]:where(*[data-tui-version=\"5.28.0\"]) [tuiTh] [tuiTitle]{font:inherit;color:inherit}\n"] }]
127
127
  }] });
128
128
  class TuiTableDirective {
129
129
  constructor() {
@@ -157,7 +157,7 @@ class TuiTableDirective {
157
157
  this.direction.set(direction);
158
158
  }
159
159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiTableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
160
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiTableDirective, isStandalone: true, selector: "table[tuiTable]", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, sorter: { classPropertyName: "sorter", publicName: "sorter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { direction: "directionChange", sorter: "sorterChange", sortChange: "sortChange" }, host: { attributes: { "data-tui-version": "5.27.0", "tuiTable": "" }, properties: { "attr.data-size": "size()" } }, providers: [
160
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiTableDirective, isStandalone: true, selector: "table[tuiTable]", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, sorter: { classPropertyName: "sorter", publicName: "sorter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { direction: "directionChange", sorter: "sorterChange", sortChange: "sortChange" }, host: { attributes: { "data-tui-version": "5.28.0", "tuiTable": "" }, properties: { "attr.data-size": "size()" } }, providers: [
161
161
  {
162
162
  provide: WA_INTERSECTION_ROOT_MARGIN,
163
163
  useValue: '10000px 10000px 10000px 0px',
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, Directive, inject, input, effect } from '@angular/core';
2
+ import { signal, computed, Directive, inject, effect, input, booleanAttribute } from '@angular/core';
3
3
  import { NgControl, NgModel } from '@angular/forms';
4
4
  import { tuiArrayToggle } from '@taiga-ui/cdk/utils/miscellaneous';
5
5
  import { TuiControl } from '@taiga-ui/cdk/classes';
@@ -10,12 +10,17 @@ class TuiTableControlDirective extends TuiControl {
10
10
  constructor() {
11
11
  super(...arguments);
12
12
  this.children = signal([]);
13
- this.checked = computed(() => !!this.children().length &&
14
- this.children().every((i) => this.value().includes(i.tuiCheckboxRow())));
13
+ this.enabled = computed(() => this.children().filter((i) => !i.disabled()));
14
+ this.checked = computed(() => !!this.enabled().length &&
15
+ this.enabled().every((i) => this.value().includes(i.tuiCheckboxRow())));
15
16
  this.indeterminate = computed(() => !!this.value().length && !this.checked());
16
17
  }
17
18
  toggleAll() {
18
- this.onChange(this.checked() ? [] : this.children().map((i) => i.tuiCheckboxRow()));
19
+ this.onChange(this.children()
20
+ .filter((i) => i.disabled()
21
+ ? this.value().includes(i.tuiCheckboxRow())
22
+ : !this.checked())
23
+ .map((i) => i.tuiCheckboxRow()));
19
24
  }
20
25
  process(checkbox) {
21
26
  this.children.update((children) => tuiArrayToggle(children, checkbox));
@@ -41,7 +46,16 @@ class TuiCheckboxRowDirective {
41
46
  queueMicrotask(() => this.control.control?.setValue(checked));
42
47
  return checked;
43
48
  });
49
+ this.toggle = effect(() => {
50
+ if (this.disabled()) {
51
+ this.control.control?.disable();
52
+ }
53
+ else {
54
+ this.control.control?.enable();
55
+ }
56
+ });
44
57
  this.tuiCheckboxRow = input.required();
58
+ this.disabled = input(false, { transform: booleanAttribute });
45
59
  }
46
60
  ngOnInit() {
47
61
  this.parent.process(this);
@@ -54,7 +68,7 @@ class TuiCheckboxRowDirective {
54
68
  this.parent.onChange(tuiArrayToggle(this.parent.value(), this.tuiCheckboxRow()));
55
69
  }
56
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCheckboxRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
57
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiCheckboxRowDirective, isStandalone: true, selector: "[tuiCheckbox][tuiCheckboxRow]", inputs: { tuiCheckboxRow: { classPropertyName: "tuiCheckboxRow", publicName: "tuiCheckboxRow", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "change": "onChange()" }, properties: { "checked": "checked()" } }, providers: [{ provide: NgControl, useClass: NgModel }], ngImport: i0 }); }
71
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiCheckboxRowDirective, isStandalone: true, selector: "[tuiCheckbox][tuiCheckboxRow]", inputs: { tuiCheckboxRow: { classPropertyName: "tuiCheckboxRow", publicName: "tuiCheckboxRow", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "change": "onChange()" }, properties: { "checked": "checked()" } }, providers: [{ provide: NgControl, useClass: NgModel }], ngImport: i0 }); }
58
72
  }
59
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCheckboxRowDirective, decorators: [{
60
74
  type: Directive,
@@ -1 +1 @@
1
- {"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:\n '[tuiTable][ngModel],[tuiTable][formControl],[tuiTable][formControlName],[tuiTable][formField]',\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\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 queueMicrotask(() => 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\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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"}
1
+ {"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, 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:\n '[tuiTable][ngModel],[tuiTable][formControl],[tuiTable][formControlName],[tuiTable][formField]',\n providers: [tuiFallbackValueProvider([])],\n})\nexport class TuiTableControlDirective<T> extends TuiControl<readonly T[]> {\n private readonly children = signal<ReadonlyArray<TuiCheckboxRowDirective<T>>>([]);\n private readonly enabled = computed(() =>\n this.children().filter((i) => !i.disabled()),\n );\n\n public readonly checked = computed(\n () =>\n !!this.enabled().length &&\n this.enabled().every((i) => this.value().includes(i.tuiCheckboxRow())),\n );\n\n public readonly indeterminate = computed(\n () => !!this.value().length && !this.checked(),\n );\n\n public toggleAll(): void {\n this.onChange(\n this.children()\n .filter((i) =>\n i.disabled()\n ? this.value().includes(i.tuiCheckboxRow())\n : !this.checked(),\n )\n .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 booleanAttribute,\n computed,\n Directive,\n effect,\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\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 queueMicrotask(() => this.control.control?.setValue(checked));\n\n return checked;\n });\n\n protected readonly toggle = effect(() => {\n if (this.disabled()) {\n this.control.control?.disable();\n } else {\n this.control.control?.enable();\n }\n });\n\n public readonly tuiCheckboxRow = input.required<T>();\n public readonly disabled = input(false, {transform: booleanAttribute});\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\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/addon-table",
3
- "version": "5.27.0",
3
+ "version": "5.28.0",
4
4
  "description": "A library to display tabled data with filters, search, group actions, etc.",
5
5
  "keywords": [
6
6
  "angular",
@@ -32,11 +32,11 @@
32
32
  "peerDependencies": {
33
33
  "@angular/common": ">=19.0.0",
34
34
  "@angular/core": ">=19.0.0",
35
- "@ng-web-apis/intersection-observer": "^5.3.0",
36
- "@taiga-ui/cdk": "5.27.0",
37
- "@taiga-ui/core": "5.27.0",
38
- "@taiga-ui/i18n": "5.27.0",
39
- "@taiga-ui/kit": "5.27.0",
35
+ "@ng-web-apis/intersection-observer": "^5.4.0",
36
+ "@taiga-ui/cdk": "5.28.0",
37
+ "@taiga-ui/core": "5.28.0",
38
+ "@taiga-ui/i18n": "5.28.0",
39
+ "@taiga-ui/kit": "5.28.0",
40
40
  "@taiga-ui/polymorpheus": "^5.0.1",
41
41
  "rxjs": ">=7.0.0"
42
42
  },
@@ -54,14 +54,14 @@
54
54
  "types": "./components/index.d.ts",
55
55
  "default": "./fesm2022/taiga-ui-addon-table-components.mjs"
56
56
  },
57
- "./tokens": {
58
- "types": "./tokens/index.d.ts",
59
- "default": "./fesm2022/taiga-ui-addon-table-tokens.mjs"
60
- },
61
57
  "./directives": {
62
58
  "types": "./directives/index.d.ts",
63
59
  "default": "./fesm2022/taiga-ui-addon-table-directives.mjs"
64
60
  },
61
+ "./tokens": {
62
+ "types": "./tokens/index.d.ts",
63
+ "default": "./fesm2022/taiga-ui-addon-table-tokens.mjs"
64
+ },
65
65
  "./types": {
66
66
  "types": "./types/index.d.ts",
67
67
  "default": "./fesm2022/taiga-ui-addon-table-types.mjs"