@angular-bootstrap/ngbootstrap 0.0.13 → 2.0.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.
@@ -1,7 +1,55 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, AfterContentInit, OnChanges, ElementRef, EventEmitter, SimpleChanges, InjectionToken, QueryList, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
+ import { EventEmitter, AfterViewInit, OnDestroy, ElementRef, ChangeDetectorRef, TemplateRef, AfterContentInit, OnChanges, SimpleChanges, InjectionToken, OnInit, AfterViewChecked, QueryList } from '@angular/core';
3
3
  import { AbstractControl, FormGroup, FormControl, ControlValueAccessor } from '@angular/forms';
4
4
  import { Observable } from 'rxjs';
5
+ import * as _angular_bootstrap_ngbootstrap from '@angular-bootstrap/ngbootstrap';
6
+ import { ChartConfiguration } from 'chart.js';
7
+
8
+ type NgbFilterMode = 'row' | 'menu' | 'multi' | 'none';
9
+ type NgbFilterable = boolean | 'row' | 'menu' | 'multi' | 'none';
10
+ type NgbFilterOperator = 'contains' | 'doesnotcontain' | 'eq' | 'neq' | 'startswith' | 'endswith' | 'gt' | 'gte' | 'lt' | 'lte' | 'isnull' | 'isnotnull' | 'isempty' | 'isnotempty';
11
+ interface NgbFilterDescriptor {
12
+ field: string;
13
+ operator: NgbFilterOperator;
14
+ value?: any;
15
+ ignoreCase?: boolean;
16
+ }
17
+ /** Single condition in a column filter menu or layout-toolbar filter tool. */
18
+ interface NgbMenuFilterConditionDraft {
19
+ operator: NgbFilterOperator;
20
+ value: any;
21
+ }
22
+ interface NgbCompositeFilterDescriptor {
23
+ logic: 'and' | 'or';
24
+ filters: Array<NgbFilterDescriptor | NgbCompositeFilterDescriptor>;
25
+ }
26
+ interface NgbFilterState {
27
+ global?: string;
28
+ root: NgbCompositeFilterDescriptor;
29
+ }
30
+ type NgbColumnFilterType = 'text' | 'numeric' | 'boolean' | 'date' | 'select';
31
+ declare const NGB_TEXT_FILTER_OPERATORS: NgbFilterOperator[];
32
+ declare const NGB_NUMERIC_FILTER_OPERATORS: NgbFilterOperator[];
33
+ declare const NGB_BOOLEAN_FILTER_OPERATORS: NgbFilterOperator[];
34
+ declare const NGB_DATE_FILTER_OPERATORS: NgbFilterOperator[];
35
+ declare const NGB_SELECT_FILTER_OPERATORS: NgbFilterOperator[];
36
+ declare function ngbColumnTypeToFilterType(type?: ColumnType): NgbColumnFilterType;
37
+ declare function ngbDefaultFilterOperator(type: NgbColumnFilterType): NgbFilterOperator;
38
+ declare function ngbAllowedFilterOperators(type: NgbColumnFilterType): NgbFilterOperator[];
39
+ declare function ngbFilterOperatorLabel(operator: NgbFilterOperator, type?: NgbColumnFilterType): string;
40
+ declare function ngbIsCompositeFilter(filter: NgbFilterDescriptor | NgbCompositeFilterDescriptor): filter is NgbCompositeFilterDescriptor;
41
+ /** Recursively collects leaf filter descriptors from a composite filter tree. */
42
+ declare function ngbFlattenFilterDescriptors(composite: NgbCompositeFilterDescriptor | null | undefined): NgbFilterDescriptor[];
43
+ /** Returns the first leaf descriptor for `field`, searching nested composite nodes. */
44
+ declare function ngbFindFieldFilterDescriptor(composite: NgbCompositeFilterDescriptor | null | undefined, field: string): NgbFilterDescriptor | null;
45
+ declare function ngbOperatorRequiresFilterValue(operator: NgbFilterOperator): boolean;
46
+ /**
47
+ * Returns a new composite filter with the field set (or removed when value is empty).
48
+ * Supports manual `filterChange(root)` updates from custom filter templates.
49
+ */
50
+ declare function ngbSetFieldFilter(composite: NgbCompositeFilterDescriptor, field: string, operator: NgbFilterOperator, value?: any, options?: {
51
+ requiresValue?: (operator: NgbFilterOperator) => boolean;
52
+ }): NgbCompositeFilterDescriptor;
5
53
 
6
54
  type ColumnType = 'text' | 'number' | 'email' | 'boolean' | 'date' | 'select';
