@skyux/data-grid 14.23.0 → 14.24.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.
|
@@ -10,9 +10,9 @@ import { SkyLogService, SkyViewkeeperModule } from '@skyux/core';
|
|
|
10
10
|
import * as i4 from '@skyux/indicators';
|
|
11
11
|
import { SkyWaitModule } from '@skyux/indicators';
|
|
12
12
|
import * as i2 from '@skyux/lists';
|
|
13
|
-
import { SkyPagingModule } from '@skyux/lists';
|
|
13
|
+
import { SkyPagingModule, SkyDataColumnSource, SkyDataSelectionSource, SkyDataSortSource } from '@skyux/lists';
|
|
14
14
|
import { AgGridAngular } from 'ag-grid-angular';
|
|
15
|
-
import { ModuleRegistry, CellStyleModule, ClientSideRowModelModule, ColumnApiModule, ColumnAutoSizeModule, CustomEditorModule, EventApiModule, GridStateModule, LocaleModule, PaginationModule, RenderApiModule, RowApiModule, RowAutoHeightModule, RowSelectionModule, RowStyleModule } from 'ag-grid-community';
|
|
15
|
+
import { ModuleRegistry, CellStyleModule, ClientSideRowModelModule, ColumnApiModule, ColumnAutoSizeModule, CustomEditorModule, EventApiModule, GridStateModule, LocaleModule, PaginationModule, RenderApiModule, RowApiModule, RowAutoHeightModule, RowSelectionModule, RowStyleModule, SELECTION_COLUMN_ID } from 'ag-grid-community';
|
|
16
16
|
import { Observable, filter, switchMap, takeUntil, map, startWith } from 'rxjs';
|
|
17
17
|
import * as i1 from '@skyux/help-inline';
|
|
18
18
|
import { SkyHelpInlineModule } from '@skyux/help-inline';
|
|
@@ -26,7 +26,9 @@ class SkyDataGridColumn {
|
|
|
26
26
|
#initialized;
|
|
27
27
|
constructor() {
|
|
28
28
|
/**
|
|
29
|
-
* Whether the column is hidden.
|
|
29
|
+
* Whether the column is hidden. When the grid's `selectedColumnIds` is set,
|
|
30
|
+
* it determines which columns display instead. In a data manager's column
|
|
31
|
+
* picker, the column starts hidden and users can choose to display it.
|
|
30
32
|
* @default false
|
|
31
33
|
*/
|
|
32
34
|
this.columnHidden = input(false, { ...(ngDevMode ? { debugName: "columnHidden" } : {}), transform: booleanAttribute });
|
|
@@ -41,6 +43,11 @@ class SkyDataGridColumn {
|
|
|
41
43
|
* @default 'text'
|
|
42
44
|
*/
|
|
43
45
|
this.dataType = input('text', ...(ngDevMode ? [{ debugName: "dataType" }] : []));
|
|
46
|
+
/**
|
|
47
|
+
* The text to display beneath the column's `headingText` in a data
|
|
48
|
+
* manager's column picker.
|
|
49
|
+
*/
|
|
50
|
+
this.description = input(...(ngDevMode ? [undefined, { debugName: "description" }] : []));
|
|
44
51
|
/**
|
|
45
52
|
* The property to retrieve cell information from an entry on the grid `data` array.
|
|
46
53
|
* You must provide either the `columnId` or `field` property for every column,
|
|
@@ -81,7 +88,9 @@ class SkyDataGridColumn {
|
|
|
81
88
|
/**
|
|
82
89
|
* Whether the column is locked. The intent is to display locked columns first
|
|
83
90
|
* on the left side of the grid. If set to `true`, then users cannot drag the column
|
|
84
|
-
* to another position or drag other columns before it.
|
|
91
|
+
* to another position or drag other columns before it. In a data manager's
|
|
92
|
+
* column picker, a locked column always displays and is not offered as an
|
|
93
|
+
* option.
|
|
85
94
|
* @default false
|
|
86
95
|
*/
|
|
87
96
|
this.locked = input(false, { ...(ngDevMode ? { debugName: "locked" } : {}), transform: booleanAttribute });
|
|
@@ -142,7 +151,7 @@ class SkyDataGridColumn {
|
|
|
142
151
|
this.#initialized.set(true);
|
|
143
152
|
}
|
|
144
153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyDataGridColumn, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SkyDataGridColumn, isStandalone: true, selector: "sky-data-grid-column", inputs: { columnHidden: { classPropertyName: "columnHidden", publicName: "columnHidden", isSignal: true, isRequired: false, transformFunction: null }, columnId: { classPropertyName: "columnId", publicName: "columnId", isSignal: true, isRequired: false, transformFunction: null }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, flexWidth: { classPropertyName: "flexWidth", publicName: "flexWidth", isSignal: true, isRequired: false, transformFunction: null }, headingText: { classPropertyName: "headingText", publicName: "headingText", isSignal: true, isRequired: true, transformFunction: null }, headingHidden: { classPropertyName: "headingHidden", publicName: "headingHidden", isSignal: true, isRequired: false, transformFunction: null }, helpPopoverTitle: { classPropertyName: "helpPopoverTitle", publicName: "helpPopoverTitle", isSignal: true, isRequired: false, transformFunction: null }, helpPopoverContent: { classPropertyName: "helpPopoverContent", publicName: "helpPopoverContent", isSignal: true, isRequired: false, transformFunction: null }, locked: { classPropertyName: "locked", publicName: "locked", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, wrapText: { classPropertyName: "wrapText", publicName: "wrapText", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "templateChild", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SkyDataGridColumn, isStandalone: true, selector: "sky-data-grid-column", inputs: { columnHidden: { classPropertyName: "columnHidden", publicName: "columnHidden", isSignal: true, isRequired: false, transformFunction: null }, columnId: { classPropertyName: "columnId", publicName: "columnId", isSignal: true, isRequired: false, transformFunction: null }, dataType: { classPropertyName: "dataType", publicName: "dataType", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, flexWidth: { classPropertyName: "flexWidth", publicName: "flexWidth", isSignal: true, isRequired: false, transformFunction: null }, headingText: { classPropertyName: "headingText", publicName: "headingText", isSignal: true, isRequired: true, transformFunction: null }, headingHidden: { classPropertyName: "headingHidden", publicName: "headingHidden", isSignal: true, isRequired: false, transformFunction: null }, helpPopoverTitle: { classPropertyName: "helpPopoverTitle", publicName: "helpPopoverTitle", isSignal: true, isRequired: false, transformFunction: null }, helpPopoverContent: { classPropertyName: "helpPopoverContent", publicName: "helpPopoverContent", isSignal: true, isRequired: false, transformFunction: null }, locked: { classPropertyName: "locked", publicName: "locked", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, wrapText: { classPropertyName: "wrapText", publicName: "wrapText", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "templateChild", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
146
155
|
}
|
|
147
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyDataGridColumn, decorators: [{
|
|
148
157
|
type: Component,
|
|
@@ -151,7 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
151
160
|
template: '',
|
|
152
161
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
153
162
|
}]
|
|
154
|
-
}], ctorParameters: () => [], propDecorators: { columnHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnHidden", required: false }] }], columnId: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnId", required: false }] }], dataType: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataType", required: false }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }], flexWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "flexWidth", required: false }] }], headingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingText", required: true }] }], headingHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingHidden", required: false }] }], helpPopoverTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpPopoverTitle", required: false }] }], helpPopoverContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpPopoverContent", required: false }] }], locked: [{ type: i0.Input, args: [{ isSignal: true, alias: "locked", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], sortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortable", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], wrapText: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapText", required: false }] }], templateChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
163
|
+
}], ctorParameters: () => [], propDecorators: { columnHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnHidden", required: false }] }], columnId: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnId", required: false }] }], dataType: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataType", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }], flexWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "flexWidth", required: false }] }], headingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingText", required: true }] }], headingHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingHidden", required: false }] }], helpPopoverTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpPopoverTitle", required: false }] }], helpPopoverContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "helpPopoverContent", required: false }] }], locked: [{ type: i0.Input, args: [{ isSignal: true, alias: "locked", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], sortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortable", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], wrapText: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapText", required: false }] }], templateChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
155
164
|
|
|
156
165
|
/**
|
|
157
166
|
* @internal
|
|
@@ -227,6 +236,16 @@ ModuleRegistry.registerModules([
|
|
|
227
236
|
function arraySorted(arr) {
|
|
228
237
|
return arr.slice().sort((a, b) => a.localeCompare(b));
|
|
229
238
|
}
|
|
239
|
+
function arraysEqual(a, b) {
|
|
240
|
+
return a.length === b.length && a.every((value, i) => value === b[i]);
|
|
241
|
+
}
|
|
242
|
+
// The data manager has its own copy of this function, because the two
|
|
243
|
+
// libraries cannot share an internal function without exporting it.
|
|
244
|
+
function columnWidthsEqual(a, b) {
|
|
245
|
+
const keys = Object.keys(a);
|
|
246
|
+
return (keys.length === Object.keys(b).length &&
|
|
247
|
+
keys.every((key) => a[key] === b[key]));
|
|
248
|
+
}
|
|
230
249
|
/**
|
|
231
250
|
* Displays tabular data in a grid using a declarative set of columns and inputs.
|
|
232
251
|
* Provide the `data` array and one `sky-data-grid-column` for each column to render.
|
|
@@ -234,11 +253,37 @@ function arraySorted(arr) {
|
|
|
234
253
|
*/
|
|
235
254
|
class SkyDataGrid {
|
|
236
255
|
#activatedRoute;
|
|
256
|
+
/**
|
|
257
|
+
* The widths in pixels of the columns users resized, keyed by column ID.
|
|
258
|
+
* This is `undefined` until a data manager integration sets the widths, so a
|
|
259
|
+
* grid outside a data manager neither tracks nor restores them.
|
|
260
|
+
*/
|
|
261
|
+
#columnWidths;
|
|
262
|
+
/**
|
|
263
|
+
* The widths the grid gave the columns that have neither a flex nor a
|
|
264
|
+
* width, from before a column width replaced them.
|
|
265
|
+
*/
|
|
266
|
+
#gridSizedWidths;
|
|
267
|
+
#selectionPruningDisabled;
|
|
268
|
+
#viewkeeperDisabled;
|
|
269
|
+
#awaitingInitialAutoSize;
|
|
237
270
|
#gridService;
|
|
238
271
|
#logger;
|
|
239
272
|
#router;
|
|
240
273
|
#columnDefs;
|
|
241
274
|
#hasColumnDefs;
|
|
275
|
+
/**
|
|
276
|
+
* The IDs of the columns that display, in a fixed order, so that moving a
|
|
277
|
+
* column does not change it.
|
|
278
|
+
*/
|
|
279
|
+
#displayedColumnIdSet;
|
|
280
|
+
/**
|
|
281
|
+
* The declared columns that have a usable ID, in declaration order. Columns
|
|
282
|
+
* missing both `columnId` and `field` are omitted; `SkyDataGridColumn`
|
|
283
|
+
* already warns about them. A repeated ID is suffixed the way AG Grid
|
|
284
|
+
* suffixes it (`name_1`), so that every column can be addressed.
|
|
285
|
+
*/
|
|
286
|
+
#columnCatalog;
|
|
242
287
|
#gridDestroyed;
|
|
243
288
|
#gridSelectedRowIds;
|
|
244
289
|
#gridSortChange;
|
|
@@ -362,6 +407,15 @@ class SkyDataGrid {
|
|
|
362
407
|
* @default []
|
|
363
408
|
*/
|
|
364
409
|
this.selectedRowIds = model([], ...(ngDevMode ? [{ debugName: "selectedRowIds" }] : []));
|
|
410
|
+
/**
|
|
411
|
+
* The IDs of the columns to display, in display order. Columns that are not
|
|
412
|
+
* included are hidden. An ID that does not match a column is ignored until a
|
|
413
|
+
* column with that ID is declared. This is two-way bindable: once set, it
|
|
414
|
+
* emits a new value when the user reorders columns. When `undefined`, every
|
|
415
|
+
* column displays in declaration order except those marked `columnHidden`.
|
|
416
|
+
* Displayed locked columns come first.
|
|
417
|
+
*/
|
|
418
|
+
this.selectedColumnIds = model(...(ngDevMode ? [undefined, { debugName: "selectedColumnIds" }] : []));
|
|
365
419
|
/**
|
|
366
420
|
* The current sort applied to the grid. This is two-way bindable: it emits a new value
|
|
367
421
|
* whenever the user sorts a column, and you can set it to sort the grid programmatically.
|
|
@@ -370,6 +424,62 @@ class SkyDataGrid {
|
|
|
370
424
|
*/
|
|
371
425
|
this.sort = model(undefined, ...(ngDevMode ? [{ debugName: "sort" }] : []));
|
|
372
426
|
this.columns = contentChildren(SkyDataGridColumn, ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
427
|
+
/**
|
|
428
|
+
* The columns the grid can display, in declaration order. Read by column
|
|
429
|
+
* picker integrations through `SkyDataColumnSource`.
|
|
430
|
+
* @internal
|
|
431
|
+
*/
|
|
432
|
+
this.columnOptions = computed(() => this.#columnCatalog().map(({ id, column }) => ({
|
|
433
|
+
alwaysDisplayed: column.locked(),
|
|
434
|
+
description: column.description(),
|
|
435
|
+
id,
|
|
436
|
+
initialHide: column.columnHidden(),
|
|
437
|
+
labelText: column.headingText(),
|
|
438
|
+
})), ...(ngDevMode ? [{ debugName: "columnOptions" }] : []));
|
|
439
|
+
/**
|
|
440
|
+
* The widths in pixels of the columns users resized, keyed by column ID.
|
|
441
|
+
* Read by data manager integrations through `SkyDataColumnSource`.
|
|
442
|
+
* @internal
|
|
443
|
+
*/
|
|
444
|
+
this.columnWidths = computed(() => this.#columnWidths() ?? {}, ...(ngDevMode ? [{ debugName: "columnWidths" }] : []));
|
|
445
|
+
/**
|
|
446
|
+
* The IDs of the columns that display, in display order: the
|
|
447
|
+
* `selectedColumnIds` that match a declared column or, when
|
|
448
|
+
* `selectedColumnIds` is `undefined`, every column not marked `columnHidden`.
|
|
449
|
+
* Locked columns come first, as the grid displays them. Read by column
|
|
450
|
+
* picker integrations through `SkyDataColumnSource`.
|
|
451
|
+
* @internal
|
|
452
|
+
*/
|
|
453
|
+
this.displayedColumnIds = computed(() => {
|
|
454
|
+
const catalog = this.#columnCatalog();
|
|
455
|
+
const selectedColumnIds = this.selectedColumnIds();
|
|
456
|
+
const declaredIds = catalog.map(({ id }) => id);
|
|
457
|
+
const lockedIds = catalog
|
|
458
|
+
.filter(({ column }) => column.locked())
|
|
459
|
+
.map(({ id }) => id);
|
|
460
|
+
const columnIds = selectedColumnIds
|
|
461
|
+
? selectedColumnIds.filter((id) => declaredIds.includes(id))
|
|
462
|
+
: catalog
|
|
463
|
+
.filter(({ column }) => !column.columnHidden())
|
|
464
|
+
.map(({ id }) => id);
|
|
465
|
+
return [
|
|
466
|
+
...columnIds.filter((id) => lockedIds.includes(id)),
|
|
467
|
+
...columnIds.filter((id) => !lockedIds.includes(id)),
|
|
468
|
+
];
|
|
469
|
+
}, { ...(ngDevMode ? { debugName: "displayedColumnIds" } : {}), equal: arraysEqual });
|
|
470
|
+
/**
|
|
471
|
+
* The selectors of the elements the grid keeps visible at the top of the
|
|
472
|
+
* viewport while the page scrolls. Read by column picker integrations
|
|
473
|
+
* through `SkyDataColumnSource`.
|
|
474
|
+
* @internal
|
|
475
|
+
*/
|
|
476
|
+
this.viewkeeperClasses = computed(() => {
|
|
477
|
+
const classes = ['.ag-header'];
|
|
478
|
+
if (this.topScrollEnabled()) {
|
|
479
|
+
classes.push('.ag-body-horizontal-scroll');
|
|
480
|
+
}
|
|
481
|
+
return classes;
|
|
482
|
+
}, ...(ngDevMode ? [{ debugName: "viewkeeperClasses" }] : []));
|
|
373
483
|
this.gridApi = signal(undefined, ...(ngDevMode ? [{ debugName: "gridApi" }] : []));
|
|
374
484
|
this.gridOptions = computed(() => {
|
|
375
485
|
const hasColumnDefs = this.#hasColumnDefs();
|
|
@@ -403,7 +513,45 @@ class SkyDataGrid {
|
|
|
403
513
|
}
|
|
404
514
|
: undefined,
|
|
405
515
|
loading: untracked(() => this.loading() || !Array.isArray(this.data())),
|
|
516
|
+
// A user moves columns with the keyboard or by dragging a column
|
|
517
|
+
// header. A drag moves columns as it goes, and a drag released outside
|
|
518
|
+
// the grid or cancelled with Escape reports no finished move, so sync
|
|
519
|
+
// when any drag ends too.
|
|
520
|
+
onColumnMoved: (event) => {
|
|
521
|
+
if (event.finished) {
|
|
522
|
+
this.#syncColumnOrderFromGrid(event.api);
|
|
523
|
+
}
|
|
524
|
+
},
|
|
525
|
+
// The grid's initial content sizing runs after the grid is ready and
|
|
526
|
+
// would replace the widths applied then, so apply them again. Content
|
|
527
|
+
// sizing after that is a user double-clicking a column's edge.
|
|
528
|
+
onColumnResized: (event) => {
|
|
529
|
+
if (event.source === 'autosizeColumns' &&
|
|
530
|
+
this.#awaitingInitialAutoSize) {
|
|
531
|
+
this.#awaitingInitialAutoSize = false;
|
|
532
|
+
this.#gridSizedWidths.clear();
|
|
533
|
+
this.#rememberGridSizedWidths(event.api);
|
|
534
|
+
this.#reapplyColumnWidths(event.api);
|
|
535
|
+
}
|
|
536
|
+
else if ((event.source === 'uiColumnResized' && event.finished) ||
|
|
537
|
+
event.source === 'autosizeColumns') {
|
|
538
|
+
// AG Grid reports the resized columns with every resize it
|
|
539
|
+
// dispatches from these sources.
|
|
540
|
+
/* istanbul ignore next */
|
|
541
|
+
this.#syncColumnWidthsFromGrid(event.columns ?? []);
|
|
542
|
+
}
|
|
543
|
+
},
|
|
544
|
+
onDragCancelled: (event) => this.#syncColumnOrderFromGrid(event.api),
|
|
545
|
+
onDragStopped: (event) => this.#syncColumnOrderFromGrid(event.api),
|
|
406
546
|
onGridReady: (args) => {
|
|
547
|
+
// The displayed columns may have changed since the column
|
|
548
|
+
// definitions were created.
|
|
549
|
+
this.#applyDisplayedColumns(args.api, this.displayedColumnIds());
|
|
550
|
+
this.#awaitingInitialAutoSize =
|
|
551
|
+
!!args.api.getGridOption('autoSizeStrategy');
|
|
552
|
+
this.#gridSizedWidths.clear();
|
|
553
|
+
this.#rememberGridSizedWidths(args.api);
|
|
554
|
+
this.#reapplyColumnWidths(args.api);
|
|
407
555
|
this.gridApi.set(args.api);
|
|
408
556
|
this.gridReady.set(true);
|
|
409
557
|
},
|
|
@@ -454,25 +602,71 @@ class SkyDataGrid {
|
|
|
454
602
|
}
|
|
455
603
|
return source;
|
|
456
604
|
} });
|
|
457
|
-
this.skyViewkeeper = computed(() => {
|
|
458
|
-
// Only used when not using SkyDataManagerService because data manager handles SkyViewkeeper.
|
|
459
|
-
const classes = ['.ag-header'];
|
|
460
|
-
if (this.topScrollEnabled()) {
|
|
461
|
-
classes.push('.ag-body-horizontal-scroll');
|
|
462
|
-
}
|
|
463
|
-
return classes;
|
|
464
|
-
}, ...(ngDevMode ? [{ debugName: "skyViewkeeper" }] : []));
|
|
605
|
+
this.skyViewkeeper = computed(() => this.#viewkeeperDisabled() ? [] : this.viewkeeperClasses(), ...(ngDevMode ? [{ debugName: "skyViewkeeper" }] : []));
|
|
465
606
|
this.#activatedRoute = inject(ActivatedRoute, { optional: true });
|
|
607
|
+
/**
|
|
608
|
+
* The widths in pixels of the columns users resized, keyed by column ID.
|
|
609
|
+
* This is `undefined` until a data manager integration sets the widths, so a
|
|
610
|
+
* grid outside a data manager neither tracks nor restores them.
|
|
611
|
+
*/
|
|
612
|
+
this.#columnWidths = signal(undefined, ...(ngDevMode ? [{ debugName: "#columnWidths" }] : []));
|
|
613
|
+
/**
|
|
614
|
+
* The widths the grid gave the columns that have neither a flex nor a
|
|
615
|
+
* width, from before a column width replaced them.
|
|
616
|
+
*/
|
|
617
|
+
this.#gridSizedWidths = new Map();
|
|
618
|
+
this.#selectionPruningDisabled = signal(false, ...(ngDevMode ? [{ debugName: "#selectionPruningDisabled" }] : []));
|
|
619
|
+
this.#viewkeeperDisabled = signal(false, ...(ngDevMode ? [{ debugName: "#viewkeeperDisabled" }] : []));
|
|
620
|
+
this.#awaitingInitialAutoSize = false;
|
|
466
621
|
this.#gridService = inject(SkyAgGridService);
|
|
467
622
|
this.#logger = inject(SkyLogService);
|
|
468
623
|
this.#router = inject(Router, { optional: true });
|
|
469
624
|
this.#columnDefs = computed(() => {
|
|
470
|
-
const
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
625
|
+
const catalog = this.#columnCatalog();
|
|
626
|
+
// Read untracked so that showing, hiding, or reordering columns does not
|
|
627
|
+
// rebuild the column definitions, which would reset flex columns the user
|
|
628
|
+
// resized. An effect applies those changes as runtime column state instead.
|
|
629
|
+
const displayedIds = untracked(this.displayedColumnIds);
|
|
630
|
+
const entriesById = new Map(catalog.map((entry) => [entry.id, entry]));
|
|
631
|
+
// Displayed columns first, in display order, followed by the hidden
|
|
632
|
+
// columns. Hidden columns keep their column definitions so AG Grid retains
|
|
633
|
+
// their state and they can be shown again without being recreated.
|
|
634
|
+
const displayedColDefs = displayedIds
|
|
635
|
+
.map((id) => entriesById.get(id))
|
|
636
|
+
.filter((entry) => !!entry)
|
|
637
|
+
.map(({ column, id }) => this.#createColDef(column, id, false));
|
|
638
|
+
const hiddenColDefs = catalog
|
|
639
|
+
.filter(({ id }) => !displayedIds.includes(id))
|
|
640
|
+
.map(({ column, id }) => this.#createColDef(column, id, true));
|
|
641
|
+
return [...displayedColDefs, ...hiddenColDefs];
|
|
474
642
|
}, ...(ngDevMode ? [{ debugName: "#columnDefs" }] : []));
|
|
475
643
|
this.#hasColumnDefs = computed(() => this.#columnDefs().length > 0, ...(ngDevMode ? [{ debugName: "#hasColumnDefs" }] : []));
|
|
644
|
+
/**
|
|
645
|
+
* The IDs of the columns that display, in a fixed order, so that moving a
|
|
646
|
+
* column does not change it.
|
|
647
|
+
*/
|
|
648
|
+
this.#displayedColumnIdSet = computed(() => arraySorted(this.displayedColumnIds()), { ...(ngDevMode ? { debugName: "#displayedColumnIdSet" } : {}), equal: arraysEqual });
|
|
649
|
+
/**
|
|
650
|
+
* The declared columns that have a usable ID, in declaration order. Columns
|
|
651
|
+
* missing both `columnId` and `field` are omitted; `SkyDataGridColumn`
|
|
652
|
+
* already warns about them. A repeated ID is suffixed the way AG Grid
|
|
653
|
+
* suffixes it (`name_1`), so that every column can be addressed.
|
|
654
|
+
*/
|
|
655
|
+
this.#columnCatalog = computed(() => {
|
|
656
|
+
const catalog = [];
|
|
657
|
+
for (const column of this.columns()) {
|
|
658
|
+
const declaredId = column.columnId() ?? column.field();
|
|
659
|
+
if (declaredId &&
|
|
660
|
+
column.initialized()) {
|
|
661
|
+
let id = declaredId;
|
|
662
|
+
for (let i = 1; catalog.some((entry) => entry.id === id); i++) {
|
|
663
|
+
id = `${declaredId}_${i}`;
|
|
664
|
+
}
|
|
665
|
+
catalog.push({ column, id });
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
return catalog;
|
|
669
|
+
}, ...(ngDevMode ? [{ debugName: "#columnCatalog" }] : []));
|
|
476
670
|
this.#gridDestroyed = toObservable(this.gridApi).pipe(filter(Boolean), switchMap((api) => fromGridEvent(api, 'gridPreDestroyed')));
|
|
477
671
|
this.#gridSelectedRowIds = toObservable(this.gridApi).pipe(filter(Boolean), switchMap((api) => fromGridEvent(api, 'selectionChanged').pipe(takeUntil(this.#gridDestroyed), map(() => arraySorted(this.#getRowIds(api.getSelectedNodes()))))));
|
|
478
672
|
this.#gridSortChange = toObservable(this.gridApi).pipe(filter(Boolean), switchMap((api) => fromGridEvent(api, 'sortChanged').pipe(takeUntil(this.#gridDestroyed), map((sortEvent) => {
|
|
@@ -507,7 +701,14 @@ class SkyDataGrid {
|
|
|
507
701
|
effect(() => {
|
|
508
702
|
const api = untracked(() => this.gridApi());
|
|
509
703
|
const columnDefs = this.#columnDefs();
|
|
510
|
-
api
|
|
704
|
+
if (api) {
|
|
705
|
+
api.setGridOption('columnDefs', columnDefs);
|
|
706
|
+
untracked(() => {
|
|
707
|
+
this.#rememberGridSizedWidths(api);
|
|
708
|
+
// New column definitions make columns users resized flex again.
|
|
709
|
+
this.#reapplyColumnWidths(api);
|
|
710
|
+
});
|
|
711
|
+
}
|
|
511
712
|
});
|
|
512
713
|
effect(() => {
|
|
513
714
|
const api = untracked(() => this.gridApi());
|
|
@@ -543,7 +744,10 @@ class SkyDataGrid {
|
|
|
543
744
|
const validRowIds = new Set(this.rowData().map((row) => row.id));
|
|
544
745
|
const selectedRowIds = coerceStringArray(this.selectedRowIds());
|
|
545
746
|
const validSelectedRowIds = selectedRowIds.filter((id) => validRowIds.has(id));
|
|
747
|
+
// A data manager integration keeps the IDs of rows its search or
|
|
748
|
+
// filters hide, so they are selected again when the rows return.
|
|
546
749
|
if (this.autoPage() &&
|
|
750
|
+
!this.#selectionPruningDisabled() &&
|
|
547
751
|
validSelectedRowIds.length !== selectedRowIds.length) {
|
|
548
752
|
this.selectedRowIds.set(validSelectedRowIds);
|
|
549
753
|
}
|
|
@@ -589,6 +793,32 @@ class SkyDataGrid {
|
|
|
589
793
|
defaultState: { sort: null },
|
|
590
794
|
});
|
|
591
795
|
});
|
|
796
|
+
// Apply changes to the displayed columns as runtime column state rather
|
|
797
|
+
// than through `columnDefs`, so showing, hiding, or reordering columns does
|
|
798
|
+
// not reset flex columns the user resized. Only a change to the displayed
|
|
799
|
+
// columns re-runs this, so a column order the user set by dragging a header
|
|
800
|
+
// is otherwise left alone.
|
|
801
|
+
effect(() => {
|
|
802
|
+
const displayedIds = this.displayedColumnIds();
|
|
803
|
+
const api = untracked(() => this.gridApi());
|
|
804
|
+
if (api) {
|
|
805
|
+
this.#applyDisplayedColumns(api, displayedIds);
|
|
806
|
+
}
|
|
807
|
+
});
|
|
808
|
+
// A grid that fits its columns to the container, and has no flex columns
|
|
809
|
+
// to take up the space, does not otherwise resize them when a column is
|
|
810
|
+
// hidden or shown. Moving a column leaves the displayed set alone, so it
|
|
811
|
+
// does not discard the widths a user set in a grid that is not tracking
|
|
812
|
+
// them.
|
|
813
|
+
effect(() => {
|
|
814
|
+
this.#displayedColumnIdSet();
|
|
815
|
+
const api = untracked(() => this.gridApi());
|
|
816
|
+
if (api &&
|
|
817
|
+
untracked(this.columnFit) === 'container' &&
|
|
818
|
+
!untracked(() => this.#hasFlexColumns())) {
|
|
819
|
+
this.#fitColumnsToContainer(api);
|
|
820
|
+
}
|
|
821
|
+
});
|
|
592
822
|
effect(() => {
|
|
593
823
|
const api = this.gridApi();
|
|
594
824
|
const page = this.page();
|
|
@@ -679,23 +909,82 @@ class SkyDataGrid {
|
|
|
679
909
|
return val;
|
|
680
910
|
});
|
|
681
911
|
});
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
912
|
+
// Emit the grid's sort, including no sort once no column is sorted, so
|
|
913
|
+
// the two-way bound model does not retain a stale value.
|
|
914
|
+
this.#gridSortChange
|
|
915
|
+
.pipe(takeUntilDestroyed())
|
|
916
|
+
.subscribe((sortChange) => this.setSort(sortChange));
|
|
917
|
+
}
|
|
918
|
+
/**
|
|
919
|
+
* Stops the grid from removing the IDs of rows that are not in `data` from
|
|
920
|
+
* `selectedRowIds`. Called by data manager integrations through
|
|
921
|
+
* `SkyDataSelectionSource` when they keep rows that a search or filter hides
|
|
922
|
+
* selected.
|
|
923
|
+
* @internal
|
|
924
|
+
*/
|
|
925
|
+
disableSelectionPruning() {
|
|
926
|
+
this.#selectionPruningDisabled.set(true);
|
|
927
|
+
}
|
|
928
|
+
/**
|
|
929
|
+
* Stops the grid from keeping the `viewkeeperClasses` elements visible
|
|
930
|
+
* itself. Called by column picker integrations through `SkyDataColumnSource`
|
|
931
|
+
* when a container keeps them visible instead.
|
|
932
|
+
* @internal
|
|
933
|
+
*/
|
|
934
|
+
disableViewkeeper() {
|
|
935
|
+
this.#viewkeeperDisabled.set(true);
|
|
936
|
+
}
|
|
937
|
+
/**
|
|
938
|
+
* Sets the columns that display and their order. Called by column picker
|
|
939
|
+
* integrations through `SkyDataColumnSource`.
|
|
940
|
+
* @internal
|
|
941
|
+
*/
|
|
942
|
+
setDisplayedColumnIds(columnIds) {
|
|
943
|
+
const selectedColumnIds = this.selectedColumnIds();
|
|
944
|
+
if (!selectedColumnIds || !arraysEqual(selectedColumnIds, columnIds)) {
|
|
945
|
+
this.selectedColumnIds.set([...columnIds]);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
/**
|
|
949
|
+
* Sets the widths in pixels of columns, keyed by column ID, and starts
|
|
950
|
+
* tracking the widths users give columns. Columns that are not included
|
|
951
|
+
* return to the widths they are declared with or, when declared without
|
|
952
|
+
* one, the widths the grid gave them. Called by data manager
|
|
953
|
+
* integrations through `SkyDataColumnSource`.
|
|
954
|
+
* @internal
|
|
955
|
+
*/
|
|
956
|
+
setColumnWidths(columnWidths) {
|
|
957
|
+
const currentWidths = this.#columnWidths();
|
|
958
|
+
if (currentWidths && columnWidthsEqual(currentWidths, columnWidths)) {
|
|
959
|
+
return;
|
|
960
|
+
}
|
|
961
|
+
this.#columnWidths.set({ ...columnWidths });
|
|
962
|
+
const api = untracked(this.gridApi);
|
|
963
|
+
if (api) {
|
|
964
|
+
this.#applyColumnWidths(api, columnWidths);
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
/**
|
|
968
|
+
* Sets the selected rows. Called by data manager integrations through
|
|
969
|
+
* `SkyDataSelectionSource`.
|
|
970
|
+
* @internal
|
|
971
|
+
*/
|
|
972
|
+
setSelectedRowIds(selectedRowIds) {
|
|
973
|
+
if (!arraysEqual(coerceStringArray(this.selectedRowIds()), selectedRowIds)) {
|
|
974
|
+
this.selectedRowIds.set([...selectedRowIds]);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
/**
|
|
978
|
+
* Sets the sort the grid applies. Called by data manager integrations
|
|
979
|
+
* through `SkyDataSortSource`.
|
|
980
|
+
* @internal
|
|
981
|
+
*/
|
|
982
|
+
setSort(sort) {
|
|
983
|
+
const currentSort = this.sort();
|
|
984
|
+
if (currentSort?.field !== sort?.field ||
|
|
985
|
+
currentSort?.direction !== sort?.direction) {
|
|
986
|
+
this.sort.set(sort);
|
|
987
|
+
}
|
|
699
988
|
}
|
|
700
989
|
currentPageChange(page) {
|
|
701
990
|
if (page && page !== this.page()) {
|
|
@@ -730,15 +1019,15 @@ class SkyDataGrid {
|
|
|
730
1019
|
queryParamsHandling: 'merge',
|
|
731
1020
|
});
|
|
732
1021
|
}
|
|
733
|
-
#createColDef(col) {
|
|
1022
|
+
#createColDef(col, colId, hide) {
|
|
734
1023
|
const field = col.field();
|
|
735
1024
|
const colDef = {
|
|
736
|
-
colId
|
|
1025
|
+
colId,
|
|
737
1026
|
field,
|
|
738
1027
|
headerName: col.headingText(),
|
|
739
1028
|
headerComponentParams: this.#getHeaderComponentParams(col),
|
|
740
|
-
hide
|
|
741
|
-
initialHide:
|
|
1029
|
+
hide,
|
|
1030
|
+
initialHide: hide,
|
|
742
1031
|
resizable: col.resizable(),
|
|
743
1032
|
sortable: col.sortable(),
|
|
744
1033
|
lockPosition: col.locked(),
|
|
@@ -806,6 +1095,121 @@ class SkyDataGrid {
|
|
|
806
1095
|
inlineHelpComponent: SkyDataGridColumnInlineHelp,
|
|
807
1096
|
};
|
|
808
1097
|
}
|
|
1098
|
+
#applyDisplayedColumns(api, displayedIds) {
|
|
1099
|
+
const hiddenIds = untracked(this.#columnCatalog)
|
|
1100
|
+
.map(({ id }) => id)
|
|
1101
|
+
.filter((id) => !displayedIds.includes(id));
|
|
1102
|
+
api.applyColumnState({
|
|
1103
|
+
state: [
|
|
1104
|
+
// AG Grid moves columns missing from the state to the end, which
|
|
1105
|
+
// would put the multiselect column after any locked columns.
|
|
1106
|
+
{ colId: SELECTION_COLUMN_ID },
|
|
1107
|
+
...displayedIds.map((colId) => ({ colId, hide: false })),
|
|
1108
|
+
...hiddenIds.map((colId) => ({ colId, hide: true })),
|
|
1109
|
+
],
|
|
1110
|
+
applyOrder: true,
|
|
1111
|
+
});
|
|
1112
|
+
}
|
|
1113
|
+
#syncColumnOrderFromGrid(api) {
|
|
1114
|
+
// Column moves are tracked only once `selectedColumnIds` is set, so a grid
|
|
1115
|
+
// without it keeps following each column's `columnHidden` setting. Applying
|
|
1116
|
+
// a column layout moves columns too, so compare against what the grid
|
|
1117
|
+
// should display; only a move the user made differs.
|
|
1118
|
+
const selectedColumnIds = this.selectedColumnIds();
|
|
1119
|
+
if (!selectedColumnIds) {
|
|
1120
|
+
return;
|
|
1121
|
+
}
|
|
1122
|
+
const displayedColumnIds = api
|
|
1123
|
+
.getColumnState()
|
|
1124
|
+
.filter((state) => !state.hide && state.colId !== SELECTION_COLUMN_ID)
|
|
1125
|
+
.map((state) => state.colId);
|
|
1126
|
+
if (!arraysEqual(this.displayedColumnIds(), displayedColumnIds)) {
|
|
1127
|
+
// Keep the IDs of columns that are not declared, such as a column
|
|
1128
|
+
// rendered conditionally, so they display once the column is declared.
|
|
1129
|
+
const declaredIds = this.#columnCatalog().map(({ id }) => id);
|
|
1130
|
+
this.selectedColumnIds.set([
|
|
1131
|
+
...displayedColumnIds,
|
|
1132
|
+
...selectedColumnIds.filter((id) => !declaredIds.includes(id)),
|
|
1133
|
+
]);
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Applies the column widths, and returns columns without one to the widths
|
|
1138
|
+
* they are declared with.
|
|
1139
|
+
*/
|
|
1140
|
+
#applyColumnWidths(api, columnWidths) {
|
|
1141
|
+
api.applyColumnState({
|
|
1142
|
+
state: untracked(this.#columnDefs).map(({ colId, flex, initialWidth }) => {
|
|
1143
|
+
const width = columnWidths[colId];
|
|
1144
|
+
// A width stops a column flexing, as a user resizing it does.
|
|
1145
|
+
return width === undefined
|
|
1146
|
+
? {
|
|
1147
|
+
colId: colId,
|
|
1148
|
+
flex: flex || null,
|
|
1149
|
+
width: initialWidth ?? this.#gridSizedWidths.get(colId),
|
|
1150
|
+
}
|
|
1151
|
+
: { colId: colId, flex: null, width };
|
|
1152
|
+
}),
|
|
1153
|
+
});
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* Remembers the widths of columns that have neither a flex nor a width, so
|
|
1157
|
+
* they can return to them. AG Grid ignores a column state without a width,
|
|
1158
|
+
* so it leaves a column at the width a user gave it.
|
|
1159
|
+
*/
|
|
1160
|
+
#rememberGridSizedWidths(api) {
|
|
1161
|
+
const gridSizedColumnIds = untracked(this.#columnDefs)
|
|
1162
|
+
.filter(({ flex, initialWidth }) => !flex && initialWidth === undefined)
|
|
1163
|
+
.map(({ colId }) => colId);
|
|
1164
|
+
for (const column of api.getAllGridColumns()) {
|
|
1165
|
+
const colId = column.getColId();
|
|
1166
|
+
if (gridSizedColumnIds.includes(colId) &&
|
|
1167
|
+
!this.#gridSizedWidths.has(colId)) {
|
|
1168
|
+
this.#gridSizedWidths.set(colId, column.getActualWidth());
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
/**
|
|
1173
|
+
* Fits the columns to the container, the way the grid does when it
|
|
1174
|
+
* initializes: the columns the grid does not size to their content, such as
|
|
1175
|
+
* those with a declared width and the multiselect column, and the columns
|
|
1176
|
+
* with a width a data manager integration tracks, keep their widths.
|
|
1177
|
+
*/
|
|
1178
|
+
#fitColumnsToContainer(api) {
|
|
1179
|
+
const columnWidths = untracked(this.columnWidths);
|
|
1180
|
+
api.sizeColumnsToFit({
|
|
1181
|
+
columnLimits: api
|
|
1182
|
+
.getAllDisplayedColumns()
|
|
1183
|
+
.filter((column) => column.getColDef().suppressAutoSize ||
|
|
1184
|
+
columnWidths[column.getColId()] !== undefined)
|
|
1185
|
+
.map((column) => ({
|
|
1186
|
+
key: column.getColId(),
|
|
1187
|
+
minWidth: column.getActualWidth(),
|
|
1188
|
+
maxWidth: column.getActualWidth(),
|
|
1189
|
+
})),
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
#reapplyColumnWidths(api) {
|
|
1193
|
+
const columnWidths = this.#columnWidths();
|
|
1194
|
+
if (columnWidths && Object.keys(columnWidths).length > 0) {
|
|
1195
|
+
this.#applyColumnWidths(api, columnWidths);
|
|
1196
|
+
}
|
|
1197
|
+
}
|
|
1198
|
+
#syncColumnWidthsFromGrid(columns) {
|
|
1199
|
+
const columnWidths = this.#columnWidths();
|
|
1200
|
+
if (!columnWidths) {
|
|
1201
|
+
return;
|
|
1202
|
+
}
|
|
1203
|
+
// A column a user resizes stops flexing. The flex columns that only filled
|
|
1204
|
+
// the space it left keep flexing, so their widths are not the user's.
|
|
1205
|
+
const updatedWidths = { ...columnWidths };
|
|
1206
|
+
for (const column of columns.filter((col) => !col.getFlex())) {
|
|
1207
|
+
updatedWidths[column.getColId()] = column.getActualWidth();
|
|
1208
|
+
}
|
|
1209
|
+
if (!columnWidthsEqual(columnWidths, updatedWidths)) {
|
|
1210
|
+
this.#columnWidths.set(updatedWidths);
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
809
1213
|
#getRowIds(rows) {
|
|
810
1214
|
return coerceArray(rows)
|
|
811
1215
|
.map((node) => node?.id)
|
|
@@ -836,7 +1240,11 @@ class SkyDataGrid {
|
|
|
836
1240
|
: { checkboxes: false, mode: 'singleRow' };
|
|
837
1241
|
}
|
|
838
1242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyDataGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
839
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SkyDataGrid, isStandalone: true, selector: "sky-data-grid", inputs: { autoSort: { classPropertyName: "autoSort", publicName: "autoSort", isSignal: true, isRequired: false, transformFunction: null }, autoPage: { classPropertyName: "autoPage", publicName: "autoPage", isSignal: true, isRequired: false, transformFunction: null }, columnFit: { classPropertyName: "columnFit", publicName: "columnFit", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, labelText: { classPropertyName: "labelText", publicName: "labelText", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageQueryParam: { classPropertyName: "pageQueryParam", publicName: "pageQueryParam", isSignal: true, isRequired: false, transformFunction: null }, rowCount: { classPropertyName: "rowCount", publicName: "rowCount", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, topScrollEnabled: { classPropertyName: "topScrollEnabled", publicName: "topScrollEnabled", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, selectedRowIds: { classPropertyName: "selectedRowIds", publicName: "selectedRowIds", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", selectedRowIds: "selectedRowIdsChange", sort: "sortChange" }, host: { properties: { "class.sky-margin-stacked-lg": "stacked()" } }, queries: [{ propertyName: "columns", predicate: SkyDataGridColumn, isSignal: true }], ngImport: i0, template: "<sky-wait [isWaiting]=\"!gridReady()\" />\n@if (gridOptions(); as gridOptions) {\n <sky-ag-grid-wrapper [compact]=\"compact()\" [minHeight]=\"minHeight()\">\n <ag-grid-angular\n skyViewkeeperOmitShadow=\".ag-body-horizontal-scroll\"\n [skyViewkeeper]=\"skyViewkeeper()\"\n [gridOptions]=\"gridOptions\"\n />\n </sky-ag-grid-wrapper>\n\n @if (pageCount() && pageSize(); as pageSize) {\n <sky-paging\n [currentPage]=\"page()\"\n [itemCount]=\"pageItemsCount()\"\n [pageSize]=\"pageSize\"\n (currentPageChange)=\"currentPageChange($event)\"\n />\n }\n}\n", styles: [":host{display:block;max-width:100%}\n"], dependencies: [{ kind: "component", type: AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipSwitchShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "hidePaddedHeaderRows", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressGroupChangesColumnVisibility", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "animateColumnResizing", "components", "editType", "suppressStartEditOnTab", "getFullRowEditValidationErrors", "invalidEditValueMode", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "findSearchValue", "findOptions", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "alwaysPassFilter", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "advancedFilterParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableFilterHandlers", "filterHandlers", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "suppressOverlays", "overlayComponent", "overlayComponentParams", "overlayComponentSelector", "activeOverlay", "activeOverlayParams", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "formulaDataSource", "formulaFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "cellFlashDuration", "cellFadeDuration", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableCellSpan", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "refreshAfterGroupEdit", "rowDragInsertDelay", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupHideParentOfSingleChild", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "treeData", "treeDataChildrenField", "treeDataParentIdField", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "groupHierarchyConfig", "pinnedTopRowData", "pinnedBottomRowData", "enableRowPinning", "isRowPinnable", "isRowPinned", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "rowNumbers", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "themeCssLayer", "styleNonce", "themeStyleContainer", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "ssrmExpandAllAffectsAllRows", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow", "isRowValidDropPosition"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnsReset", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "bulkEditingStarted", "bulkEditingStopped", "batchEditingStarted", "batchEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "filterUiChanged", "floatingFilterUiChanged", "advancedFilterBuilderVisibleChanged", "findChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "rowResizeStarted", "rowResizeEnded", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "pinnedRowsChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "ngmodule", type: SkyAgGridModule }, { kind: "component", type: i1$1.λ12, selector: "sky-ag-grid-wrapper", inputs: ["compact", "minHeight"] }, { kind: "ngmodule", type: SkyPagingModule }, { kind: "component", type: i2.λ7, selector: "sky-paging", inputs: ["currentPage", "itemCount", "maxPages", "pageSize", "pagingLabel"], outputs: ["currentPageChange", "contentChange"] }, { kind: "ngmodule", type: SkyViewkeeperModule }, { kind: "directive", type: i3.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper", "skyViewkeeperOmitShadow"] }, { kind: "ngmodule", type: SkyWaitModule }, { kind: "component", type: i4.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1243
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SkyDataGrid, isStandalone: true, selector: "sky-data-grid", inputs: { autoSort: { classPropertyName: "autoSort", publicName: "autoSort", isSignal: true, isRequired: false, transformFunction: null }, autoPage: { classPropertyName: "autoPage", publicName: "autoPage", isSignal: true, isRequired: false, transformFunction: null }, columnFit: { classPropertyName: "columnFit", publicName: "columnFit", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, labelText: { classPropertyName: "labelText", publicName: "labelText", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageQueryParam: { classPropertyName: "pageQueryParam", publicName: "pageQueryParam", isSignal: true, isRequired: false, transformFunction: null }, rowCount: { classPropertyName: "rowCount", publicName: "rowCount", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, topScrollEnabled: { classPropertyName: "topScrollEnabled", publicName: "topScrollEnabled", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, selectedRowIds: { classPropertyName: "selectedRowIds", publicName: "selectedRowIds", isSignal: true, isRequired: false, transformFunction: null }, selectedColumnIds: { classPropertyName: "selectedColumnIds", publicName: "selectedColumnIds", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", selectedRowIds: "selectedRowIdsChange", selectedColumnIds: "selectedColumnIdsChange", sort: "sortChange" }, host: { properties: { "class.sky-margin-stacked-lg": "stacked()" } }, providers: [
|
|
1244
|
+
{ provide: SkyDataColumnSource, useExisting: SkyDataGrid },
|
|
1245
|
+
{ provide: SkyDataSelectionSource, useExisting: SkyDataGrid },
|
|
1246
|
+
{ provide: SkyDataSortSource, useExisting: SkyDataGrid },
|
|
1247
|
+
], queries: [{ propertyName: "columns", predicate: SkyDataGridColumn, isSignal: true }], ngImport: i0, template: "<sky-wait [isWaiting]=\"!gridReady()\" />\n@if (gridOptions(); as gridOptions) {\n <!-- The grid keeps its column headers visible itself, below. -->\n <sky-ag-grid-wrapper\n viewkeeperDisabled\n [compact]=\"compact()\"\n [minHeight]=\"minHeight()\"\n >\n <ag-grid-angular\n skyViewkeeperOmitShadow=\".ag-body-horizontal-scroll\"\n [skyViewkeeper]=\"skyViewkeeper()\"\n [gridOptions]=\"gridOptions\"\n />\n </sky-ag-grid-wrapper>\n\n @if (pageCount() && pageSize(); as pageSize) {\n <sky-paging\n [currentPage]=\"page()\"\n [itemCount]=\"pageItemsCount()\"\n [pageSize]=\"pageSize\"\n (currentPageChange)=\"currentPageChange($event)\"\n />\n }\n}\n", styles: [":host{display:block;max-width:100%}\n"], dependencies: [{ kind: "component", type: AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipSwitchShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "hidePaddedHeaderRows", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressGroupChangesColumnVisibility", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "animateColumnResizing", "components", "editType", "suppressStartEditOnTab", "getFullRowEditValidationErrors", "invalidEditValueMode", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "findSearchValue", "findOptions", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "alwaysPassFilter", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "advancedFilterParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableFilterHandlers", "filterHandlers", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "suppressOverlays", "overlayComponent", "overlayComponentParams", "overlayComponentSelector", "activeOverlay", "activeOverlayParams", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "formulaDataSource", "formulaFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "cellFlashDuration", "cellFadeDuration", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableCellSpan", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "refreshAfterGroupEdit", "rowDragInsertDelay", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupHideParentOfSingleChild", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "treeData", "treeDataChildrenField", "treeDataParentIdField", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "groupHierarchyConfig", "pinnedTopRowData", "pinnedBottomRowData", "enableRowPinning", "isRowPinnable", "isRowPinned", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "rowNumbers", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "themeCssLayer", "styleNonce", "themeStyleContainer", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "ssrmExpandAllAffectsAllRows", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow", "isRowValidDropPosition"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnsReset", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "bulkEditingStarted", "bulkEditingStopped", "batchEditingStarted", "batchEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "filterUiChanged", "floatingFilterUiChanged", "advancedFilterBuilderVisibleChanged", "findChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "rowResizeStarted", "rowResizeEnded", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "pinnedRowsChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "ngmodule", type: SkyAgGridModule }, { kind: "component", type: i1$1.λ12, selector: "sky-ag-grid-wrapper", inputs: ["compact", "minHeight", "viewkeeperDisabled"] }, { kind: "ngmodule", type: SkyPagingModule }, { kind: "component", type: i2.λ7, selector: "sky-paging", inputs: ["currentPage", "itemCount", "maxPages", "pageSize", "pagingLabel"], outputs: ["currentPageChange", "contentChange"] }, { kind: "ngmodule", type: SkyViewkeeperModule }, { kind: "directive", type: i3.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper", "skyViewkeeperOmitShadow"] }, { kind: "ngmodule", type: SkyWaitModule }, { kind: "component", type: i4.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
840
1248
|
}
|
|
841
1249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyDataGrid, decorators: [{
|
|
842
1250
|
type: Component,
|
|
@@ -848,8 +1256,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
848
1256
|
SkyWaitModule,
|
|
849
1257
|
], host: {
|
|
850
1258
|
'[class.sky-margin-stacked-lg]': 'stacked()',
|
|
851
|
-
},
|
|
852
|
-
|
|
1259
|
+
}, providers: [
|
|
1260
|
+
{ provide: SkyDataColumnSource, useExisting: SkyDataGrid },
|
|
1261
|
+
{ provide: SkyDataSelectionSource, useExisting: SkyDataGrid },
|
|
1262
|
+
{ provide: SkyDataSortSource, useExisting: SkyDataGrid },
|
|
1263
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-wait [isWaiting]=\"!gridReady()\" />\n@if (gridOptions(); as gridOptions) {\n <!-- The grid keeps its column headers visible itself, below. -->\n <sky-ag-grid-wrapper\n viewkeeperDisabled\n [compact]=\"compact()\"\n [minHeight]=\"minHeight()\"\n >\n <ag-grid-angular\n skyViewkeeperOmitShadow=\".ag-body-horizontal-scroll\"\n [skyViewkeeper]=\"skyViewkeeper()\"\n [gridOptions]=\"gridOptions\"\n />\n </sky-ag-grid-wrapper>\n\n @if (pageCount() && pageSize(); as pageSize) {\n <sky-paging\n [currentPage]=\"page()\"\n [itemCount]=\"pageItemsCount()\"\n [pageSize]=\"pageSize\"\n (currentPageChange)=\"currentPageChange($event)\"\n />\n }\n}\n", styles: [":host{display:block;max-width:100%}\n"] }]
|
|
1264
|
+
}], ctorParameters: () => [], propDecorators: { autoSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoSort", required: false }] }], autoPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoPage", required: false }] }], columnFit: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnFit", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], labelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelText", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], multiselect: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiselect", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pageQueryParam: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageQueryParam", required: false }] }], rowCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowCount", required: false }] }], stacked: [{ type: i0.Input, args: [{ isSignal: true, alias: "stacked", required: false }] }], topScrollEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "topScrollEnabled", required: false }] }], page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }, { type: i0.Output, args: ["pageChange"] }], selectedRowIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedRowIds", required: false }] }, { type: i0.Output, args: ["selectedRowIdsChange"] }], selectedColumnIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedColumnIds", required: false }] }, { type: i0.Output, args: ["selectedColumnIdsChange"] }], sort: [{ type: i0.Input, args: [{ isSignal: true, alias: "sort", required: false }] }, { type: i0.Output, args: ["sortChange"] }], columns: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SkyDataGridColumn), { isSignal: true }] }] } });
|
|
853
1265
|
|
|
854
1266
|
/**
|
|
855
1267
|
* Generated bundle index. Do not edit.
|