@taiga-ui/addon-table 4.52.0-canary.6de148b → 4.52.0-canary.763e67d

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.
Files changed (26) hide show
  1. package/components/table/directives/sort-by.directive.d.ts +5 -14
  2. package/components/table/directives/sortable.directive.d.ts +2 -2
  3. package/components/table/directives/table.directive.d.ts +8 -26
  4. package/components/table/index.d.ts +0 -2
  5. package/components/table/pipes/table-sort.pipe.d.ts +6 -5
  6. package/components/table/table.d.ts +1 -2
  7. package/components/table/table.options.d.ts +0 -16
  8. package/components/table/th/th.component.d.ts +2 -2
  9. package/components/table/tr/tr.component.d.ts +3 -8
  10. package/components/table-pagination/table-pagination.component.d.ts +5 -8
  11. package/directives/table-filters/abstract-table-filter.d.ts +2 -1
  12. package/directives/table-filters/generic-filter.directive.d.ts +2 -3
  13. package/fesm2022/taiga-ui-addon-table-components-reorder.mjs +3 -3
  14. package/fesm2022/taiga-ui-addon-table-components-reorder.mjs.map +1 -1
  15. package/fesm2022/taiga-ui-addon-table-components-table-pagination.mjs +13 -21
  16. package/fesm2022/taiga-ui-addon-table-components-table-pagination.mjs.map +1 -1
  17. package/fesm2022/taiga-ui-addon-table-components-table.mjs +150 -246
  18. package/fesm2022/taiga-ui-addon-table-components-table.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-addon-table-directives-table-control.mjs +11 -10
  20. package/fesm2022/taiga-ui-addon-table-directives-table-control.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-addon-table-directives-table-filters.mjs +16 -15
  22. package/fesm2022/taiga-ui-addon-table-directives-table-filters.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-addon-table-tokens.mjs.map +1 -1
  24. package/package.json +5 -5
  25. package/components/table/directives/direction-order.directive.d.ts +0 -13
  26. package/components/table/providers/table.provider.d.ts +0 -5
@@ -1,22 +1,13 @@
1
- import { type Observable } from 'rxjs';
2
1
  import { type TuiSortChange } from '../table.options';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class TuiTableSortBy<T extends Partial<Record<keyof T, unknown>>> {
5
- private readonly sortables;
6
4
  private readonly table;
7
- /**
8
- * @deprecated
9
- */
10
- private readonly tuiSortByChange$;
11
- /**
12
- * @deprecated: use tuiSortChange
13
- */
14
- readonly tuiSortByChange: import("@angular/core").OutputRef<keyof T | null>;
15
- readonly tuiSortChange$: Observable<TuiSortChange<T>>;
16
- readonly tuiSortChange: import("@angular/core").OutputRef<TuiSortChange<T>>;
5
+ private readonly sortables;
6
+ private readonly sortChange;
7
+ protected readonly sortOutput: import("@angular/core").EffectRef;
8
+ readonly tuiSortChange: import("@angular/core").OutputEmitterRef<TuiSortChange<T>>;
17
9
  readonly tuiSortBy: import("@angular/core").InputSignal<string | keyof T | null>;
18
- protected readonly checkSortables: import("@angular/core").EffectRef;
19
10
  private getKey;
20
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableSortBy<any>, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTableSortBy<any>, "table[tuiTable][tuiSortBy]", never, { "tuiSortBy": { "alias": "tuiSortBy"; "required": false; "isSignal": true; }; }, { "tuiSortByChange": "tuiSortByChange"; "tuiSortChange": "tuiSortChange"; }, ["sortables"], never, true, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTableSortBy<any>, "table[tuiTable][tuiSortBy]", never, { "tuiSortBy": { "alias": "tuiSortBy"; "required": false; "isSignal": true; }; }, { "tuiSortChange": "tuiSortChange"; }, ["sortables"], never, true, never>;
22
13
  }
@@ -6,10 +6,10 @@ export declare class TuiTableSortable<T extends Partial<Record<keyof T, unknown>
6
6
  private readonly th;
7
7
  private readonly sortBy;
8
8
  readonly sortable: import("@angular/core").InputSignalWithTransform<BooleanInput, any>;
9
- protected readonly setSorter: import("@angular/core").EffectRef;
9
+ protected readonly setThSorter: import("@angular/core").EffectRef;
10
+ protected readonly setTableSorter: import("@angular/core").EffectRef;
10
11
  readonly sorter: import("@angular/core").Signal<TuiComparator<T>>;
11
12
  get key(): keyof T;