7
55
  interface ColumnDef<T = any> {
@@ -17,16 +65,173 @@ interface ColumnDef<T = any> {
17
65
  sortable?: boolean;
18
66
  /** enable filtering on this column */
19
67
  filterable?: boolean;
20
- editable?: boolean;
68
+ filterType?: NgbColumnFilterType;
69
+ /** When `''`, the first entry from {@link allowedFilterOperators} or the type list is used. */
70
+ defaultFilterOperator?: NgbFilterOperator | '';
71
+ allowedFilterOperators?: NgbFilterOperator[];
72
+ showFilterMenu?: boolean;
73
+ showFilterRow?: boolean;
74
+ /** When `false`, hides the operator-list trigger in row filter mode. */
75
+ showFilterOperator?: boolean;
76
+ /** Placeholder for the row filter input; defaults to a type-specific label. */
77
+ filterPlaceholder?: string;
78
+ editable?: boolean | ((row: T, isNew: boolean) => boolean);
21
79
  type?: ColumnType;
22
80
  options?: Array<{
23
81
  label: string;
24
82
  value: any;
25
83
  }>;
26
84
  width?: number;
85
+ /** Groups cells in stacked card layout (`tableOptions.stackedLayout = 'cards'`). */
86
+ stackedGroup?: 'start' | 'center' | 'end';
87
+ hidden?: boolean;
88
+ sticky?: boolean | 'start' | 'end';
89
+ locked?: boolean;
90
+ reorderable?: boolean;
91
+ /** When grid `[resizable]` is true, set to `false` to disable resizing for this column. */
92
+ resizable?: boolean;
93
+ /** Minimum width (px) while resizing; defaults to 50 when resizing is enabled. */
94
+ minResizableWidth?: number;
95
+ /** Maximum width (px) while resizing. */
96
+ maxResizableWidth?: number;
97
+ headerClass?: string | string[] | Record<string, boolean>;
98
+ headerStyle?: Record<string, string | number>;
99
+ cellClass?: string | string[] | Record<string, boolean> | ((row: T, rowIndex: number) => string | string[] | Record<string, boolean>);
100
+ cellStyle?: Record<string, string | number> | ((row: T, rowIndex: number) => Record<string, string | number> | null | undefined);
27
101
  required?: boolean;
28
102
  }
29
103
 
104
+ declare class NgbPaginationComponent {
105
+ page: number;
106
+ pageSize: number;
107
+ collectionSize: number;
108
+ /** @deprecated Use `buttonCount`. Kept for compatibility. */
109
+ maxSize: number;
110
+ buttonCount?: number;
111
+ previousNext: boolean;
112
+ pagerType: 'numeric' | 'input';
113
+ responsive: boolean;
114
+ pageChange: EventEmitter<number>;
115
+ get effectiveButtonCount(): number;
116
+ get totalPages(): number;
117
+ get pages(): Array<number | '…'>;
118
+ go(p: number | string): void;
119
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbPaginationComponent, never>;
120
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbPaginationComponent, "ngb-pagination", never, { "page": { "alias": "page"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "collectionSize": { "alias": "collectionSize"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; "buttonCount": { "alias": "buttonCount"; "required": false; }; "previousNext": { "alias": "previousNext"; "required": false; }; "pagerType": { "alias": "pagerType"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
121
+ }
122
+
123
+ type NgbPagerType = 'numeric' | 'input';
124
+ /**
125
+ * Responsive pager density based on container width.
126
+ * - `full`: info, pagination, and page-size controls
127
+ * - `compact`: hides range info
128
+ * - `minimal`: hides range info and page-size controls (pagination remains)
129
+ */
130
+ type NgbPagerDensity = 'full' | 'compact' | 'minimal';
131
+ /** Width breakpoints (px) for {@link ngbResolvePagerDensity}. */
132
+ declare const NGB_PAGER_BREAKPOINTS: {
133
+ readonly fullMinWidth: 520;
134
+ readonly compactMinWidth: 360;
135
+ };
136
+ /** Configuration for {@link NgbPagerComponent}. */
137
+ interface NgbPagerSettings {
138
+ /** Maximum numeric page buttons before ellipsis collapse. Default `10`. */
139
+ buttonCount?: number;
140
+ /** Shows the current range and total record count. Default `true`. */
141
+ info?: boolean;
142
+ /**
143
+ * Page-size presets. `false` hides the control (set `pageSize` yourself).
144
+ * The active `pageSize` is included when it is not already in the list.
145
+ */
146
+ pageSizes?: false | number[];
147
+ /** Shows previous/next pager buttons. Default `true`. */
148
+ previousNext?: boolean;
149
+ /** `numeric` (page buttons) or `input` (type a page number). Default `numeric`. */
150
+ type?: NgbPagerType;
151
+ /**
152
+ * When `true` (default), hides info and page-size controls as the container narrows.
153
+ * When `false`, all controls stay visible and wrap onto new rows.
154
+ */
155
+ responsive?: boolean;
156
+ }
157
+ declare const NGB_PAGER_DEFAULT_SETTINGS: Required<Omit<NgbPagerSettings, 'pageSizes'>> & {
158
+ pageSizes: false | number[];
159
+ };
160
+ declare function ngbResolvePagerSettings(settings: boolean | NgbPagerSettings | null | undefined): NgbPagerSettings | null;
161
+ declare function ngbResolvePagerDensity(width: number): NgbPagerDensity;
162
+ declare function ngbResolvePagerPageSizeOptions(pageSizes: false | number[] | undefined, pageSize: number): number[];
163
+ declare function ngbPagerButtonCountForDensity(base: number, density: NgbPagerDensity, responsive: boolean): number;
164
+ declare function ngbFormatPagerRangeLabel(start: number, end: number, total: number, template?: string): string;
165
+
166
+ declare class NgbPagerComponent implements AfterViewInit, OnDestroy {
167
+ private readonly cdr;
168
+ private static nextId;
169
+ private readonly uid;
170
+ readonly pageSizeSelectId: string;
171
+ pagerDensity: NgbPagerDensity;
172
+ private resizeObserver?;
173
+ pagerRoot?: ElementRef<HTMLElement>;
174
+ page: number;
175
+ pageSize: number;
176
+ collectionSize: number;
177
+ settings: boolean | NgbPagerSettings | null;
178
+ /** Overrides the default range label when `info` is enabled. */
179
+ infoLabel?: string;
180
+ rangeLabelTemplate: string;
181
+ rowsPerPageLabel: string;
182
+ /** When set, overrides `settings.responsive`. */
183
+ responsive?: boolean;
184
+ pageChange: EventEmitter<number>;
185
+ pageSizeChange: EventEmitter<number>;
186
+ constructor(cdr: ChangeDetectorRef);
187
+ get resolved(): NgbPagerSettings;
188
+ get responsiveEnabled(): boolean;
189
+ get showInfoSetting(): boolean;
190
+ get showPageSizesSetting(): boolean;
191
+ get showInfo(): boolean;
192
+ get showPageSizes(): boolean;
193
+ get previousNextEnabled(): boolean;
194
+ get pagerType(): 'numeric' | 'input';
195
+ get effectiveButtonCount(): number;
196
+ get resolvedPageSizeOptions(): number[];
197
+ get displayInfoLabel(): string;
198
+ ngAfterViewInit(): void;
199
+ ngOnDestroy(): void;
200
+ onPageChange(page: number): void;
201
+ onPageSizeChange(size: number): void;
202
+ private observeWidth;
203
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbPagerComponent, never>;
204
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbPagerComponent, "ngb-pager", never, { "page": { "alias": "page"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "collectionSize": { "alias": "collectionSize"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "infoLabel": { "alias": "infoLabel"; "required": false; }; "rangeLabelTemplate": { "alias": "rangeLabelTemplate"; "required": false; }; "rowsPerPageLabel": { "alias": "rowsPerPageLabel"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
205
+ }
206
+
207
+ type NgbDatagridPagerType = NgbPagerType;
208
+ type NgbDatagridPagerPosition = 'top' | 'bottom' | 'both';
209
+ type NgbDatagridPagerDensity = NgbPagerDensity;
210
+ /** @deprecated Use {@link NGB_PAGER_BREAKPOINTS}. */
211
+ declare const NGB_DATAGRID_PAGER_BREAKPOINTS: {
212
+ readonly fullMinWidth: 520;
213
+ readonly compactMinWidth: 360;
214
+ };
215
+ /** Pager configuration for {@link Datagrid} via `[pageable]`. */
216
+ interface NgbDatagridPageableSettings extends NgbPagerSettings {
217
+ /** Pager placement relative to the table. Default `bottom`. */
218
+ position?: NgbDatagridPagerPosition;
219
+ }
220
+ declare const NGB_DATAGRID_DEFAULT_PAGEABLE: Required<Omit<NgbDatagridPageableSettings, 'pageSizes'>> & {
221
+ pageSizes: false | number[];
222
+ };
223
+
224
+ declare function ngbResolvePageableSettings(pageable: boolean | NgbDatagridPageableSettings | null | undefined, legacy?: {
225
+ enablePagination?: boolean;
226
+ pageSizeOptions?: number[];
227
+ }): NgbDatagridPageableSettings | null;
228
+ /** Settings for {@link NgbPagerComponent} (excludes grid-only `position`). */
229
+ declare function ngbDatagridPagerSettings(pageable: NgbDatagridPageableSettings): NgbPagerSettings;
230
+ declare function ngbResolveDatagridPagerSettings(pageable: boolean | NgbDatagridPageableSettings | null | undefined, legacy?: {
231
+ enablePagination?: boolean;
232
+ pageSizeOptions?: number[];
233
+ }): NgbPagerSettings | null;
234
+
30
235
  interface CellCtx<T = any> {
31
236
  $implicit: any;
32
237
  row: T;
@@ -46,10 +251,30 @@ interface FilterCtx<T = any> {
46
251
  $implicit: AbstractControl | null;
47
252
  control: AbstractControl | null;
48
253
  col: ColumnDef<T>;
254
+ /** Column field name (same as `col.field`). */
255
+ field: string;
256
+ descriptor: NgbFilterDescriptor | null;
257
+ /** Current composite filter root (clone). Use with `filterChange` for custom filter templates. */
258
+ filter: NgbCompositeFilterDescriptor;
259
+ operators: NgbFilterOperator[];
260
+ setOperator: (operator: NgbFilterOperator) => void;
261
+ setValue: (value: any) => void;
262
+ clear: () => void;
263
+ /** Replaces the grid filter state and emits `filterChange` when enabled. */
264
+ filterChange: (filter: NgbCompositeFilterDescriptor) => void;
265
+ /** Sets this column's field filter in the current descriptor and commits. */
266
+ setFieldFilter: (operator: NgbFilterOperator, value?: any) => void;
49
267
  }
50
268
  interface GlobalFilterCtx {
51
269
  $implicit: AbstractControl;
52
270
  }
271
+ interface PagerCtx<T = any> {
272
+ grid: T;
273
+ page: number;
274
+ pageSize: number;
275
+ total: number;
276
+ pageCount: number;
277
+ }
53
278
  declare class NgbCellTemplate<T = any> {
54
279
  readonly template: TemplateRef<CellCtx<T>>;
55
280
  field: string;
@@ -71,6 +296,13 @@ declare class NgbFilterTemplate<T = any> {
71
296
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbFilterTemplate<any>, never>;
72
297
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbFilterTemplate<any>, "ng-template[ngbFilter]", never, { "field": { "alias": "ngbFilter"; "required": false; }; }, {}, never, never, true, never>;
73
298
  }
299
+ declare class NgbFilterMenuTemplate<T = any> {
300
+ readonly template: TemplateRef<FilterCtx<T>>;
301
+ field: string;
302
+ constructor(template: TemplateRef<FilterCtx<T>>);
303
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbFilterMenuTemplate<any>, never>;
304
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbFilterMenuTemplate<any>, "ng-template[ngbFilterMenu]", never, { "field": { "alias": "ngbFilterMenu"; "required": false; }; }, {}, never, never, true, never>;
305
+ }
74
306
  declare class NgbGlobalFilterTemplate {
75
307
  readonly template: TemplateRef<GlobalFilterCtx>;
76
308
  constructor(template: TemplateRef<GlobalFilterCtx>);
@@ -89,12 +321,69 @@ declare class NgbRowDetailTemplate<T = any> {
89
321
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbRowDetailTemplate<any>, never>;
90
322
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbRowDetailTemplate<any>, "ng-template[ngbRowDetail]", never, {}, {}, never, never, true, never>;
91
323
  }
324
+ declare class NgbPagerTemplate<T = any> {
325
+ readonly template: TemplateRef<PagerCtx<T>>;
326
+ constructor(template: TemplateRef<PagerCtx<T>>);
327
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbPagerTemplate<any>, never>;
328
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbPagerTemplate<any>, "ng-template[ngbPager]", never, {}, {}, never, never, true, never>;
329
+ }
92
330
  /** Handy constant to import in consumer apps */
93
- declare const DATAGRID_TEMPLATE_DIRECTIVES: (typeof NgbCellTemplate | typeof NgbGlobalFilterTemplate)[];
331
+ declare const DATAGRID_TEMPLATE_DIRECTIVES: (typeof NgbCellTemplate | typeof NgbFilterTemplate | typeof NgbGlobalFilterTemplate | typeof NgbPagerTemplate)[];
94
332
 
333
+ type NgbDataGridSortDirection = 'asc' | 'desc';
334
+ interface NgbDataGridSortDescriptor {
335
+ field: string;
336
+ direction: NgbDataGridSortDirection;
337
+ }
338
+ interface NgbDataGridState {
339
+ /** 1-based page number used by the DataGrid pager. */
340
+ page?: number;
341
+ /** 0-based page index for API integrations that use page indexes. */
342
+ pageIndex?: number;
343
+ /** Number of records skipped before the current page. */
344
+ skip?: number;
345
+ pageSize?: number;
346
+ sort?: NgbDataGridSortDescriptor[];
347
+ filter?: NgbCompositeFilterDescriptor;
348
+ globalFilter?: string;
349
+ }
350
+ type NgbDataGridAggregateFunction = 'count' | 'sum' | 'average' | 'min' | 'max';
351
+ interface NgbDataGridAggregateDescriptor {
352
+ field: string;
353
+ aggregate: NgbDataGridAggregateFunction;
354
+ }
355
+ type NgbDataGridAggregateResults = Record<string, Partial<Record<NgbDataGridAggregateFunction, number | string | Date | null>>>;
356
+ interface NgbDataGridProcessOptions<T = unknown> {
357
+ state?: NgbDataGridState | null;
358
+ aggregates?: NgbDataGridAggregateDescriptor[];
359
+ globalFilterFields?: string[];
360
+ columns?: Array<{
361
+ field: Extract<keyof T, string> | string;
362
+ type?: string;
363
+ filterType?: string;
364
+ }>;
365
+ /**
366
+ * When false, returns the filtered/sorted full result without page slicing.
367
+ * Aggregates are always calculated before page slicing.
368
+ */
369
+ page?: boolean;
370
+ }
371
+ interface NgbDataGridDataResult<T = unknown> {
372
+ data: T[];
373
+ total: number;
374
+ aggregates?: NgbDataGridAggregateResults;
375
+ }
95
376
  type NgbDataGridExportType = 'pdf' | 'excel' | 'both';
96
377
  type NgbDataGridExportPages = 'all' | 'current' | 'selection';
97
- type NgbDataGridTheme = 'material' | 'tailwind' | 'bootstrap';
378
+ type NgbDataGridTheme = 'bootstrap' | 'bootstrap-main' | 'bootstrap-main-dark' | 'bootstrap-nordic' | 'bootstrap-urban' | 'bootstrap-vintage' | 'material' | 'material-main' | 'material-indigo' | 'material-deep-purple' | 'tailwind' | 'tailwind-main' | 'tailwind-slate' | 'tailwind-emerald';
379
+ interface NgbDataGridThemeOption {
380
+ value: NgbDataGridTheme;
381
+ label: string;
382
+ group: 'Bootstrap' | 'Material' | 'Tailwind';
383
+ swatches: [string, string, string];
384
+ dark?: boolean;
385
+ }
386
+ declare const NGB_DATAGRID_THEME_OPTIONS: NgbDataGridThemeOption[];
98
387
  interface NgbDataGridExportOptions {
99
388
  enabled: boolean;
100
389
  type: NgbDataGridExportType;
@@ -117,6 +406,40 @@ interface NgbDataGridResponsiveOptions {
117
406
  desktop?: number;
118
407
  };
119
408
  }
409
+ /** Built-in row editing interaction mode. */
410
+ type NgbEditMode = 'inline' | 'incell' | 'external' | 'toolbar';
411
+ /** Labels and visibility for the built-in multi-checkbox filter menu footer. */
412
+ /** Segment returned by {@link Datagrid.getSearchHighlightSegments} for match highlighting. */
413
+ interface NgbSearchHighlightSegment {
414
+ text: string;
415
+ match: boolean;
416
+ }
417
+ /** Placement when calling {@link Datagrid.reorderColumn}. */
418
+ interface NgbColumnReorderOptions {
419
+ /** When true (default), inserts before the column at the destination index. When false, inserts after it. */
420
+ before?: boolean;
421
+ }
422
+ interface NgbColumnReorderEvent<T = any> {
423
+ /** Visible columns in their new order. */
424
+ columns: Array<{
425
+ field: string;
426
+ header: string;
427
+ } & Record<string, unknown>>;
428
+ /** Column that was moved. */
429
+ column: T;
430
+ fromIndex: number;
431
+ toIndex: number;
432
+ /** Ordered field names after the move. */
433
+ fields: string[];
434
+ }
435
+ interface NgbMultiCheckboxFilterOptions {
436
+ /** Primary action label. Default: `OK` */
437
+ applyLabel?: string;
438
+ /** Secondary action label. Default: `Cancel` */
439
+ cancelLabel?: string;
440
+ /** Whether the secondary action is shown. Default: `true` */
441
+ showCancel?: boolean;
442
+ }
120
443
 
121
444
  type NgbDatagridTrackByFn<T> = (index: number, row: T) => any;
122
445
  interface NgbDatagridEditService<T> {
@@ -185,8 +508,142 @@ interface HighlightItem {
185
508
  columnKey?: any;
186
509
  }
187
510
 
511
+ interface NgbDndDropEvent<T> {
512
+ item: T;
513
+ fromIndex: number;
514
+ toIndex: number;
515
+ fromList: T[];
516
+ toList: T[];
517
+ sameList: boolean;
518
+ }
519
+ interface DndCanDropPayload<T = any> {
520
+ dragItem: T;
521
+ srcList: T[];
522
+ srcIndex: number;
523
+ dstList: T[];
524
+ dstIndex: number;
525
+ isExternal: boolean;
526
+ }
527
+ /** Guard function; return true to allow, false to block */
528
+ type DndCanDropFn<T = any> = (payload: DndCanDropPayload<T>) => boolean;
529
+ declare class NgbDndListDirective<T = unknown> {
530
+ private el;
531
+ private state;
532
+ dndChildrenKey: string | null;
533
+ /** Bind your array here: <div [ngbDndList]="items"> */
534
+ list: T[];
535
+ /** Optional: group barrier across lists */
536
+ dndGroup?: string;
537
+ /** Disable this list */
538
+ dndDisabled: boolean;
539
+ /** NEW: clone if source wasn't a list (e.g. palette) */
540
+ dndCloneOnDrop: boolean;
541
+ /** NEW: custom clone function */
542
+ dndCloneFn?: (item: T) => T;
543
+ dndIsPalette: boolean;
544
+ dndCanDrop: boolean | DndCanDropFn<any>;
545
+ private _denied;
546
+ get denied(): boolean;
547
+ dndAriaLabel?: string;
548
+ get ariaLabel(): string | null;
549
+ /** Fires after item is inserted */
550
+ dndDropped: EventEmitter<NgbDndDropEvent<T>>;
551
+ role: string;
552
+ hostClass: boolean;
553
+ private hover;
554
+ get isOver(): boolean;
555
+ private canDrop;
556
+ get dataDropValid(): "true" | "false" | null;
557
+ private placeholder?;
558
+ private lastIndex;
559
+ onDragEnter(ev: DragEvent): void;
560
+ onDragOver(ev: DragEvent): void;
561
+ onDragLeave(ev: DragEvent): void;
562
+ onDocumentDrop(ev: DragEvent): void;
563
+ onDrop(ev: DragEvent): void;
564
+ onDocumentDragFinished(): void;
565
+ private getSession;
566
+ private ensurePlaceholder;
567
+ private removePlaceholder;
568
+ private resetVisualState;
569
+ private positionPlaceholderAt;
570
+ private indexFromPointer;
571
+ private draggableChildren;
572
+ private cloneItem;
573
+ private isDroppingIntoOwnDescendant;
574
+ /**
575
+ * Build a guard payload using whatever drag context you already store.
576
+ * If some fields don’t exist in your code, the fallbacks keep it working.
577
+ */
578
+ private _buildGuardPayload;
579
+ /**
580
+ * Compute destination index from the event position (no placeholder var needed).
581
+ * Uses vertical list heuristics; adjust for horizontal if your list is horizontal.
582
+ */
583
+ private _computeDropIndex;
584
+ private _allowDrop;
585
+ private performDrop;
586
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDndListDirective<any>, never>;
587
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDndListDirective<any>, "[ngbDndList]", never, { "dndChildrenKey": { "alias": "dndChildrenKey"; "required": false; }; "list": { "alias": "ngbDndList"; "required": false; }; "dndGroup": { "alias": "dndGroup"; "required": false; }; "dndDisabled": { "alias": "dndDisabled"; "required": false; }; "dndCloneOnDrop": { "alias": "dndCloneOnDrop"; "required": false; }; "dndCloneFn": { "alias": "dndCloneFn"; "required": false; }; "dndIsPalette": { "alias": "dndIsPalette"; "required": false; }; "dndCanDrop": { "alias": "dndCanDrop"; "required": false; }; "dndAriaLabel": { "alias": "dndAriaLabel"; "required": false; }; }, { "dndDropped": "dndDropped"; }, never, never, true, never>;
588
+ }
589
+
590
+ /** Localizable strings for built-in datagrid UI (pagination, filters, actions, a11y). */
591
+ interface NgbDatagridLabels {
592
+ paginationRange?: string;
593
+ rowsPerPage?: string;
594
+ emptyState?: string;
595
+ booleanYes?: string;
596
+ booleanNo?: string;
597
+ selectAll?: string;
598
+ unselectAll?: string;
599
+ selectRow?: string;
600
+ unselectRow?: string;
601
+ globalFilter?: string;
602
+ expandRow?: string;
603
+ collapseRow?: string;
604
+ exportPdf?: string;
605
+ exportExcel?: string;
606
+ stickyRowToggle?: string;
607
+ editRow?: string;
608
+ deleteRow?: string;
609
+ reorderColumn?: string;
610
+ resizeColumn?: string;
611
+ openFilterMenu?: string;
612
+ clearFilter?: string;
613
+ filterOperator?: string;
614
+ columnFilter?: string;
615
+ sortBy?: string;
616
+ stickyBadge?: string;
617
+ addRow?: string;
618
+ addRowButton?: string;
619
+ save?: string;
620
+ cancel?: string;
621
+ edit?: string;
622
+ delete?: string;
623
+ multiCheckboxApply?: string;
624
+ multiCheckboxCancel?: string;
625
+ combineConditions?: string;
626
+ searchFilterValues?: string;
627
+ }
628
+ declare const NGB_DATAGRID_DEFAULT_LABELS: Required<NgbDatagridLabels>;
629
+ /** Documented keyboard shortcuts when [keyboardNavigation] is enabled. */
630
+ declare const NGB_DATAGRID_KEYBOARD_SHORTCUTS: {
631
+ readonly moveCell: "Arrow keys — move focus between data cells";
632
+ readonly firstLastColumn: "Home / End — first or last column in the row";
633
+ readonly firstLastRow: "Ctrl+Home / Ctrl+End — first or last row on the page";
634
+ readonly sortColumn: "Enter on focused sortable header — cycle sort";
635
+ readonly toggleSelection: "Space on a focused row — toggle row selection (when enabled)";
636
+ readonly pagePrevNext: "Alt+Page Up / Alt+Page Down — previous or next page (when paginated)";
637
+ readonly openFilter: "F3 on a focused column — open row filter operator menu (row filter mode)";
638
+ readonly cancelOverlay: "Escape — close filter menus and cancel in-cell edit";
639
+ readonly commitIncell: "Enter — commit in-cell edit; Arrow keys move between editable cells while editing";
640
+ };
641
+ type NgbDatagridTextDirection = 'ltr' | 'rtl' | 'auto';
642
+ declare function ngbFormatDatagridLabel(template: string, tokens: Record<string, string | number>): string;
643
+
188
644
  type SortDir = 'asc' | 'desc' | '';
189
645
  type KeyOf<T> = Extract<keyof T, string>;
646
+ type UtilityColumnKind = 'selection' | 'detail' | 'sticky-toggle' | 'actions';
190
647
  type NgbTableResponsive = true | false | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
191
648
  interface NgbTableOptions {
192
649
  stripedRows?: boolean;
@@ -204,7 +661,15 @@ interface NgbTableOptions {
204
661
  stickyHeader?: boolean;
205
662
  stickyFooter?: boolean;
206
663
  stickyRows?: boolean;
664
+ density?: 'comfortable' | 'compact';
665
+ stacked?: boolean;
666
+ /** `list` = single-column cards; `cards` = multi-column card rows (use `stackedGroup` on columns). */
667
+ stackedLayout?: 'list' | 'cards';
668
+ /** Alternating row backgrounds in the table body (Figma patient grid). */
669
+ zebraStripes?: boolean;
207
670
  }
671
+ /** Tabular columns vs adaptive stacked cards (`stacked` in {@link NgbTableOptions}). */
672
+ type NgbDataLayoutMode = 'tabular' | 'stacked';
208
673
  type NgbSelectionMode = 'none' | 'single' | 'multiple';
209
674
  type NgbSelectionBehavior = 'row' | 'checkbox' | 'both';
210
675
  type NgbSelectionKeyMode = 'desktop' | 'mobile';
@@ -218,17 +683,77 @@ interface NgbSelectionLabels {
218
683
  }
219
684
  declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
220
685
  /** Column definitions to render */
221
- columns: ColumnDef<T>[];
686
+ private _columns;
687
+ get columns(): ColumnDef<T>[];
688
+ set columns(value: ColumnDef<T>[] | null | undefined);
222
689
  /** Row data to display */
223
- data: T[];
224
- enableSorting: boolean;
225
- enableFiltering: boolean;
226
- enableGlobalFilter: boolean;
227
- enablePagination: boolean;
690
+ private _data;
691
+ get data(): T[];
692
+ set data(value: T[] | null | undefined);
693
+ /**
694
+ * When `true`, shows a loading overlay and sets `aria-busy` on the grid root.
695
+ * Use while fetching remote data before assigning `[data]`.
696
+ */
697
+ loading: boolean;
698
+ /**
699
+ * Total record count for paging and range labels when using server-side data binding.
700
+ * When set and greater than `data.length`, the grid treats `[data]` as the current page only
701
+ * (no client-side page slicing). Omit for local in-memory arrays.
702
+ */
703
+ private _total;
704
+ get total(): number | null;
705
+ set total(value: number | null | undefined);
706
+ private _enableSorting;
707
+ get enableSorting(): boolean;
708
+ set enableSorting(value: boolean);
709
+ private _enableFiltering;
710
+ get enableFiltering(): boolean;
711
+ set enableFiltering(value: boolean);
712
+ private _filterable;
713
+ get filterable(): NgbFilterable;
714
+ set filterable(value: NgbFilterable | null | undefined);
715
+ private _enableGlobalFilter;
716
+ get enableGlobalFilter(): boolean;
717
+ set enableGlobalFilter(value: boolean);
718
+ private _filterMode;
719
+ get filterMode(): NgbFilterMode;
720
+ set filterMode(value: NgbFilterMode | null | undefined);
721
+ private _filter;
722
+ get filter(): NgbCompositeFilterDescriptor | null;
723
+ set filter(value: NgbCompositeFilterDescriptor | null | undefined);
724
+ filterOperators?: Partial<Record<ColumnType, NgbFilterOperator[]>>;
725
+ filterManual: boolean;
726
+ externalFiltering: boolean;
727
+ /** Opts local arrays into the reusable DataGrid operation helper for filter/sort/page processing. */
728
+ private _dataOperations;
729
+ get dataOperations(): boolean | NgbDataGridProcessOptions<T>;
730
+ set dataOperations(value: boolean | NgbDataGridProcessOptions<T> | null | undefined);
731
+ /**
732
+ * Optional controlled data-operation state. When provided, the grid syncs page, pageSize,
733
+ * sort, filter, and global filter from this object.
734
+ */
735
+ private _state;
736
+ get state(): NgbDataGridState | null;
737
+ set state(value: NgbDataGridState | null | undefined);
738
+ /** Footer actions for the built-in multi-checkbox filter menu. */
739
+ multiCheckboxFilterOptions: NgbMultiCheckboxFilterOptions;
740
+ private _enablePagination;
741
+ get enablePagination(): boolean;
742
+ set enablePagination(value: boolean);
743
+ /**
744
+ * Pager configuration. `true` enables the pager with defaults; pass an object to customize.
745
+ * When set, pagination is active even if `[enablePagination]` is false.
746
+ */
747
+ private _pageable;
748
+ get pageable(): boolean | NgbDatagridPageableSettings;
749
+ set pageable(value: boolean | NgbDatagridPageableSettings | null | undefined);
228
750
  enableEdit: boolean;
229
751
  enableDelete: boolean;
752
+ /** @deprecated Prefer `pageable.pageSizes`. Kept for `[enablePagination]` compatibility. */
230
753
  pageSizeOptions: number[];
231
- enableAdd: boolean;
754
+ private _enableAdd;
755
+ get enableAdd(): boolean;
756
+ set enableAdd(value: boolean);
232
757
  /** Accessible label (aria-label) applied to the add-row button. */
233
758
  addButtonAriaLabel: string | null;
234
759
  /** Visible text rendered inside the add-row button. */
@@ -248,7 +773,14 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
248
773
  /** Footer height (px) used to offset scrollable area. */
249
774
  stickyFooterHeight: number;
250
775
  /** Bootstrap-like table styling options. */
251
- tableOptions: NgbTableOptions;
776
+ private _tableOptions;
777
+ get tableOptions(): NgbTableOptions;
778
+ set tableOptions(value: NgbTableOptions | null | undefined);
779
+ /**
780
+ * When set, overrides `tableOptions.stacked` for layout mode.
781
+ * Use `'stacked'` for card/label-value rows or `'tabular'` for the standard column grid.
782
+ */
783
+ dataLayoutMode: NgbDataLayoutMode | null;
252
784
  /** Selection mode for rows. */
253
785
  selectionMode: NgbSelectionMode;
254
786
  /** Selection activation: row click, checkbox only, or both. */
@@ -262,13 +794,21 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
262
794
  /** Disable selection for specific rows. */
263
795
  selectionDisabledFn?: (row: T, index: number) => boolean;
264
796
  /** Highlight items (row/cell). */
265
- highlightedIndex: HighlightItem[];
797
+ private _highlightedIndex;
798
+ get highlightedIndex(): HighlightItem[];
799
+ set highlightedIndex(value: HighlightItem[] | null | undefined);
266
800
  /** Row key for highlighting. */
267
801
  highlightRowKey: NgbRowKey | null;
268
802
  /** Column key for highlighting. */
269
803
  highlightColKey: NgbColKey | null;
270
804
  /** Accessible label for the global filter input. */
271
805
  globalFilterAriaLabel: string;
806
+ /** Placeholder for the built-in global search input. */
807
+ globalFilterPlaceholder: string;
808
+ /** When set, matching substrings in visible cells are wrapped with `.grid-search-highlight`. */
809
+ searchHighlightTerm: string;
810
+ /** Column fields included in search highlighting; all visible columns when empty. */
811
+ searchHighlightFields: string[] | null;
272
812
  /** Accessible label announced when expanding a row. */
273
813
  expandRowAriaLabel: string;
274
814
  /** Accessible label announced when collapsing a row. */
@@ -281,18 +821,54 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
281
821
  newRowDefaults: Partial<Record<KeyOf<T>, any>> | (() => Partial<Record<KeyOf<T>, any>>) | null;
282
822
  strictEmail: boolean;
283
823
  editOnRowClick: boolean;
824
+ /** Row editing interaction: inline actions, in-cell, external dialog, or toolbar selection. */
825
+ editMode: NgbEditMode;
826
+ /** Hint shown in toolbar editing mode when a row is selected. */
827
+ toolbarEditHint: string;
284
828
  singleExpand: boolean;
285
- exportOptions: NgbDataGridExportOptions;
829
+ private _exportOptions;
830
+ get exportOptions(): NgbDataGridExportOptions;
831
+ set exportOptions(value: NgbDataGridExportOptions | null | undefined);
286
832
  theme: NgbDataGridTheme;
287
833
  responsive: NgbDataGridResponsiveOptions | boolean;
288
834
  trackBy?: NgbDatagridTrackByFn<T>;
835
+ rowClass?: string | string[] | Record<string, boolean> | ((row: T, rowIndex: number) => string | string[] | Record<string, boolean>);
836
+ rowStyle?: Record<string, string | number> | ((row: T, rowIndex: number) => Record<string, string | number> | null | undefined);
837
+ rowReorderable: boolean;
838
+ private _columnReorderable;
839
+ get columnReorderable(): boolean;
840
+ set columnReorderable(value: boolean);
841
+ /** Enables drag-to-resize on column headers (requires explicit column widths). */
842
+ private _resizable;
843
+ get resizable(): boolean;
844
+ set resizable(value: boolean);
845
+ /** Render row actions as icon-only square buttons (Figma editing screen). */
846
+ actionDisplay: 'text' | 'icons';
847
+ /** Show a STICKY badge on the configured column when a row is pinned. */
848
+ showStickyRowBadge: boolean;
849
+ stickyRowBadgeField: string | null;
850
+ stickyRowBadgeLabel: string;
851
+ /** Localized strings for built-in UI; individual aria/text inputs override matching keys. */
852
+ labels: NgbDatagridLabels;
853
+ /** BCP 47 locale for pagination range and number formatting (e.g. `en-US`, `ar-SA`). */
854
+ locale: string | null;
855
+ /** Text direction on the grid root; `auto` inherits from document or parent `dir`. */
856
+ dir: NgbDatagridTextDirection;
857
+ /** Enables arrow-key cell focus, Space selection, Alt+Page paging, and F3 filter shortcuts. */
858
+ keyboardNavigation: boolean;
289
859
  editService?: NgbDatagridEditService<T>;
290
860
  dataProviderAll?: () => Observable<any[]> | Promise<any[]> | any[];
291
861
  dataProviderSelection?: () => any[];
292
862
  exportButtonDir?: ExportButtonDirective;
293
863
  bodyScroller?: ElementRef<HTMLElement>;
294
864
  headerScroller?: ElementRef<HTMLElement>;
865
+ private hostEl;
295
866
  colgroupSyncId: string;
867
+ private columnWidthOverrides;
868
+ private resizeSession;
869
+ private columnOrder;
870
+ columnDragField: string | null;
871
+ columnDragOverIndex: number | null;
296
872
  exporting: boolean;
297
873
  rowAdd: EventEmitter<{
298
874
  newRow: T;
@@ -318,6 +894,7 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
318
894
  active: string | null;
319
895
  direction: "asc" | "desc" | "";
320
896
  }>;
897
+ filterChange: EventEmitter<NgbCompositeFilterDescriptor>;
321
898
  filtersChange: EventEmitter<{
322
899
  global: string;
323
900
  columns: Record<string, string>;
@@ -326,6 +903,7 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
326
903
  page: number;
327
904
  pageSize: number;
328
905
  }>;
906
+ dataStateChange: EventEmitter<NgbDataGridState>;
329
907
  selectionChange: EventEmitter<{
330
908
  selected: T[];
331
909
  lastAction: {
@@ -334,7 +912,15 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
334
912
  selected: boolean;
335
913
  } | null;
336
914
  }>;
915
+ rowReorder: EventEmitter<{
916
+ row: T;
917
+ fromIndex: number;
918
+ toIndex: number;
919
+ data: T[];
920
+ }>;
921
+ columnReorder: EventEmitter<NgbColumnReorderEvent<ColumnDef<T>>>;
337
922
  rowDetailTpl?: NgbRowDetailTemplate<T>;
923
+ pagerTpl?: NgbPagerTemplate<T>;
338
924
  private exporter;
339
925
  expanded: Set<number>;
340
926
  private fb;
@@ -343,27 +929,85 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
343
929
  addingNew: boolean;
344
930
  draftNew: Partial<Record<KeyOf<T>, any>> | null;
345
931
  errorsNew: Partial<Record<KeyOf<T>, string>>;
346
- sort: {
932
+ private _sort;
933
+ get sort(): {
347
934
  active: Extract<keyof T, string> | null;
348
935
  direction: SortDir;
349
936
  };
937
+ set sort(value: {
938
+ active: Extract<keyof T, string> | null;
939
+ direction: SortDir;
940
+ } | null | undefined);
350
941
  stickyRowIds: Set<any>;
351
942
  selectedRowIds: Set<any>;
352
943
  private selectionAnchor;
353
944
  private highlightRowMap;
354
- globalFilter: string;
355
- filters: Record<string, string>;
356
- page: number;
357
- pageSize: number;
358
- /** Inline editing state */
945
+ private _globalFilter;
946
+ get globalFilter(): string;
947
+ set globalFilter(value: string | null | undefined);
948
+ private _filters;
949
+ get filters(): Record<string, string>;
950
+ set filters(value: Record<string, string> | null | undefined);
951
+ private _localFilter;
952
+ get localFilter(): NgbCompositeFilterDescriptor;
953
+ set localFilter(value: NgbCompositeFilterDescriptor | null | undefined);
954
+ openFilterMenuField: string | null;
955
+ openFilterMenuAnchor: HTMLElement | null;
956
+ openRowFilterField: string | null;
957
+ openRowFilterOperatorAnchor: HTMLElement | null;
958
+ openMenuOperatorField: string | null;
959
+ menuDrafts: Record<string, NgbMenuFilterConditionDraft[]>;
960
+ /** Join logic between conditions in a column filter menu (And / Or). */
961
+ menuDraftJoinLogic: Record<string, 'and' | 'or'>;
962
+ multiCheckboxDrafts: Record<string, any[]>;
963
+ multiCheckboxSearch: Record<string, string>;
964
+ private syncingFilterForm;
965
+ private _page;
966
+ get page(): number;
967
+ set page(value: number | null | undefined);
968
+ private _pageSize;
969
+ get pageSize(): number;
970
+ set pageSize(value: number | null | undefined);
971
+ /** Inline / in-cell editing state */
359
972
  editingIndex: number | null;
973
+ editingCell: {
974
+ rowIndex: number;
975
+ field: string;
976
+ } | null;
977
+ /** Roving keyboard focus within the current page (data cells). */
978
+ focusedCell: {
979
+ rowIndex: number;
980
+ colIndex: number;
981
+ } | null;
982
+ /** Screen-reader status updates (sort, page, selection). */
983
+ statusMessage: string;
360
984
  editForm: FormGroup;
361
985
  saveAttemptedEdit: boolean;
986
+ /** External dialog editing state */
987
+ externalEditOpen: boolean;
988
+ externalEditIsNew: boolean;
989
+ externalEditPagedIndex: number | null;
990
+ externalForm: FormGroup;
991
+ saveAttemptedExternal: boolean;
992
+ private externalDialogOpener;
993
+ private externalDialogFocusedOnce;
362
994
  addForm: FormGroup;
363
995
  saveAttemptedNew: boolean;
364
996
  private addDraftRowId;
365
997
  private readonly defaultEditService;
366
998
  private cdr;
999
+ private resolvedColumnsCache;
1000
+ private visibleColumnsCache;
1001
+ private filteredCache;
1002
+ private sortedCache;
1003
+ private pagedCache;
1004
+ private resolvedColumnsDirty;
1005
+ private visibleColumnsDirty;
1006
+ private filteredDirty;
1007
+ private sortedDirty;
1008
+ private pagedDirty;
1009
+ private rowIndexMap;
1010
+ private rowIndexMapSource;
367
1011
  private norm;
368
1012
  private keyOf;
369
1013
  private getDefaults;
@@ -373,24 +1017,275 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
373
1017
  private buildFormFromRow;
374
1018
  private strictEmailValidator;
375
1019
  get exportButtonTpl(): TemplateRef<ExportButtonContext> | null;
1020
+ get gridHost(): this;
1021
+ get declarativeColumns(): ColumnDef<T>[];
1022
+ get resolvedColumns(): ColumnDef<T>[];
1023
+ get visibleColumns(): ColumnDef<T>[];
1024
+ private invalidateColumnCaches;
1025
+ private invalidateFilteredCaches;
1026
+ private invalidateSortedCaches;
1027
+ private invalidatePagedCache;
1028
+ private invalidateDataCaches;
1029
+ private markGridForCheck;
1030
+ private ensureRowIndexMap;
1031
+ private dataIndexOf;
1032
+ private syncColumnOrder;
1033
+ isColumnReorderEnabled(): boolean;
1034
+ isColumnReorderable(col: ColumnDef<T>): boolean;
1035
+ onColumnDragStart(event: DragEvent, col: ColumnDef<T>, fromIndex: number): void;
1036
+ onColumnDragOver(event: DragEvent, toIndex: number): void;
1037
+ onColumnDragLeave(event: DragEvent, index: number): void;
1038
+ onColumnDrop(event: DragEvent, toIndex: number): void;
1039
+ onColumnDragEnd(): void;
1040
+ /**
1041
+ * Reorders a visible column relative to another visible column index.
1042
+ * Only columns that pass {@link isColumnReorderable} can be moved.
1043
+ */
1044
+ reorderColumn(column: ColumnDef<T> | Extract<keyof T, string>, destinationIndex: number, options?: NgbColumnReorderOptions, emit?: boolean): void;
1045
+ moveColumn(fromIndex: number, toIndex: number, emit?: boolean): void;
1046
+ private validateColumnConfig;
1047
+ isFilteringEnabled(): boolean;
1048
+ resolvedFilterMode(): NgbFilterMode;
376
1049
  get filtered(): T[];
1050
+ private effectiveFilterDescriptor;
1051
+ private legacyFilterDescriptor;
1052
+ private currentGlobalFilter;
1053
+ private matchesComposite;
1054
+ private matchesDescriptor;
1055
+ private normalizeFilterValue;
1056
+ getColumnFilterType(col?: ColumnDef<T>): 'text' | 'numeric' | 'boolean' | 'date' | 'select';
1057
+ isMultiCheckboxMode(col: ColumnDef<T>): boolean;
1058
+ getAllowedOperators(col: ColumnDef<T>): NgbFilterOperator[];
1059
+ defaultFilterOperator(col: ColumnDef<T>): NgbFilterOperator;
1060
+ rowFilterOperator(col: ColumnDef<T>): NgbFilterOperator;
1061
+ operatorLabel(operator: NgbFilterOperator): string;
1062
+ rowFilterOperatorLabel(col: ColumnDef<T>, operator: NgbFilterOperator): string;
1063
+ rowFilterMenuTitle(col: ColumnDef<T>): string;
1064
+ rowFilterPlaceholder(col: ColumnDef<T>): string;
1065
+ isSearchHighlightEnabled(): boolean;
1066
+ shouldHighlightSearchInColumn(field: string): boolean;
1067
+ formatCellDisplayValue(value: unknown): string;
1068
+ getSearchHighlightSegments(value: unknown, field: string): Array<{
1069
+ text: string;
1070
+ match: boolean;
1071
+ }>;
1072
+ rowFilterEmptyOptionLabel(col: ColumnDef<T>): string;
1073
+ booleanFilterOptionLabel(value: boolean): string;
1074
+ isRowFilterMenuOpen(field: string): boolean;
1075
+ get openRowFilterColumn(): ColumnDef<T> | null;
1076
+ toggleRowFilterMenu(field: string, anchor?: HTMLElement | null): void;
1077
+ setRowFilterOperator(col: ColumnDef<T>, operator: NgbFilterOperator): void;
1078
+ operatorRequiresValue(operator: NgbFilterOperator): boolean;
1079
+ isRowFilterVisible(col: ColumnDef<T>): boolean;
1080
+ isRowFilterOperatorVisible(col: ColumnDef<T>): boolean;
1081
+ isMenuFilterVisible(col: ColumnDef<T>): boolean;
1082
+ getColumnFilter(field: string): NgbFilterDescriptor | null;
1083
+ hasActiveColumnFilter(field: string): boolean;
1084
+ private findFieldFilter;
1085
+ private withoutFieldFilters;
1086
+ private upsertColumnFilter;
1087
+ clearColumnFilter(field: string, emit?: boolean): void;
1088
+ clearAllFilters(emit?: boolean): void;
1089
+ private commitFilter;
1090
+ private cloneComposite;
1091
+ private syncLegacyFilters;
1092
+ currentGlobalFilterValue(): string;
1093
+ operatorControlName(field: string): string;
1094
+ valueControlName(field: string): string;
1095
+ getFilterControl(field: string): AbstractControl | null;
1096
+ applyRowFilter(col: ColumnDef<T>): void;
1097
+ private setFilterFormField;
1098
+ private syncFilterFormFromState;
1099
+ private static readonly MENU_FILTER_CONDITION_COUNT;
1100
+ private defaultMenuOperator;
1101
+ private defaultMenuCondition;
1102
+ private defaultMenuDraftPair;
1103
+ private normalizeMenuDraftConditions;
1104
+ private menuConditionsFromFieldFilter;
1105
+ ensureMenuJoinLogic(col: ColumnDef<T>): 'and' | 'or';
1106
+ setMenuJoinLogic(col: ColumnDef<T>, logic: 'and' | 'or'): void;
1107
+ menuFilterConditionIsValid(col: ColumnDef<T>, draft: NgbMenuFilterConditionDraft): boolean;
1108
+ canApplyMenuFilter(col: ColumnDef<T>): boolean;
1109
+ canClearMenuFilter(col: ColumnDef<T>): boolean;
1110
+ ensureMenuDraftConditions(col: ColumnDef<T>): NgbMenuFilterConditionDraft[];
1111
+ /** First menu condition (header filter menus). */
1112
+ ensureMenuDraft(col: ColumnDef<T>): NgbMenuFilterConditionDraft;
1113
+ setMenuDraftOperator(col: ColumnDef<T>, operator: NgbFilterOperator, index?: number): void;
1114
+ menuOperatorKey(field: string, index?: number): string;
1115
+ isMenuOperatorOpen(field: string, index?: number): boolean;
1116
+ toggleMenuOperator(field: string, index?: number): void;
1117
+ get openFilterMenuColumn(): ColumnDef<T> | null;
1118
+ private closeFilterMenu;
1119
+ private resolveFilterMenuAnchor;
1120
+ toggleFilterMenu(field: string, anchor?: HTMLElement | null): void;
1121
+ applyMenuFilter(col: ColumnDef<T>): void;
1122
+ clearMenuFilter(col: ColumnDef<T>): void;
1123
+ multiCheckboxOptions(col: ColumnDef<T>): Array<{
1124
+ label: string;
1125
+ value: any;
1126
+ }>;
1127
+ multiCheckboxVisibleOptions(col: ColumnDef<T>): Array<{
1128
+ label: string;
1129
+ value: any;
1130
+ }>;
1131
+ multiCheckboxValueLabel(col: ColumnDef<T>, value: any): string;
1132
+ private multiCheckboxValueKey;
1133
+ ensureMultiCheckboxDraft(col: ColumnDef<T>): any[];
1134
+ multiCheckboxSelectedCount(col: ColumnDef<T>): number;
1135
+ multiCheckboxTotalCount(col: ColumnDef<T>): number;
1136
+ isMultiCheckboxChecked(col: ColumnDef<T>, value: any): boolean;
1137
+ toggleMultiCheckboxValue(col: ColumnDef<T>, value: any): void;
1138
+ isMultiCheckboxAllSelected(col: ColumnDef<T>): boolean;
1139
+ toggleMultiCheckboxAll(col: ColumnDef<T>): void;
1140
+ multiCheckboxToggleLabel(col: ColumnDef<T>): string;
1141
+ isMultiCheckboxPartiallySelected(col: ColumnDef<T>): boolean;
1142
+ private multiCheckboxSelectedValues;
1143
+ multiCheckboxFilterApplyLabel(): string;
1144
+ multiCheckboxFilterCancelLabel(): string;
1145
+ multiCheckboxFilterShowCancel(): boolean;
1146
+ cancelMultiCheckboxFilter(col: ColumnDef<T>): void;
1147
+ applyMultiCheckboxFilter(col: ColumnDef<T>): void;
1148
+ filterContext(col: ColumnDef<T>, source: 'row' | 'menu'): FilterCtx<T>;
377
1149
  get sorted(): T[];
1150
+ /** True when `[data]` is a server page and `[total]` is the full result count. */
1151
+ isServerBound(): boolean;
1152
+ /** Row count for pager, range labels, and `aria-rowcount`. */
1153
+ recordTotal(): number;
1154
+ /** Collection size passed to the built-in pager. */
1155
+ pagerCollectionSize(): number;
378
1156
  get paged(): T[];
1157
+ private shouldUseLocalDataOperations;
1158
+ private localDataOperationsResult;
379
1159
  get anyFilterable(): boolean;
380
1160
  get startIndex(): number;
381
1161
  get endIndex(): number;
1162
+ get paginationActive(): boolean;
1163
+ resolvedPageable(): NgbDatagridPageableSettings;
1164
+ pagerShowsAt(placement: NgbDatagridPagerPosition): boolean;
1165
+ showPagerInfo(): boolean;
1166
+ showPagerPageSizes(): boolean;
1167
+ pagerButtonCount(): number;
1168
+ pagerPreviousNext(): boolean;
1169
+ pagerType(): NgbDatagridPagerType;
1170
+ hasCustomPagerTemplate(): boolean;
1171
+ pagerResponsive(): boolean;
1172
+ pagerContext(): PagerCtx<Datagrid<T>> & {
1173
+ $implicit: PagerCtx<Datagrid<T>>;
1174
+ };
1175
+ dataState(): NgbDataGridState;
1176
+ private emitDataStateChange;
1177
+ private syncFromDataState;
1178
+ /** Page-size options for the footer dropdown (includes [pageSize] when not listed in pageSizes). */
1179
+ get resolvedPageSizeOptions(): number[];
382
1180
  get shouldEnableScroll(): boolean;
1181
+ onBodyHorizontalScroll(): void;
383
1182
  get isHeaderSticky(): boolean;
384
1183
  get isFooterSticky(): boolean;
385
1184
  get detailColspan(): number;
1185
+ isColumnPinned(col: ColumnDef<T>): boolean;
1186
+ columnPinnedSide(col: ColumnDef<T>): 'start' | 'end' | null;
1187
+ private columnOrderGroup;
1188
+ resolvedDir(): 'ltr' | 'rtl' | null;
1189
+ isRtl(): boolean;
1190
+ hasPinnedColumns(): boolean;
1191
+ shouldPinLeadingUtilityColumns(): boolean;
1192
+ utilityColumnWidth(kind: UtilityColumnKind): number;
1193
+ resolvedEditMode(): NgbEditMode;
1194
+ isIncellEditMode(): boolean;
1195
+ isExternalEditMode(): boolean;
1196
+ isToolbarEditMode(): boolean;
1197
+ showEditingToolbar(): boolean;
1198
+ showRowEditAction(): boolean;
1199
+ showRowDeleteAction(): boolean;
1200
+ showActionsColumn(): boolean;
1201
+ get externalEditableColumns(): ColumnDef<T>[];
1202
+ isCellInEditMode(pagedIndex: number, col: ColumnDef<T>): boolean;
1203
+ onCellClick(ev: MouseEvent, pagedIndex: number, col: ColumnDef<T>): void;
1204
+ onCellKeydown(ev: KeyboardEvent, pagedIndex: number, col: ColumnDef<T>, colIndex: number): void;
1205
+ startIncellEdit(pagedIndex: number, field: string): void;
1206
+ private focusInlineEditor;
1207
+ commitIncellEdit(close?: boolean): boolean;
1208
+ cancelIncellEdit(): void;
1209
+ getSingleSelectedPagedIndex(): number | null;
1210
+ editSelectedRow(): void;
1211
+ deleteSelectedRows(): void;
1212
+ openExternalEdit(pagedIndex: number): void;
1213
+ openExternalAdd(): void;
1214
+ saveExternalEdit(): void;
1215
+ cancelExternalEdit(): void;
1216
+ private closeExternalEdit;
1217
+ private focusExternalDialogFirstField;
1218
+ utilityLeadingWidth(): number;
1219
+ columnWidth(col: ColumnDef<T>): number;
1220
+ isColumnResizable(col: ColumnDef<T>): boolean;
1221
+ startColumnResize(event: MouseEvent, col: ColumnDef<T>): void;
1222
+ onDocumentMouseMove(event: MouseEvent): void;
1223
+ onDocumentMouseUp(): void;
1224
+ private syncResizableColgroups;
1225
+ autoFitColumnsToGrid(): void;
1226
+ private clampColumnWidth;
1227
+ private gridViewportWidth;
1228
+ private nonDataColumnWidth;
1229
+ private syncColumnWidthOverrides;
1230
+ get tablePixelWidth(): number | null;
1231
+ utilityStickyOffset(kind: Exclude<UtilityColumnKind, 'actions'>): number | null;
1232
+ columnStartOffset(col: ColumnDef<T>): number | null;
1233
+ columnEndOffset(col: ColumnDef<T>): number | null;
1234
+ columnPinnedClass(col: ColumnDef<T>): string | null;
386
1235
  get tableClassList(): string[];
387
1236
  get responsiveWrapperClasses(): string[];
1237
+ get densityMode(): 'comfortable' | 'compact';
1238
+ isStackedLayout(): boolean;
1239
+ isStackedCardsLayout(): boolean;
1240
+ stackedGroupFor(col: ColumnDef<T>): 'start' | 'center' | 'end';
1241
+ stackedColumnsInGroup(group: 'start' | 'center' | 'end'): ColumnDef<T>[];
1242
+ stackedCardGroups(): Array<'start' | 'center' | 'end'>;
1243
+ visibleColumnIndex(col: ColumnDef<T>): number;
1244
+ stackedCardColspan(): number;
1245
+ clearSorting(emit?: boolean): void;
1246
+ setColumnHidden(field: string, hidden: boolean): void;
1247
+ applyColumnVisibility(visibility: Record<string, boolean>): void;
1248
+ get zebraStripesEnabled(): boolean;
1249
+ getSelectedCount(): number;
1250
+ hasSelectedRows(): boolean;
1251
+ hasSingleSelectedRow(): boolean;
1252
+ resolveHeaderClass(col: ColumnDef<T>): string | string[] | Record<string, boolean> | null;
1253
+ resolveHeaderStyle(col: ColumnDef<T>): Record<string, string | number> | null;
1254
+ resolveCellClass(row: T, rowIndex: number, col: ColumnDef<T>): string | string[] | Record<string, boolean> | null;
1255
+ resolveCellStyle(row: T, rowIndex: number, col: ColumnDef<T>): Record<string, string | number> | null;
1256
+ resolveRowClass(row: T, rowIndex: number): string | string[] | Record<string, boolean> | null;
1257
+ resolveRowStyle(row: T, rowIndex: number): Record<string, string | number> | null;
388
1258
  updateHighlightCache(): void;
389
1259
  headerText(col: ColumnDef<T>): string;
390
1260
  headerTitle(col: ColumnDef<T>): string;
391
1261
  cellTitle(row: T, col: ColumnDef<T>): string;
392
1262
  columnFilterAriaLabel(col: ColumnDef<T>): string;
393
1263
  inputAriaLabel(col: ColumnDef<T>): string;
1264
+ reorderColumnAriaLabel(col: ColumnDef<T>): string;
1265
+ resizeColumnAriaLabel(col: ColumnDef<T>): string;
1266
+ openFilterMenuAriaLabel(col: ColumnDef<T>): string;
1267
+ clearFilterAriaLabel(col: ColumnDef<T>): string;
1268
+ filterOperatorAriaLabel(col: ColumnDef<T>): string;
1269
+ editRowAriaLabel(index: number): string;
1270
+ deleteRowAriaLabel(index: number): string;
1271
+ stickyRowToggleAriaLabel(): string;
1272
+ booleanDisplayLabel(value: boolean): string;
1273
+ emptyStateLabel(): string;
1274
+ paginationRangeLabel(): string;
1275
+ rowsPerPageLabel(): string;
1276
+ ariaRowCount(): number;
1277
+ ariaColCount(): number;
1278
+ isCellFocused(rowIndex: number, colIndex: number): boolean;
1279
+ cellTabIndex(rowIndex: number, colIndex: number): number | null;
1280
+ focusCell(rowIndex: number, colIndex: number): void;
1281
+ onDataCellFocus(rowIndex: number, colIndex: number): void;
1282
+ onDataCellKeydown(ev: KeyboardEvent, rowIndex: number, colIndex: number, col: ColumnDef<T>): void;
1283
+ private openRowFilterMenuForColumn;
1284
+ private isRowFilterEnabledForColumn;
1285
+ private focusFocusedCellElement;
1286
+ announceStatus(message: string): void;
1287
+ private labelTemplate;
1288
+ private formatLocaleNumber;
394
1289
  ariaSortFor(field: Extract<keyof T, string>): 'ascending' | 'descending' | 'none';
395
1290
  sortButtonAriaLabel(col: ColumnDef<T>): string;
396
1291
  exportAriaLabel(kind: 'pdf' | 'excel'): string;
@@ -400,19 +1295,31 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
400
1295
  private cellTplQ;
401
1296
  private editTplQ;
402
1297
  private filterTplQ;
1298
+ private filterMenuTplQ;
403
1299
  private globalTplQ;
1300
+ private gridColumnQ;
404
1301
  /** Internal lookup maps */
405
1302
  cellTpls: Record<string, NgbCellTemplate<T>>;
406
1303
  editTpls: Record<string, NgbEditorTemplate<T>>;
407
1304
  filterTpls: Record<string, NgbFilterTemplate<T>>;
1305
+ filterMenuTpls: Record<string, NgbFilterMenuTemplate<T>>;
408
1306
  globalTpl: NgbGlobalFilterTemplate | null;
1307
+ private warnedDeclarativeColumns;
409
1308
  private toRecord;
410
1309
  export(kind: 'pdf' | 'excel'): Promise<void>;
411
1310
  private resolveDataset;
412
1311
  ngAfterContentInit(): void;
413
1312
  ngOnChanges(ch: SimpleChanges): void;
1313
+ private resetEditingState;
414
1314
  private getRowId;
1315
+ /** Apply selection ids and refresh checkbox UI (for programmatic / OnPush sync). */
1316
+ setSelectionIds(ids: Iterable<any>, options?: {
1317
+ emit?: boolean;
1318
+ }): void;
415
1319
  private getEditService;
1320
+ isCellEditable(col: ColumnDef<T>, row: T, isNew: boolean): boolean;
1321
+ isRowReorderEnabled(): boolean;
1322
+ hasActiveFilters(): boolean;
416
1323
  startAdd(): void;
417
1324
  saveAdd(): void;
418
1325
  cancelAdd(): void;
@@ -430,13 +1337,25 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
430
1337
  toggleSort(field: Extract<keyof T, string>): void;
431
1338
  onGlobalFilterChange(): void;
432
1339
  onColumnFilterChange(): void;
1340
+ onDocumentClick(event: MouseEvent): void;
1341
+ canCancelToolbarEdit(): boolean;
1342
+ isToolbarEditActive(): boolean;
1343
+ isToolbarSaveDisabled(): boolean;
1344
+ saveToolbarEdit(): void;
1345
+ cancelToolbarEdit(): void;
1346
+ private ariaUtilityColumns;
1347
+ ariaColIndexForUtility(kind: Exclude<UtilityColumnKind, 'actions'>): number | null;
1348
+ ariaColIndexForDataColumn(visibleColumnIndex: number): number;
1349
+ ariaColIndexForActions(): number;
1350
+ onEscapeKey(): void;
433
1351
  onPageChange(p: number): void;
434
1352
  onPageSizeChange(): void;
435
1353
  toggleExpand(i: number): void;
436
1354
  isExpanded(i: number): boolean;
437
1355
  onRowClick(ev: MouseEvent, i: number): void;
438
1356
  onPage(p: number): void;
439
- onPageSize(sz: number): void;
1357
+ onPageSize(sz: number | string): void;
1358
+ onRowDrop(event: NgbDndDropEvent<T>): void;
440
1359
  asBool(v: any): boolean;
441
1360
  triggerExport(kind: 'pdf' | 'excel'): void;
442
1361
  isResponsiveEnabled(): boolean;
@@ -444,10 +1363,12 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
444
1363
  toggleStickyRow(pagedIndex: number): void;
445
1364
  stickyIcon(row: T, pagedIndex: number): string;
446
1365
  stickyTop(row: T, pagedIndex: number): number | null;
1366
+ private measuredStickyRowHeight;
447
1367
  get stickyRowsEnabled(): boolean;
448
1368
  get stickyHeaderEnabled(): boolean;
449
1369
  get stickyFooterEnabled(): boolean;
450
1370
  isSelectionEnabled(): boolean;
1371
+ showSelectionColumn(): boolean;
451
1372
  isCheckboxOnly(): boolean;
452
1373
  isSelectionDisabled(row: T, pagedIndex: number): boolean;
453
1374
  isRowSelected(row: T, pagedIndex: number): boolean;
@@ -460,7 +1381,61 @@ declare class Datagrid<T = any> implements AfterContentInit, OnChanges {
460
1381
  rowSelectionLabel(index: number): string;
461
1382
  onRowSelect(ev: MouseEvent, pagedIndex: number): void;
462
1383
  static ɵfac: i0.ɵɵFactoryDeclaration<Datagrid<any>, never>;
463
- static ɵcmp: i0.ɵɵComponentDeclaration<Datagrid<any>, "ngb-datagrid", never, { "columns": { "alias": "columns"; "required": false; }; "data": { "alias": "data"; "required": false; }; "enableSorting": { "alias": "enableSorting"; "required": false; }; "enableFiltering": { "alias": "enableFiltering"; "required": false; }; "enableGlobalFilter": { "alias": "enableGlobalFilter"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "enableEdit": { "alias": "enableEdit"; "required": false; }; "enableDelete": { "alias": "enableDelete"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "enableAdd": { "alias": "enableAdd"; "required": false; }; "addButtonAriaLabel": { "alias": "addButtonAriaLabel"; "required": false; }; "addButtonText": { "alias": "addButtonText"; "required": false; }; "stickyRows": { "alias": "stickyRows"; "required": false; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; }; "stickyFooter": { "alias": "stickyFooter"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "stickyRowHeight": { "alias": "stickyRowHeight"; "required": false; }; "stickyHeaderHeight": { "alias": "stickyHeaderHeight"; "required": false; }; "stickyFooterHeight": { "alias": "stickyFooterHeight"; "required": false; }; "tableOptions": { "alias": "tableOptions"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; }; "selectionKeyMode": { "alias": "selectionKeyMode"; "required": false; }; "selectAllEnabled": { "alias": "selectAllEnabled"; "required": false; }; "selectionA11yLabels": { "alias": "selectionA11yLabels"; "required": false; }; "selectionDisabledFn": { "alias": "selectionDisabledFn"; "required": false; }; "highlightedIndex": { "alias": "highlightedIndex"; "required": false; }; "highlightRowKey": { "alias": "highlightRowKey"; "required": false; }; "highlightColKey": { "alias": "highlightColKey"; "required": false; }; "globalFilterAriaLabel": { "alias": "globalFilterAriaLabel"; "required": false; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; }; "collapseRowAriaLabel": { "alias": "collapseRowAriaLabel"; "required": false; }; "exportPdfAriaLabel": { "alias": "exportPdfAriaLabel"; "required": false; }; "exportExcelAriaLabel": { "alias": "exportExcelAriaLabel"; "required": false; }; "newRowDefaults": { "alias": "newRowDefaults"; "required": false; }; "strictEmail": { "alias": "strictEmail"; "required": false; }; "editOnRowClick": { "alias": "editOnRowClick"; "required": false; }; "singleExpand": { "alias": "singleExpand"; "required": false; }; "exportOptions": { "alias": "exportOptions"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "editService": { "alias": "editService"; "required": false; }; "dataProviderAll": { "alias": "dataProviderAll"; "required": false; }; "dataProviderSelection": { "alias": "dataProviderSelection"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "rowAdd": "rowAdd"; "rowEdit": "rowEdit"; "rowSave": "rowSave"; "rowCancel": "rowCancel"; "rowDelete": "rowDelete"; "sortChange": "sortChange"; "filtersChange": "filtersChange"; "pageChange": "pageChange"; "selectionChange": "selectionChange"; }, ["exportButtonDir", "rowDetailTpl", "cellTplQ", "editTplQ", "filterTplQ", "globalTplQ"], never, true, never>;
1384
+ static ɵcmp: i0.ɵɵComponentDeclaration<Datagrid<any>, "ngb-datagrid", never, { "columns": { "alias": "columns"; "required": false; }; "data": { "alias": "data"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "total": { "alias": "total"; "required": false; }; "enableSorting": { "alias": "enableSorting"; "required": false; }; "enableFiltering": { "alias": "enableFiltering"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "enableGlobalFilter": { "alias": "enableGlobalFilter"; "required": false; }; "filterMode": { "alias": "filterMode"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "filterOperators": { "alias": "filterOperators"; "required": false; }; "filterManual": { "alias": "filterManual"; "required": false; }; "externalFiltering": { "alias": "externalFiltering"; "required": false; }; "dataOperations": { "alias": "dataOperations"; "required": false; }; "state": { "alias": "state"; "required": false; }; "multiCheckboxFilterOptions": { "alias": "multiCheckboxFilterOptions"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "pageable": { "alias": "pageable"; "required": false; }; "enableEdit": { "alias": "enableEdit"; "required": false; }; "enableDelete": { "alias": "enableDelete"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "enableAdd": { "alias": "enableAdd"; "required": false; }; "addButtonAriaLabel": { "alias": "addButtonAriaLabel"; "required": false; }; "addButtonText": { "alias": "addButtonText"; "required": false; }; "stickyRows": { "alias": "stickyRows"; "required": false; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; }; "stickyFooter": { "alias": "stickyFooter"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "stickyRowHeight": { "alias": "stickyRowHeight"; "required": false; }; "stickyHeaderHeight": { "alias": "stickyHeaderHeight"; "required": false; }; "stickyFooterHeight": { "alias": "stickyFooterHeight"; "required": false; }; "tableOptions": { "alias": "tableOptions"; "required": false; }; "dataLayoutMode": { "alias": "dataLayoutMode"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; }; "selectionKeyMode": { "alias": "selectionKeyMode"; "required": false; }; "selectAllEnabled": { "alias": "selectAllEnabled"; "required": false; }; "selectionA11yLabels": { "alias": "selectionA11yLabels"; "required": false; }; "selectionDisabledFn": { "alias": "selectionDisabledFn"; "required": false; }; "highlightedIndex": { "alias": "highlightedIndex"; "required": false; }; "highlightRowKey": { "alias": "highlightRowKey"; "required": false; }; "highlightColKey": { "alias": "highlightColKey"; "required": false; }; "globalFilterAriaLabel": { "alias": "globalFilterAriaLabel"; "required": false; }; "globalFilterPlaceholder": { "alias": "globalFilterPlaceholder"; "required": false; }; "searchHighlightTerm": { "alias": "searchHighlightTerm"; "required": false; }; "searchHighlightFields": { "alias": "searchHighlightFields"; "required": false; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; }; "collapseRowAriaLabel": { "alias": "collapseRowAriaLabel"; "required": false; }; "exportPdfAriaLabel": { "alias": "exportPdfAriaLabel"; "required": false; }; "exportExcelAriaLabel": { "alias": "exportExcelAriaLabel"; "required": false; }; "newRowDefaults": { "alias": "newRowDefaults"; "required": false; }; "strictEmail": { "alias": "strictEmail"; "required": false; }; "editOnRowClick": { "alias": "editOnRowClick"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "toolbarEditHint": { "alias": "toolbarEditHint"; "required": false; }; "singleExpand": { "alias": "singleExpand"; "required": false; }; "exportOptions": { "alias": "exportOptions"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "rowStyle": { "alias": "rowStyle"; "required": false; }; "rowReorderable": { "alias": "rowReorderable"; "required": false; }; "columnReorderable": { "alias": "columnReorderable"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "actionDisplay": { "alias": "actionDisplay"; "required": false; }; "showStickyRowBadge": { "alias": "showStickyRowBadge"; "required": false; }; "stickyRowBadgeField": { "alias": "stickyRowBadgeField"; "required": false; }; "stickyRowBadgeLabel": { "alias": "stickyRowBadgeLabel"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "keyboardNavigation": { "alias": "keyboardNavigation"; "required": false; }; "editService": { "alias": "editService"; "required": false; }; "dataProviderAll": { "alias": "dataProviderAll"; "required": false; }; "dataProviderSelection": { "alias": "dataProviderSelection"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "rowAdd": "rowAdd"; "rowEdit": "rowEdit"; "rowSave": "rowSave"; "rowCancel": "rowCancel"; "rowDelete": "rowDelete"; "sortChange": "sortChange"; "filterChange": "filterChange"; "filtersChange": "filtersChange"; "pageChange": "pageChange"; "dataStateChange": "dataStateChange"; "selectionChange": "selectionChange"; "rowReorder": "rowReorder"; "columnReorder": "columnReorder"; }, ["exportButtonDir", "rowDetailTpl", "pagerTpl", "cellTplQ", "editTplQ", "filterTplQ", "filterMenuTplQ", "globalTplQ", "gridColumnQ"], ["ngb-datagrid-layout-toolbar"], true, never>;
1385
+ }
1386
+
1387
+ /** Injection token for the active `ngb-datagrid` instance (layout toolbar tools). */
1388
+ declare const NGB_DATAGRID_HOST: InjectionToken<unknown>;
1389
+
1390
+ type NgbDatagridFloatingPanelPlacement = 'menu' | 'operator';
1391
+ /**
1392
+ * Popup-style overlay: anchors to a trigger, portals to document.body,
1393
+ * and uses viewport-fixed coordinates.
1394
+ */
1395
+ declare class NgbDatagridFloatingPanelDirective implements OnChanges, AfterViewInit, OnDestroy {
1396
+ private readonly el;
1397
+ private readonly renderer;
1398
+ private readonly document;
1399
+ private readonly cdr;
1400
+ ngbDatagridFloatingPanelAnchor?: HTMLElement | null;
1401
+ ngbDatagridFloatingPanelPlacement: NgbDatagridFloatingPanelPlacement;
1402
+ readonly hostPosition = "fixed";
1403
+ readonly hostZIndex = 1200;
1404
+ readonly hostMargin = "0";
1405
+ readonly hostTransform = "none";
1406
+ panelTop: number;
1407
+ panelLeft: number;
1408
+ private active;
1409
+ private portaled;
1410
+ private originalParent;
1411
+ private originalNextSibling;
1412
+ private scrollListeners;
1413
+ private resizeObserver;
1414
+ private rafId;
1415
+ private readonly scheduleUpdate;
1416
+ ngOnChanges(changes: SimpleChanges): void;
1417
+ ngAfterViewInit(): void;
1418
+ private tryActivate;
1419
+ ngOnDestroy(): void;
1420
+ /** Called when anchor/layout may have changed after the panel opens. */
1421
+ reposition(): void;
1422
+ private activate;
1423
+ private deactivate;
1424
+ private portalToBody;
1425
+ private restoreFromBody;
1426
+ private schedulePositionPasses;
1427
+ private attachObservers;
1428
+ private detachObservers;
1429
+ private resolveAnchor;
1430
+ /** Portaled panels must carry the grid theme so token SCSS applies on document.body. */
1431
+ private syncThemeFromGrid;
1432
+ private anchorRect;
1433
+ private updatePosition;
1434
+ private applyPosition;
1435
+ private placementWidth;
1436
+ private clearPositionStyles;
1437
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridFloatingPanelDirective, never>;
1438
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDatagridFloatingPanelDirective, "[ngbDatagridFloatingPanel]", never, { "ngbDatagridFloatingPanelAnchor": { "alias": "ngbDatagridFloatingPanelAnchor"; "required": false; }; "ngbDatagridFloatingPanelPlacement": { "alias": "ngbDatagridFloatingPanelPlacement"; "required": false; }; }, {}, never, never, true, never>;
464
1439
  }
465
1440
 
466
1441
  interface PdfExportPayload {
@@ -497,10 +1472,528 @@ declare class JsPdfAdapter implements PdfExportAdapter {
497
1472
  export({ fileName, columns, rows, options }: PdfExportPayload): Promise<void>;
498
1473
  }
499
1474
 
500
- declare class XlsxAdapter implements ExcelExportAdapter {
501
- export({ fileName, sheetName, columns, rows }: ExcelExportPayload): Promise<void>;
1475
+ declare class BrowserExcelExportAdapter implements ExcelExportAdapter {
1476
+ export(payload: ExcelExportPayload): Promise<void>;
1477
+ private createSpreadsheetXml;
1478
+ private createRow;
1479
+ private createCell;
1480
+ private safeSheetName;
1481
+ private baseFileName;
1482
+ private escapeXml;
1483
+ }
1484
+
1485
+ declare class NgbGridColumnDirective<T = any> implements ColumnDef<T> {
1486
+ field: Extract<keyof T, string>;
1487
+ header: string;
1488
+ title?: string;
1489
+ cellTitle?: string | ((row: T) => string);
1490
+ sortable?: boolean;
1491
+ filterable?: boolean;
1492
+ filterType?: NgbColumnFilterType;
1493
+ defaultFilterOperator?: NgbFilterOperator;
1494
+ allowedFilterOperators?: NgbFilterOperator[];
1495
+ showFilterMenu?: boolean;
1496
+ showFilterRow?: boolean;
1497
+ showFilterOperator?: boolean;
1498
+ editable?: boolean;
1499
+ type?: ColumnType;
1500
+ options?: Array<{
1501
+ label: string;
1502
+ value: any;
1503
+ }>;
1504
+ width?: number;
1505
+ stackedGroup?: 'start' | 'center' | 'end';
1506
+ required?: boolean;
1507
+ hidden?: boolean;
1508
+ sticky?: boolean | 'start' | 'end';
1509
+ locked?: boolean;
1510
+ reorderable?: boolean;
1511
+ resizable?: boolean;
1512
+ minResizableWidth?: number;
1513
+ maxResizableWidth?: number;
1514
+ toColumnDef(): ColumnDef<T>;
1515
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbGridColumnDirective<any>, never>;
1516
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbGridColumnDirective<any>, "ngb-grid-column", never, { "field": { "alias": "field"; "required": false; }; "header": { "alias": "header"; "required": false; }; "title": { "alias": "title"; "required": false; }; "cellTitle": { "alias": "cellTitle"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "filterType": { "alias": "filterType"; "required": false; }; "defaultFilterOperator": { "alias": "defaultFilterOperator"; "required": false; }; "allowedFilterOperators": { "alias": "allowedFilterOperators"; "required": false; }; "showFilterMenu": { "alias": "showFilterMenu"; "required": false; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; }; "showFilterOperator": { "alias": "showFilterOperator"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "type": { "alias": "type"; "required": false; }; "options": { "alias": "options"; "required": false; }; "width": { "alias": "width"; "required": false; }; "stackedGroup": { "alias": "stackedGroup"; "required": false; }; "required": { "alias": "required"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "locked": { "alias": "locked"; "required": false; }; "reorderable": { "alias": "reorderable"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "minResizableWidth": { "alias": "minResizableWidth"; "required": false; }; "maxResizableWidth": { "alias": "maxResizableWidth"; "required": false; }; }, {}, never, never, true, never>;
1517
+ }
1518
+ declare const DATAGRID_COLUMN_DIRECTIVES: (typeof NgbGridColumnDirective)[];
1519
+
1520
+ type NgbDatagridButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'neutral' | 'icon';
1521
+ declare class NgbDatagridButtonDirective {
1522
+ variant: NgbDatagridButtonVariant;
1523
+ get toolbarButtonClass(): boolean;
1524
+ get toolbarPrimary(): boolean;
1525
+ get toolbarSecondary(): boolean;
1526
+ get rowActionClass(): boolean;
1527
+ get rowSuccess(): boolean;
1528
+ get rowDanger(): boolean;
1529
+ get rowNeutral(): boolean;
1530
+ get iconButtonClass(): boolean;
1531
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridButtonDirective, never>;
1532
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDatagridButtonDirective, "button[ngbDatagridButton], a[ngbDatagridButton]", never, { "variant": { "alias": "ngbDatagridButton"; "required": false; }; }, {}, never, never, true, never>;
1533
+ }
1534
+
1535
+ declare class NgbDatagridControlDirective {
1536
+ ngbDatagridControlMode: 'filter' | 'edit';
1537
+ get filterClass(): boolean;
1538
+ get editClass(): boolean;
1539
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridControlDirective, never>;
1540
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDatagridControlDirective, "input[ngbDatagridControl], select[ngbDatagridControl], textarea[ngbDatagridControl]", never, { "ngbDatagridControlMode": { "alias": "ngbDatagridControlMode"; "required": false; }; }, {}, never, never, true, never>;
1541
+ }
1542
+
1543
+ declare class NgbDatagridFieldShellComponent {
1544
+ icon?: string;
1545
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridFieldShellComponent, never>;
1546
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridFieldShellComponent, "ngb-datagrid-field-shell", never, { "icon": { "alias": "icon"; "required": false; }; }, {}, never, ["*"], true, never>;
1547
+ }
1548
+
1549
+ declare class NgbDatagridSurfaceCardComponent {
1550
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridSurfaceCardComponent, never>;
1551
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridSurfaceCardComponent, "ngb-datagrid-surface-card", never, {}, {}, never, ["*"], true, never>;
1552
+ }
1553
+
1554
+ declare class NgbDatagridLayoutToolbarComponent implements AfterContentInit, OnChanges {
1555
+ /**
1556
+ * Grid instance for toolbar tools. Child tools inherit this via `bindHostGrid`
1557
+ * and do not need their own `[grid]` binding.
1558
+ */
1559
+ grid: Datagrid<any>;
1560
+ ariaLabel: string;
1561
+ private filterTools?;
1562
+ private sortTools?;
1563
+ private columnTools?;
1564
+ ngAfterContentInit(): void;
1565
+ ngOnChanges(changes: SimpleChanges): void;
1566
+ private syncToolHosts;
1567
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridLayoutToolbarComponent, never>;
1568
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridLayoutToolbarComponent, "ngb-datagrid-layout-toolbar", never, { "grid": { "alias": "grid"; "required": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, ["filterTools", "sortTools", "columnTools"], ["*"], true, never>;
1569
+ }
1570
+ declare class NgbDatagridLayoutToolbarSpacerComponent {
1571
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridLayoutToolbarSpacerComponent, never>;
1572
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridLayoutToolbarSpacerComponent, "ngb-datagrid-layout-toolbar-spacer", never, {}, {}, never, never, true, never>;
1573
+ }
1574
+
1575
+ /** Layout-toolbar tools receive the grid from the toolbar host. */
1576
+ interface NgbDatagridToolHost {
1577
+ bindHostGrid(grid: Datagrid<any>): void;
1578
+ }
1579
+
1580
+ declare class NgbDatagridFilterToolComponent implements NgbDatagridToolHost, OnInit, OnDestroy {
1581
+ private readonly cdr;
1582
+ private readonly coordinator;
1583
+ /** Optional override when the tool is not inside `ngb-datagrid-layout-toolbar`. */
1584
+ grid?: Datagrid<any>;
1585
+ label: string;
1586
+ private toolbarGrid?;
1587
+ open: boolean;
1588
+ expandedField: string | null;
1589
+ ngOnInit(): void;
1590
+ ngOnDestroy(): void;
1591
+ bindHostGrid(grid: Datagrid<any>): void;
1592
+ private resolvedGrid;
1593
+ get activeGrid(): Datagrid<any>;
1594
+ get filterableColumns(): ColumnDef<any>[];
1595
+ menuConditions(col: ColumnDef<any>): NgbMenuFilterConditionDraft[];
1596
+ togglePanel(event: MouseEvent): void;
1597
+ private closePanel;
1598
+ toggleSection(field: string): void;
1599
+ operatorsFor(col: ColumnDef<any>): NgbFilterOperator[];
1600
+ applyColumn(col: ColumnDef<any>): void;
1601
+ clearColumn(col: ColumnDef<any>): void;
1602
+ clearAll(): void;
1603
+ closeOnOutsideClick(event: MouseEvent): void;
1604
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridFilterToolComponent, never>;
1605
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridFilterToolComponent, "ngb-datagrid-filter-tool", never, { "grid": { "alias": "grid"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
1606
+ }
1607
+
1608
+ declare class NgbDatagridSortToolComponent implements NgbDatagridToolHost, OnInit, OnDestroy {
1609
+ private readonly cdr;
1610
+ private readonly coordinator;
1611
+ grid?: Datagrid<any>;
1612
+ label: string;
1613
+ private toolbarGrid?;
1614
+ open: boolean;
1615
+ ngOnInit(): void;
1616
+ ngOnDestroy(): void;
1617
+ bindHostGrid(grid: Datagrid<any>): void;
1618
+ private resolvedGrid;
1619
+ get activeGrid(): Datagrid<any>;
1620
+ get sortableColumns(): ColumnDef<any>[];
1621
+ togglePanel(event: MouseEvent): void;
1622
+ private closePanel;
1623
+ toggleSort(col: ColumnDef<any>): void;
1624
+ clearSorting(): void;
1625
+ closeOnOutsideClick(event: MouseEvent): void;
1626
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridSortToolComponent, never>;
1627
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridSortToolComponent, "ngb-datagrid-sort-tool", never, { "grid": { "alias": "grid"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
1628
+ }
1629
+
1630
+ declare class NgbDatagridColumnChooserToolComponent implements OnChanges, OnInit, OnDestroy, NgbDatagridToolHost {
1631
+ private readonly cdr;
1632
+ private readonly coordinator;
1633
+ grid?: Datagrid<any>;
1634
+ label: string;
1635
+ private toolbarGrid?;
1636
+ open: boolean;
1637
+ searchTerm: string;
1638
+ draftVisibility: Record<string, boolean>;
1639
+ bindHostGrid(grid: Datagrid<any>): void;
1640
+ private resolvedGrid;
1641
+ get activeGrid(): Datagrid<any>;
1642
+ get chooserColumns(): _angular_bootstrap_ngbootstrap.ColumnDef<any>[];
1643
+ get filteredColumns(): _angular_bootstrap_ngbootstrap.ColumnDef<any>[];
1644
+ get selectedCount(): number;
1645
+ get allVisible(): boolean;
1646
+ get partiallyVisible(): boolean;
1647
+ ngOnInit(): void;
1648
+ ngOnDestroy(): void;
1649
+ ngOnChanges(): void;
1650
+ togglePanel(event: MouseEvent): void;
1651
+ private closePanel;
1652
+ toggleColumn(field: string): void;
1653
+ toggleAll(): void;
1654
+ apply(): void;
1655
+ resetDraft(mark?: boolean): void;
1656
+ closeOnOutsideClick(event: MouseEvent): void;
1657
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridColumnChooserToolComponent, never>;
1658
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridColumnChooserToolComponent, "ngb-datagrid-column-chooser-tool", never, { "grid": { "alias": "grid"; "required": false; }; "label": { "alias": "label"; "required": false; }; }, {}, never, never, true, never>;
1659
+ }
1660
+
1661
+ type NgbDataChartType = 'bar' | 'line' | 'area' | 'pie' | 'doughnut';
1662
+ type NgbDataAggregate = 'sum' | 'avg' | 'min' | 'max' | 'count';
1663
+ interface NgbDataMetricDef<T = any> {
1664
+ key: string;
1665
+ label: string;
1666
+ accessor: (row: T) => number;
1667
+ color?: string;
1668
+ }
1669
+ interface NgbDataDimensionDef<T = any> {
1670
+ key: string;
1671
+ label: string;
1672
+ accessor: (row: T) => string;
1673
+ }
1674
+ interface NgbDataChartSeries {
1675
+ key: string;
1676
+ label: string;
1677
+ data: number[];
1678
+ color?: string;
1679
+ }
1680
+ interface NgbDataChartConfig {
1681
+ type: NgbDataChartType;
1682
+ labels: string[];
1683
+ series: NgbDataChartSeries[];
1684
+ title?: string;
1685
+ height?: number;
1686
+ emptyState?: string;
1687
+ showLegend?: boolean;
1688
+ legendPosition?: 'top' | 'bottom';
1689
+ stacked?: boolean;
1690
+ valueFormatter?: (value: number) => string;
1691
+ }
1692
+ interface NgbFullGridChartOptions<T = any> {
1693
+ dimension: NgbDataDimensionDef<T>;
1694
+ metric: NgbDataMetricDef<T>;
1695
+ aggregate?: NgbDataAggregate;
1696
+ chartType?: NgbDataChartType;
1697
+ title?: string;
1698
+ limit?: number;
1699
+ sort?: 'asc' | 'desc' | null;
1700
+ valueFormatter?: (value: number) => string;
1701
+ }
1702
+ interface NgbRowSelectionChartOptions<T = any> {
1703
+ metrics: NgbDataMetricDef<T>[];
1704
+ seriesLabel?: (row: T, index: number) => string;
1705
+ chartType?: NgbDataChartType;
1706
+ title?: string;
1707
+ valueFormatter?: (value: number) => string;
1708
+ }
1709
+ interface NgbColumnSelectionChartOptions<T = any> {
1710
+ dimension: NgbDataDimensionDef<T>;
1711
+ metrics: NgbDataMetricDef<T>[];
1712
+ chartType?: NgbDataChartType;
1713
+ title?: string;
1714
+ valueFormatter?: (value: number) => string;
1715
+ }
1716
+ interface NgbSparklinePoint {
1717
+ x: number;
1718
+ y: number;
1719
+ }
1720
+
1721
+ declare const ngbChartPalette: (index: number) => string;
1722
+ declare const ngbAggregateValues: (values: number[], aggregate?: NgbDataAggregate) => number;
1723
+ declare const ngbBuildRowSelectionChartData: <T>(rows: T[], options: NgbRowSelectionChartOptions<T>) => NgbDataChartConfig;
1724
+ declare const ngbBuildColumnSelectionChartData: <T>(rows: T[], options: NgbColumnSelectionChartOptions<T>) => NgbDataChartConfig;
1725
+ declare const ngbBuildFullGridChartData: <T>(rows: T[], options: NgbFullGridChartOptions<T>) => NgbDataChartConfig;
1726
+ declare const ngbBuildSparklinePoints: (values: number[], width?: number, height?: number, padding?: number) => NgbSparklinePoint[];
1727
+ declare const ngbBuildChartJsConfig: (config: NgbDataChartConfig, height?: number) => ChartConfiguration;
1728
+
1729
+ declare class NgbDataChartComponent implements AfterViewInit, OnChanges, OnDestroy {
1730
+ config: NgbDataChartConfig | null;
1731
+ ariaLabel: string;
1732
+ emptyState: string;
1733
+ private canvas?;
1734
+ private chart?;
1735
+ private chartConstructor?;
1736
+ private viewReady;
1737
+ private configSignature;
1738
+ private rendering;
1739
+ get chartHeight(): number;
1740
+ ngAfterViewInit(): void;
1741
+ ngOnChanges(changes: SimpleChanges): void;
1742
+ ngOnDestroy(): void;
1743
+ hasData(): boolean;
1744
+ private renderChart;
1745
+ private loadChartConstructor;
1746
+ private buildConfigSignature;
1747
+ private destroyChart;
1748
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDataChartComponent, never>;
1749
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDataChartComponent, "ngb-data-chart", never, { "config": { "alias": "config"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "emptyState": { "alias": "emptyState"; "required": false; }; }, {}, never, never, true, never>;
1750
+ }
1751
+
1752
+ declare class NgbDataSparklineComponent implements OnChanges {
1753
+ values: number[];
1754
+ /** Cached series used by getters so template bindings stay stable between checks. */
1755
+ series: number[];
1756
+ width: number;
1757
+ height: number;
1758
+ strokeWidth: number;
1759
+ positiveColor: string;
1760
+ negativeColor: string;
1761
+ neutralColor: string;
1762
+ color: string | null;
1763
+ showEndDot: boolean;
1764
+ endDotRadius: number;
1765
+ ariaLabel: string;
1766
+ ngOnChanges(changes: SimpleChanges): void;
1767
+ get points(): NgbSparklinePoint[];
1768
+ get path(): string;
1769
+ get strokeColor(): string;
1770
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDataSparklineComponent, never>;
1771
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDataSparklineComponent, "ngb-data-sparkline", never, { "values": { "alias": "values"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; }; "positiveColor": { "alias": "positiveColor"; "required": false; }; "negativeColor": { "alias": "negativeColor"; "required": false; }; "neutralColor": { "alias": "neutralColor"; "required": false; }; "color": { "alias": "color"; "required": false; }; "showEndDot": { "alias": "showEndDot"; "required": false; }; "endDotRadius": { "alias": "endDotRadius"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, never, true, never>;
1772
+ }
1773
+
1774
+ type NgbGridChartMode = 'row-selection' | 'column-selection' | 'full-grid' | 'sparklines';
1775
+ interface NgbGridChartSparklineOptions<T = any> {
1776
+ /** Field key rendered with an inline sparkline. */
1777
+ field: string;
1778
+ values: (row: T) => number[];
1779
+ width?: number;
1780
+ height?: number;
1781
+ trendColor?: boolean;
1782
+ }
1783
+ interface NgbGridChartConfig<T = any> {
1784
+ mode: NgbGridChartMode;
1785
+ /** Tabular rows used by the grid and chart builders. */
1786
+ rows: T[];
1787
+ /** Primary label column (e.g. product name). */
1788
+ dimension: NgbDataDimensionDef<T>;
1789
+ /** Optional secondary line under the dimension label (e.g. category). */
1790
+ subDimension?: NgbDataDimensionDef<T>;
1791
+ /** Metrics available for charts / sparklines. */
1792
+ metrics: NgbDataMetricDef<T>[];
1793
+ /** Metrics plotted for row-selection mode (defaults to all metrics). */
1794
+ rowSelectionMetrics?: NgbDataMetricDef<T>[];
1795
+ /** Keys of metrics enabled in column-selection mode. */
1796
+ selectedMetricKeys?: string[];
1797
+ /** Row ids selected in row-selection mode. */
1798
+ selectedRowIds?: Array<string | number>;
1799
+ chartType?: NgbDataChartType;
1800
+ chartTitle?: string;
1801
+ valueFormatter?: (value: number) => string;
1802
+ /** Full-grid mode options (metric + grouping). */
1803
+ fullGrid?: Partial<NgbFullGridChartOptions<T>>;
1804
+ sparkline?: NgbGridChartSparklineOptions<T>;
1805
+ /** Extra grid columns appended after metric columns (e.g. growth %). */
1806
+ trailingColumns?: Array<{
1807
+ field: string;
1808
+ header: string;
1809
+ type?: 'text' | 'number';
1810
+ width?: number;
1811
+ }>;
1812
+ }
1813
+
1814
+ interface NgbGridChartSelectionChange<T> {
1815
+ selected: T[];
1816
+ selectedRowIds: Array<string | number>;
1817
+ }
1818
+ declare class NgbGridChartComponent<T = any> implements OnChanges, AfterViewInit, AfterViewChecked {
1819
+ config: NgbGridChartConfig<T>;
1820
+ ariaLabel: string;
1821
+ selectionChange: EventEmitter<NgbGridChartSelectionChange<T>>;
1822
+ private grid?;
1823
+ gridColumns: ColumnDef<T>[];
1824
+ chartConfig: NgbDataChartConfig | null;
1825
+ dimensionTemplate: boolean;
1826
+ sparklineField: string | null;
1827
+ sparklineColumns: ColumnDef<T>[];
1828
+ readonly tableOptions: {
1829
+ responsive: boolean;
1830
+ hoverRows: boolean;
1831
+ zebraStripes: boolean;
1832
+ };
1833
+ readonly rowTrackBy: (index: number, row: T) => string | number;
1834
+ private readonly cdr;
1835
+ private selectedIds;
1836
+ private activeMetricKeys;
1837
+ private lastMode;
1838
+ private lastMetricKeys;
1839
+ private lastChartType;
1840
+ private lastRowIds;
1841
+ private lastSparklineKey;
1842
+ private lastFullGridKey;
1843
+ private selectionSeedPending;
1844
+ private sparklineSeriesByRowId;
1845
+ ngOnChanges(changes: SimpleChanges): void;
1846
+ ngAfterViewInit(): void;
1847
+ ngAfterViewChecked(): void;
1848
+ get chartAriaLabel(): string;
1849
+ sparklineValues(row: T): number[];
1850
+ sparklineColor(row: T): string | null;
1851
+ isRowSelected(row: T): boolean;
1852
+ seriesColor(row: T): string;
1853
+ onGridSelectionChange(event: {
1854
+ selected: T[];
1855
+ }): void;
1856
+ private applyConfigChanges;
1857
+ private rebuildSparklineCache;
1858
+ private syncSelectionFromConfig;
1859
+ private rebuildChartOnly;
1860
+ private selectedRows;
1861
+ private activeMetrics;
1862
+ private rowMetrics;
1863
+ private resolveRowId;
1864
+ private scheduleSeedSelection;
1865
+ private seedGridSelection;
1866
+ private buildRowSelectionColumns;
1867
+ private buildColumnSelectionColumns;
1868
+ private buildSparklineColumns;
1869
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbGridChartComponent<any>, never>;
1870
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbGridChartComponent<any>, "ngb-grid-chart", never, { "config": { "alias": "config"; "required": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "selectionChange": "selectionChange"; }, never, ["[gridChartSummary]", "[gridChartFooter]"], true, never>;
1871
+ }
1872
+
1873
+ interface NgbAdvancedSearchField {
1874
+ field: string;
1875
+ label: string;
1876
+ type?: ColumnType;
1877
+ filterType?: NgbColumnFilterType;
1878
+ defaultFilterOperator?: NgbFilterOperator | '';
1879
+ allowedFilterOperators?: NgbFilterOperator[];
1880
+ }
1881
+ interface NgbAdvancedSearchOperator {
1882
+ value: NgbFilterOperator;
1883
+ label: string;
1884
+ }
1885
+ interface NgbAdvancedSearchRule {
1886
+ field: string;
1887
+ operator: NgbFilterOperator;
1888
+ value: any;
1889
+ }
1890
+ declare class NgbAdvancedSearchComponent {
1891
+ private _fields;
1892
+ private _operators;
1893
+ private fieldConfigCache;
1894
+ private filterTypeCache;
1895
+ private inputTypeCache;
1896
+ private operatorOptionsCache;
1897
+ set fields(value: NgbAdvancedSearchField[] | null | undefined);
1898
+ get fields(): NgbAdvancedSearchField[];
1899
+ set operators(value: NgbAdvancedSearchOperator[] | null | undefined);
1900
+ get operators(): NgbAdvancedSearchOperator[] | null;
1901
+ rules: NgbAdvancedSearchRule[];
1902
+ logic: 'and' | 'or';
1903
+ minRules: number;
1904
+ matchLabel: string;
1905
+ rulesLabel: string;
1906
+ whenLabel: string;
1907
+ addRuleLabel: string;
1908
+ applyLabel: string;
1909
+ removeRuleLabel: string;
1910
+ removeRuleAriaLabel: string;
1911
+ fieldAriaLabel: string;
1912
+ operatorAriaLabel: string;
1913
+ valueAriaLabel: string;
1914
+ valuePlaceholder: string;
1915
+ rulesChange: EventEmitter<NgbAdvancedSearchRule[]>;
1916
+ logicChange: EventEmitter<"and" | "or">;
1917
+ filterChange: EventEmitter<NgbCompositeFilterDescriptor>;
1918
+ setLogic(logic: 'and' | 'or'): void;
1919
+ addRule(): void;
1920
+ removeRule(index: number): void;
1921
+ apply(): void;
1922
+ emitRules(): void;
1923
+ setRuleField(rule: NgbAdvancedSearchRule, field: string): void;
1924
+ setRuleOperator(rule: NgbAdvancedSearchRule, operator: NgbFilterOperator): void;
1925
+ inputType(rule: NgbAdvancedSearchRule): string;
1926
+ operatorRequiresValue(operator: NgbFilterOperator): boolean;
1927
+ operatorOptionsFor(rule: NgbAdvancedSearchRule): NgbAdvancedSearchOperator[];
1928
+ toFilterDescriptor(): NgbCompositeFilterDescriptor;
1929
+ private fieldConfig;
1930
+ private filterTypeForField;
1931
+ private allowedOperatorsForField;
1932
+ private defaultOperatorForField;
1933
+ private rebuildFieldCaches;
1934
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbAdvancedSearchComponent, never>;
1935
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbAdvancedSearchComponent, "ngb-advanced-search", never, { "fields": { "alias": "fields"; "required": false; }; "operators": { "alias": "operators"; "required": false; }; "rules": { "alias": "rules"; "required": false; }; "logic": { "alias": "logic"; "required": false; }; "minRules": { "alias": "minRules"; "required": false; }; "matchLabel": { "alias": "matchLabel"; "required": false; }; "rulesLabel": { "alias": "rulesLabel"; "required": false; }; "whenLabel": { "alias": "whenLabel"; "required": false; }; "addRuleLabel": { "alias": "addRuleLabel"; "required": false; }; "applyLabel": { "alias": "applyLabel"; "required": false; }; "removeRuleLabel": { "alias": "removeRuleLabel"; "required": false; }; "removeRuleAriaLabel": { "alias": "removeRuleAriaLabel"; "required": false; }; "fieldAriaLabel": { "alias": "fieldAriaLabel"; "required": false; }; "operatorAriaLabel": { "alias": "operatorAriaLabel"; "required": false; }; "valueAriaLabel": { "alias": "valueAriaLabel"; "required": false; }; "valuePlaceholder": { "alias": "valuePlaceholder"; "required": false; }; }, { "rulesChange": "rulesChange"; "logicChange": "logicChange"; "filterChange": "filterChange"; }, never, never, true, never>;
1936
+ }
1937
+
1938
+ interface NgbSearchHighlightField {
1939
+ field: string;
1940
+ label: string;
1941
+ disabled?: boolean;
1942
+ }
1943
+ interface NgbSearchHighlightSelectionChange {
1944
+ term: string;
1945
+ selectedFields: string[];
1946
+ }
1947
+ declare class NgbSearchHighlightComponent {
1948
+ fields: NgbSearchHighlightField[];
1949
+ selectedFields: string[];
1950
+ term: string;
1951
+ placeholder: string;
1952
+ searchAriaLabel: string;
1953
+ fieldsLabel: string;
1954
+ fieldsAriaLabel: string;
1955
+ searchIcon: string;
1956
+ allowEmptySelection: boolean;
1957
+ termChange: EventEmitter<string>;
1958
+ selectedFieldsChange: EventEmitter<string[]>;
1959
+ selectionChange: EventEmitter<NgbSearchHighlightSelectionChange>;
1960
+ setTerm(term: string): void;
1961
+ isFieldSelected(field: string): boolean;
1962
+ toggleField(field: string): void;
1963
+ private emitSelectionChange;
1964
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbSearchHighlightComponent, never>;
1965
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbSearchHighlightComponent, "ngb-search-highlight", never, { "fields": { "alias": "fields"; "required": false; }; "selectedFields": { "alias": "selectedFields"; "required": false; }; "term": { "alias": "term"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; }; "fieldsLabel": { "alias": "fieldsLabel"; "required": false; }; "fieldsAriaLabel": { "alias": "fieldsAriaLabel"; "required": false; }; "searchIcon": { "alias": "searchIcon"; "required": false; }; "allowEmptySelection": { "alias": "allowEmptySelection"; "required": false; }; }, { "termChange": "termChange"; "selectedFieldsChange": "selectedFieldsChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
502
1966
  }
503
1967
 
1968
+ declare class NgbDatagridThemePickerComponent {
1969
+ private readonly host;
1970
+ private _value;
1971
+ private _themes;
1972
+ label: string;
1973
+ get value(): NgbDataGridTheme;
1974
+ set value(value: NgbDataGridTheme);
1975
+ get themes(): NgbDataGridThemeOption[];
1976
+ set themes(themes: NgbDataGridThemeOption[] | null | undefined);
1977
+ valueChange: EventEmitter<NgbDataGridTheme>;
1978
+ open: boolean;
1979
+ selectedTheme: NgbDataGridThemeOption;
1980
+ groupedThemes: Array<{
1981
+ label: NgbDataGridThemeOption['group'];
1982
+ items: NgbDataGridThemeOption[];
1983
+ }>;
1984
+ toggle(): void;
1985
+ select(theme: NgbDataGridThemeOption): void;
1986
+ closeOnOutsideClick(event: MouseEvent): void;
1987
+ closeOnEscape(): void;
1988
+ private updateSelectedTheme;
1989
+ private buildGroupedThemes;
1990
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDatagridThemePickerComponent, never>;
1991
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbDatagridThemePickerComponent, "ngb-datagrid-theme-picker", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "themes": { "alias": "themes"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
1992
+ }
1993
+
1994
+ declare function ngbApplyDataGridOperations<T>(data: readonly T[] | null | undefined, options?: NgbDataGridProcessOptions<T>): NgbDataGridDataResult<T>;
1995
+ declare function ngbCalculateDataGridAggregates<T>(data: readonly T[] | null | undefined, descriptors: readonly NgbDataGridAggregateDescriptor[] | null | undefined): NgbDataGridAggregateResults;
1996
+
504
1997
  type DndI18n = {
505
1998
  listLabel: (name?: string) => string;
506
1999
  pickedUp: () => string;
@@ -518,113 +2011,45 @@ interface DndSession<T = unknown> {
518
2011
  fromList?: T[];
519
2012
  fromIndex?: number;
520
2013
  fromIsPalette?: boolean;
2014
+ fromListRef?: unknown;
521
2015
  }
522
2016
  declare class NgbDndState {
523
2017
  readonly active: i0.WritableSignal<boolean>;
524
2018
  private store;
525
2019
  private currentId;
2020
+ private activeDropList;
526
2021
  i18n: DndI18n;
527
2022
  announce?: (m: string) => void;
528
2023
  constructor(announceFn: ((m: string) => void) | null, i18n: DndI18n | null);
529
2024
  createSession<T>(session: DndSession<T>): string;
530
2025
  get(id: string | null): DndSession | null;
531
2026
  getCurrent(): DndSession | null;
2027
+ setActiveDropList(list: unknown): void;
2028
+ getActiveDropList(): unknown | null;
2029
+ clearActiveDropList(list?: unknown): void;
532
2030
  clear(id?: string | null): void;
533
2031
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbDndState, [{ optional: true; }, { optional: true; }]>;
534
2032
  static ɵprov: i0.ɵɵInjectableDeclaration<NgbDndState>;
535
2033
  }
536
2034
 
537
- interface NgbDndDropEvent<T> {
538
- item: T;
539
- fromIndex: number;
540
- toIndex: number;
541
- fromList: T[];
542
- toList: T[];
543
- sameList: boolean;
544
- }
545
- interface DndCanDropPayload<T = any> {
546
- dragItem: T;
547
- srcList: T[];
548
- srcIndex: number;
549
- dstList: T[];
550
- dstIndex: number;
551
- isExternal: boolean;
552
- }
553
- /** Guard function; return true to allow, false to block */
554
- type DndCanDropFn<T = any> = (payload: DndCanDropPayload<T>) => boolean;
555
- declare class NgbDndListDirective<T = unknown> {
556
- private el;
557
- private state;
558
- dndChildrenKey: string | null;
559
- /** Bind your array here: <div [ngbDndList]="items"> */
560
- list: T[];
561
- /** Optional: group barrier across lists */
562
- dndGroup?: string;
563
- /** Disable this list */
564
- dndDisabled: boolean;
565
- /** NEW: clone if source wasn't a list (e.g. palette) */
566
- dndCloneOnDrop: boolean;
567
- /** NEW: custom clone function */
568
- dndCloneFn?: (item: T) => T;
569
- dndIsPalette: boolean;
570
- dndCanDrop: boolean | DndCanDropFn<any>;
571
- private _denied;
572
- get denied(): boolean;
573
- dndAriaLabel?: string;
574
- get ariaLabel(): string;
575
- /** Fires after item is inserted */
576
- dndDropped: EventEmitter<NgbDndDropEvent<T>>;
577
- role: string;
578
- hostClass: boolean;
579
- private hover;
580
- get isOver(): boolean;
581
- private canDrop;
582
- get dataDropValid(): "true" | "false";
583
- private placeholder?;
584
- private lastIndex;
585
- onDragEnter(ev: DragEvent): void;
586
- onDragOver(ev: DragEvent): void;
587
- onDragLeave(ev: DragEvent): void;
588
- onDocumentDrop(ev: DragEvent): void;
589
- onDrop(ev: DragEvent): void;
590
- private getSession;
591
- private ensurePlaceholder;
592
- private removePlaceholder;
593
- private positionPlaceholderAt;
594
- private indexFromPointer;
595
- private cloneItem;
596
- private isDroppingIntoOwnDescendant;
597
- /**
598
- * Build a guard payload using whatever drag context you already store.
599
- * If some fields don’t exist in your code, the fallbacks keep it working.
600
- */
601
- private _buildGuardPayload;
602
- /**
603
- * Compute destination index from the event position (no placeholder var needed).
604
- * Uses vertical list heuristics; adjust for horizontal if your list is horizontal.
605
- */
606
- private _computeDropIndex;
607
- private _allowDrop;
608
- private performDrop;
609
- static ɵfac: i0.ɵɵFactoryDeclaration<NgbDndListDirective<any>, never>;
610
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDndListDirective<any>, "[ngbDndList]", never, { "dndChildrenKey": { "alias": "dndChildrenKey"; "required": false; }; "list": { "alias": "ngbDndList"; "required": false; }; "dndGroup": { "alias": "dndGroup"; "required": false; }; "dndDisabled": { "alias": "dndDisabled"; "required": false; }; "dndCloneOnDrop": { "alias": "dndCloneOnDrop"; "required": false; }; "dndCloneFn": { "alias": "dndCloneFn"; "required": false; }; "dndIsPalette": { "alias": "dndIsPalette"; "required": false; }; "dndCanDrop": { "alias": "dndCanDrop"; "required": false; }; "dndAriaLabel": { "alias": "dndAriaLabel"; "required": false; }; }, { "dndDropped": "dndDropped"; }, never, never, true, never>;
611
- }
612
-
613
2035
  declare class NgbDndItemDirective<T = unknown> {
614
2036
  private parentList?;
615
2037
  private el;
616
2038
  private state;
617
- constructor(parentList?: NgbDndListDirective<T>);
2039
+ constructor(parentList?: NgbDndListDirective<T> | undefined);
618
2040
  /** required: the value carried by this row/panel */
619
2041
  item: T;
620
2042
  /** optional: constrain cross-list drops */
621
2043
  dndGroup?: string;
622
- /** index inside its parent list (bind to *ngFor index) */
2044
+ /** index inside its parent list (bind to the rendered row index) */
623
2045
  dndIndex?: number;
2046
+ /** Explicit source list for recursive templates where DI can be ambiguous. */
2047
+ dndSourceList?: T[];
624
2048
  dndDisabled: boolean;
625
2049
  dndDragStart: EventEmitter<T>;
626
2050
  dndDragEnd: EventEmitter<void>;
627
2051
  get draggable(): boolean;
2052
+ hostClass: boolean;
628
2053
  dragging: boolean;
629
2054
  get ariaGrabbed(): "true" | "false";
630
2055
  role: string;
@@ -634,7 +2059,28 @@ declare class NgbDndItemDirective<T = unknown> {
634
2059
  onDragEnd(): void;
635
2060
  onKeydown(ev: KeyboardEvent): void;
636
2061
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbDndItemDirective<any>, [{ optional: true; }]>;
637
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDndItemDirective<any>, "[ngbDndItem]", never, { "item": { "alias": "ngbDndItem"; "required": false; }; "dndGroup": { "alias": "dndGroup"; "required": false; }; "dndIndex": { "alias": "dndIndex"; "required": false; }; "dndDisabled": { "alias": "dndDisabled"; "required": false; }; }, { "dndDragStart": "dndDragStart"; "dndDragEnd": "dndDragEnd"; }, never, never, true, never>;
2062
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDndItemDirective<any>, "[ngbDndItem]", never, { "item": { "alias": "ngbDndItem"; "required": false; }; "dndGroup": { "alias": "dndGroup"; "required": false; }; "dndIndex": { "alias": "dndIndex"; "required": false; }; "dndSourceList": { "alias": "dndSourceList"; "required": false; }; "dndDisabled": { "alias": "dndDisabled"; "required": false; }; }, { "dndDragStart": "dndDragStart"; "dndDragEnd": "dndDragEnd"; }, never, never, true, never>;
2063
+ }
2064
+
2065
+ declare class NgbDndHandleDirective {
2066
+ private item?;
2067
+ constructor(item?: NgbDndItemDirective | undefined);
2068
+ draggable: string;
2069
+ hostClass: boolean;
2070
+ onDragStart(ev: DragEvent): void;
2071
+ onDragEnd(): void;
2072
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbDndHandleDirective, [{ optional: true; skipSelf: true; }]>;
2073
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbDndHandleDirective, "[ngbDndHandle]", never, {}, {}, never, never, true, never>;
2074
+ }
2075
+
2076
+ declare class NgbJsonPreviewComponent {
2077
+ value: unknown;
2078
+ indent: number;
2079
+ fallback: string;
2080
+ maxHeight: number;
2081
+ get formattedJson(): string;
2082
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbJsonPreviewComponent, never>;
2083
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgbJsonPreviewComponent, "ngb-json-preview", never, { "value": { "alias": "value"; "required": false; }; "indent": { "alias": "indent"; "required": false; }; "fallback": { "alias": "fallback"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; }, {}, never, never, true, never>;
638
2084
  }
639
2085
 
640
2086
  declare class NgbLiveAnnouncer {
@@ -643,20 +2089,7 @@ declare class NgbLiveAnnouncer {
643
2089
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbLiveAnnouncer, never>;
644
2090
  static ɵprov: i0.ɵɵInjectableDeclaration<NgbLiveAnnouncer>;
645
2091
  }
646
- declare const DND_LIVE_ANNOUNCE: InjectionToken<(m: string) => void>;
647
-
648
- declare class NgbPaginationComponent {
649
- page: number;
650
- pageSize: number;
651
- collectionSize: number;
652
- maxSize: number;
653
- pageChange: EventEmitter<number>;
654
- get totalPages(): number;
655
- get pages(): Array<number | '…'>;
656
- go(p: number): void;
657
- static ɵfac: i0.ɵɵFactoryDeclaration<NgbPaginationComponent, never>;
658
- static ɵcmp: i0.ɵɵComponentDeclaration<NgbPaginationComponent, "ngb-pagination", never, { "page": { "alias": "page"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "collectionSize": { "alias": "collectionSize"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
659
- }
2092
+ declare const DND_LIVE_ANNOUNCE: InjectionToken<((m: string) => void) | null>;
660
2093
 
661
2094
  type NgbStepperOrientation = 'horizontal' | 'vertical';
662
2095
  type NgbStepperLabelPosition = 'top' | 'bottom' | 'left' | 'right';
@@ -1008,5 +2441,5 @@ declare class NgbChipsComponent {
1008
2441
  static ɵcmp: i0.ɵɵComponentDeclaration<NgbChipsComponent, "ngb-chips", never, { "items": { "alias": "items"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "removeLabel": { "alias": "removeLabel"; "required": false; }; }, { "remove": "remove"; }, never, never, true, never>;
1009
2442
  }
1010
2443
 
1011
- export { DATAGRID_TEMPLATE_DIRECTIVES, DND_I18N, DND_LIVE_ANNOUNCE, Datagrid, ExcelExportAdapter, ExportButtonDirective, JsPdfAdapter, NgbCellTemplate, NgbChipsComponent, NgbDatagridDefaultEditService, NgbDndItemDirective, NgbDndListDirective, NgbDndState, NgbEditorTemplate, NgbExportService, NgbFilterTemplate, NgbGlobalFilterTemplate, NgbLiveAnnouncer, NgbPaginationComponent, NgbRowDetailTemplate, NgbSplitterComponent, NgbSplitterPaneComponent, NgbStepLabelDirective, NgbStepperComponent, NgbTreeComponent, NgbTypeaheadComponent, PdfExportAdapter, XlsxAdapter, defaultDndI18n };
1012
- export type { CellCtx, ColumnDef, ColumnType, DndCanDropFn, DndCanDropPayload, DndI18n, DndSession, EditCtx, ExcelExportPayload, ExportButtonContext, FilterCtx, GlobalFilterCtx, NgbChip, NgbColKey, NgbDataGridExportOptions, NgbDataGridExportPages, NgbDataGridExportType, NgbDataGridResponsiveOptions, NgbDataGridTheme, NgbDatagridEditService, NgbDatagridTrackByFn, NgbDndDropEvent, NgbRowKey, NgbSelectionBehavior, NgbSelectionKeyMode, NgbSelectionLabels, NgbSelectionMode, NgbSplitterOrientation, NgbSplitterPaneSize, NgbStepperContentPosition, NgbStepperLabelPosition, NgbStepperOrientation, NgbStepperSelectionChangeEvent, NgbStepperState, NgbStepperStep, NgbStepperTheme, NgbTableOptions, NgbTableResponsive, NgbTreeI18n, NgbTreeNode, NgbTreeType, NgbTypeaheadI18n, NgbTypeaheadItem, PdfExportPayload };
2444
+ export { BrowserExcelExportAdapter, DATAGRID_COLUMN_DIRECTIVES, DATAGRID_TEMPLATE_DIRECTIVES, DND_I18N, DND_LIVE_ANNOUNCE, Datagrid, ExcelExportAdapter, ExportButtonDirective, JsPdfAdapter, NGB_BOOLEAN_FILTER_OPERATORS, NGB_DATAGRID_DEFAULT_LABELS, NGB_DATAGRID_DEFAULT_PAGEABLE, NGB_DATAGRID_HOST, NGB_DATAGRID_KEYBOARD_SHORTCUTS, NGB_DATAGRID_PAGER_BREAKPOINTS, NGB_DATAGRID_THEME_OPTIONS, NGB_DATE_FILTER_OPERATORS, NGB_NUMERIC_FILTER_OPERATORS, NGB_PAGER_BREAKPOINTS, NGB_PAGER_DEFAULT_SETTINGS, NGB_SELECT_FILTER_OPERATORS, NGB_TEXT_FILTER_OPERATORS, NgbAdvancedSearchComponent, NgbCellTemplate, NgbChipsComponent, NgbDataChartComponent, NgbDataSparklineComponent, NgbDatagridButtonDirective, NgbDatagridColumnChooserToolComponent, NgbDatagridControlDirective, NgbDatagridDefaultEditService, NgbDatagridFieldShellComponent, NgbDatagridFilterToolComponent, NgbDatagridFloatingPanelDirective, NgbDatagridLayoutToolbarComponent, NgbDatagridLayoutToolbarSpacerComponent, NgbDatagridSortToolComponent, NgbDatagridSurfaceCardComponent, NgbDatagridThemePickerComponent, NgbDndHandleDirective, NgbDndItemDirective, NgbDndListDirective, NgbDndState, NgbEditorTemplate, NgbExportService, NgbFilterMenuTemplate, NgbFilterTemplate, NgbGlobalFilterTemplate, NgbGridChartComponent, NgbGridColumnDirective, NgbJsonPreviewComponent, NgbLiveAnnouncer, NgbPagerComponent, NgbPagerTemplate, NgbPaginationComponent, NgbRowDetailTemplate, NgbSearchHighlightComponent, NgbSplitterComponent, NgbSplitterPaneComponent, NgbStepLabelDirective, NgbStepperComponent, NgbTreeComponent, NgbTypeaheadComponent, PdfExportAdapter, defaultDndI18n, ngbAggregateValues, ngbAllowedFilterOperators, ngbApplyDataGridOperations, ngbBuildChartJsConfig, ngbBuildColumnSelectionChartData, ngbBuildFullGridChartData, ngbBuildRowSelectionChartData, ngbBuildSparklinePoints, ngbCalculateDataGridAggregates, ngbChartPalette, ngbColumnTypeToFilterType, ngbDatagridPagerSettings, ngbDefaultFilterOperator, ngbFilterOperatorLabel, ngbFindFieldFilterDescriptor, ngbFlattenFilterDescriptors, ngbFormatDatagridLabel, ngbFormatPagerRangeLabel, ngbIsCompositeFilter, ngbOperatorRequiresFilterValue, ngbPagerButtonCountForDensity, ngbResolveDatagridPagerSettings, ngbResolvePageableSettings, ngbResolvePagerDensity, ngbResolvePagerPageSizeOptions, ngbResolvePagerSettings, ngbSetFieldFilter };
2445
+ export type { CellCtx, ColumnDef, ColumnType, DndCanDropFn, DndCanDropPayload, DndI18n, DndSession, EditCtx, ExcelExportPayload, ExportButtonContext, FilterCtx, GlobalFilterCtx, NgbAdvancedSearchField, NgbAdvancedSearchOperator, NgbAdvancedSearchRule, NgbChip, NgbColKey, NgbColumnFilterType, NgbColumnReorderEvent, NgbColumnReorderOptions, NgbColumnSelectionChartOptions, NgbCompositeFilterDescriptor, NgbDataAggregate, NgbDataChartConfig, NgbDataChartSeries, NgbDataChartType, NgbDataDimensionDef, NgbDataGridAggregateDescriptor, NgbDataGridAggregateFunction, NgbDataGridAggregateResults, NgbDataGridDataResult, NgbDataGridExportOptions, NgbDataGridExportPages, NgbDataGridExportType, NgbDataGridProcessOptions, NgbDataGridResponsiveOptions, NgbDataGridSortDescriptor, NgbDataGridSortDirection, NgbDataGridState, NgbDataGridTheme, NgbDataGridThemeOption, NgbDataLayoutMode, NgbDataMetricDef, NgbDatagridButtonVariant, NgbDatagridEditService, NgbDatagridFloatingPanelPlacement, NgbDatagridLabels, NgbDatagridPageableSettings, NgbDatagridPagerDensity, NgbDatagridPagerPosition, NgbDatagridPagerType, NgbDatagridTextDirection, NgbDatagridTrackByFn, NgbDndDropEvent, NgbEditMode, NgbFilterDescriptor, NgbFilterMode, NgbFilterOperator, NgbFilterState, NgbFilterable, NgbFullGridChartOptions, NgbGridChartConfig, NgbGridChartMode, NgbGridChartSelectionChange, NgbGridChartSparklineOptions, NgbMenuFilterConditionDraft, NgbMultiCheckboxFilterOptions, NgbPagerDensity, NgbPagerSettings, NgbPagerType, NgbRowKey, NgbRowSelectionChartOptions, NgbSearchHighlightField, NgbSearchHighlightSegment, NgbSearchHighlightSelectionChange, NgbSelectionBehavior, NgbSelectionKeyMode, NgbSelectionLabels, NgbSelectionMode, NgbSparklinePoint, NgbSplitterOrientation, NgbSplitterPaneSize, NgbStepperContentPosition, NgbStepperLabelPosition, NgbStepperOrientation, NgbStepperSelectionChangeEvent, NgbStepperState, NgbStepperStep, NgbStepperTheme, NgbTableOptions, NgbTableResponsive, NgbTreeI18n, NgbTreeNode, NgbTreeType, NgbTypeaheadI18n, NgbTypeaheadItem, PagerCtx, PdfExportPayload };