@swimlane/ngx-datatable 22.0.0 → 24.0.0-alpha.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.
@@ -0,0 +1,1302 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Provider, PipeTransform, TemplateRef, WritableSignal, Signal, DoCheck, AfterViewInit, OnDestroy, IterableDiffer, OnInit, ViewContainerRef, ModuleWithProviders } from '@angular/core';
3
+ import * as _swimlane_ngx_datatable from '@swimlane/ngx-datatable';
4
+ import { Subscription } from 'rxjs';
5
+
6
+ /** Interface for messages to override default table texts. */
7
+ interface NgxDatatableMessages {
8
+ /** Message to show when the array is present but empty */
9
+ emptyMessage: string;
10
+ /** Footer total message */
11
+ totalMessage: string;
12
+ /** Footer selected message */
13
+ selectedMessage: string;
14
+ /** Pager screen reader message for the first page button */
15
+ ariaFirstPageMessage: string;
16
+ /**
17
+ * Pager screen reader message for the n-th page button.
18
+ * It will be rendered as: `{{ariaPageNMessage}} {{n}}`.
19
+ */
20
+ ariaPageNMessage: string;
21
+ /** Pager screen reader message for the previous page button */
22
+ ariaPreviousPageMessage: string;
23
+ /** Pager screen reader message for the next page button */
24
+ ariaNextPageMessage: string;
25
+ /** Pager screen reader message for the last page button */
26
+ ariaLastPageMessage: string;
27
+ /** Row checkbox aria label */
28
+ ariaRowCheckboxMessage: string;
29
+ /** Header checkbox aria label */
30
+ ariaHeaderCheckboxMessage: string;
31
+ /** Group header checkbox aria label */
32
+ ariaGroupHeaderCheckboxMessage: string;
33
+ }
34
+ /** CSS classes for icons that override the default table icons. */
35
+ interface NgxDatatableCssClasses {
36
+ sortAscending: string;
37
+ sortDescending: string;
38
+ sortUnset: string;
39
+ pagerLeftArrow: string;
40
+ pagerRightArrow: string;
41
+ pagerPrevious: string;
42
+ pagerNext: string;
43
+ treeStatusLoading: string;
44
+ treeStatusExpanded: string;
45
+ treeStatusCollapsed: string;
46
+ }
47
+ /**
48
+ * Interface definition for ngx-datatable global configuration
49
+ */
50
+ interface NgxDatatableConfig {
51
+ messages?: NgxDatatableMessages;
52
+ cssClasses?: NgxDatatableCssClasses;
53
+ headerHeight?: number;
54
+ footerHeight?: number;
55
+ rowHeight?: number;
56
+ defaultColumnWidth?: number;
57
+ }
58
+ /**
59
+ * This makes all properties recursively optional.
60
+ *
61
+ * @internal
62
+ */
63
+ type AllPartial<T> = {
64
+ [K in keyof T]?: AllPartial<T[K]>;
65
+ };
66
+ /**
67
+ * Provides a global configuration for ngx-datatable.
68
+ *
69
+ * @param overrides The overrides of the table configuration.
70
+ */
71
+ declare const providedNgxDatatableConfig: (overrides: AllPartial<NgxDatatableConfig>) => Provider;
72
+
73
+ /**
74
+ * Column property that indicates how to retrieve this column's
75
+ * value from a row.
76
+ * 'a.deep.value', 'normalprop', 0 (numeric)
77
+ */
78
+ type TableColumnProp = string | number;
79
+ /**
80
+ * Column Type
81
+ */
82
+ interface TableColumn<TRow extends Row = any> {
83
+ /**
84
+ * Determines if column is checkbox
85
+ */
86
+ checkboxable?: boolean;
87
+ /**
88
+ * Determines if the column is frozen to the left
89
+ */
90
+ frozenLeft?: boolean;
91
+ /**
92
+ * Determines if the column is frozen to the right
93
+ */
94
+ frozenRight?: boolean;
95
+ /**
96
+ * The grow factor relative to other columns. Same as the flex-grow
97
+ * API from http =//www.w3.org/TR/css3-flexbox/. Basically;
98
+ * take any available extra width and distribute it proportionally
99
+ * according to all columns' flexGrow values.
100
+ */
101
+ flexGrow?: number;
102
+ /**
103
+ * Min width of the column
104
+ */
105
+ minWidth?: number;
106
+ /**
107
+ * Max width of the column
108
+ */
109
+ maxWidth?: number;
110
+ /**
111
+ * The default width of the column, in pixels
112
+ */
113
+ width?: number;
114
+ /**
115
+ * Can the column be resized
116
+ */
117
+ resizeable?: boolean;
118
+ /**
119
+ * Custom sort comparator
120
+ */
121
+ comparator?: (valueA: any, valueB: any, rowA: TRow, rowB: TRow) => number;
122
+ /**
123
+ * Custom pipe transforms
124
+ */
125
+ pipe?: PipeTransform;
126
+ /**
127
+ * Can the column be sorted
128
+ */
129
+ sortable?: boolean;
130
+ /**
131
+ * Can the column be re-arranged by dragging
132
+ */
133
+ draggable?: boolean;
134
+ /**
135
+ * Whether the column can automatically resize to fill space in the table.
136
+ */
137
+ canAutoResize?: boolean;
138
+ /**
139
+ * Column name or label
140
+ */
141
+ name?: string;
142
+ /**
143
+ * Property to bind to the row. Example:
144
+ *
145
+ * `someField` or `some.field.nested`, 0 (numeric)
146
+ *
147
+ * If left blank, will use the name as camel case conversion
148
+ */
149
+ prop?: TableColumnProp;
150
+ /**
151
+ * By default, the property is bound using normal data binding `<span>{{content}}</span>`.
152
+ * If this property is set to true, the property will be bound as `<span [innerHTML]="content" />`.
153
+ *
154
+ * **DANGER** If enabling this feature, make sure the source of the data is trusted. This can be a vector for HTML injection attacks.
155
+ */
156
+ bindAsUnsafeHtml?: boolean;
157
+ /**
158
+ * Cell template ref
159
+ */
160
+ cellTemplate?: TemplateRef<CellContext<TRow>>;
161
+ /**
162
+ * Ghost Cell template ref
163
+ */
164
+ ghostCellTemplate?: TemplateRef<any>;
165
+ /**
166
+ * Header template ref
167
+ */
168
+ headerTemplate?: TemplateRef<HeaderCellContext>;
169
+ /**
170
+ * Tree toggle template ref
171
+ */
172
+ treeToggleTemplate?: any;
173
+ /**
174
+ * CSS Classes for the cell
175
+ */
176
+ cellClass?: string | ((data: {
177
+ row: TRow;
178
+ group?: TRow[];
179
+ column: TableColumn<TRow>;
180
+ value: any;
181
+ rowHeight: number;
182
+ }) => string | Record<string, boolean>);
183
+ /**
184
+ * CSS classes for the header
185
+ */
186
+ headerClass?: string | ((data: {
187
+ column: TableColumn;
188
+ }) => string | Record<string, boolean>);
189
+ /**
190
+ * Header checkbox enabled
191
+ */
192
+ headerCheckboxable?: boolean;
193
+ /**
194
+ * Is tree displayed on this column
195
+ */
196
+ isTreeColumn?: boolean;
197
+ /**
198
+ * Width of the tree level indent
199
+ */
200
+ treeLevelIndent?: number;
201
+ /**
202
+ * Summary function
203
+ *
204
+ * Null and undefined have different meanings:
205
+ * - undefined will use the default summary function
206
+ * - null will not compute a summary
207
+ */
208
+ summaryFunc?: ((cells: any[]) => any) | null;
209
+ /**
210
+ * Summary cell template ref
211
+ */
212
+ summaryTemplate?: TemplateRef<any>;
213
+ }
214
+
215
+ interface SortPropDir {
216
+ dir: SortDirection | 'desc' | 'asc';
217
+ prop: TableColumnProp;
218
+ }
219
+ /**
220
+ * @deprecated The constant `SortDirection` should no longer be used. Instead use the value directly:
221
+ * ```
222
+ * // old
223
+ * const sortDir: SortDirection = SortDirection.asc;
224
+ * // new
225
+ * const sortDir: SortDirection = 'asc';
226
+ * ```
227
+ */
228
+ declare const SortDirection: {
229
+ readonly asc: "asc";
230
+ readonly desc: "desc";
231
+ };
232
+ type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];
233
+ /** @deprecated See {@link DatatableComponent.sort} */
234
+ interface SortEvent {
235
+ column: TableColumn;
236
+ prevValue: SortDirection | undefined;
237
+ newValue: SortDirection | undefined;
238
+ sorts: SortPropDir[];
239
+ }
240
+ /**
241
+ * @deprecated The constant `SortType` should no longer be used. Instead use the value directly:
242
+ * ```
243
+ * // old
244
+ * const sortType: SortType = SortType.single;
245
+ * // new
246
+ * const sortType: SortType = 'single';
247
+ * ```
248
+ */
249
+ declare const SortType: {
250
+ readonly single: "single";
251
+ readonly multi: "multi";
252
+ };
253
+ type SortType = (typeof SortType)[keyof typeof SortType];
254
+ /**
255
+ * @deprecated The constant `ColumnMode` should no longer be used. Instead use the value directly:
256
+ * ```
257
+ * // old
258
+ * <ngx-datatable [columnMode]="ColumnMode.force"></ngx-datatable>
259
+ * // new
260
+ * <ngx-datatable [columnMode]="'force'"></ngx-datatable>
261
+ * ```
262
+ */
263
+ declare const ColumnMode: {
264
+ readonly standard: "standard";
265
+ readonly flex: "flex";
266
+ readonly force: "force";
267
+ };
268
+ type ColumnMode = (typeof ColumnMode)[keyof typeof ColumnMode];
269
+ type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';
270
+ interface ActivateEvent<TRow> {
271
+ type: 'checkbox' | 'click' | 'dblclick' | 'keydown' | 'mouseenter';
272
+ event: Event;
273
+ row: TRow;
274
+ group?: TRow[];
275
+ rowHeight?: number;
276
+ column?: TableColumn;
277
+ value?: any;
278
+ cellElement?: HTMLElement;
279
+ treeStatus?: TreeStatus;
280
+ cellIndex?: number;
281
+ rowElement: HTMLElement;
282
+ }
283
+ interface HeaderCellContext {
284
+ column: TableColumn;
285
+ sortDir: SortDirection | 'asc' | 'desc' | undefined;
286
+ sortFn: () => void;
287
+ allRowsSelected?: boolean;
288
+ selectFn: () => void;
289
+ }
290
+ interface GroupContext<TRow extends Row = any> {
291
+ group: Group<TRow>;
292
+ expanded: boolean;
293
+ rowIndex: number;
294
+ }
295
+ interface CellContext<TRow extends Row = any> {
296
+ onCheckboxChangeFn: (event: Event) => void;
297
+ activateFn: (event: ActivateEvent<TRow>) => void;
298
+ row: TRow;
299
+ group?: TRow[];
300
+ value: any;
301
+ column: TableColumn;
302
+ rowHeight: number;
303
+ isSelected?: boolean;
304
+ rowIndex: number;
305
+ rowInGroupIndex?: number;
306
+ treeStatus?: TreeStatus;
307
+ disabled?: boolean;
308
+ onTreeAction: () => void;
309
+ expanded?: boolean;
310
+ }
311
+ interface FooterContext {
312
+ rowCount: number;
313
+ pageSize: number;
314
+ selectedCount: number;
315
+ curPage: number;
316
+ offset: number;
317
+ }
318
+ /**
319
+ * @deprecated The constant `ContextmenuType` should no longer be used. Instead use the value directly:
320
+ * ```
321
+ * // old
322
+ * const contextmenuType: ContextmenuType = ContextmenuType.header;
323
+ * // new
324
+ * const contextmenuType: ContextmenuType = 'header';
325
+ * ```
326
+ */
327
+ declare const ContextmenuType: {
328
+ readonly header: "header";
329
+ readonly body: "body";
330
+ };
331
+ type ContextmenuType = (typeof ContextmenuType)[keyof typeof ContextmenuType];
332
+ /** A Group row */
333
+ interface Group<TRow> {
334
+ /** The value by which to rows are grouped. */
335
+ key: TRow[keyof TRow];
336
+ /** All rows that are part of the group. */
337
+ value: TRow[];
338
+ }
339
+ /** Type for either a row or a group */
340
+ type RowOrGroup<TRow> = TRow | Group<TRow>;
341
+ interface RowDetailContext<TRow extends Row = any> {
342
+ row: TRow;
343
+ expanded: boolean;
344
+ rowIndex: number;
345
+ disabled?: boolean;
346
+ }
347
+ /**
348
+ * Consumer provided rows should extend this interface
349
+ * to get access to implicit row properties which are set by the datatable if required.
350
+ */
351
+ interface Row {
352
+ [key: TableColumnProp]: any;
353
+ treeStatus?: TreeStatus;
354
+ level?: number;
355
+ }
356
+ interface ReorderEvent {
357
+ column: TableColumn;
358
+ prevValue: number;
359
+ newValue: number;
360
+ }
361
+ interface PageEvent {
362
+ count: number;
363
+ pageSize: number;
364
+ /** @deprecated Use {@link pageSize} instead. */
365
+ limit: number | undefined;
366
+ offset: number;
367
+ sorts: SortPropDir[];
368
+ }
369
+ interface PagerPageEvent {
370
+ page: number;
371
+ }
372
+ interface ColumnResizeEvent {
373
+ column: TableColumn;
374
+ prevValue: number;
375
+ newValue: number;
376
+ }
377
+ interface ScrollEvent {
378
+ offsetY: number;
379
+ offsetX: number;
380
+ }
381
+ interface GroupToggleEvent<TRow> {
382
+ type: 'group';
383
+ value: Group<TRow>;
384
+ }
385
+ interface AllGroupsToggleEvent {
386
+ type: 'all';
387
+ value: boolean;
388
+ }
389
+ type GroupToggleEvents<TRow> = GroupToggleEvent<TRow> | AllGroupsToggleEvent;
390
+ interface DetailToggleEvent<TRow> {
391
+ type: 'row';
392
+ value: TRow;
393
+ }
394
+ interface AllDetailToggleEvent {
395
+ type: 'all';
396
+ value: boolean;
397
+ }
398
+ type DetailToggleEvents<TRow> = DetailToggleEvent<TRow> | AllDetailToggleEvent;
399
+ /**
400
+ * @deprecated The constant `SelectionType` should no longer be used. Instead use the value directly:
401
+ * ```
402
+ * // old
403
+ * <ngx-datatable [selectionType]="SelectionType.multi"></ngx-datatable>
404
+ * // new
405
+ * <ngx-datatable [selectionType]="'multi'"></ngx-datatable>
406
+ * ```
407
+ */
408
+ declare const SelectionType: {
409
+ readonly single: "single";
410
+ readonly multi: "multi";
411
+ readonly multiClick: "multiClick";
412
+ readonly cell: "cell";
413
+ readonly checkbox: "checkbox";
414
+ };
415
+ type SelectionType = (typeof SelectionType)[keyof typeof SelectionType];
416
+ /** @deprecated. Use two-way binding instead. See {@link DatatableComponent.select} */
417
+ interface SelectEvent<TRow> {
418
+ selected: TRow[];
419
+ }
420
+ interface ContextMenuEventBody<TRow> {
421
+ event: MouseEvent;
422
+ type: 'body';
423
+ content: RowOrGroup<TRow>;
424
+ }
425
+ interface ContextMenuEvenHeader {
426
+ event: MouseEvent;
427
+ type: 'header';
428
+ content: TableColumn;
429
+ }
430
+ type ContextMenuEvent<TRow> = ContextMenuEventBody<TRow> | ContextMenuEvenHeader;
431
+ interface ScrollToRowOptions {
432
+ behavior?: ScrollBehavior;
433
+ block?: ScrollLogicalPosition;
434
+ }
435
+ type DragEventType = 'drag' | 'dragend' | 'dragenter' | 'dragleave' | 'dragover' | 'dragstart' | 'drop';
436
+ interface DragEventData {
437
+ event: DragEvent;
438
+ srcElement: HTMLElement;
439
+ targetElement?: HTMLElement;
440
+ eventType: DragEventType;
441
+ dragRow: any;
442
+ dropRow?: any;
443
+ }
444
+
445
+ declare class DataTableFooterTemplateDirective {
446
+ static ngTemplateContextGuard(directive: DataTableFooterTemplateDirective, context: unknown): context is FooterContext;
447
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableFooterTemplateDirective, never>;
448
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataTableFooterTemplateDirective, "[ngx-datatable-footer-template]", never, {}, {}, never, never, true, never>;
449
+ }
450
+
451
+ type ValueGetter = (obj: any, prop: TableColumnProp) => any;
452
+
453
+ interface ColumnResizeEventInternal {
454
+ column: TableColumnInternal;
455
+ prevValue: number;
456
+ newValue: number;
457
+ }
458
+ interface ReorderEventInternal {
459
+ column: TableColumnInternal;
460
+ prevValue: number;
461
+ newValue: number;
462
+ }
463
+ interface Page {
464
+ number: number;
465
+ text: string;
466
+ }
467
+ interface BaseTableColumnInternal<TRow extends Row = any> extends Omit<TableColumn<TRow>, 'width'> {
468
+ /** Internal unique id */
469
+ $$id: string;
470
+ /** Internal for column width distributions */
471
+ $$oldWidth?: number;
472
+ /** Internal for setColumnDefaults */
473
+ $$valueGetter: ValueGetter;
474
+ /** Reference to the original input column provided by the consumer */
475
+ $$originalColumn: TableColumn<TRow>;
476
+ dragging?: boolean;
477
+ isTarget?: boolean;
478
+ targetMarkerContext?: any;
479
+ name: string;
480
+ width: WritableSignal<number>;
481
+ prop: TableColumnProp;
482
+ }
483
+ interface StandardTableColumnInternal<TRow extends Row = any> extends BaseTableColumnInternal<TRow> {
484
+ sortable?: false;
485
+ }
486
+ interface SortableTableColumnInternal<TRow extends Row = any> extends BaseTableColumnInternal<TRow> {
487
+ comparator: Exclude<TableColumn['comparator'], undefined>;
488
+ prop: TableColumnProp;
489
+ sortable: true;
490
+ }
491
+ type TableColumnInternal<TRow extends Row = any> = StandardTableColumnInternal<TRow> | SortableTableColumnInternal<TRow>;
492
+
493
+ declare class DatatableGroupHeaderDirective<TRow extends Row = any> {
494
+ /**
495
+ * Row height is required when virtual scroll is enabled.
496
+ */
497
+ readonly rowHeight: _angular_core.InputSignal<number | ((group?: Group<TRow>, index?: number) => number)>;
498
+ /**
499
+ * Show checkbox at group header to select all rows of the group.
500
+ */
501
+ readonly checkboxable: _angular_core.InputSignal<boolean>;
502
+ readonly _templateInput: _angular_core.InputSignal<TemplateRef<GroupContext<TRow>>>;
503
+ readonly _templateQuery: _angular_core.Signal<TemplateRef<any>>;
504
+ readonly template: _angular_core.Signal<TemplateRef<any>>;
505
+ /**
506
+ * Track toggling of group visibility
507
+ */
508
+ readonly toggle: _angular_core.OutputEmitterRef<GroupToggleEvents<TRow>>;
509
+ /**
510
+ * Toggle the expansion of a group
511
+ */
512
+ toggleExpandGroup(group: Group<TRow>): void;
513
+ /**
514
+ * Expand all groups
515
+ */
516
+ expandAllGroups(): void;
517
+ /**
518
+ * Collapse all groups
519
+ */
520
+ collapseAllGroups(): void;
521
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableGroupHeaderDirective<any>, never>;
522
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableGroupHeaderDirective<any>, "ngx-datatable-group-header", never, { "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "checkboxable": { "alias": "checkboxable"; "required": false; "isSignal": true; }; "_templateInput": { "alias": "template"; "required": false; "isSignal": true; }; }, { "toggle": "toggle"; }, ["_templateQuery"], never, true, never>;
523
+ }
524
+
525
+ declare class DataTableColumnDirective<TRow extends Row> {
526
+ readonly name: _angular_core.InputSignal<string>;
527
+ readonly prop: _angular_core.InputSignal<TableColumnProp>;
528
+ readonly bindAsUnsafeHtml: _angular_core.InputSignalWithTransform<boolean, unknown>;
529
+ readonly frozenLeft: _angular_core.InputSignalWithTransform<boolean, unknown>;
530
+ readonly frozenRight: _angular_core.InputSignalWithTransform<boolean, unknown>;
531
+ readonly flexGrow: _angular_core.InputSignalWithTransform<number, string | number>;
532
+ readonly resizeable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
533
+ readonly comparator: _angular_core.InputSignal<(valueA: any, valueB: any, rowA: TRow, rowB: TRow) => number>;
534
+ readonly pipe: _angular_core.InputSignal<PipeTransform>;
535
+ readonly sortable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
536
+ readonly draggable: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
537
+ readonly canAutoResize: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
538
+ readonly minWidth: _angular_core.InputSignalWithTransform<number, string | number>;
539
+ readonly width: _angular_core.InputSignalWithTransform<number, string | number>;
540
+ readonly maxWidth: _angular_core.InputSignalWithTransform<number, string | number>;
541
+ readonly checkboxable: _angular_core.InputSignalWithTransform<boolean, unknown>;
542
+ readonly headerCheckboxable: _angular_core.InputSignalWithTransform<boolean, unknown>;
543
+ readonly headerClass: _angular_core.InputSignal<string | ((data: {
544
+ column: TableColumn;
545
+ }) => string | Record<string, boolean>)>;
546
+ readonly cellClass: _angular_core.InputSignal<string | ((data: {
547
+ row: TRow;
548
+ group?: TRow[];
549
+ column: TableColumn<TRow>;
550
+ value: any;
551
+ rowHeight: number;
552
+ }) => string | Record<string, boolean>)>;
553
+ readonly isTreeColumn: _angular_core.InputSignalWithTransform<boolean, unknown>;
554
+ readonly treeLevelIndent: _angular_core.InputSignal<number>;
555
+ readonly summaryFunc: _angular_core.InputSignal<(cells: any[]) => any>;
556
+ readonly summaryTemplate: _angular_core.InputSignal<TemplateRef<any>>;
557
+ readonly cellTemplateInput: _angular_core.InputSignal<TemplateRef<CellContext<TRow>>>;
558
+ readonly cellTemplateQuery: Signal<TemplateRef<any>>;
559
+ readonly headerTemplateInput: _angular_core.InputSignal<TemplateRef<HeaderCellContext>>;
560
+ readonly headerTemplateQuery: Signal<TemplateRef<any>>;
561
+ readonly treeToggleTemplateInput: _angular_core.InputSignal<TemplateRef<any>>;
562
+ readonly treeToggleTemplateQuery: Signal<TemplateRef<any>>;
563
+ readonly ghostCellTemplateInput: _angular_core.InputSignal<TemplateRef<void>>;
564
+ readonly ghostCellTemplateQuery: Signal<TemplateRef<any>>;
565
+ /**
566
+ * Computed property that returns the column configuration as a TableColumn object
567
+ */
568
+ readonly column: Signal<TableColumn<TRow>>;
569
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableColumnDirective<any>, never>;
570
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataTableColumnDirective<any>, "ngx-datatable-column", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "prop": { "alias": "prop"; "required": false; "isSignal": true; }; "bindAsUnsafeHtml": { "alias": "bindAsUnsafeHtml"; "required": false; "isSignal": true; }; "frozenLeft": { "alias": "frozenLeft"; "required": false; "isSignal": true; }; "frozenRight": { "alias": "frozenRight"; "required": false; "isSignal": true; }; "flexGrow": { "alias": "flexGrow"; "required": false; "isSignal": true; }; "resizeable": { "alias": "resizeable"; "required": false; "isSignal": true; }; "comparator": { "alias": "comparator"; "required": false; "isSignal": true; }; "pipe": { "alias": "pipe"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "canAutoResize": { "alias": "canAutoResize"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "checkboxable": { "alias": "checkboxable"; "required": false; "isSignal": true; }; "headerCheckboxable": { "alias": "headerCheckboxable"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "cellClass": { "alias": "cellClass"; "required": false; "isSignal": true; }; "isTreeColumn": { "alias": "isTreeColumn"; "required": false; "isSignal": true; }; "treeLevelIndent": { "alias": "treeLevelIndent"; "required": false; "isSignal": true; }; "summaryFunc": { "alias": "summaryFunc"; "required": false; "isSignal": true; }; "summaryTemplate": { "alias": "summaryTemplate"; "required": false; "isSignal": true; }; "cellTemplateInput": { "alias": "cellTemplate"; "required": false; "isSignal": true; }; "headerTemplateInput": { "alias": "headerTemplate"; "required": false; "isSignal": true; }; "treeToggleTemplateInput": { "alias": "treeToggleTemplate"; "required": false; "isSignal": true; }; "ghostCellTemplateInput": { "alias": "ghostCellTemplate"; "required": false; "isSignal": true; }; }, {}, ["cellTemplateQuery", "headerTemplateQuery", "treeToggleTemplateQuery", "ghostCellTemplateQuery"], never, true, never>;
571
+ }
572
+
573
+ declare class DatatableFooterDirective {
574
+ readonly _templateInput: _angular_core.InputSignal<TemplateRef<FooterContext>>;
575
+ private readonly _templateQuery;
576
+ readonly template: _angular_core.Signal<TemplateRef<any>>;
577
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableFooterDirective, never>;
578
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableFooterDirective, "ngx-datatable-footer", never, { "_templateInput": { "alias": "template"; "required": false; "isSignal": true; }; }, {}, ["_templateQuery"], never, true, never>;
579
+ }
580
+
581
+ declare class DataTableFooterComponent {
582
+ readonly footerHeight: _angular_core.InputSignal<number>;
583
+ readonly rowCount: _angular_core.InputSignal<number>;
584
+ readonly groupCount: _angular_core.InputSignal<number>;
585
+ readonly pageSize: _angular_core.InputSignal<number>;
586
+ readonly offset: _angular_core.InputSignal<number>;
587
+ readonly pagerLeftArrowIcon: _angular_core.InputSignal<string>;
588
+ readonly pagerRightArrowIcon: _angular_core.InputSignal<string>;
589
+ readonly pagerPreviousIcon: _angular_core.InputSignal<string>;
590
+ readonly pagerNextIcon: _angular_core.InputSignal<string>;
591
+ readonly totalMessage: _angular_core.InputSignal<string>;
592
+ readonly footerTemplate: _angular_core.InputSignal<DatatableFooterDirective>;
593
+ readonly selectedCount: _angular_core.InputSignal<number>;
594
+ readonly selectedMessage: _angular_core.InputSignal<string | boolean>;
595
+ readonly page: _angular_core.OutputEmitterRef<PagerPageEvent>;
596
+ protected readonly isVisible: Signal<boolean>;
597
+ readonly curPage: Signal<number>;
598
+ protected readonly templateContext: Signal<FooterContext>;
599
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableFooterComponent, never>;
600
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableFooterComponent, "datatable-footer", never, { "footerHeight": { "alias": "footerHeight"; "required": true; "isSignal": true; }; "rowCount": { "alias": "rowCount"; "required": true; "isSignal": true; }; "groupCount": { "alias": "groupCount"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": true; "isSignal": true; }; "offset": { "alias": "offset"; "required": true; "isSignal": true; }; "pagerLeftArrowIcon": { "alias": "pagerLeftArrowIcon"; "required": false; "isSignal": true; }; "pagerRightArrowIcon": { "alias": "pagerRightArrowIcon"; "required": false; "isSignal": true; }; "pagerPreviousIcon": { "alias": "pagerPreviousIcon"; "required": false; "isSignal": true; }; "pagerNextIcon": { "alias": "pagerNextIcon"; "required": false; "isSignal": true; }; "totalMessage": { "alias": "totalMessage"; "required": true; "isSignal": true; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; "isSignal": true; }; "selectedCount": { "alias": "selectedCount"; "required": false; "isSignal": true; }; "selectedMessage": { "alias": "selectedMessage"; "required": false; "isSignal": true; }; }, { "page": "page"; }, never, never, true, never>;
601
+ }
602
+
603
+ declare class DatatableRowDetailDirective<TRow extends Row = any> {
604
+ /**
605
+ * The detail row height is required especially
606
+ * when virtual scroll is enabled.
607
+ */
608
+ readonly rowHeight: _angular_core.InputSignal<number | ((row?: TRow, index?: number) => number)>;
609
+ readonly _templateInput: _angular_core.InputSignal<TemplateRef<RowDetailContext<TRow>>>;
610
+ readonly _templateQuery: _angular_core.Signal<TemplateRef<any>>;
611
+ readonly template: _angular_core.Signal<TemplateRef<RowDetailContext<TRow>>>;
612
+ /**
613
+ * Row detail row visbility was toggled.
614
+ */
615
+ readonly toggle: _angular_core.OutputEmitterRef<DetailToggleEvents<TRow>>;
616
+ /**
617
+ * Toggle the expansion of the row
618
+ */
619
+ toggleExpandRow(row: TRow): void;
620
+ /**
621
+ * API method to expand all the rows.
622
+ */
623
+ expandAllRows(): void;
624
+ /**
625
+ * API method to collapse all the rows.
626
+ */
627
+ collapseAllRows(): void;
628
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableRowDetailDirective<any>, never>;
629
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableRowDetailDirective<any>, "ngx-datatable-row-detail", never, { "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "_templateInput": { "alias": "template"; "required": false; "isSignal": true; }; }, { "toggle": "toggle"; }, ["_templateQuery"], never, true, never>;
630
+ }
631
+
632
+ declare class DatatableComponent<TRow extends Row = any> implements DoCheck, AfterViewInit, OnDestroy {
633
+ private scrollbarHelper;
634
+ private cd;
635
+ private configuration;
636
+ /**
637
+ * Template for the target marker of drag target columns.
638
+ */
639
+ readonly targetMarkerTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
640
+ /**
641
+ * Rows that are displayed in the table.
642
+ */
643
+ readonly rows: _angular_core.InputSignal<TRow[]>;
644
+ /**
645
+ * This attribute allows the user to set the name of the column to group the data with
646
+ */
647
+ readonly groupRowsBy: _angular_core.InputSignal<keyof TRow>;
648
+ /**
649
+ * This attribute allows the user to set a grouped array in the following format:
650
+ * [
651
+ * {groupid=1} [
652
+ * {id=1 name="test1"},
653
+ * {id=2 name="test2"},
654
+ * {id=3 name="test3"}
655
+ * ]},
656
+ * {groupid=2>[
657
+ * {id=4 name="test4"},
658
+ * {id=5 name="test5"},
659
+ * {id=6 name="test6"}
660
+ * ]}
661
+ * ]
662
+ */
663
+ readonly groupedRows: _angular_core.InputSignal<Group<TRow>[]>;
664
+ /**
665
+ * Columns to be displayed.
666
+ */
667
+ readonly columns: _angular_core.InputSignal<TableColumn<any>[]>;
668
+ /**
669
+ * List of row objects that should be
670
+ * represented as selected in the grid.
671
+ * Default value: `[]`
672
+ */
673
+ readonly selected: _angular_core.ModelSignal<TRow[]>;
674
+ /**
675
+ * Enable vertical scrollbars
676
+ */
677
+ readonly scrollbarV: _angular_core.InputSignalWithTransform<boolean, unknown>;
678
+ /**
679
+ * Enable vertical scrollbars dynamically on demand.
680
+ * Property `scrollbarV` needs to be set `true` too.
681
+ * Width that is gained when no scrollbar is needed
682
+ * is added to the inner table width.
683
+ */
684
+ readonly scrollbarVDynamic: _angular_core.InputSignalWithTransform<boolean, unknown>;
685
+ /**
686
+ * Enable horz scrollbars
687
+ */
688
+ readonly scrollbarH: _angular_core.InputSignalWithTransform<boolean, unknown>;
689
+ /**
690
+ * The row height; which is necessary
691
+ * to calculate the height for the lazy rendering.
692
+ */
693
+ readonly rowHeight: _angular_core.InputSignal<number | "auto" | ((row: TRow) => number)>;
694
+ /**
695
+ * Type of column width distribution formula.
696
+ * Example: flex, force, standard
697
+ */
698
+ readonly columnMode: _angular_core.InputSignal<ColumnMode>;
699
+ /**
700
+ * The minimum header height in pixels.
701
+ * Pass a falsey for no header
702
+ */
703
+ readonly headerHeight: _angular_core.InputSignal<number | "auto">;
704
+ /**
705
+ * The minimum footer height in pixels.
706
+ * Pass falsey for no footer
707
+ */
708
+ readonly footerHeight: _angular_core.InputSignalWithTransform<number, unknown>;
709
+ /**
710
+ * If the table should use external paging
711
+ * otherwise its assumed that all data is preloaded.
712
+ */
713
+ readonly externalPaging: _angular_core.InputSignalWithTransform<boolean, unknown>;
714
+ /**
715
+ * If the table should use external sorting or
716
+ * the built-in basic sorting.
717
+ */
718
+ readonly externalSorting: _angular_core.InputSignalWithTransform<boolean, unknown>;
719
+ /**
720
+ * The page size to be shown.
721
+ * Default value: `undefined`
722
+ */
723
+ readonly limit: _angular_core.InputSignalWithTransform<number, unknown>;
724
+ /**
725
+ * The total count of all rows.
726
+ * Default value: `0`
727
+ */
728
+ readonly count: _angular_core.InputSignalWithTransform<number, unknown>;
729
+ /**
730
+ * The current offset ( page - 1 ) shown.
731
+ * Default value: `0`
732
+ */
733
+ readonly offset: _angular_core.ModelSignal<number>;
734
+ /**
735
+ * Show the linear loading bar.
736
+ * Default value: `false`
737
+ */
738
+ readonly loadingIndicator: _angular_core.InputSignalWithTransform<boolean, unknown>;
739
+ /**
740
+ * Show ghost loaders on each cell.
741
+ * Default value: `false`
742
+ */
743
+ readonly ghostLoadingIndicator: _angular_core.InputSignalWithTransform<boolean, unknown>;
744
+ /**
745
+ * Type of row selection. Options are:
746
+ *
747
+ * - `single`
748
+ * - `multi`
749
+ * - `checkbox`
750
+ * - `multiClick`
751
+ * - `cell`
752
+ *
753
+ * For no selection pass a `falsey`.
754
+ * Default value: `undefined`
755
+ */
756
+ readonly selectionType: _angular_core.InputSignal<SelectionType>;
757
+ /**
758
+ * Enable/Disable ability to re-order columns
759
+ * by dragging them.
760
+ */
761
+ readonly reorderable: _angular_core.InputSignalWithTransform<boolean, unknown>;
762
+ /**
763
+ * Swap columns on re-order columns or
764
+ * move them.
765
+ */
766
+ readonly swapColumns: _angular_core.InputSignalWithTransform<boolean, unknown>;
767
+ /**
768
+ * The type of sorting
769
+ */
770
+ readonly sortType: _angular_core.InputSignal<SortType>;
771
+ /**
772
+ * Array of sorted columns by property and type.
773
+ * Default value: `[]`
774
+ */
775
+ readonly sorts: _angular_core.ModelSignal<SortPropDir[]>;
776
+ /**
777
+ * Css class overrides
778
+ */
779
+ readonly cssClasses: _angular_core.InputSignal<Partial<_swimlane_ngx_datatable.NgxDatatableCssClasses>>;
780
+ /**
781
+ * Message overrides for localization
782
+ *
783
+ * @defaultValue
784
+ * ```
785
+ * {
786
+ * emptyMessage: 'No data to display',
787
+ * totalMessage: 'total',
788
+ * selectedMessage: 'selected',
789
+ * ariaFirstPageMessage: 'go to first page',
790
+ * ariaPreviousPageMessage: 'go to previous page',
791
+ * ariaPageNMessage: 'page',
792
+ * ariaNextPageMessage: 'go to next page',
793
+ * ariaLastPageMessage: 'go to last page',
794
+ * ariaRowCheckboxMessage: 'Select row',
795
+ * ariaHeaderCheckboxMessage: 'Select all rows',
796
+ * ariaGroupHeaderCheckboxMessage: 'Select row group'
797
+ * }
798
+ * ```
799
+ */
800
+ readonly messages: _angular_core.InputSignal<Partial<_swimlane_ngx_datatable.NgxDatatableMessages>>;
801
+ /**
802
+ * A function which is called with the row and should return either:
803
+ * - a string: `"class-1 class-2`
804
+ * - a Record<string, boolean>: `{ 'class-1': true, 'class-2': false }`
805
+ */
806
+ readonly rowClass: _angular_core.InputSignal<(row: TRow) => string | Record<string, boolean>>;
807
+ /**
808
+ * A boolean/function you can use to check whether you want
809
+ * to select a particular row based on a criteria. Example:
810
+ *
811
+ * (selection) => {
812
+ * return selection !== 'Ethel Price';
813
+ * }
814
+ */
815
+ readonly selectCheck: _angular_core.InputSignal<(value: TRow, index: number, array: TRow[]) => boolean>;
816
+ /**
817
+ * A function you can use to check whether you want
818
+ * to show the checkbox for a particular row based on a criteria. Example:
819
+ *
820
+ * (row, column, value) => {
821
+ * return row.name !== 'Ethel Price';
822
+ * }
823
+ */
824
+ readonly displayCheck: _angular_core.InputSignal<(row: TRow, column: TableColumn, value?: any) => boolean>;
825
+ /**
826
+ * A boolean you can use to set the detault behaviour of rows and groups
827
+ * whether they will start expanded or not. If ommited the default is NOT expanded.
828
+ *
829
+ */
830
+ readonly groupExpansionDefault: _angular_core.InputSignalWithTransform<boolean, unknown>;
831
+ /**
832
+ * Property to which you can use for custom tracking of rows.
833
+ * Example: 'name'
834
+ */
835
+ readonly trackByProp: _angular_core.InputSignal<keyof TRow>;
836
+ /**
837
+ * Property to which you can use for determining select all
838
+ * rows on current page or not.
839
+ */
840
+ readonly selectAllRowsOnPage: _angular_core.InputSignalWithTransform<boolean, unknown>;
841
+ /**
842
+ * A flag for row virtualization on / off
843
+ */
844
+ readonly virtualization: _angular_core.InputSignalWithTransform<boolean, unknown>;
845
+ /**
846
+ * Tree from relation
847
+ */
848
+ readonly treeFromRelation: _angular_core.InputSignal<string>;
849
+ /**
850
+ * Tree to relation
851
+ */
852
+ readonly treeToRelation: _angular_core.InputSignal<string>;
853
+ /**
854
+ * A flag for switching summary row on / off
855
+ */
856
+ readonly summaryRow: _angular_core.InputSignalWithTransform<boolean, unknown>;
857
+ /**
858
+ * A height of summary row
859
+ */
860
+ readonly summaryHeight: _angular_core.InputSignalWithTransform<number, unknown>;
861
+ /**
862
+ * A property holds a summary row position: top/bottom
863
+ */
864
+ readonly summaryPosition: _angular_core.InputSignal<string>;
865
+ /**
866
+ * A function you can use to check whether you want
867
+ * to disable a row. Example:
868
+ *
869
+ * (row) => {
870
+ * return row.name !== 'Ethel Price';
871
+ * }
872
+ */
873
+ readonly disableRowCheck: _angular_core.InputSignal<(row: TRow) => boolean>;
874
+ /**
875
+ * A flag to enable drag behavior of native HTML5 drag and drop API on rows.
876
+ * If set to true, {@link rowDragEvents} will emit dragstart and dragend events.
877
+ */
878
+ readonly rowDraggable: _angular_core.InputSignalWithTransform<boolean, unknown>;
879
+ /**
880
+ * A flag to controll behavior of sort states.
881
+ * By default sort on column toggles between ascending and descending without getting removed.
882
+ * Set true to clear sorting of column after performing ascending and descending sort on that column.
883
+ */
884
+ readonly enableClearingSortState: _angular_core.InputSignalWithTransform<boolean, unknown>;
885
+ /**
886
+ * Controls whether the datatable runs an {@link IterableDiffer} against the
887
+ * `rows` input on every change detection cycle to detect additions, removals
888
+ * and reorderings that happen in-place on the same array reference.
889
+ *
890
+ * Enabled by default. Set to `false` as a performance optimization when you
891
+ * always pass a new `rows` array reference on updates.
892
+ */
893
+ readonly checkRowListChanges: _angular_core.InputSignalWithTransform<boolean, unknown>;
894
+ /**
895
+ * Controls whether each rendered row runs a {@link KeyValueDiffer} against
896
+ * its row object on every change detection cycle to detect in-place property
897
+ * mutations (e.g. `row.name = 'new'` without replacing the row reference).
898
+ *
899
+ * Enabled by default. Set to `false` as a performance optimization when row
900
+ * objects are treated as immutable.
901
+ */
902
+ readonly checkRowPropertyChanges: _angular_core.InputSignalWithTransform<boolean, unknown>;
903
+ /**
904
+ * Body was scrolled typically in a `scrollbarV:true` scenario.
905
+ */
906
+ readonly scroll: _angular_core.OutputEmitterRef<ScrollEvent>;
907
+ /**
908
+ * A cell or row was focused via keyboard or mouse click.
909
+ */
910
+ readonly activate: _angular_core.OutputEmitterRef<ActivateEvent<TRow>>;
911
+ /**
912
+ * A cell or row was selected.
913
+ * @deprecated Use two-way binding on `selected` instead.
914
+ *
915
+ * Before:
916
+ * ```html
917
+ * <ngx-datatable [selected]="mySelection" (select)="onSelect($event)"></ngx-datatable>
918
+ * ```
919
+ *
920
+ * After:
921
+ * ```html
922
+ * <ngx-datatable [selected]="mySelection" (selectedChange)="onSelect({selected: $event})"></ngx-datatable>
923
+ * <!-- or -->
924
+ * <ngx-datatable [(selected)]="mySelection"></ngx-datatable>
925
+ * ```
926
+ */
927
+ readonly select: _angular_core.OutputEmitterRef<SelectEvent<TRow>>;
928
+ /**
929
+ * Column sort was invoked.
930
+ * @deprecated Use two-way binding on `sorts` instead.
931
+ *
932
+ * Before:
933
+ * ```html
934
+ * <ngx-datatable [sorts]="mySorts" (sort)="onSort($event)"></ngx-datatable>
935
+ * ```
936
+ *
937
+ * After:
938
+ * ```html
939
+ * <ngx-datatable [sorts]="mySorts" (sortsChange)="onSort({sorts: $event})"></ngx-datatable>
940
+ * <!-- or -->
941
+ * <ngx-datatable [(sorts)]="mySorts"></ngx-datatable>
942
+ * ```
943
+ */
944
+ readonly sort: _angular_core.OutputEmitterRef<SortEvent>;
945
+ /**
946
+ * The table was paged either triggered by the pager or the body scroll.
947
+ */
948
+ readonly page: _angular_core.OutputEmitterRef<PageEvent>;
949
+ /**
950
+ * Columns were re-ordered.
951
+ */
952
+ readonly reorder: _angular_core.OutputEmitterRef<ReorderEvent>;
953
+ /**
954
+ * Column was resized.
955
+ */
956
+ readonly resize: _angular_core.OutputEmitterRef<ColumnResizeEvent>;
957
+ /**
958
+ * The context menu was invoked on the table.
959
+ * type indicates whether the header or the body was clicked.
960
+ * content contains either the column or the row that was clicked.
961
+ */
962
+ readonly tableContextmenu: _angular_core.OutputEmitterRef<ContextMenuEvent<TRow>>;
963
+ /**
964
+ * A row was expanded ot collapsed for tree
965
+ */
966
+ readonly treeAction: _angular_core.OutputEmitterRef<{
967
+ row: TRow;
968
+ rowIndex: number;
969
+ }>;
970
+ /**
971
+ * Emits HTML5 native drag events.
972
+ * Only emits dragenter, dragover, drop events by default.
973
+ * Set {@link rowDraggable} to true for dragstart and dragend.
974
+ */
975
+ readonly rowDragEvents: _angular_core.OutputEmitterRef<DragEventData>;
976
+ /**
977
+ * Column templates gathered from `ContentChildren`
978
+ * if described in your markup.
979
+ */
980
+ readonly columnTemplates: _angular_core.Signal<readonly DataTableColumnDirective<TRow>[]>;
981
+ /**
982
+ * Row Detail templates gathered from the ContentChild
983
+ */
984
+ rowDetail?: DatatableRowDetailDirective;
985
+ /**
986
+ * Group Header templates gathered from the ContentChild
987
+ */
988
+ groupHeader?: DatatableGroupHeaderDirective;
989
+ /**
990
+ * Footer template gathered from the ContentChild
991
+ * @internal
992
+ */
993
+ readonly _footer: _angular_core.Signal<DatatableFooterDirective>;
994
+ private readonly _bodyComponent;
995
+ private readonly _headerElement;
996
+ private readonly _bodyElement;
997
+ /** @internal */
998
+ readonly _rowDefTemplate: _angular_core.Signal<TemplateRef<any>>;
999
+ /**
1000
+ * Returns if all rows are selected.
1001
+ */
1002
+ readonly allRowsSelected: _angular_core.Signal<boolean>;
1003
+ element: HTMLElement;
1004
+ readonly _innerWidth: _angular_core.Signal<number>;
1005
+ readonly pageSize: _angular_core.Signal<number>;
1006
+ readonly _isFixedHeader: _angular_core.Signal<boolean>;
1007
+ readonly bodyHeight: _angular_core.Signal<number>;
1008
+ readonly rowCount: _angular_core.Signal<number>;
1009
+ rowDiffer: IterableDiffer<TRow | undefined>;
1010
+ /** This counter is increased, when the rowDiffer detects a change. This will cause an update of _internalRows. */
1011
+ private readonly _rowDiffCount;
1012
+ _offsetX: number;
1013
+ readonly _internalRows: _angular_core.Signal<TRow[]>;
1014
+ readonly _internalGroupedRows: _angular_core.Signal<Group<TRow>[]>;
1015
+ readonly _internalColumns: _angular_core.WritableSignal<TableColumnInternal<any>[]>;
1016
+ /**
1017
+ * Computed signal that returns the corrected offset value.
1018
+ * It ensures the offset is within valid bounds based on rowCount and pageSize.
1019
+ */
1020
+ readonly correctedOffset: _angular_core.Signal<number>;
1021
+ _subscriptions: Subscription[];
1022
+ _defaultColumnWidth: number;
1023
+ /**
1024
+ * To have this available for all components.
1025
+ * The Footer itself is not available in the injection context in templates,
1026
+ * so we need to get if from here until we have a state service.
1027
+ */
1028
+ readonly _footerComponent: _angular_core.Signal<DataTableFooterComponent>;
1029
+ protected verticalScrollVisible: boolean;
1030
+ private readonly dimensions;
1031
+ constructor();
1032
+ ngDoCheck(): void;
1033
+ /**
1034
+ * Lifecycle hook that is called after a component's
1035
+ * view has been fully initialized.
1036
+ */
1037
+ ngAfterViewInit(): void;
1038
+ /**
1039
+ * This will be used when displaying or selecting rows.
1040
+ * when tracking/comparing them, we'll use the value of this fn,
1041
+ *
1042
+ * (`fn(x) === fn(y)` instead of `x === y`)
1043
+ */
1044
+ readonly rowIdentity: _angular_core.InputSignal<(x: RowOrGroup<TRow>) => unknown>;
1045
+ /**
1046
+ * Creates a map with the data grouped by the user choice of grouping index
1047
+ *
1048
+ * @param originalArray the original array passed via parameter
1049
+ * @param groupBy the key of the column to group the data by
1050
+ */
1051
+ groupArrayBy(originalArray: (TRow | undefined)[], groupBy: keyof TRow): {
1052
+ key: TRow[keyof TRow];
1053
+ value: TRow[];
1054
+ }[];
1055
+ /**
1056
+ * Recalc's the sizes of the grid.
1057
+ *
1058
+ * Updated automatically on changes to:
1059
+ *
1060
+ * - Columns
1061
+ * - Rows
1062
+ * - Paging related
1063
+ *
1064
+ * Also can be manually invoked or upon window resize.
1065
+ */
1066
+ recalculate(): void;
1067
+ /**
1068
+ * Window resize handler to update sizes.
1069
+ */
1070
+ onWindowResize(): void;
1071
+ /**
1072
+ * Recalulcates the column widths based on column width
1073
+ * distribution mode and scrollbar offsets.
1074
+ */
1075
+ recalculateColumns(forceIdx?: number, allowBleed?: boolean): TableColumnInternal[];
1076
+ /**
1077
+ * Recalculates the dimensions of the table size.
1078
+ * Internally calls the page size and row count calcs too.
1079
+ *
1080
+ */
1081
+ recalculateDims(): void;
1082
+ /**
1083
+ * Body triggered a page event.
1084
+ */
1085
+ onBodyPage(offset: number): void;
1086
+ /**
1087
+ * The body triggered a scroll event.
1088
+ */
1089
+ onBodyScroll(event: ScrollEvent): void;
1090
+ /**
1091
+ * The footer triggered a page event.
1092
+ */
1093
+ onFooterPage(event: PagerPageEvent): void;
1094
+ /**
1095
+ * Recalculates the sizes of the page
1096
+ */
1097
+ calcPageSize(): number;
1098
+ /**
1099
+ * Calculates the row count.
1100
+ */
1101
+ calcRowCount(): number;
1102
+ /**
1103
+ * The header triggered a contextmenu event.
1104
+ */
1105
+ onColumnContextmenu({ event, column }: {
1106
+ event: MouseEvent;
1107
+ column: TableColumnInternal;
1108
+ }): void;
1109
+ /**
1110
+ * The body triggered a contextmenu event.
1111
+ */
1112
+ onRowContextmenu({ event, row }: {
1113
+ event: MouseEvent;
1114
+ row: RowOrGroup<TRow>;
1115
+ }): void;
1116
+ /**
1117
+ * The header triggered a column resize event.
1118
+ */
1119
+ onColumnResize({ column, newValue, prevValue }: ColumnResizeEventInternal): void;
1120
+ onColumnResizing({ column, newValue }: ColumnResizeEventInternal): void;
1121
+ /**
1122
+ * The header triggered a column re-order event.
1123
+ */
1124
+ onColumnReorder(event: ReorderEventInternal): void;
1125
+ /**
1126
+ * The header triggered a column sort event.
1127
+ */
1128
+ onColumnSort(event: SortEvent): void;
1129
+ /**
1130
+ * Toggle all row selection
1131
+ */
1132
+ onHeaderSelect(): void;
1133
+ /**
1134
+ * A row was selected from body
1135
+ */
1136
+ onBodySelect(selected: TRow[]): void;
1137
+ /**
1138
+ * A row was expanded or collapsed for tree
1139
+ */
1140
+ onTreeAction(event: {
1141
+ row: TRow;
1142
+ }): void;
1143
+ ngOnDestroy(): void;
1144
+ scrollToRow(row: TRow, options?: ScrollToRowOptions): void;
1145
+ private scrollToRowTree;
1146
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableComponent<any>, never>;
1147
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatatableComponent<any>, "ngx-datatable", never, { "targetMarkerTemplate": { "alias": "targetMarkerTemplate"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "groupRowsBy": { "alias": "groupRowsBy"; "required": false; "isSignal": true; }; "groupedRows": { "alias": "groupedRows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "scrollbarV": { "alias": "scrollbarV"; "required": false; "isSignal": true; }; "scrollbarVDynamic": { "alias": "scrollbarVDynamic"; "required": false; "isSignal": true; }; "scrollbarH": { "alias": "scrollbarH"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "columnMode": { "alias": "columnMode"; "required": false; "isSignal": true; }; "headerHeight": { "alias": "headerHeight"; "required": false; "isSignal": true; }; "footerHeight": { "alias": "footerHeight"; "required": false; "isSignal": true; }; "externalPaging": { "alias": "externalPaging"; "required": false; "isSignal": true; }; "externalSorting": { "alias": "externalSorting"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "loadingIndicator": { "alias": "loadingIndicator"; "required": false; "isSignal": true; }; "ghostLoadingIndicator": { "alias": "ghostLoadingIndicator"; "required": false; "isSignal": true; }; "selectionType": { "alias": "selectionType"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "swapColumns": { "alias": "swapColumns"; "required": false; "isSignal": true; }; "sortType": { "alias": "sortType"; "required": false; "isSignal": true; }; "sorts": { "alias": "sorts"; "required": false; "isSignal": true; }; "cssClasses": { "alias": "cssClasses"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "selectCheck": { "alias": "selectCheck"; "required": false; "isSignal": true; }; "displayCheck": { "alias": "displayCheck"; "required": false; "isSignal": true; }; "groupExpansionDefault": { "alias": "groupExpansionDefault"; "required": false; "isSignal": true; }; "trackByProp": { "alias": "trackByProp"; "required": false; "isSignal": true; }; "selectAllRowsOnPage": { "alias": "selectAllRowsOnPage"; "required": false; "isSignal": true; }; "virtualization": { "alias": "virtualization"; "required": false; "isSignal": true; }; "treeFromRelation": { "alias": "treeFromRelation"; "required": false; "isSignal": true; }; "treeToRelation": { "alias": "treeToRelation"; "required": false; "isSignal": true; }; "summaryRow": { "alias": "summaryRow"; "required": false; "isSignal": true; }; "summaryHeight": { "alias": "summaryHeight"; "required": false; "isSignal": true; }; "summaryPosition": { "alias": "summaryPosition"; "required": false; "isSignal": true; }; "disableRowCheck": { "alias": "disableRowCheck"; "required": false; "isSignal": true; }; "rowDraggable": { "alias": "rowDraggable"; "required": false; "isSignal": true; }; "enableClearingSortState": { "alias": "enableClearingSortState"; "required": false; "isSignal": true; }; "checkRowListChanges": { "alias": "checkRowListChanges"; "required": false; "isSignal": true; }; "checkRowPropertyChanges": { "alias": "checkRowPropertyChanges"; "required": false; "isSignal": true; }; "rowIdentity": { "alias": "rowIdentity"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "offset": "offsetChange"; "sorts": "sortsChange"; "scroll": "scroll"; "activate": "activate"; "select": "select"; "sort": "sort"; "page": "page"; "reorder": "reorder"; "resize": "resize"; "tableContextmenu": "tableContextmenu"; "treeAction": "treeAction"; "rowDragEvents": "rowDragEvents"; }, ["columnTemplates", "_footer", "_rowDefTemplate", "rowDetail", "groupHeader"], ["[loading-indicator]", "[empty-content]"], true, never>;
1148
+ }
1149
+
1150
+ declare class DatatableRowDetailTemplateDirective {
1151
+ static ngTemplateContextGuard(directive: DatatableRowDetailTemplateDirective, context: unknown): context is RowDetailContext;
1152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableRowDetailTemplateDirective, never>;
1153
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableRowDetailTemplateDirective, "[ngx-datatable-row-detail-template]", never, {}, {}, never, never, true, never>;
1154
+ }
1155
+
1156
+ declare class DataTableColumnHeaderDirective {
1157
+ static ngTemplateContextGuard(directive: DataTableColumnHeaderDirective, context: unknown): context is HeaderCellContext;
1158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableColumnHeaderDirective, never>;
1159
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataTableColumnHeaderDirective, "[ngx-datatable-header-template]", never, {}, {}, never, never, true, never>;
1160
+ }
1161
+
1162
+ declare class DataTableColumnCellDirective {
1163
+ template: TemplateRef<CellContext<any>>;
1164
+ static ngTemplateContextGuard(dir: DataTableColumnCellDirective, ctx: any): ctx is CellContext;
1165
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableColumnCellDirective, never>;
1166
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataTableColumnCellDirective, "[ngx-datatable-cell-template]", never, {}, {}, never, never, true, never>;
1167
+ }
1168
+
1169
+ declare class DataTableColumnGhostCellDirective {
1170
+ static ngTemplateContextGuard(directive: DataTableColumnGhostCellDirective, context: unknown): context is void;
1171
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableColumnGhostCellDirective, never>;
1172
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataTableColumnGhostCellDirective, "[ngx-datatable-ghost-cell-template]", never, {}, {}, never, never, true, never>;
1173
+ }
1174
+
1175
+ declare class DataTableColumnCellTreeToggle {
1176
+ template: TemplateRef<any>;
1177
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableColumnCellTreeToggle, never>;
1178
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataTableColumnCellTreeToggle, "[ngx-datatable-tree-toggle]", never, {}, {}, never, never, true, never>;
1179
+ }
1180
+
1181
+ /**
1182
+ * Use this component to construct custom table footer with standard pagination.
1183
+ *
1184
+ * It must be used inside the `ngx-datatable-footer`
1185
+ *
1186
+ * @example
1187
+ * ```html
1188
+ *
1189
+ * <ngx-datatable>
1190
+ * ...
1191
+ * <ngx-datatable-footer>
1192
+ * <ng-template>
1193
+ * <app-custom-content />
1194
+ * <ngx-datatable-pager />
1195
+ * </ng-template>
1196
+ * </ngx-datatable-footer>
1197
+ * </ngx-datatable>
1198
+ * ```
1199
+ */
1200
+ declare class DatatablePagerComponent {
1201
+ private datatable;
1202
+ protected get messages(): ReturnType<DatatableComponent['messages']>;
1203
+ protected readonly page: _angular_core.Signal<number>;
1204
+ protected readonly pageSize: _angular_core.Signal<number>;
1205
+ protected readonly count: _angular_core.Signal<number>;
1206
+ protected readonly pagerNextIcon: _angular_core.Signal<string>;
1207
+ protected readonly pagerRightArrowIcon: _angular_core.Signal<string>;
1208
+ protected readonly pagerLeftArrowIcon: _angular_core.Signal<string>;
1209
+ protected readonly pagerPreviousIcon: _angular_core.Signal<string>;
1210
+ protected readonly totalPages: _angular_core.Signal<number>;
1211
+ protected readonly pages: _angular_core.Signal<Page[]>;
1212
+ protected readonly canPrevious: _angular_core.Signal<boolean>;
1213
+ protected readonly canNext: _angular_core.Signal<boolean>;
1214
+ protected prevPage(): void;
1215
+ protected nextPage(): void;
1216
+ protected selectPage(page: number): void;
1217
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatablePagerComponent, never>;
1218
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatatablePagerComponent, "ngx-datatable-pager", never, {}, {}, never, never, true, never>;
1219
+ }
1220
+
1221
+ declare class DatatableGroupHeaderTemplateDirective {
1222
+ static ngTemplateContextGuard(directive: DatatableGroupHeaderTemplateDirective, context: unknown): context is GroupContext;
1223
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableGroupHeaderTemplateDirective, never>;
1224
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableGroupHeaderTemplateDirective, "[ngx-datatable-group-header-template]", never, {}, {}, never, never, true, never>;
1225
+ }
1226
+
1227
+ /**
1228
+ * Row Disable Directive
1229
+ * Use this to disable/enable all children elements
1230
+ * Usage:
1231
+ * To disable
1232
+ * <div [disabled]="true" disable-row >
1233
+ * </div>
1234
+ * To enable
1235
+ * <div [disabled]="false" disable-row >
1236
+ * </div>
1237
+ */
1238
+ declare class DisableRowDirective {
1239
+ private readonly elementRef;
1240
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1241
+ constructor();
1242
+ private disableAllElements;
1243
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DisableRowDirective, never>;
1244
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DisableRowDirective, "[disable-row]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1245
+ }
1246
+
1247
+ /**
1248
+ * This component is passed as ng-template and rendered by BodyComponent.
1249
+ * BodyComponent uses rowDefInternal to first inject actual row template.
1250
+ * This component will render that actual row template.
1251
+ */
1252
+ declare class DatatableRowDefComponent {
1253
+ rowDef: DatatableRowDefInternalDirective;
1254
+ rowContext: {
1255
+ disabled: boolean;
1256
+ template: TemplateRef<unknown>;
1257
+ rowTemplate: TemplateRef<unknown>;
1258
+ row: RowOrGroup<unknown>;
1259
+ index: number;
1260
+ };
1261
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableRowDefComponent, never>;
1262
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatatableRowDefComponent, "datatable-row-def", never, {}, {}, never, never, true, never>;
1263
+ }
1264
+ declare class DatatableRowDefDirective {
1265
+ static ngTemplateContextGuard(_dir: DatatableRowDefDirective, ctx: unknown): ctx is RowDefContext;
1266
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableRowDefDirective, never>;
1267
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableRowDefDirective, "[rowDef]", never, {}, {}, never, never, true, never>;
1268
+ }
1269
+ /**
1270
+ * @internal To be used internally by ngx-datatable.
1271
+ */
1272
+ declare class DatatableRowDefInternalDirective implements OnInit {
1273
+ vc: ViewContainerRef;
1274
+ readonly rowDefInternal: _angular_core.InputSignal<RowDefContext>;
1275
+ readonly rowDefInternalDisabled: _angular_core.InputSignal<boolean>;
1276
+ ngOnInit(): void;
1277
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatatableRowDefInternalDirective, never>;
1278
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DatatableRowDefInternalDirective, "[rowDefInternal]", never, { "rowDefInternal": { "alias": "rowDefInternal"; "required": true; "isSignal": true; }; "rowDefInternalDisabled": { "alias": "rowDefInternalDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1279
+ }
1280
+ interface RowDefContext {
1281
+ template: TemplateRef<unknown>;
1282
+ rowTemplate: TemplateRef<unknown>;
1283
+ row: RowOrGroup<unknown>;
1284
+ index: number;
1285
+ }
1286
+
1287
+ declare class NgxDatatableModule {
1288
+ /**
1289
+ * Configure global configuration via INgxDatatableConfig
1290
+ * @param configuration
1291
+ */
1292
+ static forRoot(configuration: AllPartial<NgxDatatableConfig>): ModuleWithProviders<NgxDatatableModule>;
1293
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDatatableModule, never>;
1294
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NgxDatatableModule, never, [typeof DataTableFooterTemplateDirective, typeof DatatableComponent, typeof DataTableColumnDirective, typeof DatatableRowDetailDirective, typeof DatatableGroupHeaderDirective, typeof DatatableRowDetailTemplateDirective, typeof DataTableColumnHeaderDirective, typeof DataTableColumnCellDirective, typeof DataTableColumnGhostCellDirective, typeof DataTableColumnCellTreeToggle, typeof DatatableFooterDirective, typeof DatatablePagerComponent, typeof DatatableGroupHeaderTemplateDirective, typeof DisableRowDirective, typeof DatatableRowDefComponent, typeof DatatableRowDefDirective], [typeof DatatableComponent, typeof DatatableRowDetailDirective, typeof DatatableGroupHeaderDirective, typeof DatatableRowDetailTemplateDirective, typeof DataTableColumnDirective, typeof DataTableColumnHeaderDirective, typeof DataTableColumnCellDirective, typeof DataTableColumnGhostCellDirective, typeof DataTableColumnCellTreeToggle, typeof DataTableFooterTemplateDirective, typeof DatatableFooterDirective, typeof DatatablePagerComponent, typeof DatatableGroupHeaderTemplateDirective, typeof DisableRowDirective, typeof DatatableRowDefComponent, typeof DatatableRowDefDirective]>;
1295
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<NgxDatatableModule>;
1296
+ }
1297
+
1298
+ declare const toInternalColumn: <T extends Row>(columns: TableColumn<T>[], defaultColumnWidth?: number) => TableColumnInternal<T>[];
1299
+ declare const toPublicColumn: (column: TableColumnInternal) => TableColumn;
1300
+
1301
+ export { ColumnMode, ContextmenuType, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableColumnDirective, DataTableColumnGhostCellDirective, DataTableColumnHeaderDirective, DataTableFooterTemplateDirective, DatatableComponent, DatatableFooterDirective, DatatableGroupHeaderDirective, DatatableGroupHeaderTemplateDirective, DatatablePagerComponent, DatatableRowDefComponent, DatatableRowDefDirective, DatatableRowDefInternalDirective, DatatableRowDetailDirective, DatatableRowDetailTemplateDirective, DisableRowDirective, NgxDatatableModule, SelectionType, SortDirection, SortType, providedNgxDatatableConfig, toInternalColumn, toPublicColumn };
1302
+ export type { ActivateEvent, AllDetailToggleEvent, AllGroupsToggleEvent, CellContext, ColumnResizeEvent, ContextMenuEvenHeader, ContextMenuEvent, ContextMenuEventBody, DetailToggleEvent, DetailToggleEvents, DragEventData, DragEventType, FooterContext, Group, GroupContext, GroupToggleEvent, GroupToggleEvents, HeaderCellContext, NgxDatatableConfig, NgxDatatableCssClasses, NgxDatatableMessages, PageEvent, PagerPageEvent, ReorderEvent, Row, RowDetailContext, RowOrGroup, ScrollEvent, ScrollToRowOptions, SelectEvent, SortEvent, SortPropDir, TableColumn, TableColumnProp, TreeStatus };