12
- check(): void;
13
13
  private get match();
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableSortable<any>, never>;
15
15
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTableSortable<any>, "th[tuiTh][tuiSortable]", never, { "sortable": { "alias": "tuiSortable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -1,40 +1,22 @@
1
- import { type AfterViewInit, type OnChanges } from '@angular/core';
2
1
  import { type TuiComparator } from '@taiga-ui/addon-table/types';
3
2
  import { type TuiTextfieldOptions } from '@taiga-ui/core/components/textfield';
4
- import { type Observable, Subject } from 'rxjs';
5
3
  import { TuiSortDirection, type TuiTableSortChange } from '../table.options';
6
4
  import * as i0 from "@angular/core";
7
5
  import * as i1 from "./stuck.directive";
8
- export declare class TuiTableDirective<T extends Partial<Record<keyof T, unknown>>> implements AfterViewInit, TuiTextfieldOptions, OnChanges {
6
+ export declare class TuiTableDirective<T extends Partial<Record<keyof T, unknown>>> implements TuiTextfieldOptions {
9
7
  private readonly options;
10
- private readonly cdr;
11
8
  protected readonly nothing: undefined;
9
+ protected readonly computedSortChange: import("@angular/core").Signal<TuiTableSortChange<T>>;
10
+ protected readonly sortChangeOutput: import("@angular/core").EffectRef;
12
11
  readonly columns: import("@angular/core").InputSignal<readonly (string | keyof T)[]>;
13
- readonly direction: import("@angular/core").InputSignal<TuiSortDirection>;
14
- sorter: TuiComparator<T>;
15
- /**
16
- * @deprecated: use sortChange
17
- */
18
- readonly directionChange: import("@angular/core").OutputEmitterRef<TuiSortDirection>;
19
- /**
20
- * @deprecated: use sortChange
21
- */
22
- readonly directionChange$: Observable<TuiSortDirection>;
23
- /**
24
- * @deprecated: use sortChange
25
- */
26
- readonly sorterChange: import("@angular/core").OutputEmitterRef<TuiComparator<T> | null>;
27
- readonly sorterChange$: Observable<TuiComparator<T> | null>;
28
- protected readonly sortChange$: Observable<TuiTableSortChange<T>>;
29
- readonly sortChange: import("@angular/core").OutputRef<TuiTableSortChange<T>>;
12
+ readonly size: import("@angular/core").InputSignal<"s" | "m" | "l">;
13
+ readonly direction: import("@angular/core").ModelSignal<TuiSortDirection>;
14
+ readonly sorter: import("@angular/core").ModelSignal<TuiComparator<T>>;
15
+ readonly sortChange: import("@angular/core").OutputEmitterRef<TuiTableSortChange<T>>;
30
16
  readonly appearance: import("@angular/core").WritableSignal<string>;
31
- readonly size: import("@angular/core").InputSignal<"m" | "l" | "s">;
32
17
  readonly cleaner: import("@angular/core").WritableSignal<boolean>;
33
- readonly change$: Subject<void>;
34
18
  updateSorterAndDirection(sorter: TuiComparator<T> | null): void;
35
- ngOnChanges(): void;
36
- ngAfterViewInit(): void;
37
19
  updateSorter(sorter: TuiComparator<T> | null, direction?: TuiSortDirection): void;
38
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableDirective<any>, never>;
39
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTableDirective<any>, "table[tuiTable]", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "sorter": { "alias": "sorter"; "required": false; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "directionChange": "directionChange"; "sorterChange": "sorterChange"; "sortChange": "sortChange"; }, never, never, true, [{ directive: typeof i1.TuiStuck; inputs: {}; outputs: {}; }]>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTableDirective<any>, "table[tuiTable]", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "sorter": { "alias": "sorter"; "required": false; "isSignal": true; }; }, { "direction": "directionChange"; "sorter": "sorterChange"; "sortChange": "sortChange"; }, never, never, true, [{ directive: typeof i1.TuiStuck; inputs: {}; outputs: {}; }]>;
40
22
  }
@@ -1,6 +1,5 @@
1
1
  export * from './caption/caption.component';
2
2
  export * from './directives/cell.directive';
3
- export * from './directives/direction-order.directive';
4
3
  export * from './directives/head.directive';
5
4
  export * from './directives/resized.directive';
6
5
  export * from './directives/sort-by.directive';
@@ -9,7 +8,6 @@ export * from './directives/stuck.directive';
9
8
  export * from './directives/table.directive';
10
9
  export * from './directives/thead.directive';
11
10
  export * from './pipes/table-sort.pipe';
12
- export * from './providers/table.provider';
13
11
  export * from './table';
14
12
  export * from './table.options';
15
13
  export * from './table-expand/table-expand.component';
@@ -1,9 +1,10 @@
1
1
  import { type PipeTransform } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class TuiTableSortPipe implements PipeTransform {
3
+ export declare class TuiTableSortPipe<T> implements PipeTransform {
4
4
  private readonly table;
5
- transform<T>(data?: readonly T[] | null): readonly T[];
6
- private sort;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableSortPipe, never>;
8
- static ɵpipe: i0.ɵɵPipeDeclaration<TuiTableSortPipe, "tuiTableSort", true>;
5
+ private readonly data;
6
+ private readonly sorted;
7
+ transform(data?: readonly T[] | null): readonly T[];
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableSortPipe<any>, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiTableSortPipe<any>, "tuiTableSort", true>;
9
10
  }
@@ -1,6 +1,5 @@
1
1
  import { TuiTableCaption } from './caption/caption.component';
2
2
  import { TuiTableCell } from './directives/cell.directive';
3
- import { TuiTableDirectionOrder } from './directives/direction-order.directive';
4
3
  import { TuiTableHead } from './directives/head.directive';
5
4
  import { TuiTableResized } from './directives/resized.directive';
6
5
  import { TuiTableSortBy } from './directives/sort-by.directive';
@@ -14,4 +13,4 @@ import { TuiTableTd } from './td/td.component';
14
13
  import { TuiTableTh } from './th/th.component';
15
14
  import { TuiTableThGroup } from './th-group/th-group.component';
16
15
  import { TuiTableTr } from './tr/tr.component';
17
- export declare const TuiTable: readonly [typeof TuiTableDirective, typeof TuiTableCaption, typeof TuiTableTbody, typeof TuiTableThGroup, typeof TuiTableTh, typeof TuiTableTd, typeof TuiTableTr, typeof TuiTableCell, typeof TuiTableHead, typeof TuiTableSortBy, typeof TuiTableSortable, typeof TuiTableThead, typeof TuiTableResized, typeof TuiTableSortPipe, typeof TuiTableDirectionOrder, typeof TuiTableExpand];
16
+ export declare const TuiTable: readonly [typeof TuiTableDirective, typeof TuiTableCaption, typeof TuiTableTbody, typeof TuiTableThGroup, typeof TuiTableTh, typeof TuiTableTd, typeof TuiTableTr, typeof TuiTableCell, typeof TuiTableHead, typeof TuiTableSortBy, typeof TuiTableSortable, typeof TuiTableThead, typeof TuiTableResized, typeof TuiTableSortPipe, typeof TuiTableExpand];
@@ -6,27 +6,11 @@ export declare const TuiSortDirection: {
6
6
  };
7
7
  export type TuiSortDirection = (typeof TuiSortDirection)[keyof typeof TuiSortDirection];
8
8
  export interface TuiSortChange<T> {
9
- /**
10
- * @deprecated use sortKey
11
- */
12
- sortBy: keyof T | null;
13
9
  sortKey: keyof T | null;
14
- /**
15
- * @deprecated use sortDirection
16
- */
17
- orderBy: TuiSortDirection;
18
10
  sortDirection: TuiSortDirection;
19
11
  }
20
12
  export interface TuiTableSortChange<T> {
21
- /**
22
- * @deprecated use sortComparator
23
- */
24
- sortBy: TuiComparator<T> | null;
25
13
  sortComparator: TuiComparator<T> | null;
26
- /**
27
- * @deprecated use sortDirection
28
- */
29
- orderBy: TuiSortDirection;
30
14
  sortDirection: TuiSortDirection;
31
15
  }
32
16
  export interface TuiTableOptions {
@@ -8,7 +8,7 @@ export declare class TuiTableTh<T extends Partial<Record<keyof T, unknown>>> {
8
8
  protected readonly table: TuiTableDirective<T> | null;
9
9
  readonly minWidth: import("@angular/core").InputSignal<number>;
10
10
  readonly maxWidth: import("@angular/core").InputSignal<number>;
11
- sorter: TuiComparator<T> | null;
11
+ sorter: import("@angular/core").ModelSignal<TuiComparator<T> | null>;
12
12
  readonly resizable: import("@angular/core").InputSignal<boolean>;
13
13
  readonly sticky: import("@angular/core").InputSignal<boolean>;
14
14
  readonly requiredSort: import("@angular/core").InputSignal<boolean>;
@@ -19,7 +19,7 @@ export declare class TuiTableTh<T extends Partial<Record<keyof T, unknown>>> {
19
19
  protected onResized(width: number): void;
20
20
  private get isCurrentAndDescDirection();
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableTh<any>, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTableTh<any>, "th[tuiTh]", never, { "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "sorter": { "alias": "sorter"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "requiredSort": { "alias": "requiredSort"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTableTh<any>, "th[tuiTh]", never, { "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "sorter": { "alias": "sorter"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "requiredSort": { "alias": "requiredSort"; "required": false; "isSignal": true; }; }, { "sorter": "sorterChange"; }, never, ["*"], true, never>;
23
23
  }
24
24
  export declare class TuiTableSortKeyException extends Error {
25
25
  constructor();
@@ -1,18 +1,13 @@
1
- import { type AfterContentInit } from '@angular/core';
2
1
  import { TuiTableCell } from '../directives/cell.directive';
3
2
  import { TuiTableDirective } from '../directives/table.directive';
4
3
  import * as i0 from "@angular/core";
5
- export declare class TuiTableTr<T extends Partial<Record<keyof T, unknown>>> implements AfterContentInit {
4
+ export declare class TuiTableTr<T extends Partial<Record<keyof T, unknown>>> {
6
5
  private readonly cells;
7
6
  private readonly body;
8
- private readonly contentReady$;
9
- private readonly rows$;
10
- private readonly contentCells$;
11
7
  protected readonly table: TuiTableDirective<T>;
12
8
  protected readonly height: import("@angular/core").Signal<number>;
13
- protected readonly cells$: import("rxjs").Observable<Record<string | keyof T, TuiTableCell>>;
14
- protected readonly item$: import("rxjs").Observable<Record<string | keyof T, unknown>>;
15
- ngAfterContentInit(): void;
9
+ protected readonly items: import("@angular/core").Signal<Record<string | keyof T, TuiTableCell>>;
10
+ protected readonly item: import("@angular/core").Signal<Record<string | keyof T, unknown>>;
16
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableTr<any>, never>;
17
12
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiTableTr<any>, "tr[tuiTr]", never, {}, {}, ["cells"], ["*"], true, never>;
18
13
  }
@@ -5,31 +5,28 @@ export interface TuiTablePaginationEvent {
5
5
  readonly size: number;
6
6
  }
7
7
  export declare class TuiTablePagination {
8
- private readonly options;
9
- protected readonly icons: import("@taiga-ui/core/tokens").TuiSpinIcons;
8
+ protected readonly options: TuiTablePaginationOptions;
9
+ protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
10
10
  protected readonly spinTexts: import("@angular/core").Signal<readonly [previous: string, next: string]>;
11
11
  protected readonly texts: import("@angular/core").Signal<{
12
12
  linesPerPage: string;
13
13
  of: string;
14
14
  pages: string;
15
15
  }>;
16
- protected readonly commonIcons: import("@taiga-ui/core/tokens").TuiCommonIcons;
17
16
  protected readonly pages: import("@angular/core").Signal<number>;
18
17
  protected readonly end: import("@angular/core").Signal<number>;
19
18
  protected readonly rightDisabled: import("@angular/core").Signal<boolean>;
20
19
  protected readonly pagination: import("@angular/core").Signal<TuiTablePaginationEvent>;
21
20
  readonly items: import("@angular/core").InputSignal<readonly number[]>;
22
21
  readonly total: import("@angular/core").InputSignal<number>;
23
- readonly page: import("@angular/core").InputSignal<number>;
24
- readonly size: import("@angular/core").InputSignal<number>;
22
+ readonly page: import("@angular/core").ModelSignal<number>;
23
+ readonly size: import("@angular/core").ModelSignal<number>;
25
24
  readonly paginationChange: import("@angular/core").OutputEmitterRef<TuiTablePaginationEvent>;
26
25
  onItem(size: number): void;
27
- protected get showPages(): boolean;
28
26
  protected get sizeOptionContent(): TuiTablePaginationOptions['sizeOptionContent'];
29
27
  protected get start(): number;
30
- protected get leftDisabled(): boolean;
31
28
  protected back(): void;
32
29
  protected forth(): void;
33
30
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTablePagination, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTablePagination, "tui-table-pagination", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "paginationChange": "paginationChange"; }, never, never, true, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTablePagination, "tui-table-pagination", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "size": "sizeChange"; "paginationChange": "paginationChange"; }, never, never, true, never>;
35
32
  }
@@ -1,3 +1,4 @@
1
+ import { type Signal } from '@angular/core';
1
2
  export declare abstract class AbstractTuiTableFilter<T, G> {
2
- abstract filter(item: T, value: G): boolean;
3
+ abstract filter: Signal<(item: T, value: G) => boolean>;
3
4
  }
@@ -1,8 +1,7 @@
1
1
  import { AbstractTuiTableFilter } from './abstract-table-filter';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiGenericFilter<T, G> extends AbstractTuiTableFilter<T, G> {
4
- readonly tuiGenericFilter: import("@angular/core").InputSignal<(item: T, value: G) => boolean>;
5
- filter: (item: T, value: G) => boolean;
4
+ readonly filter: import("@angular/core").InputSignal<(item: T, value: G) => boolean>;
6
5
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiGenericFilter<any, any>, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiGenericFilter<any, any>, "[tuiGenericFilter]", never, { "tuiGenericFilter": { "alias": "tuiGenericFilter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiGenericFilter<any, any>, "[tuiGenericFilter]", never, { "filter": { "alias": "tuiGenericFilter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
7
  }
@@ -88,15 +88,15 @@ class TuiReorder {
88
88
  updateEnabled() {
89
89
  this.enabled.set(this.getSortedItems().filter((item) => this.isEnabled(item)));
90
90
  }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiReorder, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiReorder, isStandalone: true, selector: "tui-reorder", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { enabled: "enabledChange", items: "itemsChange" }, host: { listeners: { "focusout.stop": "(0)", "pointerdown.zoneless": "onDrag()", "document:pointerup.zoneless": "onDrop()" } }, providers: [
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiReorder, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiReorder, isStandalone: true, selector: "tui-reorder", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { enabled: "enabledChange", items: "itemsChange" }, host: { listeners: { "focusout.stop": "(0)", "pointerdown.zoneless": "onDrag()", "document:pointerup.zoneless": "onDrop()" } }, providers: [
93
93
  {
94
94
  provide: TUI_TILES_REORDER,
95
95
  useValue: tuiTilesShift,
96
96
  },
97
97
  ], ngImport: i0, template: "<tui-tiles\n class=\"t-wrapper\"\n [(order)]=\"order\"\n>\n @for (item of unsortedItems(); track item) {\n <tui-tile [style.order]=\"order.get($index)\">\n <div\n class=\"t-item\"\n [class.t-item_disabled]=\"!isEnabled(item)\"\n >\n <div\n tuiTileHandle\n class=\"t-draggable\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icons.drag\"\n />\n <ng-container\n *polymorpheusOutlet=\"content() as template; context: {$implicit: item, index: $index}\"\n >\n {{ template }}\n </ng-container>\n </div>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [iconStart]=\"getIcon(item)\"\n (click)=\"toggle(item)\"\n (keydown.arrowDown.prevent)=\"move($index, 1)\"\n (keydown.arrowUp.prevent)=\"move($index, -1)\"\n >\n {{ showHideText() }}\n </button>\n </div>\n </tui-tile>\n }\n</tui-tiles>\n", styles: [":host{display:block;font:var(--tui-font-text-s);padding:.5rem 0;-webkit-user-select:none;user-select:none}.t-wrapper{grid-auto-rows:2rem}.t-draggable{cursor:ns-resize;flex:1 1 auto}.t-item{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;block-size:2rem;align-items:center;padding:0 .75rem;background:var(--tui-background-base)}.t-item_disabled{opacity:var(--tui-disabled-opacity)}.t-item_disabled .t-button{color:var(--tui-text-primary);opacity:1}.t-item:hover{background:var(--tui-background-base-alt)}.t-item:hover .t-button{opacity:1}.t-icon{margin-inline-end:.5rem;color:var(--tui-text-tertiary)}.t-icon:before{font-size:1rem}.t-button{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;margin-inline-start:auto;opacity:0}.t-button:focus{opacity:1}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "component", type: i1.TuiTilesComponent, selector: "tui-tiles", inputs: ["debounce", "order"], outputs: ["orderChange"] }, { kind: "component", type: i1.TuiTile, selector: "tui-tile", inputs: ["width", "height"] }, { kind: "directive", type: i1.TuiTileHandle, selector: "[tuiTileHandle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
98
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiReorder, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiReorder, decorators: [{
100
100
  type: Component,
101
101
  args: [{ selector: 'tui-reorder', imports: [PolymorpheusOutlet, TuiButton, TuiIcon, TuiTiles], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
102
102
  {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-table-components-reorder.mjs","sources":["../../../projects/addon-table/components/reorder/reorder.options.ts","../../../projects/addon-table/components/reorder/reorder.component.ts","../../../projects/addon-table/components/reorder/reorder.template.html","../../../projects/addon-table/components/reorder/taiga-ui-addon-table-components-reorder.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiReorderOptions {\n readonly icons: {\n readonly drag: string;\n readonly hide: string;\n readonly show: string;\n };\n}\n\nexport const TUI_REORDER_DEFAULT_OPTIONS: TuiReorderOptions = {\n icons: {\n hide: '@tui.eye-off',\n show: '@tui.eye',\n drag: '@tui.grip-vertical',\n },\n};\n\nexport const [TUI_REORDER_OPTIONS, tuiReorderOptionsProvider] = tuiCreateOptions(\n TUI_REORDER_DEFAULT_OPTIONS,\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport {TUI_TABLE_SHOW_HIDE_MESSAGE} from '@taiga-ui/addon-table/tokens';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TUI_TILES_REORDER, TuiTiles, tuiTilesShift} from '@taiga-ui/kit/components/tiles';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TUI_REORDER_OPTIONS} from './reorder.options';\n\n@Component({\n selector: 'tui-reorder',\n imports: [PolymorpheusOutlet, TuiButton, TuiIcon, TuiTiles],\n templateUrl: './reorder.template.html',\n styleUrl: './reorder.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TILES_REORDER,\n useValue: tuiTilesShift,\n },\n ],\n host: {\n '(focusout.stop)': '(0)',\n '(pointerdown.zoneless)': 'onDrag()',\n '(document:pointerup.zoneless)': 'onDrop()',\n },\n})\nexport class TuiReorder<T> {\n private dragging = false;\n\n protected order = new Map<number, number>();\n protected readonly unsortedItems = linkedSignal<readonly T[], readonly T[]>({\n source: () => this.items(),\n computation: (items, previous) => {\n const previousUnsortedItems = previous?.value ?? [];\n\n if (\n items.length !== previousUnsortedItems.length ||\n !items.every((item) => previousUnsortedItems.includes(item))\n ) {\n return items;\n }\n\n return previousUnsortedItems;\n },\n });\n\n protected readonly options = inject(TUI_REORDER_OPTIONS);\n protected readonly showHideText = inject(TUI_TABLE_SHOW_HIDE_MESSAGE);\n\n public readonly enabled = model<readonly T[]>([]);\n\n public readonly items = model<readonly T[]>([]);\n\n public readonly content = input<PolymorpheusContent<TuiContext<T> & {index: number}>>(\n ({$implicit}) => String($implicit),\n );\n\n protected onDrag(): void {\n this.dragging = true;\n }\n\n protected onDrop(): void {\n if (!this.dragging) {\n return;\n }\n\n this.dragging = false;\n this.updateItems();\n }\n\n protected isEnabled(item: T): boolean {\n return this.enabled().includes(item);\n }\n\n protected getIcon(item: T): string {\n return this.isEnabled(item) ? this.options.icons.hide : this.options.icons.show;\n }\n\n protected toggle(toggled: T): void {\n this.enabled.update((enabled) =>\n this.isEnabled(toggled)\n ? enabled.filter((item) => item !== toggled)\n : enabled.concat(toggled),\n );\n\n this.updateEnabled();\n }\n\n protected move(index: number, direction: number): void {\n const oldIndex = this.order.get(index) ?? index;\n\n if (\n (!oldIndex && direction < 0) ||\n (oldIndex === this.unsortedItems().length - 1 && direction > 0)\n ) {\n return;\n }\n\n const newIndex = oldIndex + direction;\n const oldItem = Array.from(this.order.values()).findIndex(\n (item) => item === newIndex,\n );\n\n this.order.set(index, newIndex);\n this.order.set(oldItem, oldIndex);\n this.order = new Map(this.order);\n\n this.updateItems();\n }\n\n private getSortedItems(): T[] {\n const unsortedItems = this.unsortedItems();\n const items = Array.from<T>({length: unsortedItems.length});\n\n unsortedItems.forEach((item, index) => {\n items[this.order.get(index) ?? index] = item;\n });\n\n return items;\n }\n\n private updateItems(): void {\n this.items.set(this.getSortedItems());\n this.updateEnabled();\n }\n\n private updateEnabled(): void {\n this.enabled.set(this.getSortedItems().filter((item) => this.isEnabled(item)));\n }\n}\n","<tui-tiles\n class=\"t-wrapper\"\n [(order)]=\"order\"\n>\n @for (item of unsortedItems(); track item) {\n <tui-tile [style.order]=\"order.get($index)\">\n <div\n class=\"t-item\"\n [class.t-item_disabled]=\"!isEnabled(item)\"\n >\n <div\n tuiTileHandle\n class=\"t-draggable\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icons.drag\"\n />\n <ng-container\n *polymorpheusOutlet=\"content() as template; context: {$implicit: item, index: $index}\"\n >\n {{ template }}\n </ng-container>\n </div>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [iconStart]=\"getIcon(item)\"\n (click)=\"toggle(item)\"\n (keydown.arrowDown.prevent)=\"move($index, 1)\"\n (keydown.arrowUp.prevent)=\"move($index, -1)\"\n >\n {{ showHideText() }}\n </button>\n </div>\n </tui-tile>\n }\n</tui-tiles>\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-components-reorder.mjs","sources":["../../../projects/addon-table/components/reorder/reorder.options.ts","../../../projects/addon-table/components/reorder/reorder.component.ts","../../../projects/addon-table/components/reorder/reorder.template.html","../../../projects/addon-table/components/reorder/taiga-ui-addon-table-components-reorder.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiReorderOptions {\n readonly icons: {\n readonly drag: string;\n readonly hide: string;\n readonly show: string;\n };\n}\n\nexport const TUI_REORDER_DEFAULT_OPTIONS: TuiReorderOptions = {\n icons: {\n hide: '@tui.eye-off',\n show: '@tui.eye',\n drag: '@tui.grip-vertical',\n },\n};\n\nexport const [TUI_REORDER_OPTIONS, tuiReorderOptionsProvider] = tuiCreateOptions(\n TUI_REORDER_DEFAULT_OPTIONS,\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport {TUI_TABLE_SHOW_HIDE_MESSAGE} from '@taiga-ui/addon-table/tokens';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TUI_TILES_REORDER, TuiTiles, tuiTilesShift} from '@taiga-ui/kit/components/tiles';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TUI_REORDER_OPTIONS} from './reorder.options';\n\n@Component({\n selector: 'tui-reorder',\n imports: [PolymorpheusOutlet, TuiButton, TuiIcon, TuiTiles],\n templateUrl: './reorder.template.html',\n styleUrl: './reorder.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TILES_REORDER,\n useValue: tuiTilesShift,\n },\n ],\n host: {\n '(focusout.stop)': '(0)',\n '(pointerdown.zoneless)': 'onDrag()',\n '(document:pointerup.zoneless)': 'onDrop()',\n },\n})\nexport class TuiReorder<T> {\n private dragging = false;\n\n protected order = new Map<number, number>();\n protected readonly unsortedItems = linkedSignal<readonly T[], readonly T[]>({\n source: () => this.items(),\n computation: (items, previous) => {\n const previousUnsortedItems = previous?.value ?? [];\n\n if (\n items.length !== previousUnsortedItems.length ||\n !items.every((item) => previousUnsortedItems.includes(item))\n ) {\n return items;\n }\n\n return previousUnsortedItems;\n },\n });\n\n protected readonly options = inject(TUI_REORDER_OPTIONS);\n protected readonly showHideText = inject(TUI_TABLE_SHOW_HIDE_MESSAGE);\n\n public readonly enabled = model<readonly T[]>([]);\n\n public readonly items = model<readonly T[]>([]);\n\n public readonly content = input<PolymorpheusContent<TuiContext<T> & {index: number}>>(\n ({$implicit}) => String($implicit),\n );\n\n protected onDrag(): void {\n this.dragging = true;\n }\n\n protected onDrop(): void {\n if (!this.dragging) {\n return;\n }\n\n this.dragging = false;\n this.updateItems();\n }\n\n protected isEnabled(item: T): boolean {\n return this.enabled().includes(item);\n }\n\n protected getIcon(item: T): string {\n return this.isEnabled(item) ? this.options.icons.hide : this.options.icons.show;\n }\n\n protected toggle(toggled: T): void {\n this.enabled.update((enabled) =>\n this.isEnabled(toggled)\n ? enabled.filter((item) => item !== toggled)\n : enabled.concat(toggled),\n );\n\n this.updateEnabled();\n }\n\n protected move(index: number, direction: number): void {\n const oldIndex = this.order.get(index) ?? index;\n\n if (\n (!oldIndex && direction < 0) ||\n (oldIndex === this.unsortedItems().length - 1 && direction > 0)\n ) {\n return;\n }\n\n const newIndex = oldIndex + direction;\n const oldItem = Array.from(this.order.values()).findIndex(\n (item) => item === newIndex,\n );\n\n this.order.set(index, newIndex);\n this.order.set(oldItem, oldIndex);\n this.order = new Map(this.order);\n\n this.updateItems();\n }\n\n private getSortedItems(): T[] {\n const unsortedItems = this.unsortedItems();\n const items = Array.from<T>({length: unsortedItems.length});\n\n unsortedItems.forEach((item, index) => {\n items[this.order.get(index) ?? index] = item;\n });\n\n return items;\n }\n\n private updateItems(): void {\n this.items.set(this.getSortedItems());\n this.updateEnabled();\n }\n\n private updateEnabled(): void {\n this.enabled.set(this.getSortedItems().filter((item) => this.isEnabled(item)));\n }\n}\n","<tui-tiles\n class=\"t-wrapper\"\n [(order)]=\"order\"\n>\n @for (item of unsortedItems(); track item) {\n <tui-tile [style.order]=\"order.get($index)\">\n <div\n class=\"t-item\"\n [class.t-item_disabled]=\"!isEnabled(item)\"\n >\n <div\n tuiTileHandle\n class=\"t-draggable\"\n >\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icons.drag\"\n />\n <ng-container\n *polymorpheusOutlet=\"content() as template; context: {$implicit: item, index: $index}\"\n >\n {{ template }}\n </ng-container>\n </div>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [iconStart]=\"getIcon(item)\"\n (click)=\"toggle(item)\"\n (keydown.arrowDown.prevent)=\"move($index, 1)\"\n (keydown.arrowUp.prevent)=\"move($index, -1)\"\n >\n {{ showHideText() }}\n </button>\n </div>\n </tui-tile>\n }\n</tui-tiles>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, computed, input, output, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { inject, computed, input, model, output, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { TUI_TABLE_PAGINATION_TEXTS } from '@taiga-ui/addon-table/tokens';
4
- import { tuiSetSignal } from '@taiga-ui/cdk/utils/miscellaneous';
5
4
  import { TuiButton } from '@taiga-ui/core/components/button';
6
5
  import * as i1 from '@taiga-ui/core/components/data-list';
7
6
  import { TuiDataList } from '@taiga-ui/core/components/data-list';
@@ -9,7 +8,7 @@ import { TuiIcon } from '@taiga-ui/core/components/icon';
9
8
  import { TuiLink } from '@taiga-ui/core/components/link';
10
9
  import * as i2 from '@taiga-ui/core/portals/dropdown';
11
10
  import { TuiDropdown } from '@taiga-ui/core/portals/dropdown';
12
- import { TUI_SPIN_ICONS, TUI_SPIN_TEXTS, TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
11
+ import { TUI_COMMON_ICONS, TUI_SPIN_TEXTS } from '@taiga-ui/core/tokens';
13
12
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
14
13
  import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
15
14
 
@@ -30,10 +29,9 @@ const [TUI_TABLE_PAGINATION_OPTIONS, tuiTablePaginationOptionsProvider] = tuiCre
30
29
  class TuiTablePagination {
31
30
  constructor() {
32
31
  this.options = inject(TUI_TABLE_PAGINATION_OPTIONS);
33
- this.icons = inject(TUI_SPIN_ICONS);
32
+ this.icons = inject(TUI_COMMON_ICONS);
34
33
  this.spinTexts = inject(TUI_SPIN_TEXTS);
35
34
  this.texts = inject(TUI_TABLE_PAGINATION_TEXTS);
36
- this.commonIcons = inject(TUI_COMMON_ICONS);
37
35
  this.pages = computed(() => Math.ceil(this.total() / this.size()));
38
36
  this.end = computed(() => Math.min(this.start + this.size(), this.total()));
39
37
  this.rightDisabled = computed(() => this.end() === this.total());
@@ -45,42 +43,36 @@ class TuiTablePagination {
45
43
  });
46
44
  this.items = input(this.options.items);
47
45
  this.total = input(0);
48
- this.page = input(0);
49
- this.size = input(this.options.size);
46
+ this.page = model(0);
47
+ this.size = model(this.options.size);
50
48
  this.paginationChange = output();
51
49
  }
52
50
  onItem(size) {
53
51
  const { start } = this;
54
- tuiSetSignal(this.size, size);
55
- tuiSetSignal(this.page, Math.floor(start / this.size()));
52
+ this.size.set(size);
53
+ this.page.set(Math.floor(start / this.size()));
56
54
  this.paginationChange.emit(this.pagination());
57
55
  }
58
- get showPages() {
59
- return this.options.showPages;
60
- }
61
56
  get sizeOptionContent() {
62
57
  return this.options.sizeOptionContent;
63
58
  }
64
59
  get start() {
65
60
  return (Math.min(this.page(), Math.floor(this.total() / this.size())) * this.size());
66
61
  }
67
- get leftDisabled() {
68
- return !this.start;
69
- }
70
62
  back() {
71
- tuiSetSignal(this.page, this.page() - 1);
63
+ this.page.update((page) => page - 1);
72
64
  this.paginationChange.emit(this.pagination());
73
65
  }
74
66
  forth() {
75
- tuiSetSignal(this.page, this.page() + 1);
67
+ this.page.update((page) => page + 1);
76
68
  this.paginationChange.emit(this.pagination());
77
69
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiTablePagination, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiTablePagination, isStandalone: true, selector: "tui-table-pagination", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { paginationChange: "paginationChange" }, ngImport: i0, template: "@if (texts(); as texts) {\n <span class=\"t-pages\">\n @if (showPages) {\n {{ texts.pages }}\n <strong class=\"t-strong\">{{ pages() }}</strong>\n }\n </span>\n <span automation-id=\"tui-table-pagination__lines-per-page-wrapper\">\n {{ texts.linesPerPage }}\n @if (total() !== 0) {\n <button\n tuiDropdown\n tuiDropdownAuto\n tuiLink\n type=\"button\"\n >\n <strong>{{ start + 1 }}\u2013{{ end() }}</strong>\n <tui-data-list\n *tuiDropdown=\"let close\"\n size=\"s\"\n >\n @for (item of items(); track item) {\n <button\n tuiOption\n type=\"button\"\n class=\"t-item\"\n (click)=\"close(); onItem(item)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n sizeOptionContent as text;\n context: {$implicit: item, total: total()}\n \"\n >\n {{ text }}\n </ng-container>\n @if (item === size()) {\n <tui-icon\n class=\"t-checkmark\"\n [icon]=\"commonIcons.check\"\n />\n } @else {\n <span class=\"t-checkmark\"></span>\n }\n </button>\n }\n </tui-data-list>\n </button>\n } @else {\n <strong>0 - 0</strong>\n }\n {{ texts.of }}\n <strong class=\"t-strong\">{{ total() }}</strong>\n </span>\n @if (spinTexts(); as spinTexts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button t-button_back\"\n [disabled]=\"leftDisabled\"\n [iconStart]=\"icons.decrement\"\n (click)=\"back()\"\n >\n {{ spinTexts[0] }}\n </button>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"rightDisabled()\"\n [iconStart]=\"icons.increment\"\n (click)=\"forth()\"\n >\n {{ spinTexts[1] }}\n </button>\n }\n}\n", styles: [":host{display:flex;font:var(--tui-font-text-s);align-items:center;color:var(--tui-text-tertiary)}.t-strong{color:var(--tui-text-primary)}.t-pages{margin-inline-end:auto}.t-item{min-inline-size:5.5rem;box-sizing:border-box}.t-checkmark{min-inline-size:1rem;font-size:1rem;margin-inline-start:auto}.t-button{transform:scaleX(var(--tui-inline))}.t-button_back{margin-inline-end:.25rem;margin-inline-start:1.5rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i2.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i2.TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiTablePagination, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiTablePagination, isStandalone: true, selector: "tui-table-pagination", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", size: "sizeChange", paginationChange: "paginationChange" }, ngImport: i0, template: "@if (texts(); as texts) {\n <span class=\"t-pages\">\n @if (options.showPages) {\n {{ texts.pages }}\n <strong class=\"t-strong\">{{ pages() }}</strong>\n }\n </span>\n <span automation-id=\"tui-table-pagination__lines-per-page-wrapper\">\n {{ texts.linesPerPage }}\n @if (total() !== 0) {\n <button\n tuiDropdown\n tuiDropdownAuto\n tuiLink\n type=\"button\"\n >\n <strong>{{ start + 1 }}\u2013{{ end() }}</strong>\n <tui-data-list\n *tuiDropdown=\"let close\"\n size=\"s\"\n >\n @for (item of items(); track item) {\n <button\n tuiOption\n type=\"button\"\n class=\"t-item\"\n (click)=\"close(); onItem(item)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n sizeOptionContent as text;\n context: {$implicit: item, total: total()}\n \"\n >\n {{ text }}\n </ng-container>\n @if (item === size()) {\n <tui-icon\n class=\"t-checkmark\"\n [icon]=\"icons.check\"\n />\n } @else {\n <span class=\"t-checkmark\"></span>\n }\n </button>\n }\n </tui-data-list>\n </button>\n } @else {\n <strong>0 - 0</strong>\n }\n {{ texts.of }}\n <strong class=\"t-strong\">{{ total() }}</strong>\n </span>\n @if (spinTexts(); as spinTexts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button t-button_back\"\n [disabled]=\"!start\"\n [iconStart]=\"icons.decrement\"\n (click)=\"back()\"\n >\n {{ spinTexts[0] }}\n </button>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"rightDisabled()\"\n [iconStart]=\"icons.increment\"\n (click)=\"forth()\"\n >\n {{ spinTexts[1] }}\n </button>\n }\n}\n", styles: [":host{display:flex;font:var(--tui-font-text-s);align-items:center;color:var(--tui-text-tertiary)}.t-strong{color:var(--tui-text-primary)}.t-pages{margin-inline-end:auto}.t-item{min-inline-size:5.5rem;box-sizing:border-box}.t-checkmark{min-inline-size:1rem;font-size:1rem;margin-inline-start:auto}.t-button{transform:scaleX(var(--tui-inline))}.t-button_back{margin-inline-end:.25rem;margin-inline-start:1.5rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i1.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i2.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i2.TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
72
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiTablePagination, decorators: [{
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiTablePagination, decorators: [{
82
74
  type: Component,
83
- args: [{ selector: 'tui-table-pagination', imports: [PolymorpheusOutlet, TuiButton, TuiDataList, TuiDropdown, TuiIcon, TuiLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (texts(); as texts) {\n <span class=\"t-pages\">\n @if (showPages) {\n {{ texts.pages }}\n <strong class=\"t-strong\">{{ pages() }}</strong>\n }\n </span>\n <span automation-id=\"tui-table-pagination__lines-per-page-wrapper\">\n {{ texts.linesPerPage }}\n @if (total() !== 0) {\n <button\n tuiDropdown\n tuiDropdownAuto\n tuiLink\n type=\"button\"\n >\n <strong>{{ start + 1 }}\u2013{{ end() }}</strong>\n <tui-data-list\n *tuiDropdown=\"let close\"\n size=\"s\"\n >\n @for (item of items(); track item) {\n <button\n tuiOption\n type=\"button\"\n class=\"t-item\"\n (click)=\"close(); onItem(item)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n sizeOptionContent as text;\n context: {$implicit: item, total: total()}\n \"\n >\n {{ text }}\n </ng-container>\n @if (item === size()) {\n <tui-icon\n class=\"t-checkmark\"\n [icon]=\"commonIcons.check\"\n />\n } @else {\n <span class=\"t-checkmark\"></span>\n }\n </button>\n }\n </tui-data-list>\n </button>\n } @else {\n <strong>0 - 0</strong>\n }\n {{ texts.of }}\n <strong class=\"t-strong\">{{ total() }}</strong>\n </span>\n @if (spinTexts(); as spinTexts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button t-button_back\"\n [disabled]=\"leftDisabled\"\n [iconStart]=\"icons.decrement\"\n (click)=\"back()\"\n >\n {{ spinTexts[0] }}\n </button>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"rightDisabled()\"\n [iconStart]=\"icons.increment\"\n (click)=\"forth()\"\n >\n {{ spinTexts[1] }}\n </button>\n }\n}\n", styles: [":host{display:flex;font:var(--tui-font-text-s);align-items:center;color:var(--tui-text-tertiary)}.t-strong{color:var(--tui-text-primary)}.t-pages{margin-inline-end:auto}.t-item{min-inline-size:5.5rem;box-sizing:border-box}.t-checkmark{min-inline-size:1rem;font-size:1rem;margin-inline-start:auto}.t-button{transform:scaleX(var(--tui-inline))}.t-button_back{margin-inline-end:.25rem;margin-inline-start:1.5rem}\n"] }]
75
+ args: [{ selector: 'tui-table-pagination', imports: [PolymorpheusOutlet, TuiButton, TuiDataList, TuiDropdown, TuiIcon, TuiLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (texts(); as texts) {\n <span class=\"t-pages\">\n @if (options.showPages) {\n {{ texts.pages }}\n <strong class=\"t-strong\">{{ pages() }}</strong>\n }\n </span>\n <span automation-id=\"tui-table-pagination__lines-per-page-wrapper\">\n {{ texts.linesPerPage }}\n @if (total() !== 0) {\n <button\n tuiDropdown\n tuiDropdownAuto\n tuiLink\n type=\"button\"\n >\n <strong>{{ start + 1 }}\u2013{{ end() }}</strong>\n <tui-data-list\n *tuiDropdown=\"let close\"\n size=\"s\"\n >\n @for (item of items(); track item) {\n <button\n tuiOption\n type=\"button\"\n class=\"t-item\"\n (click)=\"close(); onItem(item)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n sizeOptionContent as text;\n context: {$implicit: item, total: total()}\n \"\n >\n {{ text }}\n </ng-container>\n @if (item === size()) {\n <tui-icon\n class=\"t-checkmark\"\n [icon]=\"icons.check\"\n />\n } @else {\n <span class=\"t-checkmark\"></span>\n }\n </button>\n }\n </tui-data-list>\n </button>\n } @else {\n <strong>0 - 0</strong>\n }\n {{ texts.of }}\n <strong class=\"t-strong\">{{ total() }}</strong>\n </span>\n @if (spinTexts(); as spinTexts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button t-button_back\"\n [disabled]=\"!start\"\n [iconStart]=\"icons.decrement\"\n (click)=\"back()\"\n >\n {{ spinTexts[0] }}\n </button>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"rightDisabled()\"\n [iconStart]=\"icons.increment\"\n (click)=\"forth()\"\n >\n {{ spinTexts[1] }}\n </button>\n }\n}\n", styles: [":host{display:flex;font:var(--tui-font-text-s);align-items:center;color:var(--tui-text-tertiary)}.t-strong{color:var(--tui-text-primary)}.t-pages{margin-inline-end:auto}.t-item{min-inline-size:5.5rem;box-sizing:border-box}.t-checkmark{min-inline-size:1rem;font-size:1rem;margin-inline-start:auto}.t-button{transform:scaleX(var(--tui-inline))}.t-button_back{margin-inline-end:.25rem;margin-inline-start:1.5rem}\n"] }]
84
76
  }] });
85
77
 
86
78
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-table-components-table-pagination.mjs","sources":["../../../projects/addon-table/components/table-pagination/table-pagination.options.ts","../../../projects/addon-table/components/table-pagination/table-pagination.component.ts","../../../projects/addon-table/components/table-pagination/table-pagination.template.html","../../../projects/addon-table/components/table-pagination/taiga-ui-addon-table-components-table-pagination.ts"],"sourcesContent":["import {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nfunction defaultSizeOptionContent({$implicit}: TuiContext<number>): string {\n return `${$implicit}`;\n}\n\nexport interface TuiTablePaginationOptions {\n readonly items: readonly number[];\n readonly showPages: boolean;\n readonly size: number;\n readonly sizeOptionContent: PolymorpheusContent<TuiContext<number> & {total: number}>;\n}\n\nexport const TUI_TABLE_PAGINATION_DEFAULT_OPTIONS: TuiTablePaginationOptions = {\n sizeOptionContent: defaultSizeOptionContent,\n showPages: true,\n items: [10, 20, 50, 100],\n size: 10,\n};\n\n/**\n * Default parameters for TablePagination component\n */\nexport const [TUI_TABLE_PAGINATION_OPTIONS, tuiTablePaginationOptionsProvider] =\n tuiCreateOptions(TUI_TABLE_PAGINATION_DEFAULT_OPTIONS);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n} from '@angular/core';\nimport {TUI_TABLE_PAGINATION_TEXTS} from '@taiga-ui/addon-table/tokens';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS, TUI_SPIN_ICONS, TUI_SPIN_TEXTS} from '@taiga-ui/core/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {\n TUI_TABLE_PAGINATION_OPTIONS,\n type TuiTablePaginationOptions,\n} from './table-pagination.options';\n\nexport interface TuiTablePaginationEvent {\n readonly page: number;\n readonly size: number;\n}\n\n@Component({\n selector: 'tui-table-pagination',\n imports: [PolymorpheusOutlet, TuiButton, TuiDataList, TuiDropdown, TuiIcon, TuiLink],\n templateUrl: './table-pagination.template.html',\n styleUrl: './table-pagination.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTablePagination {\n private readonly options = inject(TUI_TABLE_PAGINATION_OPTIONS);\n\n protected readonly icons = inject(TUI_SPIN_ICONS);\n protected readonly spinTexts = inject(TUI_SPIN_TEXTS);\n protected readonly texts = inject(TUI_TABLE_PAGINATION_TEXTS);\n protected readonly commonIcons = inject(TUI_COMMON_ICONS);\n\n protected readonly pages = computed(() => Math.ceil(this.total() / this.size()));\n\n protected readonly end = computed(() =>\n Math.min(this.start + this.size(), this.total()),\n );\n\n protected readonly rightDisabled = computed(() => this.end() === this.total());\n\n protected readonly pagination = computed<TuiTablePaginationEvent>(() => {\n return {\n page: this.page(),\n size: this.size(),\n };\n });\n\n public readonly items = input<readonly number[]>(this.options.items);\n\n public readonly total = input(0);\n\n public readonly page = input(0);\n\n public readonly size = input(this.options.size);\n\n public readonly paginationChange = output<TuiTablePaginationEvent>();\n\n public onItem(size: number): void {\n const {start} = this;\n\n tuiSetSignal(this.size, size);\n tuiSetSignal(this.page, Math.floor(start / this.size()));\n this.paginationChange.emit(this.pagination());\n }\n\n protected get showPages(): boolean {\n return this.options.showPages;\n }\n\n protected get sizeOptionContent(): TuiTablePaginationOptions['sizeOptionContent'] {\n return this.options.sizeOptionContent;\n }\n\n protected get start(): number {\n return (\n Math.min(this.page(), Math.floor(this.total() / this.size())) * this.size()\n );\n }\n\n protected get leftDisabled(): boolean {\n return !this.start;\n }\n\n protected back(): void {\n tuiSetSignal(this.page, this.page() - 1);\n this.paginationChange.emit(this.pagination());\n }\n\n protected forth(): void {\n tuiSetSignal(this.page, this.page() + 1);\n this.paginationChange.emit(this.pagination());\n }\n}\n","@if (texts(); as texts) {\n <span class=\"t-pages\">\n @if (showPages) {\n {{ texts.pages }}\n <strong class=\"t-strong\">{{ pages() }}</strong>\n }\n </span>\n <span automation-id=\"tui-table-pagination__lines-per-page-wrapper\">\n {{ texts.linesPerPage }}\n @if (total() !== 0) {\n <button\n tuiDropdown\n tuiDropdownAuto\n tuiLink\n type=\"button\"\n >\n <strong>{{ start + 1 }}–{{ end() }}</strong>\n <tui-data-list\n *tuiDropdown=\"let close\"\n size=\"s\"\n >\n @for (item of items(); track item) {\n <button\n tuiOption\n type=\"button\"\n class=\"t-item\"\n (click)=\"close(); onItem(item)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n sizeOptionContent as text;\n context: {$implicit: item, total: total()}\n \"\n >\n {{ text }}\n </ng-container>\n @if (item === size()) {\n <tui-icon\n class=\"t-checkmark\"\n [icon]=\"commonIcons.check\"\n />\n } @else {\n <span class=\"t-checkmark\"></span>\n }\n </button>\n }\n </tui-data-list>\n </button>\n } @else {\n <strong>0 - 0</strong>\n }\n {{ texts.of }}\n <strong class=\"t-strong\">{{ total() }}</strong>\n </span>\n @if (spinTexts(); as spinTexts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button t-button_back\"\n [disabled]=\"leftDisabled\"\n [iconStart]=\"icons.decrement\"\n (click)=\"back()\"\n >\n {{ spinTexts[0] }}\n </button>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"rightDisabled()\"\n [iconStart]=\"icons.increment\"\n (click)=\"forth()\"\n >\n {{ spinTexts[1] }}\n </button>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,SAAS,wBAAwB,CAAC,EAAC,SAAS,EAAqB,EAAA;IAC7D,OAAO,CAAA,EAAG,SAAS,CAAA,CAAE;AACzB;AASO,MAAM,oCAAoC,GAA8B;AAC3E,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACxB,IAAA,IAAI,EAAE,EAAE;;AAGZ;;AAEG;AACI,MAAM,CAAC,4BAA4B,EAAE,iCAAiC,CAAC,GAC1E,gBAAgB,CAAC,oCAAoC;;MCS5C,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAE5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEtC,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7D,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CACnD;AAEkB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAE3D,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAA0B,MAAK;YACnE,OAAO;AACH,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACpB;AACL,QAAA,CAAC,CAAC;QAEc,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAEpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAEhB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;QAEf,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAE/B,IAAA,CAAA,gBAAgB,GAAG,MAAM,EAA2B;AAqCvE,IAAA;AAnCU,IAAA,MAAM,CAAC,IAAY,EAAA;AACtB,QAAA,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI;AAEpB,QAAA,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7B,QAAA,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD;AAEA,IAAA,IAAc,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;IACjC;AAEA,IAAA,IAAc,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB;IACzC;AAEA,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,QACI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;IAEnF;AAEA,IAAA,IAAc,YAAY,GAAA;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK;IACtB;IAEU,IAAI,GAAA;AACV,QAAA,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD;IAEU,KAAK,GAAA;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD;+GAnES,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC/B,kxFAiFA,EAAA,MAAA,EAAA,CAAA,6ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnDc,kBAAkB,8HAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oGAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAA4B,OAAO,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK1E,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,CAAC,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,EAAA,eAAA,EAGnE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kxFAAA,EAAA,MAAA,EAAA,CAAA,6ZAAA,CAAA,EAAA;;;AEjCnD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-table-components-table-pagination.mjs","sources":["../../../projects/addon-table/components/table-pagination/table-pagination.options.ts","../../../projects/addon-table/components/table-pagination/table-pagination.component.ts","../../../projects/addon-table/components/table-pagination/table-pagination.template.html","../../../projects/addon-table/components/table-pagination/taiga-ui-addon-table-components-table-pagination.ts"],"sourcesContent":["import {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nfunction defaultSizeOptionContent({$implicit}: TuiContext<number>): string {\n return `${$implicit}`;\n}\n\nexport interface TuiTablePaginationOptions {\n readonly items: readonly number[];\n readonly showPages: boolean;\n readonly size: number;\n readonly sizeOptionContent: PolymorpheusContent<TuiContext<number> & {total: number}>;\n}\n\nexport const TUI_TABLE_PAGINATION_DEFAULT_OPTIONS: TuiTablePaginationOptions = {\n sizeOptionContent: defaultSizeOptionContent,\n showPages: true,\n items: [10, 20, 50, 100],\n size: 10,\n};\n\n/**\n * Default parameters for TablePagination component\n */\nexport const [TUI_TABLE_PAGINATION_OPTIONS, tuiTablePaginationOptionsProvider] =\n tuiCreateOptions(TUI_TABLE_PAGINATION_DEFAULT_OPTIONS);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {TUI_TABLE_PAGINATION_TEXTS} from '@taiga-ui/addon-table/tokens';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS, TUI_SPIN_TEXTS} from '@taiga-ui/core/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {\n TUI_TABLE_PAGINATION_OPTIONS,\n type TuiTablePaginationOptions,\n} from './table-pagination.options';\n\nexport interface TuiTablePaginationEvent {\n readonly page: number;\n readonly size: number;\n}\n\n@Component({\n selector: 'tui-table-pagination',\n imports: [PolymorpheusOutlet, TuiButton, TuiDataList, TuiDropdown, TuiIcon, TuiLink],\n templateUrl: './table-pagination.template.html',\n styleUrl: './table-pagination.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTablePagination {\n protected readonly options = inject(TUI_TABLE_PAGINATION_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly spinTexts = inject(TUI_SPIN_TEXTS);\n protected readonly texts = inject(TUI_TABLE_PAGINATION_TEXTS);\n protected readonly pages = computed(() => Math.ceil(this.total() / this.size()));\n protected readonly end = computed(() =>\n Math.min(this.start + this.size(), this.total()),\n );\n\n protected readonly rightDisabled = computed(() => this.end() === this.total());\n protected readonly pagination = computed<TuiTablePaginationEvent>(() => {\n return {\n page: this.page(),\n size: this.size(),\n };\n });\n\n public readonly items = input<readonly number[]>(this.options.items);\n public readonly total = input(0);\n public readonly page = model(0);\n public readonly size = model(this.options.size);\n public readonly paginationChange = output<TuiTablePaginationEvent>();\n\n public onItem(size: number): void {\n const {start} = this;\n\n this.size.set(size);\n this.page.set(Math.floor(start / this.size()));\n this.paginationChange.emit(this.pagination());\n }\n\n protected get sizeOptionContent(): TuiTablePaginationOptions['sizeOptionContent'] {\n return this.options.sizeOptionContent;\n }\n\n protected get start(): number {\n return (\n Math.min(this.page(), Math.floor(this.total() / this.size())) * this.size()\n );\n }\n\n protected back(): void {\n this.page.update((page) => page - 1);\n this.paginationChange.emit(this.pagination());\n }\n\n protected forth(): void {\n this.page.update((page) => page + 1);\n this.paginationChange.emit(this.pagination());\n }\n}\n","@if (texts(); as texts) {\n <span class=\"t-pages\">\n @if (options.showPages) {\n {{ texts.pages }}\n <strong class=\"t-strong\">{{ pages() }}</strong>\n }\n </span>\n <span automation-id=\"tui-table-pagination__lines-per-page-wrapper\">\n {{ texts.linesPerPage }}\n @if (total() !== 0) {\n <button\n tuiDropdown\n tuiDropdownAuto\n tuiLink\n type=\"button\"\n >\n <strong>{{ start + 1 }}–{{ end() }}</strong>\n <tui-data-list\n *tuiDropdown=\"let close\"\n size=\"s\"\n >\n @for (item of items(); track item) {\n <button\n tuiOption\n type=\"button\"\n class=\"t-item\"\n (click)=\"close(); onItem(item)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n sizeOptionContent as text;\n context: {$implicit: item, total: total()}\n \"\n >\n {{ text }}\n </ng-container>\n @if (item === size()) {\n <tui-icon\n class=\"t-checkmark\"\n [icon]=\"icons.check\"\n />\n } @else {\n <span class=\"t-checkmark\"></span>\n }\n </button>\n }\n </tui-data-list>\n </button>\n } @else {\n <strong>0 - 0</strong>\n }\n {{ texts.of }}\n <strong class=\"t-strong\">{{ total() }}</strong>\n </span>\n @if (spinTexts(); as spinTexts) {\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button t-button_back\"\n [disabled]=\"!start\"\n [iconStart]=\"icons.decrement\"\n (click)=\"back()\"\n >\n {{ spinTexts[0] }}\n </button>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"rightDisabled()\"\n [iconStart]=\"icons.increment\"\n (click)=\"forth()\"\n >\n {{ spinTexts[1] }}\n </button>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}