@skyux/grids 14.0.0-alpha.0 → 14.0.0-alpha.2
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.
- package/fesm2022/skyux-grids.mjs +68 -96
- package/fesm2022/skyux-grids.mjs.map +1 -1
- package/package.json +14 -23
- package/types/skyux-grids.d.ts +17 -8
package/fesm2022/skyux-grids.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import * as i4 from '@angular/
|
|
1
|
+
import * as i4 from '@angular/cdk/drag-drop';
|
|
2
|
+
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
3
|
+
import * as i3 from '@angular/common';
|
|
2
4
|
import { CommonModule } from '@angular/common';
|
|
3
5
|
import * as i0 from '@angular/core';
|
|
4
6
|
import { NgModule, ViewContainerRef, ViewChild, Input, ChangeDetectionStrategy, Component, EventEmitter, TemplateRef, ContentChildren, Injectable, inject, EnvironmentInjector, HostListener, ViewChildren, Output } from '@angular/core';
|
|
@@ -18,8 +20,6 @@ import * as i9 from '@skyux/layout';
|
|
|
18
20
|
import { SkyInlineDeleteModule } from '@skyux/layout';
|
|
19
21
|
import * as i10 from '@skyux/popovers';
|
|
20
22
|
import { SkyPopoverModule } from '@skyux/popovers';
|
|
21
|
-
import * as i2 from 'ng2-dragula';
|
|
22
|
-
import { DragulaService, DragulaModule } from 'ng2-dragula';
|
|
23
23
|
import * as i13 from '@skyux/i18n';
|
|
24
24
|
import { SkyLibResourcesService, SkyI18nModule } from '@skyux/i18n';
|
|
25
25
|
import { getData, ListItemModel } from '@skyux/list-builder-common';
|
|
@@ -69,11 +69,11 @@ SkyLibResourcesService.addResources(RESOURCES);
|
|
|
69
69
|
* Import into any component library module that needs to use resource strings.
|
|
70
70
|
*/
|
|
71
71
|
class SkyGridsResourcesModule {
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
73
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.
|
|
74
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
73
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.2", ngImport: i0, type: SkyGridsResourcesModule, exports: [SkyI18nModule] }); }
|
|
74
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridsResourcesModule, imports: [SkyI18nModule] }); }
|
|
75
75
|
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridsResourcesModule, decorators: [{
|
|
77
77
|
type: NgModule,
|
|
78
78
|
args: [{
|
|
79
79
|
exports: [SkyI18nModule],
|
|
@@ -97,10 +97,10 @@ class SkyGridCellComponent {
|
|
|
97
97
|
}
|
|
98
98
|
return undefined;
|
|
99
99
|
}
|
|
100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
101
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
100
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: SkyGridCellComponent, isStandalone: false, selector: "sky-grid-cell", inputs: { item: "item", columnId: "columnId", template: "template", fieldSelector: "fieldSelector" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["cell"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<ng-template #cell />', isInline: true, styles: [":host{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:8px;min-height:35px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
102
102
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridCellComponent, decorators: [{
|
|
104
104
|
type: Component,
|
|
105
105
|
args: [{ selector: 'sky-grid-cell', template: '<ng-template #cell />', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:8px;min-height:35px}\n"] }]
|
|
106
106
|
}], propDecorators: { item: [{
|
|
@@ -188,10 +188,10 @@ class SkyGridColumnComponent {
|
|
|
188
188
|
}
|
|
189
189
|
return false;
|
|
190
190
|
}
|
|
191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: SkyGridColumnComponent, isStandalone: false, selector: "sky-grid-column", inputs: { alignment: "alignment", description: "description", excludeFromHighlighting: "excludeFromHighlighting", field: "field", heading: "heading", hidden: "hidden", id: "id", inlineHelpPopover: "inlineHelpPopover", isSortable: "isSortable", locked: "locked", searchFunction: ["search", "searchFunction"], type: "type", templateInput: ["template", "templateInput"], width: "width" }, queries: [{ propertyName: "templates", predicate: TemplateRef }], usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
193
193
|
}
|
|
194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridColumnComponent, decorators: [{
|
|
195
195
|
type: Component,
|
|
196
196
|
args: [{
|
|
197
197
|
selector: 'sky-grid-column',
|
|
@@ -234,11 +234,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
234
234
|
args: [TemplateRef]
|
|
235
235
|
}] } });
|
|
236
236
|
|
|
237
|
-
const GRID_HEADER_DRAGGING_CLASS = 'sky-grid-header-dragging';
|
|
238
|
-
const GRID_HEADER_LOCKED_SELECTOR = '.sky-grid-header-locked';
|
|
239
|
-
const GRID_HEADER_RESIZE_HANDLE = '.sky-grid-resize-handle';
|
|
240
|
-
const GRID_ROW_DELETE_SELECTOR = '.sky-grid-row-delete-heading';
|
|
241
|
-
const GRID_MULTISELECT_SELECTOR = '.sky-grid-multiselect-cell';
|
|
242
237
|
/**
|
|
243
238
|
* @internal
|
|
244
239
|
*/
|
|
@@ -247,45 +242,37 @@ class SkyGridAdapterService {
|
|
|
247
242
|
this.rendererFactory = rendererFactory;
|
|
248
243
|
this.renderer = this.rendererFactory.createRenderer(undefined, undefined);
|
|
249
244
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
for (
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}
|
|
264
|
-
dropCallback(columnIds);
|
|
265
|
-
});
|
|
266
|
-
dragulaService.createGroup(dragulaGroupName, {
|
|
267
|
-
moves: (el, container, handle) => {
|
|
268
|
-
const columns = container.querySelectorAll('th div');
|
|
269
|
-
const isLeftOfLocked = this.isLeftOfLocked(handle, columns);
|
|
270
|
-
return (!el.querySelector(GRID_HEADER_LOCKED_SELECTOR) &&
|
|
271
|
-
handle !== undefined &&
|
|
272
|
-
!handle.matches(GRID_HEADER_RESIZE_HANDLE) &&
|
|
273
|
-
!handle.matches(GRID_MULTISELECT_SELECTOR) &&
|
|
274
|
-
!handle.matches(GRID_ROW_DELETE_SELECTOR) &&
|
|
275
|
-
!isLeftOfLocked);
|
|
276
|
-
},
|
|
277
|
-
accepts: (el, target, source, sibling) => {
|
|
278
|
-
if (sibling === undefined || !sibling) {
|
|
279
|
-
return true;
|
|
245
|
+
/**
|
|
246
|
+
* Determines whether a column can be dropped at the given position.
|
|
247
|
+
* Columns cannot be dropped to the left of locked columns.
|
|
248
|
+
*/
|
|
249
|
+
canDrop(displayedColumns, currentIndex, targetIndex) {
|
|
250
|
+
if (displayedColumns[currentIndex]?.locked) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
// Cannot drop to the left of a locked column.
|
|
254
|
+
if (targetIndex < currentIndex) {
|
|
255
|
+
for (let i = targetIndex; i < currentIndex; i++) {
|
|
256
|
+
if (displayedColumns[i]?.locked) {
|
|
257
|
+
return false;
|
|
280
258
|
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Handles the CDK drop event and returns the updated column IDs.
|
|
265
|
+
*/
|
|
266
|
+
onColumnDrop(event, displayedColumns) {
|
|
267
|
+
if (event.previousIndex === event.currentIndex) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
if (!this.canDrop(displayedColumns, event.previousIndex, event.currentIndex)) {
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
const columnIds = displayedColumns.map((col) => col.id);
|
|
274
|
+
moveItemInArray(columnIds, event.previousIndex, event.currentIndex);
|
|
275
|
+
return columnIds;
|
|
289
276
|
}
|
|
290
277
|
getRowHeight(el, index) {
|
|
291
278
|
return (el.nativeElement.querySelectorAll('tbody tr')[index].scrollHeight + 'px');
|
|
@@ -295,27 +282,10 @@ class SkyGridAdapterService {
|
|
|
295
282
|
this.renderer.setStyle(el.nativeElement, style, value);
|
|
296
283
|
}
|
|
297
284
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
for (const column of Array.from(columns)) {
|
|
301
|
-
if (column.contains(handle)) {
|
|
302
|
-
sourceColumn = column;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
for (let i = columns.length - 1; i >= 0; i--) {
|
|
306
|
-
if (columns[i].classList.contains('sky-grid-header-locked')) {
|
|
307
|
-
return true;
|
|
308
|
-
}
|
|
309
|
-
if (columns[i] === sourceColumn) {
|
|
310
|
-
break;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
return false;
|
|
314
|
-
}
|
|
315
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SkyGridAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
316
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SkyGridAdapterService }); }
|
|
285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
286
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridAdapterService }); }
|
|
317
287
|
}
|
|
318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridAdapterService, decorators: [{
|
|
319
289
|
type: Injectable
|
|
320
290
|
}], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
|
|
321
291
|
|
|
@@ -424,10 +394,9 @@ class SkyGridComponent {
|
|
|
424
394
|
return this.tableElementRef.nativeElement.offsetWidth;
|
|
425
395
|
}
|
|
426
396
|
#environmentInjector;
|
|
427
|
-
constructor(affixService, changeDetector,
|
|
397
|
+
constructor(affixService, changeDetector, gridAdapter, overlayService, skyWindow, uiConfigService, logger) {
|
|
428
398
|
this.affixService = affixService;
|
|
429
399
|
this.changeDetector = changeDetector;
|
|
430
|
-
this.dragulaService = dragulaService;
|
|
431
400
|
this.gridAdapter = gridAdapter;
|
|
432
401
|
this.overlayService = overlayService;
|
|
433
402
|
this.skyWindow = skyWindow;
|
|
@@ -509,7 +478,6 @@ class SkyGridComponent {
|
|
|
509
478
|
fieldSelector: '',
|
|
510
479
|
descending: false,
|
|
511
480
|
});
|
|
512
|
-
this.dragulaGroupName = `sky-grids-group-${this.gridId}`;
|
|
513
481
|
}
|
|
514
482
|
ngOnInit() {
|
|
515
483
|
this.messageStream
|
|
@@ -527,10 +495,6 @@ class SkyGridComponent {
|
|
|
527
495
|
else {
|
|
528
496
|
this.initColumns();
|
|
529
497
|
}
|
|
530
|
-
// Setup column drag-and-drop.
|
|
531
|
-
this.gridAdapter.initializeDragAndDrop(this.dragulaGroupName, this.dragulaService, (selectedColumnIds) => {
|
|
532
|
-
this.onHeaderDrop(selectedColumnIds);
|
|
533
|
-
});
|
|
534
498
|
this.applySelectedRows();
|
|
535
499
|
}
|
|
536
500
|
ngAfterViewInit() {
|
|
@@ -585,7 +549,6 @@ class SkyGridComponent {
|
|
|
585
549
|
Object.keys(this.rowDeleteContents).forEach((id) => {
|
|
586
550
|
this.destroyRowDelete(id);
|
|
587
551
|
});
|
|
588
|
-
this.dragulaService.destroy(this.dragulaGroupName);
|
|
589
552
|
}
|
|
590
553
|
onWindowResize() {
|
|
591
554
|
this.checkUserColumnWidthsForScroll();
|
|
@@ -832,6 +795,15 @@ class SkyGridComponent {
|
|
|
832
795
|
getRowDeleteItem(id) {
|
|
833
796
|
return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === id);
|
|
834
797
|
}
|
|
798
|
+
/**
|
|
799
|
+
* Handles the CDK drag-and-drop event when a column header is dropped.
|
|
800
|
+
*/
|
|
801
|
+
onColumnDropped(event) {
|
|
802
|
+
const newColumnIds = this.gridAdapter.onColumnDrop(event, this.displayedColumns);
|
|
803
|
+
if (newColumnIds) {
|
|
804
|
+
this.onHeaderDrop(newColumnIds);
|
|
805
|
+
}
|
|
806
|
+
}
|
|
835
807
|
// Prevent touch devices from inadvertently scrolling grid while dragging columns.
|
|
836
808
|
onTouchMove(event) {
|
|
837
809
|
event.preventDefault();
|
|
@@ -1288,13 +1260,13 @@ class SkyGridComponent {
|
|
|
1288
1260
|
return (arrayA.length === arrayB.length &&
|
|
1289
1261
|
arrayA.every((value, index) => value === arrayB[index]));
|
|
1290
1262
|
}
|
|
1291
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1292
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SkyGridComponent, isStandalone: false, selector: "sky-grid", inputs: { columns: "columns", data: "data", enableMultiselect: "enableMultiselect", fit: "fit", hasToolbar: "hasToolbar", height: "height", highlightText: "highlightText", messageStream: "messageStream", multiselectRowId: "multiselectRowId", rowHighlightedId: "rowHighlightedId", selectedColumnIds: "selectedColumnIds", selectedRowIds: "selectedRowIds", settingsKey: "settingsKey", sortField: "sortField", width: "width" }, outputs: { columnWidthChange: "columnWidthChange", multiselectSelectionChange: "multiselectSelectionChange", rowDeleteCancel: "rowDeleteCancel", rowDeleteConfirm: "rowDeleteConfirm", selectedColumnIdsChange: "selectedColumnIdsChange", sortFieldChange: "sortFieldChange" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [SkyGridAdapterService], queries: [{ propertyName: "columnComponents", predicate: SkyGridColumnComponent }], viewQueries: [{ propertyName: "inlineDeleteTemplateRef", first: true, predicate: ["inlineDeleteTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "tableContainerElementRef", first: true, predicate: ["gridContainer"], descendants: true }, { propertyName: "tableElementRef", first: true, predicate: ["gridTable"], descendants: true }, { propertyName: "topScrollContainerElementRef", first: true, predicate: ["topScrollContainer"], descendants: true }, { propertyName: "resizeBar", first: true, predicate: ["resizeBar"], descendants: true }, { propertyName: "columnElementRefs", predicate: ["gridCol"], descendants: true }, { propertyName: "columnRangeInputElementRefs", predicate: ["colSizeRange"], descendants: true }, { propertyName: "inlineDeleteRefs", predicate: ["inlineDeleteRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-grid\">\n @if (showTopScroll) {\n <div\n #topScrollContainer\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n }\n <div\n #gridContainer\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n >\n <table #gridTable class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\">\n <thead>\n <tr [dragula]=\"dragulaGroupName\">\n @if (enableMultiselect) {\n <th\n class=\"sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <th\n #gridCol\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n @if ((getCaretVisibility(column.field) | async) === 'hidden') {\n <span class=\"sky-grid-header-caret-hidden-spacing\"></span>\n }\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n variant=\"solid\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [iconName]=\"getCaretIconNames(column)\"\n />\n @if (column.inlineHelpPopover) {\n <sky-help-inline\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n />\n }\n </div>\n @if ((fit === 'width' && !last) || fit === 'scroll') {\n <span\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n }\n <input\n #colSizeRange\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur()\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n />\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n @for (item of items; track item; let i = $index) {\n <tr\n class=\"sky-grid-row\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n @if (enableMultiselect) {\n <td class=\"sky-grid-multiselect-cell sky-grid-header-locked\">\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"\n 'skyux_grid_multiselect_select_row' | skyLibResources\n \"\n [(ngModel)]=\"item.isSelected\"\n (change)=\"onMultiselectCheckboxChange()\"\n />\n </div>\n </td>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <td\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (showResizeBar) {\n <div\n #resizeBar\n aria-hidden=\"true\"\n class=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n ></div>\n }\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template #inlineDeleteTemplateRef let-item>\n <div\n #inlineDeleteRef\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n />\n </div>\n</ng-template>\n", styles: [".sky-grid:not(.sky-theme-modern *){--sky-override-grid-font-size: 15px;--sky-override-grid-header-background: #ffffff;--sky-override-grid-heading-border: 1px solid #cdcfd2;--sky-override-grid-heading-color: var(--sky-text-color-deemphasized);--sky-override-grid-heading-drag-color: #eeeeef;--sky-override-grid-heading-font-size: 15px;--sky-override-grid-heading-font-weight: 400;--sky-override-grid-heading-font: BLKB Sans, Helvetica Neue, Arial, sans-serif;--sky-override-grid-heading-sort-space: 5px;--sky-override-grid-multiselect-display: block;--sky-override-grid-resize-handle-color: #00b4f1;--sky-override-grid-resize-handle-width: 5px;--sky-override-grid-resize-opacity: .6;--sky-override-grid-row-border: 1px dotted #cdcfd2;--sky-override-grid-row-color-even: #ffffff;--sky-override-grid-row-color-odd: #fbfbfb;--sky-override-grid-row-selected-background-hover: rgb(232.7615384615, 227.9961538462, 240.7038461538);--sky-override-grid-row-selected-background: #f1eef6;--sky-override-grid-row-selected-border: 1px solid #0974a1;--sky-override-grid-row-selected-border: 1px solid #dadbf6;--sky-override-grid-row-selected-box-shadow: 0px 0px 0px 3px inset #0974a1}.sky-grid{position:relative;display:block}.sky-grid-table-container{overflow:auto}.sky-grid-table{position:relative;table-layout:fixed;border-collapse:collapse;margin:0;font-size:var(--sky-override-grid-font-size, var(--sky-font-size-body-m));min-width:100%}.sky-grid-table.sky-grid-fit{max-width:100%;width:100%}.sky-grid-tbody{background-color:var(--sky-override-grid-row-color-even, var(--sky-color-background-row-base))}.sky-grid-row{border-bottom:var(--sky-override-grid-row-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-row:nth-child(odd){background-color:var(--sky-override-grid-row-color-odd, var(--sky-color-background-row-base))}.sky-grid-row.sky-grid-row-highlight{border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) solid var(--sky-color-border-selected));box-shadow:var(--sky-override-grid-row-selected-box-shadow, 0 0 0 var(--sky-border-width-selected-m) inset var(--sky-color-border-selected))}.sky-grid-row .sky-grid-cell{padding:0;min-width:10px}.sky-grid-heading{position:relative;border-top:var(--sky-override-grid-heading-border, none);border-bottom:var(--sky-override-grid-heading-border, var(--sky-border-width-emphasized) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-left:var(--sky-override-grid-heading-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));color:var(--sky-override-grid-heading-color, var(--sky-color-text-heading));font-family:var(--sky-override-grid-heading-font, var(--sky-font-family-primary));font-weight:var(--sky-override-grid-heading-font-weight, var(--sky-font-style-heading-4));font-size:var(--sky-override-grid-heading-font-size, var(--sky-font-size-heading-4));padding:0;cursor:pointer;background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)));overflow:visible;background-clip:padding-box}.sky-grid-heading:first-child{border-left:1px solid transparent}.sky-grid-heading.sky-grid-header-dragging{background-color:var(--sky-override-grid-heading-drag-color, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)))}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-heading-sort,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-heading-sort{width:14px}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-help-inline-sort-hidden,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-help-inline-sort-hidden{margin-left:-14px;margin-right:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-header-caret-hidden-spacing{padding-left:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-heading-sort-visible{width:14px}.sky-grid-heading{-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-grid-heading div{padding:8px}.sky-grid-heading .overflow{text-overflow:ellipsis;white-space:nowrap;position:relative;z-index:1;overflow:hidden;min-width:100%}.sky-grid-heading .sky-grid-column-input-aria-only{-webkit-appearance:none;-moz-appearance:none;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);position:absolute;display:block;top:0;bottom:0;right:0}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-track{background:transparent}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-ms-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only:focus{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-column-alignment-left{text-align:left}.sky-grid-column-alignment-center{text-align:center}.sky-grid-column-alignment-right{text-align:right}.sky-grid-multiselect-cell{padding:0;text-align:center}.sky-grid-multiselect-cell ::ng-deep .sky-switch-control{margin:0 auto}.sky-grid-multiselect-cell div{display:var(--sky-override-grid-multiselect-display, flex);justify-content:space-around}th.sky-grid-multiselect-cell{cursor:default}th.sky-grid-multiselect-cell .screen-reader-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);outline:none;white-space:nowrap}@-moz-document url-prefix(){.sky-grid-multiselect-row td{border-left:0px solid transparent;border-right:0px solid transparent}}.sky-grid-multiselect-row:hover{background-color:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-selected-row{background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft));border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-bottom:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-multiselect-selected-row:nth-child(odd){background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover{background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-has-toolbar .sky-grid-heading{border-top-width:0px}.sky-grid-heading-sort.sky-grid-heading-sort-hidden{visibility:hidden}.sky-grid-heading-sort.sky-grid-heading-sort-visible{visibility:visible;padding-left:var(--sky-override-grid-heading-sort-space, var(--sky-space-gap-text_action-xs))}.sky-grid-resize-handle{position:absolute;right:0;top:0;bottom:0;width:30px;z-index:2;min-height:20px;height:100%!important;vertical-align:middle;cursor:col-resize}.sky-grid-resize-handle:hover:after{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-resize-handle:after{position:absolute;right:0;top:0;bottom:0;width:var(--sky-override-grid-resize-handle-width, 3px);height:100%;content:\"\";background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)))}.sky-grid-resize-bar{position:absolute;top:0;left:0;z-index:99;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);background:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider));opacity:var(--sky-override-grid-resize-opacity, 1)}tr{position:relative}.sky-grid-top-scroll-container{overflow:auto}.sky-grid-top-scroll{height:1px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DragulaDirective, selector: "[dragula]", inputs: ["dragula", "dragulaModel"], outputs: ["dragulaModelChange"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "helpPopoverContent", "helpPopoverTitle", "iconName", "checkboxType", "checked", "indeterminate", "required", "labelText", "labelHidden", "hintText", "stacked", "helpKey"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i7.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "component", type: i8.λ1, selector: "sky-icon", inputs: ["iconName", "variant", "iconSize"] }, { kind: "component", type: i9.λ8, selector: "sky-inline-delete", inputs: ["pending"], outputs: ["cancelTriggered", "deleteTriggered"] }, { kind: "directive", type: i10.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { kind: "directive", type: i11.SkyTextHighlightDirective, selector: "[skyHighlight]", inputs: ["skyHighlight"] }, { kind: "component", type: SkyGridCellComponent, selector: "sky-grid-cell", inputs: ["item", "columnId", "template", "fieldSelector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.SkyLibResourcesPipe, name: "skyLibResources" }], viewProviders: [DragulaService], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1263
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: SkyGridAdapterService }, { token: i1.SkyOverlayService }, { token: i1.SkyAppWindowRef }, { token: i1.SkyUIConfigService }, { token: i1.SkyLogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1264
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: SkyGridComponent, isStandalone: false, selector: "sky-grid", inputs: { columns: "columns", data: "data", enableMultiselect: "enableMultiselect", fit: "fit", hasToolbar: "hasToolbar", height: "height", highlightText: "highlightText", messageStream: "messageStream", multiselectRowId: "multiselectRowId", rowHighlightedId: "rowHighlightedId", selectedColumnIds: "selectedColumnIds", selectedRowIds: "selectedRowIds", settingsKey: "settingsKey", sortField: "sortField", width: "width" }, outputs: { columnWidthChange: "columnWidthChange", multiselectSelectionChange: "multiselectSelectionChange", rowDeleteCancel: "rowDeleteCancel", rowDeleteConfirm: "rowDeleteConfirm", selectedColumnIdsChange: "selectedColumnIdsChange", sortFieldChange: "sortFieldChange" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [SkyGridAdapterService], queries: [{ propertyName: "columnComponents", predicate: SkyGridColumnComponent }], viewQueries: [{ propertyName: "inlineDeleteTemplateRef", first: true, predicate: ["inlineDeleteTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "tableContainerElementRef", first: true, predicate: ["gridContainer"], descendants: true }, { propertyName: "tableElementRef", first: true, predicate: ["gridTable"], descendants: true }, { propertyName: "topScrollContainerElementRef", first: true, predicate: ["topScrollContainer"], descendants: true }, { propertyName: "resizeBar", first: true, predicate: ["resizeBar"], descendants: true }, { propertyName: "columnElementRefs", predicate: ["gridCol"], descendants: true }, { propertyName: "columnRangeInputElementRefs", predicate: ["colSizeRange"], descendants: true }, { propertyName: "inlineDeleteRefs", predicate: ["inlineDeleteRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-grid\">\n @if (showTopScroll) {\n <div\n #topScrollContainer\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n }\n <div\n #gridContainer\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n >\n <table #gridTable class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\">\n <thead>\n <tr\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n [cdkDropListData]=\"displayedColumns\"\n (cdkDropListDropped)=\"onColumnDropped($event)\"\n >\n @if (enableMultiselect) {\n <th\n class=\"sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <th\n #gridCol\n cdkDrag\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [cdkDragDisabled]=\"column.locked\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n @if ((getCaretVisibility(column.field) | async) === 'hidden') {\n <span class=\"sky-grid-header-caret-hidden-spacing\"></span>\n }\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n variant=\"solid\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [iconName]=\"getCaretIconNames(column)\"\n />\n @if (column.inlineHelpPopover) {\n <sky-help-inline\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n />\n }\n </div>\n @if ((fit === 'width' && !last) || fit === 'scroll') {\n <span\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n }\n <input\n #colSizeRange\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur()\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n />\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n @for (item of items; track item; let i = $index) {\n <tr\n class=\"sky-grid-row\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n @if (enableMultiselect) {\n <td class=\"sky-grid-multiselect-cell sky-grid-header-locked\">\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"\n 'skyux_grid_multiselect_select_row' | skyLibResources\n \"\n [(ngModel)]=\"item.isSelected\"\n (change)=\"onMultiselectCheckboxChange()\"\n />\n </div>\n </td>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <td\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (showResizeBar) {\n <div\n #resizeBar\n aria-hidden=\"true\"\n class=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n ></div>\n }\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template #inlineDeleteTemplateRef let-item>\n <div\n #inlineDeleteRef\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n />\n </div>\n</ng-template>\n", styles: [".sky-grid:not(.sky-theme-modern *){--sky-override-grid-font-size: 15px;--sky-override-grid-header-background: #ffffff;--sky-override-grid-heading-border: 1px solid #cdcfd2;--sky-override-grid-heading-color: var(--sky-text-color-deemphasized);--sky-override-grid-heading-drag-color: #eeeeef;--sky-override-grid-heading-font-size: 15px;--sky-override-grid-heading-font-weight: 400;--sky-override-grid-heading-font: BLKB Sans, Helvetica Neue, Arial, sans-serif;--sky-override-grid-heading-sort-space: 5px;--sky-override-grid-multiselect-display: block;--sky-override-grid-resize-handle-color: #00b4f1;--sky-override-grid-resize-handle-width: 5px;--sky-override-grid-resize-opacity: .6;--sky-override-grid-row-border: 1px dotted #cdcfd2;--sky-override-grid-row-color-even: #ffffff;--sky-override-grid-row-color-odd: #fbfbfb;--sky-override-grid-row-selected-background-hover: rgb(232.7615384615, 227.9961538462, 240.7038461538);--sky-override-grid-row-selected-background: #f1eef6;--sky-override-grid-row-selected-border: 1px solid #0974a1;--sky-override-grid-row-selected-border: 1px solid #dadbf6;--sky-override-grid-row-selected-box-shadow: 0px 0px 0px 3px inset #0974a1}.sky-grid{position:relative;display:block}.sky-grid-table-container{overflow:auto}.sky-grid-table{position:relative;table-layout:fixed;border-collapse:collapse;margin:0;font-size:var(--sky-override-grid-font-size, var(--sky-font-size-body-m));min-width:100%}.sky-grid-table.sky-grid-fit{max-width:100%;width:100%}.sky-grid-tbody{background-color:var(--sky-override-grid-row-color-even, var(--sky-color-background-row-base))}.sky-grid-row{border-bottom:var(--sky-override-grid-row-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-row:nth-child(odd){background-color:var(--sky-override-grid-row-color-odd, var(--sky-color-background-row-base))}.sky-grid-row.sky-grid-row-highlight{border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) solid var(--sky-color-border-selected));box-shadow:var(--sky-override-grid-row-selected-box-shadow, 0 0 0 var(--sky-border-width-selected-m) inset var(--sky-color-border-selected))}.sky-grid-row .sky-grid-cell{padding:0;min-width:10px}.sky-grid-heading{position:relative;border-top:var(--sky-override-grid-heading-border, none);border-bottom:var(--sky-override-grid-heading-border, var(--sky-border-width-emphasized) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-left:var(--sky-override-grid-heading-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));color:var(--sky-override-grid-heading-color, var(--sky-color-text-heading));font-family:var(--sky-override-grid-heading-font, var(--sky-font-family-primary));font-weight:var(--sky-override-grid-heading-font-weight, var(--sky-font-style-heading-4));font-size:var(--sky-override-grid-heading-font-size, var(--sky-font-size-heading-4));padding:0;cursor:pointer;background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)));overflow:visible;background-clip:padding-box}.sky-grid-heading:first-child{border-left:1px solid transparent}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-heading-sort,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-heading-sort{width:14px}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-help-inline-sort-hidden,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-help-inline-sort-hidden{margin-left:-14px;margin-right:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-header-caret-hidden-spacing{padding-left:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-heading-sort-visible{width:14px}.sky-grid-heading{-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-grid-heading div{padding:8px}.sky-grid-heading .overflow{text-overflow:ellipsis;white-space:nowrap;position:relative;z-index:1;overflow:hidden;min-width:100%}.sky-grid-heading .sky-grid-column-input-aria-only{-webkit-appearance:none;-moz-appearance:none;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);position:absolute;display:block;top:0;bottom:0;right:0}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-track{background:transparent}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-ms-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only:focus{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-column-alignment-left{text-align:left}.sky-grid-column-alignment-center{text-align:center}.sky-grid-column-alignment-right{text-align:right}.sky-grid-multiselect-cell{padding:0;text-align:center}.sky-grid-multiselect-cell ::ng-deep .sky-switch-control{margin:0 auto}.sky-grid-multiselect-cell div{display:var(--sky-override-grid-multiselect-display, flex);justify-content:space-around}th.sky-grid-multiselect-cell{cursor:default}th.sky-grid-multiselect-cell .screen-reader-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);outline:none;white-space:nowrap}@-moz-document url-prefix(){.sky-grid-multiselect-row td{border-left:0px solid transparent;border-right:0px solid transparent}}.sky-grid-multiselect-row:hover{background-color:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-selected-row{background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft));border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-bottom:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-multiselect-selected-row:nth-child(odd){background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover{background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-has-toolbar .sky-grid-heading{border-top-width:0px}.sky-grid-heading-sort.sky-grid-heading-sort-hidden{visibility:hidden}.sky-grid-heading-sort.sky-grid-heading-sort-visible{visibility:visible;padding-left:var(--sky-override-grid-heading-sort-space, var(--sky-space-gap-text_action-xs))}.sky-grid-resize-handle{position:absolute;right:0;top:0;bottom:0;width:30px;z-index:2;min-height:20px;height:100%!important;vertical-align:middle;cursor:col-resize}.sky-grid-resize-handle:hover:after{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-resize-handle:after{position:absolute;right:0;top:0;bottom:0;width:var(--sky-override-grid-resize-handle-width, 3px);height:100%;content:\"\";background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)))}.sky-grid-resize-bar{position:absolute;top:0;left:0;z-index:99;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);background:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider));opacity:var(--sky-override-grid-resize-opacity, 1)}tr{position:relative}.sky-grid-top-scroll-container{overflow:auto}.sky-grid-top-scroll{height:1px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "helpPopoverContent", "helpPopoverTitle", "iconName", "checkboxType", "checked", "indeterminate", "required", "labelText", "labelHidden", "hintText", "stacked", "helpKey"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i7.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "component", type: i8.λ1, selector: "sky-icon", inputs: ["iconName", "variant", "iconSize"] }, { kind: "component", type: i9.λ8, selector: "sky-inline-delete", inputs: ["pending"], outputs: ["cancelTriggered", "deleteTriggered"] }, { kind: "directive", type: i10.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { kind: "directive", type: i11.SkyTextHighlightDirective, selector: "[skyHighlight]", inputs: ["skyHighlight"] }, { kind: "component", type: SkyGridCellComponent, selector: "sky-grid-cell", inputs: ["item", "columnId", "template", "fieldSelector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1293
1265
|
}
|
|
1294
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridComponent, decorators: [{
|
|
1295
1267
|
type: Component,
|
|
1296
|
-
args: [{ selector: 'sky-grid', viewProviders: [DragulaService], providers: [SkyGridAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-grid\">\n @if (showTopScroll) {\n <div\n #topScrollContainer\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n }\n <div\n #gridContainer\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n >\n <table #gridTable class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\">\n <thead>\n <tr [dragula]=\"dragulaGroupName\">\n @if (enableMultiselect) {\n <th\n class=\"sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <th\n #gridCol\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n @if ((getCaretVisibility(column.field) | async) === 'hidden') {\n <span class=\"sky-grid-header-caret-hidden-spacing\"></span>\n }\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n variant=\"solid\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [iconName]=\"getCaretIconNames(column)\"\n />\n @if (column.inlineHelpPopover) {\n <sky-help-inline\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n />\n }\n </div>\n @if ((fit === 'width' && !last) || fit === 'scroll') {\n <span\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n }\n <input\n #colSizeRange\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur()\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n />\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n @for (item of items; track item; let i = $index) {\n <tr\n class=\"sky-grid-row\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n @if (enableMultiselect) {\n <td class=\"sky-grid-multiselect-cell sky-grid-header-locked\">\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"\n 'skyux_grid_multiselect_select_row' | skyLibResources\n \"\n [(ngModel)]=\"item.isSelected\"\n (change)=\"onMultiselectCheckboxChange()\"\n />\n </div>\n </td>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <td\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (showResizeBar) {\n <div\n #resizeBar\n aria-hidden=\"true\"\n class=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n ></div>\n }\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template #inlineDeleteTemplateRef let-item>\n <div\n #inlineDeleteRef\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n />\n </div>\n</ng-template>\n", styles: [".sky-grid:not(.sky-theme-modern *){--sky-override-grid-font-size: 15px;--sky-override-grid-header-background: #ffffff;--sky-override-grid-heading-border: 1px solid #cdcfd2;--sky-override-grid-heading-color: var(--sky-text-color-deemphasized);--sky-override-grid-heading-drag-color: #eeeeef;--sky-override-grid-heading-font-size: 15px;--sky-override-grid-heading-font-weight: 400;--sky-override-grid-heading-font: BLKB Sans, Helvetica Neue, Arial, sans-serif;--sky-override-grid-heading-sort-space: 5px;--sky-override-grid-multiselect-display: block;--sky-override-grid-resize-handle-color: #00b4f1;--sky-override-grid-resize-handle-width: 5px;--sky-override-grid-resize-opacity: .6;--sky-override-grid-row-border: 1px dotted #cdcfd2;--sky-override-grid-row-color-even: #ffffff;--sky-override-grid-row-color-odd: #fbfbfb;--sky-override-grid-row-selected-background-hover: rgb(232.7615384615, 227.9961538462, 240.7038461538);--sky-override-grid-row-selected-background: #f1eef6;--sky-override-grid-row-selected-border: 1px solid #0974a1;--sky-override-grid-row-selected-border: 1px solid #dadbf6;--sky-override-grid-row-selected-box-shadow: 0px 0px 0px 3px inset #0974a1}.sky-grid{position:relative;display:block}.sky-grid-table-container{overflow:auto}.sky-grid-table{position:relative;table-layout:fixed;border-collapse:collapse;margin:0;font-size:var(--sky-override-grid-font-size, var(--sky-font-size-body-m));min-width:100%}.sky-grid-table.sky-grid-fit{max-width:100%;width:100%}.sky-grid-tbody{background-color:var(--sky-override-grid-row-color-even, var(--sky-color-background-row-base))}.sky-grid-row{border-bottom:var(--sky-override-grid-row-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-row:nth-child(odd){background-color:var(--sky-override-grid-row-color-odd, var(--sky-color-background-row-base))}.sky-grid-row.sky-grid-row-highlight{border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) solid var(--sky-color-border-selected));box-shadow:var(--sky-override-grid-row-selected-box-shadow, 0 0 0 var(--sky-border-width-selected-m) inset var(--sky-color-border-selected))}.sky-grid-row .sky-grid-cell{padding:0;min-width:10px}.sky-grid-heading{position:relative;border-top:var(--sky-override-grid-heading-border, none);border-bottom:var(--sky-override-grid-heading-border, var(--sky-border-width-emphasized) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-left:var(--sky-override-grid-heading-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));color:var(--sky-override-grid-heading-color, var(--sky-color-text-heading));font-family:var(--sky-override-grid-heading-font, var(--sky-font-family-primary));font-weight:var(--sky-override-grid-heading-font-weight, var(--sky-font-style-heading-4));font-size:var(--sky-override-grid-heading-font-size, var(--sky-font-size-heading-4));padding:0;cursor:pointer;background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)));overflow:visible;background-clip:padding-box}.sky-grid-heading:first-child{border-left:1px solid transparent}.sky-grid-heading.sky-grid-header-dragging{background-color:var(--sky-override-grid-heading-drag-color, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)))}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-heading-sort,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-heading-sort{width:14px}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-help-inline-sort-hidden,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-help-inline-sort-hidden{margin-left:-14px;margin-right:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-header-caret-hidden-spacing{padding-left:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-heading-sort-visible{width:14px}.sky-grid-heading{-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-grid-heading div{padding:8px}.sky-grid-heading .overflow{text-overflow:ellipsis;white-space:nowrap;position:relative;z-index:1;overflow:hidden;min-width:100%}.sky-grid-heading .sky-grid-column-input-aria-only{-webkit-appearance:none;-moz-appearance:none;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);position:absolute;display:block;top:0;bottom:0;right:0}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-track{background:transparent}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-ms-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only:focus{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-column-alignment-left{text-align:left}.sky-grid-column-alignment-center{text-align:center}.sky-grid-column-alignment-right{text-align:right}.sky-grid-multiselect-cell{padding:0;text-align:center}.sky-grid-multiselect-cell ::ng-deep .sky-switch-control{margin:0 auto}.sky-grid-multiselect-cell div{display:var(--sky-override-grid-multiselect-display, flex);justify-content:space-around}th.sky-grid-multiselect-cell{cursor:default}th.sky-grid-multiselect-cell .screen-reader-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);outline:none;white-space:nowrap}@-moz-document url-prefix(){.sky-grid-multiselect-row td{border-left:0px solid transparent;border-right:0px solid transparent}}.sky-grid-multiselect-row:hover{background-color:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-selected-row{background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft));border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-bottom:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-multiselect-selected-row:nth-child(odd){background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover{background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-has-toolbar .sky-grid-heading{border-top-width:0px}.sky-grid-heading-sort.sky-grid-heading-sort-hidden{visibility:hidden}.sky-grid-heading-sort.sky-grid-heading-sort-visible{visibility:visible;padding-left:var(--sky-override-grid-heading-sort-space, var(--sky-space-gap-text_action-xs))}.sky-grid-resize-handle{position:absolute;right:0;top:0;bottom:0;width:30px;z-index:2;min-height:20px;height:100%!important;vertical-align:middle;cursor:col-resize}.sky-grid-resize-handle:hover:after{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-resize-handle:after{position:absolute;right:0;top:0;bottom:0;width:var(--sky-override-grid-resize-handle-width, 3px);height:100%;content:\"\";background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)))}.sky-grid-resize-bar{position:absolute;top:0;left:0;z-index:99;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);background:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider));opacity:var(--sky-override-grid-resize-opacity, 1)}tr{position:relative}.sky-grid-top-scroll-container{overflow:auto}.sky-grid-top-scroll{height:1px}\n"] }]
|
|
1297
|
-
}], ctorParameters: () => [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type:
|
|
1268
|
+
args: [{ selector: 'sky-grid', providers: [SkyGridAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"sky-grid\">\n @if (showTopScroll) {\n <div\n #topScrollContainer\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n }\n <div\n #gridContainer\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n >\n <table #gridTable class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\">\n <thead>\n <tr\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n [cdkDropListData]=\"displayedColumns\"\n (cdkDropListDropped)=\"onColumnDropped($event)\"\n >\n @if (enableMultiselect) {\n <th\n class=\"sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <th\n #gridCol\n cdkDrag\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [cdkDragDisabled]=\"column.locked\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n @if ((getCaretVisibility(column.field) | async) === 'hidden') {\n <span class=\"sky-grid-header-caret-hidden-spacing\"></span>\n }\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n variant=\"solid\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [iconName]=\"getCaretIconNames(column)\"\n />\n @if (column.inlineHelpPopover) {\n <sky-help-inline\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n />\n }\n </div>\n @if ((fit === 'width' && !last) || fit === 'scroll') {\n <span\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n }\n <input\n #colSizeRange\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur()\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n />\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n @for (item of items; track item; let i = $index) {\n <tr\n class=\"sky-grid-row\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n @if (enableMultiselect) {\n <td class=\"sky-grid-multiselect-cell sky-grid-header-locked\">\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"\n 'skyux_grid_multiselect_select_row' | skyLibResources\n \"\n [(ngModel)]=\"item.isSelected\"\n (change)=\"onMultiselectCheckboxChange()\"\n />\n </div>\n </td>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <td\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (showResizeBar) {\n <div\n #resizeBar\n aria-hidden=\"true\"\n class=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n ></div>\n }\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template #inlineDeleteTemplateRef let-item>\n <div\n #inlineDeleteRef\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n />\n </div>\n</ng-template>\n", styles: [".sky-grid:not(.sky-theme-modern *){--sky-override-grid-font-size: 15px;--sky-override-grid-header-background: #ffffff;--sky-override-grid-heading-border: 1px solid #cdcfd2;--sky-override-grid-heading-color: var(--sky-text-color-deemphasized);--sky-override-grid-heading-drag-color: #eeeeef;--sky-override-grid-heading-font-size: 15px;--sky-override-grid-heading-font-weight: 400;--sky-override-grid-heading-font: BLKB Sans, Helvetica Neue, Arial, sans-serif;--sky-override-grid-heading-sort-space: 5px;--sky-override-grid-multiselect-display: block;--sky-override-grid-resize-handle-color: #00b4f1;--sky-override-grid-resize-handle-width: 5px;--sky-override-grid-resize-opacity: .6;--sky-override-grid-row-border: 1px dotted #cdcfd2;--sky-override-grid-row-color-even: #ffffff;--sky-override-grid-row-color-odd: #fbfbfb;--sky-override-grid-row-selected-background-hover: rgb(232.7615384615, 227.9961538462, 240.7038461538);--sky-override-grid-row-selected-background: #f1eef6;--sky-override-grid-row-selected-border: 1px solid #0974a1;--sky-override-grid-row-selected-border: 1px solid #dadbf6;--sky-override-grid-row-selected-box-shadow: 0px 0px 0px 3px inset #0974a1}.sky-grid{position:relative;display:block}.sky-grid-table-container{overflow:auto}.sky-grid-table{position:relative;table-layout:fixed;border-collapse:collapse;margin:0;font-size:var(--sky-override-grid-font-size, var(--sky-font-size-body-m));min-width:100%}.sky-grid-table.sky-grid-fit{max-width:100%;width:100%}.sky-grid-tbody{background-color:var(--sky-override-grid-row-color-even, var(--sky-color-background-row-base))}.sky-grid-row{border-bottom:var(--sky-override-grid-row-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-row:nth-child(odd){background-color:var(--sky-override-grid-row-color-odd, var(--sky-color-background-row-base))}.sky-grid-row.sky-grid-row-highlight{border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) solid var(--sky-color-border-selected));box-shadow:var(--sky-override-grid-row-selected-box-shadow, 0 0 0 var(--sky-border-width-selected-m) inset var(--sky-color-border-selected))}.sky-grid-row .sky-grid-cell{padding:0;min-width:10px}.sky-grid-heading{position:relative;border-top:var(--sky-override-grid-heading-border, none);border-bottom:var(--sky-override-grid-heading-border, var(--sky-border-width-emphasized) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-left:var(--sky-override-grid-heading-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));color:var(--sky-override-grid-heading-color, var(--sky-color-text-heading));font-family:var(--sky-override-grid-heading-font, var(--sky-font-family-primary));font-weight:var(--sky-override-grid-heading-font-weight, var(--sky-font-style-heading-4));font-size:var(--sky-override-grid-heading-font-size, var(--sky-font-size-heading-4));padding:0;cursor:pointer;background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)));overflow:visible;background-clip:padding-box}.sky-grid-heading:first-child{border-left:1px solid transparent}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-heading-sort,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-heading-sort{width:14px}.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-help-inline-sort-hidden,.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-help-inline-sort-hidden{margin-left:-14px;margin-right:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-header-caret-hidden-spacing{padding-left:14px}.sky-grid-heading.sky-grid-column-alignment-right .sky-grid-heading-sort-visible{width:14px}.sky-grid-heading{-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-grid-heading div{padding:8px}.sky-grid-heading .overflow{text-overflow:ellipsis;white-space:nowrap;position:relative;z-index:1;overflow:hidden;min-width:100%}.sky-grid-heading .sky-grid-column-input-aria-only{-webkit-appearance:none;-moz-appearance:none;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);position:absolute;display:block;top:0;bottom:0;right:0}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-track{background:transparent}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-ms-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;width:0;height:0;border-radius:0;border:0 none;background:none;display:none}.sky-grid-heading .sky-grid-column-input-aria-only:focus{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-column-alignment-left{text-align:left}.sky-grid-column-alignment-center{text-align:center}.sky-grid-column-alignment-right{text-align:right}.sky-grid-multiselect-cell{padding:0;text-align:center}.sky-grid-multiselect-cell ::ng-deep .sky-switch-control{margin:0 auto}.sky-grid-multiselect-cell div{display:var(--sky-override-grid-multiselect-display, flex);justify-content:space-around}th.sky-grid-multiselect-cell{cursor:default}th.sky-grid-multiselect-cell .screen-reader-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);outline:none;white-space:nowrap}@-moz-document url-prefix(){.sky-grid-multiselect-row td{border-left:0px solid transparent;border-right:0px solid transparent}}.sky-grid-multiselect-row:hover{background-color:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-row-base))}.sky-grid-multiselect-selected-row{background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft));border-top:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row));border-bottom:var(--sky-override-grid-row-selected-border, var(--sky-border-width-separator-row) var(--sky-border-style-separator-row) var(--sky-color-border-separator-row))}.sky-grid-multiselect-selected-row:nth-child(odd){background:var(--sky-override-grid-row-selected-background, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover{background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-multiselect-selected-row:hover:nth-child(odd){background:var(--sky-override-grid-row-selected-background-hover, var(--sky-color-background-selected-soft))}.sky-grid-has-toolbar .sky-grid-heading{border-top-width:0px}.sky-grid-heading-sort.sky-grid-heading-sort-hidden{visibility:hidden}.sky-grid-heading-sort.sky-grid-heading-sort-visible{visibility:visible;padding-left:var(--sky-override-grid-heading-sort-space, var(--sky-space-gap-text_action-xs))}.sky-grid-resize-handle{position:absolute;right:0;top:0;bottom:0;width:30px;z-index:2;min-height:20px;height:100%!important;vertical-align:middle;cursor:col-resize}.sky-grid-resize-handle:hover:after{background-color:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider))}.sky-grid-resize-handle:after{position:absolute;right:0;top:0;bottom:0;width:var(--sky-override-grid-resize-handle-width, 3px);height:100%;content:\"\";background-color:var(--sky-override-grid-header-background, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)))}.sky-grid-resize-bar{position:absolute;top:0;left:0;z-index:99;height:100%;width:var(--sky-override-grid-resize-handle-width, 3px);background:var(--sky-override-grid-resize-handle-color, var(--sky-color-border-column_divider));opacity:var(--sky-override-grid-resize-opacity, 1)}tr{position:relative}.sky-grid-top-scroll-container{overflow:auto}.sky-grid-top-scroll{height:1px}\n"] }]
|
|
1269
|
+
}], ctorParameters: () => [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: SkyGridAdapterService }, { type: i1.SkyOverlayService }, { type: i1.SkyAppWindowRef }, { type: i1.SkyUIConfigService }, { type: i1.SkyLogService }], propDecorators: { columns: [{
|
|
1298
1270
|
type: Input
|
|
1299
1271
|
}], data: [{
|
|
1300
1272
|
type: Input
|
|
@@ -1372,11 +1344,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
1372
1344
|
* @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid
|
|
1373
1345
|
*/
|
|
1374
1346
|
class SkyGridModule {
|
|
1375
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1376
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.
|
|
1347
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1348
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.2", ngImport: i0, type: SkyGridModule, declarations: [SkyGridComponent,
|
|
1377
1349
|
SkyGridColumnComponent,
|
|
1378
1350
|
SkyGridCellComponent], imports: [CommonModule,
|
|
1379
|
-
|
|
1351
|
+
DragDropModule,
|
|
1380
1352
|
FormsModule,
|
|
1381
1353
|
SkyAffixModule,
|
|
1382
1354
|
SkyCheckboxModule,
|
|
@@ -1386,8 +1358,8 @@ class SkyGridModule {
|
|
|
1386
1358
|
SkyInlineDeleteModule,
|
|
1387
1359
|
SkyPopoverModule,
|
|
1388
1360
|
SkyTextHighlightModule], exports: [SkyGridComponent, SkyGridColumnComponent] }); }
|
|
1389
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.
|
|
1390
|
-
|
|
1361
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridModule, imports: [CommonModule,
|
|
1362
|
+
DragDropModule,
|
|
1391
1363
|
FormsModule,
|
|
1392
1364
|
SkyAffixModule,
|
|
1393
1365
|
SkyCheckboxModule,
|
|
@@ -1398,7 +1370,7 @@ class SkyGridModule {
|
|
|
1398
1370
|
SkyPopoverModule,
|
|
1399
1371
|
SkyTextHighlightModule] }); }
|
|
1400
1372
|
}
|
|
1401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1373
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SkyGridModule, decorators: [{
|
|
1402
1374
|
type: NgModule,
|
|
1403
1375
|
args: [{
|
|
1404
1376
|
declarations: [
|
|
@@ -1408,7 +1380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
1408
1380
|
],
|
|
1409
1381
|
imports: [
|
|
1410
1382
|
CommonModule,
|
|
1411
|
-
|
|
1383
|
+
DragDropModule,
|
|
1412
1384
|
FormsModule,
|
|
1413
1385
|
SkyAffixModule,
|
|
1414
1386
|
SkyCheckboxModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-grids.mjs","sources":["../../../../../libs/components/grids/src/lib/modules/grid/grid-column.model.ts","../../../../../libs/components/grids/src/lib/modules/shared/sky-grids-resources.module.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid-cell.component.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid-column.component.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid-adapter.service.ts","../../../../../libs/components/grids/src/lib/modules/grid/types/grid-message-type.ts","../../../../../libs/components/grids/src/lib/modules/grid/types/grid-selected-rows-source.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid.component.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid.component.html","../../../../../libs/components/grids/src/lib/modules/grid/grid.module.ts","../../../../../libs/components/grids/src/skyux-grids.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\n\nimport { SkyGridColumnAlignment } from './types/grid-column-alignment';\n\n/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\nexport class SkyGridColumnModel {\n public template: TemplateRef<unknown>;\n public id: string;\n public field: string;\n public heading: string;\n public inlineHelpPopover: any;\n public type: string;\n public width: number;\n public hidden: boolean;\n public locked: boolean;\n public description: string;\n public isSortable = true;\n public excludeFromHighlighting: boolean;\n\n /**\n * The horizontal alignment of the column's data and header.\n */\n public alignment: SkyGridColumnAlignment;\n\n public searchFunction: (data: any, searchText: string) => boolean;\n\n constructor(template: TemplateRef<unknown>, data?: any) {\n this.template = template;\n\n if (data) {\n this.id = data.id || data.field;\n this.type = data.type;\n this.field = data.field;\n this.heading = data.heading;\n this.inlineHelpPopover = data.inlineHelpPopover;\n this.width = data.width ? Number(data.width) : undefined;\n this.hidden = data.hidden;\n this.locked = data.locked;\n this.description = data.description;\n this.searchFunction = data.searchFunction;\n this.isSortable = data.isSortable;\n this.excludeFromHighlighting = data.excludeFromHighlighting;\n this.alignment = data.alignment;\n }\n }\n}\n","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-grids' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': { skyux_grid_multiselect_select_row: { message: 'Select row' } },\n 'FR-CA': {\n skyux_grid_multiselect_select_row: { message: 'Sélectionner une ligne' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyGridsResourcesModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ListItemModel, getData } from '@skyux/list-builder-common';\n\n/**\n * @internal\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@Component({\n selector: 'sky-grid-cell',\n template: '<ng-template #cell />',\n styleUrls: ['./grid-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyGridCellComponent implements OnInit {\n @Input()\n public item: ListItemModel;\n\n @Input()\n public columnId: string;\n\n @Input()\n public template: TemplateRef<unknown>;\n\n @Input()\n public fieldSelector: string;\n\n @ViewChild('cell', {\n read: ViewContainerRef,\n static: true,\n })\n private container: ViewContainerRef;\n\n public ngOnInit(): void {\n this.container.createEmbeddedView(this.template, this);\n }\n\n public get row(): any {\n return this.item.data;\n }\n\n public get value(): any {\n if (this.item.data && (this.fieldSelector || this.columnId)) {\n return getData(this.item.data, this.fieldSelector || this.columnId);\n }\n\n return undefined;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { SkyGridColumnAlignment } from './types/grid-column-alignment';\nimport { SkyGridColumnDescriptionModelChange } from './types/grid-column-description-model-change';\nimport { SkyGridColumnHeadingModelChange } from './types/grid-column-heading-model-change';\nimport { SkyGridColumnInlineHelpPopoverModelChange } from './types/grid-column-inline-help-popover-model-change';\n\n/**\n * Specifies the column information.\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@Component({\n selector: 'sky-grid-column',\n template: '<ng-content />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyGridColumnComponent implements OnChanges {\n /**\n * The horizontal alignment of the column's data and header.\n * Options include: `\"left\"`, `\"center\"`, and `\"right\"`.\n * @default \"left\"\n */\n @Input()\n public alignment: SkyGridColumnAlignment = 'left';\n\n /**\n * The description for the column.\n */\n @Input()\n public description: string;\n\n /**\n * Whether to disable the highlighting of search text in the column.\n * @default false\n */\n @Input()\n public excludeFromHighlighting: boolean;\n\n /**\n * The property to retrieve cell information from an entry on the grid `data` array.\n * You must provide either the `id` or `field` property for every column,\n * but do not provide both. If `id` does not exist on a column, then `field` is the entry\n * for the grid `selectedColumnIds` array.\n */\n @Input()\n public field: string;\n\n /**\n * Text to display in the column header.\n */\n @Input()\n public heading: string;\n\n /**\n * Whether the column is initially hidden when grid `selectedColumnIds` are not provided.\n * @default false\n */\n @Input()\n public hidden: boolean;\n\n /**\n * The unique ID for the column. You must provide either the `id` or `field` property\n * for every column, but do not provide both. If `field` does not exist on a column,\n * then the `id` property retrieves cell information from an entry on the grid `data` array.\n */\n @Input()\n public id: string;\n\n /**\n * The template to display inside an inline help popup for this column.\n */\n @Input()\n public inlineHelpPopover: any;\n\n /**\n * Whether the column sorts the grid when users click the column header.\n * @default true\n */\n @Input()\n public isSortable = true;\n\n /**\n * Whether the column is locked. The intent is to display locked columns first\n * on the left side of the grid. If set to `true`, then users cannot drag the column\n * to another position and or drag other columns before the locked column.\n * @default false\n */\n @Input()\n public locked: boolean;\n\n /**\n * The search function to apply for the specific column. By default,\n * the column executes a string compare on the column data.\n * @default (value, searchText) => value.toString().toLowerCase().indexOf(searchText) !== -1\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('search')\n public searchFunction: (value: any, searchText: string) => boolean =\n this.search;\n\n /**\n * @internal\n */\n @Input()\n public type: string;\n\n /**\n * The template for a column. This can be assigned as a reference\n * to the `template` attribute, or it can be assigned as a child of the `template` element\n * inside the `sky-grid-column` component. The template has access to the `value` variable,\n * which contains the value passed to the column, and the `row` variable, which contains\n * the entire row data.\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n public templateInput: TemplateRef<unknown>;\n\n /**\n * The width of the column in pixels.\n * If undefined, the column width is evenly distributed.\n */\n @Input()\n public width: number;\n\n public descriptionChanges: EventEmitter<string> = new EventEmitter<string>();\n\n public descriptionModelChanges =\n new EventEmitter<SkyGridColumnDescriptionModelChange>();\n\n public headingChanges: EventEmitter<string> = new EventEmitter<string>();\n\n public headingModelChanges =\n new EventEmitter<SkyGridColumnHeadingModelChange>();\n\n public inlineHelpPopoverModelChanges =\n new EventEmitter<SkyGridColumnInlineHelpPopoverModelChange>();\n\n @ContentChildren(TemplateRef)\n private templates: QueryList<TemplateRef<unknown>>;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['heading'] && changes['heading'].firstChange === false) {\n this.headingChanges.emit(this.heading);\n this.headingModelChanges.emit({\n value: this.heading,\n id: this.id,\n field: this.field,\n });\n }\n if (\n changes['description'] &&\n changes['description'].firstChange === false\n ) {\n this.descriptionChanges.emit(this.description);\n this.descriptionModelChanges.emit({\n value: this.description,\n id: this.id,\n field: this.field,\n });\n }\n if (\n changes['inlineHelpPopover'] &&\n changes['inlineHelpPopover'].firstChange === false\n ) {\n this.inlineHelpPopoverModelChanges.emit({\n value: this.inlineHelpPopover,\n id: this.id,\n field: this.field,\n });\n }\n }\n\n public get template(): TemplateRef<unknown> {\n if (this.templates.length > 0) {\n return this.templates.first;\n }\n\n return this.templateInput;\n }\n\n private search(value: any, searchText: string): boolean {\n if (value !== undefined && value !== null) {\n return value.toString().toLowerCase().indexOf(searchText) !== -1;\n }\n\n return false;\n }\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport { DragulaService } from 'ng2-dragula';\n\nconst GRID_HEADER_DRAGGING_CLASS = 'sky-grid-header-dragging';\nconst GRID_HEADER_LOCKED_SELECTOR = '.sky-grid-header-locked';\nconst GRID_HEADER_RESIZE_HANDLE = '.sky-grid-resize-handle';\nconst GRID_ROW_DELETE_SELECTOR = '.sky-grid-row-delete-heading';\nconst GRID_MULTISELECT_SELECTOR = '.sky-grid-multiselect-cell';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyGridAdapterService {\n private renderer: Renderer2;\n\n constructor(private rendererFactory: RendererFactory2) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n public initializeDragAndDrop(\n dragulaGroupName: string,\n dragulaService: DragulaService,\n dropCallback: (newColumnIds: string[]) => void,\n ): void {\n dragulaService\n .drag(dragulaGroupName)\n .subscribe((args) => args.el.classList.add(GRID_HEADER_DRAGGING_CLASS));\n\n dragulaService\n .dragend(dragulaGroupName)\n .subscribe((args) =>\n args.el.classList.remove(GRID_HEADER_DRAGGING_CLASS),\n );\n\n dragulaService.drop(dragulaGroupName).subscribe((args) => {\n const columnIds: string[] = [];\n const nodes = Array.from<HTMLElement>(\n args.target.querySelectorAll(\n `th:not(${GRID_MULTISELECT_SELECTOR}):not(${GRID_ROW_DELETE_SELECTOR})`,\n ),\n );\n for (const el of nodes) {\n const id = el.getAttribute('sky-cmp-id');\n columnIds.push(id);\n }\n dropCallback(columnIds);\n });\n\n dragulaService.createGroup(dragulaGroupName, {\n moves: (el: HTMLElement, container: HTMLElement, handle: HTMLElement) => {\n const columns: NodeListOf<HTMLElement> =\n container.querySelectorAll('th div');\n const isLeftOfLocked = this.isLeftOfLocked(handle, columns);\n\n return (\n !el.querySelector(GRID_HEADER_LOCKED_SELECTOR) &&\n handle !== undefined &&\n !handle.matches(GRID_HEADER_RESIZE_HANDLE) &&\n !handle.matches(GRID_MULTISELECT_SELECTOR) &&\n !handle.matches(GRID_ROW_DELETE_SELECTOR) &&\n !isLeftOfLocked\n );\n },\n accepts: (\n el: HTMLElement,\n target: HTMLElement,\n source: HTMLElement,\n sibling: HTMLElement,\n ) => {\n if (sibling === undefined || !sibling) {\n return true;\n }\n\n const columns: NodeListOf<HTMLElement> =\n source.querySelectorAll('th div');\n const siblingDiv = sibling.querySelector('div');\n const isLeftOfLocked = this.isLeftOfLocked(siblingDiv, columns);\n\n return (\n !sibling.matches(GRID_HEADER_LOCKED_SELECTOR) &&\n !sibling.matches(GRID_HEADER_RESIZE_HANDLE) &&\n !isLeftOfLocked\n );\n },\n });\n }\n\n public getRowHeight(el: ElementRef, index: number): string {\n return (\n el.nativeElement.querySelectorAll('tbody tr')[index].scrollHeight + 'px'\n );\n }\n\n public setStyle(el: ElementRef, style: string, value: string): void {\n if (el) {\n this.renderer.setStyle(el.nativeElement, style, value);\n }\n }\n\n private isLeftOfLocked(\n handle: HTMLElement,\n columns: NodeListOf<HTMLElement>,\n ): boolean {\n let sourceColumn = handle;\n for (const column of Array.from(columns)) {\n if (column.contains(handle)) {\n sourceColumn = column;\n }\n }\n\n for (let i = columns.length - 1; i >= 0; i--) {\n if (columns[i].classList.contains('sky-grid-header-locked')) {\n return true;\n }\n\n if (columns[i] === sourceColumn) {\n break;\n }\n }\n\n return false;\n }\n}\n","/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\nexport enum SkyGridMessageType {\n /**\n * Selects the multiselect checkboxes for all rows in the grid.\n */\n SelectAll = 0,\n\n /**\n * Clears the multiselect checkboxes for all rows in the grid.\n */\n ClearAll = 1,\n\n /**\n * @internal\n */\n PromptDeleteRow = 2,\n\n /**\n * @internal\n */\n AbortDeleteRow = 3,\n}\n","/**\n * @internal\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\nexport enum SkyGridSelectedRowsSource {\n CheckboxChange,\n ClearAll,\n RowClick,\n SelectAll,\n SelectedRowIdsChange,\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n inject,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAppWindowRef,\n SkyLogService,\n SkyOverlayService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport {\n ListItemModel,\n ListSortFieldSelectorModel,\n} from '@skyux/list-builder-common';\n\nimport { DragulaService } from 'ng2-dragula';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n take,\n takeUntil,\n takeWhile,\n} from 'rxjs/operators';\n\nimport { SkyGridAdapterService } from './grid-adapter.service';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridColumnModel } from './grid-column.model';\nimport { SkyGridColumnDescriptionModelChange } from './types/grid-column-description-model-change';\nimport { SkyGridColumnHeadingModelChange } from './types/grid-column-heading-model-change';\nimport { SkyGridColumnInlineHelpPopoverModelChange } from './types/grid-column-inline-help-popover-model-change';\nimport { SkyGridColumnWidthModelChange } from './types/grid-column-width-model-change';\nimport { SkyGridMessage } from './types/grid-message';\nimport { SkyGridMessageType } from './types/grid-message-type';\nimport { SkyGridRowDeleteCancelArgs } from './types/grid-row-delete-cancel-args';\nimport { SkyGridRowDeleteConfig } from './types/grid-row-delete-config';\nimport { SkyGridRowDeleteConfirmArgs } from './types/grid-row-delete-confirm-args';\nimport { SkyGridRowDeleteContents } from './types/grid-row-delete-contents';\nimport { SkyGridSelectedRowsModelChange } from './types/grid-selected-rows-model-change';\nimport { SkyGridSelectedRowsSource } from './types/grid-selected-rows-source';\nimport { SkyGridUIConfig } from './types/grid-ui-config';\n\nlet nextId = 0;\n\n/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@Component({\n selector: 'sky-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n viewProviders: [DragulaService],\n providers: [SkyGridAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyGridComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n /**\n * Columns and column properties for the grid.\n */\n @Input()\n public set columns(newColumns: SkyGridColumnModel[]) {\n const oldColumns = this.columns;\n this._columns = newColumns;\n if (oldColumns) {\n this.transferColumnWidths(oldColumns, this.columns);\n this.isResized = false;\n this.setDisplayedColumns(true);\n }\n this.changeDetector.markForCheck();\n }\n\n public get columns(): SkyGridColumnModel[] {\n return this._columns;\n }\n\n /**\n * The data for the grid. Each item requires an `id` and a property that maps\n * to the `field` or `id` property of each column in the grid.\n */\n @Input()\n public data: any[];\n\n /**\n * Whether to enable the multiselect feature to display a column of\n * checkboxes on the left side of the grid. You can specify a unique ID with\n * the `multiselectRowId` property, but multiselect defaults to the `id` property on\n * the `data` object.\n * @default false\n */\n @Input()\n public enableMultiselect = false;\n\n /**\n * How the grid fits to its parent. The valid options are `width`,\n * which fits the grid to the parent's full width, and `scroll`, which allows the grid\n * to exceed the parent's width. If the grid does not have enough columns to fill\n * the parent's width, it always stretches to the parent's full width.\n * @default \"width\"\n */\n @Input()\n public fit = 'width';\n\n /**\n * Whether to display a toolbar with the grid.\n */\n @Input()\n public hasToolbar = false;\n\n /**\n * The height of the grid.\n */\n @Input()\n public height: number;\n\n /**\n * Text to highlight within the grid.\n * Typically, this property is used in conjunction with search.\n */\n @Input()\n public highlightText: string;\n\n /**\n * The observable to send commands to the grid.\n */\n @Input()\n public messageStream = new Subject<SkyGridMessage>();\n\n /**\n * The unique ID that matches a property on the `data` object.\n * By default, this property uses the `id` property.\n */\n @Input()\n public multiselectRowId: string;\n\n /**\n * The ID of the row to highlight. The ID matches the `id` property\n * of the `data` object. Typically, this property is used in conjunction with\n * the flyout component to indicate the currently selected row.\n */\n @Input()\n public rowHighlightedId: string;\n\n /**\n * The columns to display in the grid based on the `id` or `field` properties\n * of the columns. If no columns are specified, then the grid displays all columns.\n */\n @Input()\n public set selectedColumnIds(value: string[]) {\n const currentIds = this._selectedColumnIds;\n this._selectedColumnIds = value;\n\n if (this.columns) {\n this.setDisplayedColumns();\n }\n\n // Ensure that the ids have changed.\n if (!currentIds || !value || !this.arraysEqual(value, currentIds)) {\n // This variable ensures that we do not set user config options or fire the change event\n // on the first time that the columns are set up\n if (this.selectedColumnIdsSet) {\n this.setUserConfig({\n selectedColumnIds: value,\n });\n\n this.selectedColumnIdsChange.emit(this._selectedColumnIds);\n\n if (this.isResized) {\n this.resetTableWidth();\n }\n }\n }\n\n this.selectedColumnIdsSet = true;\n }\n\n public get selectedColumnIds(): string[] {\n return this._selectedColumnIds;\n }\n\n /**\n * The set of IDs for the rows to select in a multiselect grid.\n * The IDs match the `id` properties of the `data` objects.\n * Rows with IDs that are not included are de-selected in the grid.\n */\n @Input()\n public set selectedRowIds(value: string[]) {\n if (value) {\n this._selectedRowIds = value;\n this.applySelectedRows();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectedRowIdsChange);\n }\n }\n\n public get selectedRowIds(): string[] {\n return this._selectedRowIds;\n }\n\n /**\n * The unique key for the UI Config Service to retrieve stored settings from a database.\n * The UI Config Service saves configuration settings for users and returns\n * `selectedColumnIds` to preserve the columns to display and the preferred column order. You must provide `id` values for your `sky-grid-column` elements because the UI Config Service depends on those values to organize columns based on user settings. For more information about the UI Config Service, see [the sticky settings documentation](https://developer.blackbaud.com/skyux/learn/develop/sticky-settings).\n */\n @Input()\n public settingsKey: string;\n\n /**\n * Displays a caret in the column that was used to sort the grid. This is particularly useful\n * when you programmatically sort data and want to visually indicate how the grid was sorted.\n * This property accepts a `ListSortFieldSelectorModel` value with the following properties:\n * - `fieldSelector` Represents the current sort field. This property accepts `string` values.\n * - `descending` Indicates whether to sort in descending order. The caret that visually\n * indicates the sort order points down for descending order and up for ascending order.\n * This property accepts `boolean` values. Default is `false`.\n */\n @Input()\n public sortField: ListSortFieldSelectorModel;\n\n /**\n * The width of the grid in pixels.\n */\n @Input()\n public width: number;\n\n /**\n * Fires when the width of a column changes.\n */\n @Output()\n public columnWidthChange = new EventEmitter<\n SkyGridColumnWidthModelChange[]\n >();\n\n /**\n * Fires when the selection of multiselect checkboxes changes.\n * Emits an array of IDs for the selected rows based on the `multiselectRowId` property\n * that the consumer provides.\n */\n @Output()\n public multiselectSelectionChange =\n new EventEmitter<SkyGridSelectedRowsModelChange>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteCancel = new EventEmitter<SkyGridRowDeleteCancelArgs>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteConfirm = new EventEmitter<SkyGridRowDeleteConfirmArgs>();\n\n /**\n * Fires when the columns to display in the grid change or when the order of the columns changes.\n * The event emits an array of IDs for the displayed columns that reflects the column order.\n */\n @Output()\n public selectedColumnIdsChange = new EventEmitter<string[]>();\n\n /**\n * Fires when the active sort field changes.\n */\n @Output()\n public sortFieldChange = new EventEmitter<ListSortFieldSelectorModel>();\n\n public columnResizeStep = 10;\n public currentSortField: BehaviorSubject<ListSortFieldSelectorModel>;\n public displayedColumns: SkyGridColumnModel[];\n public dragulaGroupName: string;\n public gridId: number = ++nextId;\n public rowDeleteConfigs: SkyGridRowDeleteConfig[] = [];\n public items: any[];\n public maxColWidth = 9999; // This is an arbitrary number, as the input range picker won't work without a value.\n public minColWidth = 50;\n public showResizeBar = false;\n public showTopScroll = false;\n\n public get tableWidth(): any {\n return this.tableElementRef.nativeElement.offsetWidth;\n }\n\n @ContentChildren(SkyGridColumnComponent)\n private columnComponents: QueryList<SkyGridColumnComponent>;\n\n @ViewChildren('gridCol')\n private columnElementRefs: QueryList<ElementRef>;\n @ViewChildren('colSizeRange')\n private columnRangeInputElementRefs: QueryList<ElementRef>;\n @ViewChildren('inlineDeleteRef')\n private inlineDeleteRefs: QueryList<ElementRef>;\n @ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })\n private inlineDeleteTemplateRef: TemplateRef<unknown>;\n @ViewChild('gridContainer')\n private tableContainerElementRef: ElementRef;\n @ViewChild('gridTable')\n private tableElementRef: ElementRef;\n @ViewChild('topScrollContainer')\n private topScrollContainerElementRef: ElementRef;\n @ViewChild('resizeBar')\n private resizeBar: ElementRef;\n\n private activeResizeColumnIndex: string;\n private isDraggingResizeHandle = false;\n private isResized = false;\n private ngUnsubscribe = new Subject<void>();\n private rowDeleteContents: Record<string, SkyGridRowDeleteContents> = {};\n private startColumnWidth: number;\n private subscriptions: Subscription[] = [];\n private scrollTriggered = false;\n private selectedColumnIdsSet = false;\n private xPosStart: number;\n\n private _columns: SkyGridColumnModel[];\n private _selectedColumnIds: string[];\n private _selectedRowIds: string[];\n\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n private affixService: SkyAffixService,\n private changeDetector: ChangeDetectorRef,\n private dragulaService: DragulaService,\n private gridAdapter: SkyGridAdapterService,\n private overlayService: SkyOverlayService,\n private skyWindow: SkyAppWindowRef,\n private uiConfigService: SkyUIConfigService,\n logger: SkyLogService,\n ) {\n logger.deprecated('SkyGridComponent', {\n deprecationMajorVersion: 6,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/data-grid',\n replacementRecommendation: 'Use data grid instead.',\n });\n\n this.displayedColumns = new Array<SkyGridColumnModel>();\n this.items = new Array<any>();\n this.currentSortField = new BehaviorSubject<ListSortFieldSelectorModel>({\n fieldSelector: '',\n descending: false,\n });\n this.dragulaGroupName = `sky-grids-group-${this.gridId}`;\n }\n\n public ngOnInit(): void {\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyGridMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngAfterContentInit(): void {\n if (this.settingsKey) {\n this.applyUserConfig().then(() => {\n this.initColumns();\n });\n } else {\n this.initColumns();\n }\n\n // Setup column drag-and-drop.\n this.gridAdapter.initializeDragAndDrop(\n this.dragulaGroupName,\n this.dragulaService,\n (selectedColumnIds: string[]) => {\n this.onHeaderDrop(selectedColumnIds);\n },\n );\n\n this.applySelectedRows();\n }\n\n public ngAfterViewInit(): void {\n this.checkUserColumnWidthsForScroll();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['columns'] && this.columns) {\n if (this.selectedColumnIds) {\n this.selectedColumnIds = this.selectedColumnIds.filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n });\n }\n this.setDisplayedColumns(true);\n }\n\n if (changes['data'] && this.data) {\n this.transformData();\n\n // This set timeout is necessary to ensure the data has rendered in the grid\n setTimeout(() => {\n // This cleans up any lingering row deletes for items that have been removed.\n Object.keys(this.rowDeleteContents).forEach((id) => {\n if (!this.data.find((item) => item.id === id)) {\n this.destroyRowDelete(id);\n } else {\n // The rows re-render thus messing up the affixers. We must reaffix them so that things\n // continue to render correctly.\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + id + '\"]',\n );\n\n this.rowDeleteContents[id].affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n });\n\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n if (changes['sortField']) {\n this.setSortHeaders();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n this.multiselectSelectionChange.complete();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n Object.keys(this.rowDeleteContents).forEach((id) => {\n this.destroyRowDelete(id);\n });\n\n this.dragulaService.destroy(this.dragulaGroupName);\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.checkUserColumnWidthsForScroll();\n }\n\n public getTopScrollWidth(): string {\n return this.tableElementRef.nativeElement.scrollWidth;\n }\n\n public getTableClassNames(): string {\n const classNames: string[] = [];\n\n if (this.fit !== 'scroll') {\n classNames.push('sky-grid-fit');\n }\n\n if (this.hasToolbar) {\n classNames.push('sky-grid-has-toolbar');\n }\n\n return this.addDelimiter(classNames, ' ');\n }\n\n public getTableHeaderClassNames(column: SkyGridColumnModel): string {\n const classNames: string[] = [];\n\n if (column && column.locked) {\n classNames.push('sky-grid-header-locked');\n }\n\n return this.addDelimiter(classNames, ' ');\n }\n\n public getCaretIconNames(column: SkyGridColumnModel): string {\n const iconNames: string[] = [];\n\n this.getSortDirection(column.field).subscribe((sortDir) => {\n if (sortDir === 'asc') {\n iconNames.push('chevron-up');\n }\n if (sortDir === 'desc') {\n iconNames.push('chevron-down');\n }\n });\n\n return this.addDelimiter(iconNames, ' ');\n }\n\n public onKeydown(event: KeyboardEvent, column: SkyGridColumnModel): void {\n const key = event.key.toLowerCase();\n if (key === 'enter' || key === ' ') {\n this.sortByColumn(column);\n }\n }\n\n public sortByColumn(column: SkyGridColumnModel): void {\n if (!this.isDraggingResizeHandle && column.isSortable) {\n this.currentSortField\n .pipe(\n take(1),\n map((field) => {\n let selector = {\n fieldSelector: column.field,\n descending: true,\n };\n\n if (\n field &&\n field.fieldSelector === column.field &&\n field.descending\n ) {\n selector = {\n fieldSelector: column.field,\n descending: false,\n };\n }\n this.sortFieldChange.emit(selector);\n this.currentSortField.next(selector);\n }),\n )\n .subscribe();\n }\n }\n\n public getSortDirection(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField\n ? field.descending\n ? 'desc'\n : 'asc'\n : undefined;\n }),\n );\n }\n\n public getAriaSortDirection(column: SkyGridColumnModel): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === column.field\n ? field.descending\n ? 'descending'\n : 'ascending'\n : column.isSortable\n ? 'none'\n : undefined;\n }),\n );\n }\n\n public getCaretVisibility(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField ? 'visible' : 'hidden';\n }),\n );\n }\n\n public getHelpInlineClass(columnField: string): Observable<boolean> {\n return this.getCaretVisibility(columnField).pipe(\n map((visibility: string) => {\n return visibility === 'hidden';\n }),\n );\n }\n\n public onMultiselectCheckboxChange(): void {\n this.emitSelectedRows(SkyGridSelectedRowsSource.CheckboxChange);\n }\n\n public updateColumnHeading(change: SkyGridColumnHeadingModelChange): void {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.heading = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateInlineHelpPopover(\n change: SkyGridColumnInlineHelpPopoverModelChange,\n ): void {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.inlineHelpPopover = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateColumnDescription(\n change: SkyGridColumnDescriptionModelChange,\n ): void {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.description = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public onResizeColumnStart(event: {\n stopPropagation: () => void;\n preventDefault: () => void;\n pageX?: number;\n }): void {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n\n this.isDraggingResizeHandle = true;\n this.xPosStart = event.pageX;\n this.showResizeBar = true;\n\n // Show visual indicator of where mouse is dragging (resizeBar).\n this.changeDetector.detectChanges();\n this.setResizeBarPosition(event.pageX);\n\n event.preventDefault();\n event.stopPropagation();\n\n const mouseMoveEvent = fromEvent(document, 'mousemove');\n const touchMoveEvent = fromEvent(document, 'touchmove');\n\n merge(mouseMoveEvent, touchMoveEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n }),\n )\n .subscribe((moveEvent: any) => {\n this.onResizeHandleMove(moveEvent);\n });\n\n const mouseUpEvent = fromEvent(document, 'mouseup');\n const touchEndEvent = fromEvent(document, 'touchend');\n\n merge(mouseUpEvent, touchEndEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n }),\n )\n .subscribe((endEvent: any) => {\n this.onResizeHandleRelease(endEvent);\n });\n }\n\n public onKeydownResizeCol(event: KeyboardEvent): void {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n }\n\n public onInputChangeResizeCol(event: Event): void {\n const input = event.target as HTMLInputElement;\n const newValue = Number(input.value);\n const deltaX = newValue - this.startColumnWidth;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newValue, deltaX);\n const left = input.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleMove(event: MouseEvent): void {\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n\n if (newColWidth <= this.minColWidth) {\n event.stopPropagation();\n return;\n }\n\n const max = this.getMaxRangeByIndex(this.activeResizeColumnIndex);\n if (this.fit === 'width' && newColWidth > max) {\n event.stopPropagation();\n return;\n }\n\n this.setResizeBarPosition(event.pageX);\n }\n\n public onResizeHandleBlur(): void {\n this.showResizeBar = false;\n }\n\n public onResizeHandleFocus(event: FocusEvent): void {\n this.showResizeBar = true;\n this.changeDetector.detectChanges();\n\n const target = event.target as HTMLElement;\n const left = target.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleRelease(event: MouseEvent): void {\n this.showResizeBar = false;\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newColWidth, deltaX);\n this.isDraggingResizeHandle = false;\n this.activeResizeColumnIndex = undefined;\n\n event.stopPropagation();\n this.changeDetector.markForCheck();\n }\n\n public onRowClick(event: any, selectedItem: ListItemModel): void {\n /* istanbul ignore else */\n if (this.enableMultiselect) {\n if (\n event.target === event.currentTarget ||\n !this.isInteractiveElement(event)\n ) {\n selectedItem.isSelected = !selectedItem.isSelected;\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.RowClick);\n }\n }\n }\n\n public isRowHighlighted(id: string): boolean {\n if (this.rowHighlightedId) {\n return id === this.rowHighlightedId;\n }\n return false;\n }\n\n public getRowHeight(index: number): string {\n return this.gridAdapter.getRowHeight(this.tableElementRef, index);\n }\n\n public cancelRowDelete(id: string): void {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== id,\n );\n this.rowDeleteCancel.emit({ id: id });\n\n this.destroyRowDelete(id);\n }\n\n public confirmRowDelete(id: string): void {\n this.rowDeleteConfigs.find((config) => config.id === id).pending = true;\n this.rowDeleteConfirm.emit({ id: id });\n }\n\n public getRowDeleteItem(id: string): SkyGridRowDeleteConfig {\n return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === id);\n }\n\n // Prevent touch devices from inadvertently scrolling grid while dragging columns.\n public onTouchMove(event: any): void {\n event.preventDefault();\n }\n\n public onTopScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.tableContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.tableContainerElementRef.nativeElement.scrollLeft =\n this.topScrollContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n public onGridScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.topScrollContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.topScrollContainerElementRef.nativeElement.scrollLeft =\n this.tableContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n private checkUserColumnWidthsForScroll(): void {\n if (\n !this.showTopScroll &&\n this.columnElementRefs &&\n this.columnElementRefs.length > 0\n ) {\n let columnsWidthTotal = 0;\n const windowSize = this.skyWindow.nativeWindow.innerWidth;\n this.columnElementRefs.forEach((col) => {\n if (!this.showTopScroll) {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width,\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n const width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth,\n );\n columnsWidthTotal = columnsWidthTotal + width;\n if (columnsWidthTotal > windowSize) {\n this.showTopScroll = true;\n setTimeout(() => {\n this.changeDetector.markForCheck();\n });\n }\n }\n });\n }\n }\n\n private multiselectSelectAll(): void {\n for (const item of this.items) {\n item.isSelected = true;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectAll);\n }\n\n private multiselectClearAll(): void {\n for (const item of this.items) {\n item.isSelected = false;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.ClearAll);\n }\n\n private handleIncomingMessages(message: SkyGridMessage): void {\n switch (message.type) {\n case SkyGridMessageType.SelectAll:\n this.multiselectSelectAll();\n break;\n\n case SkyGridMessageType.ClearAll:\n this.multiselectClearAll();\n break;\n case SkyGridMessageType.PromptDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.promptDeleteRow) {\n const existingConfig = this.rowDeleteConfigs.find(\n (config) => config.id === message.data.promptDeleteRow.id,\n );\n if (existingConfig) {\n existingConfig.pending = false;\n } else {\n this.rowDeleteConfigs.push({\n id: message.data.promptDeleteRow.id,\n pending: false,\n });\n const overlay = this.overlayService.create({\n enableScroll: true,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n environmentInjector: this.#environmentInjector,\n });\n\n overlay.attachTemplate(this.inlineDeleteTemplateRef, {\n $implicit: this.data.find(\n (item) => item.id === message.data.promptDeleteRow.id,\n ),\n });\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. This manual setting is 1 less than the omnibar's z-index of 1000. We\n * discussed changing the overlay service to allow for this but decided against that\n * change at this time due to its niche nature.\n */\n overlay.componentRef.instance.zIndex = '999';\n\n setTimeout(() => {\n const inlineDeleteRef = this.inlineDeleteRefs\n .toArray()\n .find((elRef) => {\n return (\n elRef.nativeElement.id ===\n 'row-delete-ref-' + message.data.promptDeleteRow.id\n );\n });\n const affixer = this.affixService.createAffixer(inlineDeleteRef);\n\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + message.data.promptDeleteRow.id + '\"]',\n );\n\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n\n this.rowDeleteContents[message.data.promptDeleteRow.id] = {\n affixer: affixer,\n overlay: overlay,\n };\n });\n }\n }\n break;\n case SkyGridMessageType.AbortDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.abortDeleteRow) {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== message.data.abortDeleteRow.id,\n );\n\n this.destroyRowDelete(message.data.abortDeleteRow.id);\n }\n break;\n }\n this.changeDetector.markForCheck();\n }\n\n private onHeaderDrop(newColumnIds: string[]): void {\n // update selected columnIds\n this.selectedColumnIdsSet = true;\n this.selectedColumnIds = newColumnIds;\n\n // mark for check because we are using ChangeDetectionStrategy.onPush\n this.changeDetector.markForCheck();\n }\n\n private setDisplayedColumns(respectHidden = false): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.columns) {\n if (this.selectedColumnIds !== undefined) {\n // setup displayed columns\n this.displayedColumns = this.selectedColumnIds\n .filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n })\n .map((columnId) => {\n return this.columns.filter((column) => column.id === columnId)[0];\n });\n } else if (respectHidden) {\n this.displayedColumns = this.columns.filter((column) => {\n return !column.hidden;\n });\n } else {\n this.displayedColumns = this.columns;\n }\n }\n }\n\n private transformData(): void {\n // Transform data into object with id and data properties\n if (\n this.data &&\n this.data.length > 0 &&\n this.data[0].id &&\n !this.data[0].data\n ) {\n if (this.multiselectRowId) {\n this.items = this.getGridDataWithSelectedRows();\n } else {\n this.items = this.data.map((item) => new ListItemModel(item.id, item));\n }\n } else {\n this.items = this.data;\n }\n }\n\n private getGridDataWithSelectedRows(): ListItemModel[] {\n const selectedRows = this.getSelectedRows();\n return this.data.map((item) => {\n let checked;\n if (Object.prototype.hasOwnProperty.call(item, this.multiselectRowId)) {\n checked = selectedRows.indexOf(item[this.multiselectRowId]) > -1;\n } else {\n checked = selectedRows.indexOf(item.id) > -1;\n }\n return new ListItemModel(item.id, item, checked);\n });\n }\n\n private applySelectedRows(): void {\n if (this.items && this.items.length > 0 && this.selectedRowIds) {\n for (const item of this.items) {\n item.isSelected = this.selectedRowIds.indexOf(item.id) > -1;\n }\n this.changeDetector.markForCheck();\n }\n }\n\n private setSortHeaders(): void {\n this.currentSortField.next(\n this.sortField || { fieldSelector: '', descending: false },\n );\n }\n\n private getColumnsFromComponent(): void {\n this.columns = this.columnComponents.map((columnComponent) => {\n return new SkyGridColumnModel(columnComponent.template, columnComponent);\n });\n }\n\n private updateColumns(): void {\n this.getColumnsFromComponent();\n\n // This set timeout is necessary to ensure the columns have rendered in the grid\n setTimeout(() => {\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n private resizeColumnByIndex(\n columnIndex: string,\n newColWidth: number,\n deltaX: number,\n ): void {\n const column = this.getColumnModelByIndex(columnIndex);\n\n // Prevent accidental shrinkage below minimum width.\n if (newColWidth <= this.minColWidth) {\n deltaX = deltaX + this.minColWidth - newColWidth;\n newColWidth = this.minColWidth;\n }\n\n // fit=width adds/removes width from the last column\n // fit=scroll adds/removes width from the table\n if (this.fit === 'width') {\n const lastColumn = this.getLastDisplayedColumn();\n\n // Prevent accidental growth that would bump last column off screen.\n const max = this.getMaxRangeByIndex(columnIndex);\n if (newColWidth > max) {\n newColWidth = max;\n deltaX = max - this.startColumnWidth;\n }\n column.width = newColWidth;\n lastColumn.width = lastColumn.width - deltaX;\n this.updateMaxRange();\n } else {\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth + deltaX}px`,\n );\n column.width = newColWidth;\n }\n\n this.changeDetector.detectChanges();\n this.columnWidthChange.emit(this.getColumnWidthModelChange());\n }\n\n private initColumnWidths(): void {\n // Establish table width.\n this.showTopScroll = true;\n\n // Set column widths based on the width initially given by the browser.\n // computedWidth prevents accidental overflow for browsers with sub-pixel widths.\n this.columnElementRefs.forEach((col, index) => {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width,\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n /* istanbul ignore next */\n this.getColumnModelByIndex(index).width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth,\n );\n });\n\n // 'scroll' tables should be allowed to expand outside of their constraints.\n if (this.fit === 'scroll') {\n this.gridAdapter.setStyle(this.tableElementRef, 'min-width', 'auto');\n }\n\n // Update max limits for input ranges.\n if (this.fit === 'width') {\n this.updateMaxRange();\n }\n\n this.changeDetector.detectChanges();\n }\n\n private transferColumnWidths(\n oldColumns: SkyGridColumnModel[],\n newColumns: SkyGridColumnModel[],\n ): void {\n /* sanity check */\n /* istanbul ignore else */\n if (oldColumns && newColumns) {\n for (const oldColumn of oldColumns) {\n if (oldColumn.width) {\n const matchingColumn = newColumns.find(\n (newColumn) => oldColumn.id === newColumn.id,\n );\n if (matchingColumn && !matchingColumn.width) {\n matchingColumn.width = oldColumn.width;\n }\n }\n }\n }\n this.changeDetector.markForCheck();\n }\n\n private getColumnWidthModelChange(): SkyGridColumnWidthModelChange[] {\n const columnWidthModelChange = new Array<SkyGridColumnWidthModelChange>();\n this.columns.forEach((column) => {\n columnWidthModelChange.push({\n id: column.id,\n field: column.field,\n width: column.width,\n });\n });\n return columnWidthModelChange;\n }\n\n private updateMaxRange(): void {\n const leftoverWidth =\n this.getLastDisplayedColumn().width - this.minColWidth;\n this.displayedColumns.forEach((column, index) => {\n const newMaxRange = column.width + leftoverWidth;\n const rangeInput = this.getRangeInputByIndex(index);\n rangeInput.nativeElement.max = newMaxRange;\n rangeInput.nativeElement.setAttribute('aria-valuemax', newMaxRange);\n });\n }\n\n private initializeResizeColumn(event: any): void {\n const clickTarget = event.target as HTMLElement;\n this.activeResizeColumnIndex = clickTarget.getAttribute('sky-cmp-index');\n const column = this.getColumnModelByIndex(this.activeResizeColumnIndex);\n this.startColumnWidth = column.width;\n }\n\n private resetTableWidth(): void {\n this.skyWindow.nativeWindow.setTimeout(() => {\n this.gridAdapter.setStyle(this.tableElementRef, 'width', `auto`);\n this.changeDetector.detectChanges();\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth}px`,\n );\n this.changeDetector.detectChanges();\n });\n }\n\n private getRangeInputByIndex(index: string | number): ElementRef {\n return this.columnRangeInputElementRefs.find(\n (input) =>\n input.nativeElement.getAttribute('sky-cmp-index') === index.toString(),\n );\n }\n\n private getColumnModelByIndex(index: string | number): SkyGridColumnModel {\n return this.displayedColumns[Number(index)];\n }\n\n private getMaxRangeByIndex(index: string): number {\n const columnElementRef = this.columnElementRefs.find(\n (th) => th.nativeElement.getAttribute('sky-cmp-index') === index,\n );\n const rangeInput = columnElementRef.nativeElement.querySelector(\n '.sky-grid-column-input-aria-only',\n );\n return Number(rangeInput.max);\n }\n\n private getLastDisplayedColumn(): SkyGridColumnModel {\n return this.getColumnModelByIndex(this.displayedColumns.length - 1);\n }\n\n private addDelimiter(text: string[], delimiter: string): string {\n return text.filter((val) => val).join(delimiter);\n }\n\n private destroyRowDelete(id: string): void {\n const rowDeleteContents = this.rowDeleteContents[id];\n /* istanbul ignore else */\n if (rowDeleteContents) {\n rowDeleteContents.affixer.destroy();\n this.overlayService.close(rowDeleteContents.overlay);\n delete this.rowDeleteContents[id];\n }\n }\n\n private emitSelectedRows(source: SkyGridSelectedRowsSource): void {\n const selectedRows: SkyGridSelectedRowsModelChange = {\n selectedRowIds: this.getSelectedRows(),\n source: source,\n };\n this.multiselectSelectionChange.emit(selectedRows);\n }\n\n private getSelectedRows(): any[] {\n return this.items\n .filter((item) => {\n return item.isSelected;\n })\n .map((item) => {\n if (\n Object.prototype.hasOwnProperty.call(item.data, this.multiselectRowId)\n ) {\n return item.data[this.multiselectRowId];\n }\n return item.id;\n });\n }\n\n private isInteractiveElement(event: any): any {\n const interactiveElSelectors = `\n a,\n button,\n input,\n label,\n option,\n select,\n textarea,\n details,\n dialog,\n menu,\n menuitem,\n summary`;\n return event.target.closest(interactiveElSelectors);\n }\n\n private setResizeBarPosition(xPosition: number): void {\n const parentScroll = this.tableContainerElementRef.nativeElement.scrollLeft;\n const resizeBarX =\n xPosition -\n this.tableElementRef.nativeElement.getBoundingClientRect().left -\n parentScroll;\n this.gridAdapter.setStyle(this.resizeBar, 'left', resizeBarX + 'px');\n }\n\n private applyUserConfig(): Promise<void> {\n return new Promise<void>((resolve) => {\n this.uiConfigService\n .getConfig(this.settingsKey)\n .pipe(take(1))\n .subscribe(\n (config: SkyGridUIConfig) => {\n /* istanbul ignore else */\n if (config && config.selectedColumnIds) {\n // Remove any columnIds that don't exist in the current data set.\n this.selectedColumnIds = config.selectedColumnIds.filter((id) =>\n this.columns.find((column) => column.id === id),\n );\n this.changeDetector.markForCheck();\n }\n\n resolve();\n },\n () => {\n resolve();\n },\n );\n });\n }\n\n private setUserConfig(config: SkyGridUIConfig): void {\n if (!this.settingsKey) {\n return;\n }\n\n this.uiConfigService\n .setConfig(this.settingsKey, config)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n (err) => {\n console.warn('Could not save grid settings.');\n console.warn(err);\n },\n );\n }\n\n private initColumns(): void {\n /* istanbul ignore else */\n if (this.columnComponents.length !== 0 || this.columns !== undefined) {\n /* istanbul ignore else */\n /* sanity check */\n if (this.columnComponents.length > 0) {\n this.getColumnsFromComponent();\n }\n\n this.transformData();\n this.setDisplayedColumns(true);\n this.changeDetector.markForCheck();\n }\n\n // Watch for added/removed columns:\n this.subscriptions.push(\n this.columnComponents.changes.subscribe(() => this.updateColumns()),\n );\n\n // Watch for column heading changes:\n this.columnComponents.forEach((comp: SkyGridColumnComponent) => {\n this.subscriptions.push(\n comp.headingModelChanges.subscribe(\n (change: SkyGridColumnHeadingModelChange) => {\n this.updateColumnHeading(change);\n },\n ),\n );\n this.subscriptions.push(\n comp.descriptionModelChanges.subscribe(\n (change: SkyGridColumnDescriptionModelChange) => {\n this.updateColumnDescription(change);\n },\n ),\n );\n this.subscriptions.push(\n comp.inlineHelpPopoverModelChanges.subscribe(\n (change: SkyGridColumnInlineHelpPopoverModelChange) => {\n this.updateInlineHelpPopover(change);\n },\n ),\n );\n });\n }\n\n private arraysEqual(arrayA: any[], arrayB: any[]): boolean {\n return (\n arrayA.length === arrayB.length &&\n arrayA.every((value, index) => value === arrayB[index])\n );\n }\n}\n","<div class=\"sky-grid\">\n @if (showTopScroll) {\n <div\n #topScrollContainer\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n }\n <div\n #gridContainer\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n >\n <table #gridTable class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\">\n <thead>\n <tr [dragula]=\"dragulaGroupName\">\n @if (enableMultiselect) {\n <th\n class=\"sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <th\n #gridCol\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n @if ((getCaretVisibility(column.field) | async) === 'hidden') {\n <span class=\"sky-grid-header-caret-hidden-spacing\"></span>\n }\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n variant=\"solid\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [iconName]=\"getCaretIconNames(column)\"\n />\n @if (column.inlineHelpPopover) {\n <sky-help-inline\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n />\n }\n </div>\n @if ((fit === 'width' && !last) || fit === 'scroll') {\n <span\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n }\n <input\n #colSizeRange\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur()\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n />\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n @for (item of items; track item; let i = $index) {\n <tr\n class=\"sky-grid-row\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n @if (enableMultiselect) {\n <td class=\"sky-grid-multiselect-cell sky-grid-header-locked\">\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"\n 'skyux_grid_multiselect_select_row' | skyLibResources\n \"\n [(ngModel)]=\"item.isSelected\"\n (change)=\"onMultiselectCheckboxChange()\"\n />\n </div>\n </td>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <td\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (showResizeBar) {\n <div\n #resizeBar\n aria-hidden=\"true\"\n class=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n ></div>\n }\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template #inlineDeleteTemplateRef let-item>\n <div\n #inlineDeleteRef\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n />\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule } from '@skyux/indicators';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\nimport { SkyPopoverModule } from '@skyux/popovers';\n\nimport { DragulaModule } from 'ng2-dragula';\n\nimport { SkyGridsResourcesModule } from '../shared/sky-grids-resources.module';\n\nimport { SkyGridCellComponent } from './grid-cell.component';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridComponent } from './grid.component';\n\n/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@NgModule({\n declarations: [\n SkyGridComponent,\n SkyGridColumnComponent,\n SkyGridCellComponent,\n ],\n imports: [\n CommonModule,\n DragulaModule,\n FormsModule,\n SkyAffixModule,\n SkyCheckboxModule,\n SkyGridsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyInlineDeleteModule,\n SkyPopoverModule,\n SkyTextHighlightModule,\n ],\n exports: [SkyGridComponent, SkyGridColumnComponent],\n})\nexport class SkyGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.SkyGridAdapterService","i12.SkyGridCellComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-grids.mjs","sources":["../../../../../libs/components/grids/src/lib/modules/grid/grid-column.model.ts","../../../../../libs/components/grids/src/lib/modules/shared/sky-grids-resources.module.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid-cell.component.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid-column.component.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid-adapter.service.ts","../../../../../libs/components/grids/src/lib/modules/grid/types/grid-message-type.ts","../../../../../libs/components/grids/src/lib/modules/grid/types/grid-selected-rows-source.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid.component.ts","../../../../../libs/components/grids/src/lib/modules/grid/grid.component.html","../../../../../libs/components/grids/src/lib/modules/grid/grid.module.ts","../../../../../libs/components/grids/src/skyux-grids.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\n\nimport { SkyGridColumnAlignment } from './types/grid-column-alignment';\n\n/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\nexport class SkyGridColumnModel {\n public template: TemplateRef<unknown>;\n public id: string;\n public field: string;\n public heading: string;\n public inlineHelpPopover: any;\n public type: string;\n public width: number;\n public hidden: boolean;\n public locked: boolean;\n public description: string;\n public isSortable = true;\n public excludeFromHighlighting: boolean;\n\n /**\n * The horizontal alignment of the column's data and header.\n */\n public alignment: SkyGridColumnAlignment;\n\n public searchFunction: (data: any, searchText: string) => boolean;\n\n constructor(template: TemplateRef<unknown>, data?: any) {\n this.template = template;\n\n if (data) {\n this.id = data.id || data.field;\n this.type = data.type;\n this.field = data.field;\n this.heading = data.heading;\n this.inlineHelpPopover = data.inlineHelpPopover;\n this.width = data.width ? Number(data.width) : undefined;\n this.hidden = data.hidden;\n this.locked = data.locked;\n this.description = data.description;\n this.searchFunction = data.searchFunction;\n this.isSortable = data.isSortable;\n this.excludeFromHighlighting = data.excludeFromHighlighting;\n this.alignment = data.alignment;\n }\n }\n}\n","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-grids' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': { skyux_grid_multiselect_select_row: { message: 'Select row' } },\n 'FR-CA': {\n skyux_grid_multiselect_select_row: { message: 'Sélectionner une ligne' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyGridsResourcesModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ListItemModel, getData } from '@skyux/list-builder-common';\n\n/**\n * @internal\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@Component({\n selector: 'sky-grid-cell',\n template: '<ng-template #cell />',\n styleUrls: ['./grid-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyGridCellComponent implements OnInit {\n @Input()\n public item: ListItemModel;\n\n @Input()\n public columnId: string;\n\n @Input()\n public template: TemplateRef<unknown>;\n\n @Input()\n public fieldSelector: string;\n\n @ViewChild('cell', {\n read: ViewContainerRef,\n static: true,\n })\n private container: ViewContainerRef;\n\n public ngOnInit(): void {\n this.container.createEmbeddedView(this.template, this);\n }\n\n public get row(): any {\n return this.item.data;\n }\n\n public get value(): any {\n if (this.item.data && (this.fieldSelector || this.columnId)) {\n return getData(this.item.data, this.fieldSelector || this.columnId);\n }\n\n return undefined;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { SkyGridColumnAlignment } from './types/grid-column-alignment';\nimport { SkyGridColumnDescriptionModelChange } from './types/grid-column-description-model-change';\nimport { SkyGridColumnHeadingModelChange } from './types/grid-column-heading-model-change';\nimport { SkyGridColumnInlineHelpPopoverModelChange } from './types/grid-column-inline-help-popover-model-change';\n\n/**\n * Specifies the column information.\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@Component({\n selector: 'sky-grid-column',\n template: '<ng-content />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyGridColumnComponent implements OnChanges {\n /**\n * The horizontal alignment of the column's data and header.\n * Options include: `\"left\"`, `\"center\"`, and `\"right\"`.\n * @default \"left\"\n */\n @Input()\n public alignment: SkyGridColumnAlignment = 'left';\n\n /**\n * The description for the column.\n */\n @Input()\n public description: string;\n\n /**\n * Whether to disable the highlighting of search text in the column.\n * @default false\n */\n @Input()\n public excludeFromHighlighting: boolean;\n\n /**\n * The property to retrieve cell information from an entry on the grid `data` array.\n * You must provide either the `id` or `field` property for every column,\n * but do not provide both. If `id` does not exist on a column, then `field` is the entry\n * for the grid `selectedColumnIds` array.\n */\n @Input()\n public field: string;\n\n /**\n * Text to display in the column header.\n */\n @Input()\n public heading: string;\n\n /**\n * Whether the column is initially hidden when grid `selectedColumnIds` are not provided.\n * @default false\n */\n @Input()\n public hidden: boolean;\n\n /**\n * The unique ID for the column. You must provide either the `id` or `field` property\n * for every column, but do not provide both. If `field` does not exist on a column,\n * then the `id` property retrieves cell information from an entry on the grid `data` array.\n */\n @Input()\n public id: string;\n\n /**\n * The template to display inside an inline help popup for this column.\n */\n @Input()\n public inlineHelpPopover: any;\n\n /**\n * Whether the column sorts the grid when users click the column header.\n * @default true\n */\n @Input()\n public isSortable = true;\n\n /**\n * Whether the column is locked. The intent is to display locked columns first\n * on the left side of the grid. If set to `true`, then users cannot drag the column\n * to another position and or drag other columns before the locked column.\n * @default false\n */\n @Input()\n public locked: boolean;\n\n /**\n * The search function to apply for the specific column. By default,\n * the column executes a string compare on the column data.\n * @default (value, searchText) => value.toString().toLowerCase().indexOf(searchText) !== -1\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('search')\n public searchFunction: (value: any, searchText: string) => boolean =\n this.search;\n\n /**\n * @internal\n */\n @Input()\n public type: string;\n\n /**\n * The template for a column. This can be assigned as a reference\n * to the `template` attribute, or it can be assigned as a child of the `template` element\n * inside the `sky-grid-column` component. The template has access to the `value` variable,\n * which contains the value passed to the column, and the `row` variable, which contains\n * the entire row data.\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n public templateInput: TemplateRef<unknown>;\n\n /**\n * The width of the column in pixels.\n * If undefined, the column width is evenly distributed.\n */\n @Input()\n public width: number;\n\n public descriptionChanges: EventEmitter<string> = new EventEmitter<string>();\n\n public descriptionModelChanges =\n new EventEmitter<SkyGridColumnDescriptionModelChange>();\n\n public headingChanges: EventEmitter<string> = new EventEmitter<string>();\n\n public headingModelChanges =\n new EventEmitter<SkyGridColumnHeadingModelChange>();\n\n public inlineHelpPopoverModelChanges =\n new EventEmitter<SkyGridColumnInlineHelpPopoverModelChange>();\n\n @ContentChildren(TemplateRef)\n private templates: QueryList<TemplateRef<unknown>>;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['heading'] && changes['heading'].firstChange === false) {\n this.headingChanges.emit(this.heading);\n this.headingModelChanges.emit({\n value: this.heading,\n id: this.id,\n field: this.field,\n });\n }\n if (\n changes['description'] &&\n changes['description'].firstChange === false\n ) {\n this.descriptionChanges.emit(this.description);\n this.descriptionModelChanges.emit({\n value: this.description,\n id: this.id,\n field: this.field,\n });\n }\n if (\n changes['inlineHelpPopover'] &&\n changes['inlineHelpPopover'].firstChange === false\n ) {\n this.inlineHelpPopoverModelChanges.emit({\n value: this.inlineHelpPopover,\n id: this.id,\n field: this.field,\n });\n }\n }\n\n public get template(): TemplateRef<unknown> {\n if (this.templates.length > 0) {\n return this.templates.first;\n }\n\n return this.templateInput;\n }\n\n private search(value: any, searchText: string): boolean {\n if (value !== undefined && value !== null) {\n return value.toString().toLowerCase().indexOf(searchText) !== -1;\n }\n\n return false;\n }\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport { SkyGridColumnModel } from './grid-column.model';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyGridAdapterService {\n private renderer: Renderer2;\n\n constructor(private rendererFactory: RendererFactory2) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n /**\n * Determines whether a column can be dropped at the given position.\n * Columns cannot be dropped to the left of locked columns.\n */\n public canDrop(\n displayedColumns: SkyGridColumnModel[],\n currentIndex: number,\n targetIndex: number,\n ): boolean {\n if (displayedColumns[currentIndex]?.locked) {\n return false;\n }\n\n // Cannot drop to the left of a locked column.\n if (targetIndex < currentIndex) {\n for (let i = targetIndex; i < currentIndex; i++) {\n if (displayedColumns[i]?.locked) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * Handles the CDK drop event and returns the updated column IDs.\n */\n public onColumnDrop(\n event: CdkDragDrop<SkyGridColumnModel[]>,\n displayedColumns: SkyGridColumnModel[],\n ): string[] | undefined {\n if (event.previousIndex === event.currentIndex) {\n return undefined;\n }\n\n if (\n !this.canDrop(displayedColumns, event.previousIndex, event.currentIndex)\n ) {\n return undefined;\n }\n\n const columnIds = displayedColumns.map((col) => col.id);\n moveItemInArray(columnIds, event.previousIndex, event.currentIndex);\n\n return columnIds;\n }\n\n public getRowHeight(el: ElementRef, index: number): string {\n return (\n el.nativeElement.querySelectorAll('tbody tr')[index].scrollHeight + 'px'\n );\n }\n\n public setStyle(el: ElementRef, style: string, value: string): void {\n if (el) {\n this.renderer.setStyle(el.nativeElement, style, value);\n }\n }\n}\n","/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\nexport enum SkyGridMessageType {\n /**\n * Selects the multiselect checkboxes for all rows in the grid.\n */\n SelectAll = 0,\n\n /**\n * Clears the multiselect checkboxes for all rows in the grid.\n */\n ClearAll = 1,\n\n /**\n * @internal\n */\n PromptDeleteRow = 2,\n\n /**\n * @internal\n */\n AbortDeleteRow = 3,\n}\n","/**\n * @internal\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\nexport enum SkyGridSelectedRowsSource {\n CheckboxChange,\n ClearAll,\n RowClick,\n SelectAll,\n SelectedRowIdsChange,\n}\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n inject,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAppWindowRef,\n SkyLogService,\n SkyOverlayService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport {\n ListItemModel,\n ListSortFieldSelectorModel,\n} from '@skyux/list-builder-common';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n take,\n takeUntil,\n takeWhile,\n} from 'rxjs/operators';\n\nimport { SkyGridAdapterService } from './grid-adapter.service';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridColumnModel } from './grid-column.model';\nimport { SkyGridColumnDescriptionModelChange } from './types/grid-column-description-model-change';\nimport { SkyGridColumnHeadingModelChange } from './types/grid-column-heading-model-change';\nimport { SkyGridColumnInlineHelpPopoverModelChange } from './types/grid-column-inline-help-popover-model-change';\nimport { SkyGridColumnWidthModelChange } from './types/grid-column-width-model-change';\nimport { SkyGridMessage } from './types/grid-message';\nimport { SkyGridMessageType } from './types/grid-message-type';\nimport { SkyGridRowDeleteCancelArgs } from './types/grid-row-delete-cancel-args';\nimport { SkyGridRowDeleteConfig } from './types/grid-row-delete-config';\nimport { SkyGridRowDeleteConfirmArgs } from './types/grid-row-delete-confirm-args';\nimport { SkyGridRowDeleteContents } from './types/grid-row-delete-contents';\nimport { SkyGridSelectedRowsModelChange } from './types/grid-selected-rows-model-change';\nimport { SkyGridSelectedRowsSource } from './types/grid-selected-rows-source';\nimport { SkyGridUIConfig } from './types/grid-ui-config';\n\nlet nextId = 0;\n\n/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@Component({\n selector: 'sky-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n providers: [SkyGridAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyGridComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n /**\n * Columns and column properties for the grid.\n */\n @Input()\n public set columns(newColumns: SkyGridColumnModel[]) {\n const oldColumns = this.columns;\n this._columns = newColumns;\n if (oldColumns) {\n this.transferColumnWidths(oldColumns, this.columns);\n this.isResized = false;\n this.setDisplayedColumns(true);\n }\n this.changeDetector.markForCheck();\n }\n\n public get columns(): SkyGridColumnModel[] {\n return this._columns;\n }\n\n /**\n * The data for the grid. Each item requires an `id` and a property that maps\n * to the `field` or `id` property of each column in the grid.\n */\n @Input()\n public data: any[];\n\n /**\n * Whether to enable the multiselect feature to display a column of\n * checkboxes on the left side of the grid. You can specify a unique ID with\n * the `multiselectRowId` property, but multiselect defaults to the `id` property on\n * the `data` object.\n * @default false\n */\n @Input()\n public enableMultiselect = false;\n\n /**\n * How the grid fits to its parent. The valid options are `width`,\n * which fits the grid to the parent's full width, and `scroll`, which allows the grid\n * to exceed the parent's width. If the grid does not have enough columns to fill\n * the parent's width, it always stretches to the parent's full width.\n * @default \"width\"\n */\n @Input()\n public fit = 'width';\n\n /**\n * Whether to display a toolbar with the grid.\n */\n @Input()\n public hasToolbar = false;\n\n /**\n * The height of the grid.\n */\n @Input()\n public height: number;\n\n /**\n * Text to highlight within the grid.\n * Typically, this property is used in conjunction with search.\n */\n @Input()\n public highlightText: string;\n\n /**\n * The observable to send commands to the grid.\n */\n @Input()\n public messageStream = new Subject<SkyGridMessage>();\n\n /**\n * The unique ID that matches a property on the `data` object.\n * By default, this property uses the `id` property.\n */\n @Input()\n public multiselectRowId: string;\n\n /**\n * The ID of the row to highlight. The ID matches the `id` property\n * of the `data` object. Typically, this property is used in conjunction with\n * the flyout component to indicate the currently selected row.\n */\n @Input()\n public rowHighlightedId: string;\n\n /**\n * The columns to display in the grid based on the `id` or `field` properties\n * of the columns. If no columns are specified, then the grid displays all columns.\n */\n @Input()\n public set selectedColumnIds(value: string[]) {\n const currentIds = this._selectedColumnIds;\n this._selectedColumnIds = value;\n\n if (this.columns) {\n this.setDisplayedColumns();\n }\n\n // Ensure that the ids have changed.\n if (!currentIds || !value || !this.arraysEqual(value, currentIds)) {\n // This variable ensures that we do not set user config options or fire the change event\n // on the first time that the columns are set up\n if (this.selectedColumnIdsSet) {\n this.setUserConfig({\n selectedColumnIds: value,\n });\n\n this.selectedColumnIdsChange.emit(this._selectedColumnIds);\n\n if (this.isResized) {\n this.resetTableWidth();\n }\n }\n }\n\n this.selectedColumnIdsSet = true;\n }\n\n public get selectedColumnIds(): string[] {\n return this._selectedColumnIds;\n }\n\n /**\n * The set of IDs for the rows to select in a multiselect grid.\n * The IDs match the `id` properties of the `data` objects.\n * Rows with IDs that are not included are de-selected in the grid.\n */\n @Input()\n public set selectedRowIds(value: string[]) {\n if (value) {\n this._selectedRowIds = value;\n this.applySelectedRows();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectedRowIdsChange);\n }\n }\n\n public get selectedRowIds(): string[] {\n return this._selectedRowIds;\n }\n\n /**\n * The unique key for the UI Config Service to retrieve stored settings from a database.\n * The UI Config Service saves configuration settings for users and returns\n * `selectedColumnIds` to preserve the columns to display and the preferred column order. You must provide `id` values for your `sky-grid-column` elements because the UI Config Service depends on those values to organize columns based on user settings. For more information about the UI Config Service, see [the sticky settings documentation](https://developer.blackbaud.com/skyux/learn/develop/sticky-settings).\n */\n @Input()\n public settingsKey: string;\n\n /**\n * Displays a caret in the column that was used to sort the grid. This is particularly useful\n * when you programmatically sort data and want to visually indicate how the grid was sorted.\n * This property accepts a `ListSortFieldSelectorModel` value with the following properties:\n * - `fieldSelector` Represents the current sort field. This property accepts `string` values.\n * - `descending` Indicates whether to sort in descending order. The caret that visually\n * indicates the sort order points down for descending order and up for ascending order.\n * This property accepts `boolean` values. Default is `false`.\n */\n @Input()\n public sortField: ListSortFieldSelectorModel;\n\n /**\n * The width of the grid in pixels.\n */\n @Input()\n public width: number;\n\n /**\n * Fires when the width of a column changes.\n */\n @Output()\n public columnWidthChange = new EventEmitter<\n SkyGridColumnWidthModelChange[]\n >();\n\n /**\n * Fires when the selection of multiselect checkboxes changes.\n * Emits an array of IDs for the selected rows based on the `multiselectRowId` property\n * that the consumer provides.\n */\n @Output()\n public multiselectSelectionChange =\n new EventEmitter<SkyGridSelectedRowsModelChange>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteCancel = new EventEmitter<SkyGridRowDeleteCancelArgs>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteConfirm = new EventEmitter<SkyGridRowDeleteConfirmArgs>();\n\n /**\n * Fires when the columns to display in the grid change or when the order of the columns changes.\n * The event emits an array of IDs for the displayed columns that reflects the column order.\n */\n @Output()\n public selectedColumnIdsChange = new EventEmitter<string[]>();\n\n /**\n * Fires when the active sort field changes.\n */\n @Output()\n public sortFieldChange = new EventEmitter<ListSortFieldSelectorModel>();\n\n public columnResizeStep = 10;\n public currentSortField: BehaviorSubject<ListSortFieldSelectorModel>;\n public displayedColumns: SkyGridColumnModel[];\n public gridId: number = ++nextId;\n public rowDeleteConfigs: SkyGridRowDeleteConfig[] = [];\n public items: any[];\n public maxColWidth = 9999; // This is an arbitrary number, as the input range picker won't work without a value.\n public minColWidth = 50;\n public showResizeBar = false;\n public showTopScroll = false;\n\n public get tableWidth(): any {\n return this.tableElementRef.nativeElement.offsetWidth;\n }\n\n @ContentChildren(SkyGridColumnComponent)\n private columnComponents: QueryList<SkyGridColumnComponent>;\n\n @ViewChildren('gridCol')\n private columnElementRefs: QueryList<ElementRef>;\n @ViewChildren('colSizeRange')\n private columnRangeInputElementRefs: QueryList<ElementRef>;\n @ViewChildren('inlineDeleteRef')\n private inlineDeleteRefs: QueryList<ElementRef>;\n @ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })\n private inlineDeleteTemplateRef: TemplateRef<unknown>;\n @ViewChild('gridContainer')\n private tableContainerElementRef: ElementRef;\n @ViewChild('gridTable')\n private tableElementRef: ElementRef;\n @ViewChild('topScrollContainer')\n private topScrollContainerElementRef: ElementRef;\n @ViewChild('resizeBar')\n private resizeBar: ElementRef;\n\n private activeResizeColumnIndex: string;\n private isDraggingResizeHandle = false;\n private isResized = false;\n private ngUnsubscribe = new Subject<void>();\n private rowDeleteContents: Record<string, SkyGridRowDeleteContents> = {};\n private startColumnWidth: number;\n private subscriptions: Subscription[] = [];\n private scrollTriggered = false;\n private selectedColumnIdsSet = false;\n private xPosStart: number;\n\n private _columns: SkyGridColumnModel[];\n private _selectedColumnIds: string[];\n private _selectedRowIds: string[];\n\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n private affixService: SkyAffixService,\n private changeDetector: ChangeDetectorRef,\n private gridAdapter: SkyGridAdapterService,\n private overlayService: SkyOverlayService,\n private skyWindow: SkyAppWindowRef,\n private uiConfigService: SkyUIConfigService,\n logger: SkyLogService,\n ) {\n logger.deprecated('SkyGridComponent', {\n deprecationMajorVersion: 6,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/data-grid',\n replacementRecommendation: 'Use data grid instead.',\n });\n\n this.displayedColumns = new Array<SkyGridColumnModel>();\n this.items = new Array<any>();\n this.currentSortField = new BehaviorSubject<ListSortFieldSelectorModel>({\n fieldSelector: '',\n descending: false,\n });\n }\n\n public ngOnInit(): void {\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyGridMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngAfterContentInit(): void {\n if (this.settingsKey) {\n this.applyUserConfig().then(() => {\n this.initColumns();\n });\n } else {\n this.initColumns();\n }\n\n this.applySelectedRows();\n }\n\n public ngAfterViewInit(): void {\n this.checkUserColumnWidthsForScroll();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['columns'] && this.columns) {\n if (this.selectedColumnIds) {\n this.selectedColumnIds = this.selectedColumnIds.filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n });\n }\n this.setDisplayedColumns(true);\n }\n\n if (changes['data'] && this.data) {\n this.transformData();\n\n // This set timeout is necessary to ensure the data has rendered in the grid\n setTimeout(() => {\n // This cleans up any lingering row deletes for items that have been removed.\n Object.keys(this.rowDeleteContents).forEach((id) => {\n if (!this.data.find((item) => item.id === id)) {\n this.destroyRowDelete(id);\n } else {\n // The rows re-render thus messing up the affixers. We must reaffix them so that things\n // continue to render correctly.\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + id + '\"]',\n );\n\n this.rowDeleteContents[id].affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n });\n\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n if (changes['sortField']) {\n this.setSortHeaders();\n }\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n this.multiselectSelectionChange.complete();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n Object.keys(this.rowDeleteContents).forEach((id) => {\n this.destroyRowDelete(id);\n });\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.checkUserColumnWidthsForScroll();\n }\n\n public getTopScrollWidth(): string {\n return this.tableElementRef.nativeElement.scrollWidth;\n }\n\n public getTableClassNames(): string {\n const classNames: string[] = [];\n\n if (this.fit !== 'scroll') {\n classNames.push('sky-grid-fit');\n }\n\n if (this.hasToolbar) {\n classNames.push('sky-grid-has-toolbar');\n }\n\n return this.addDelimiter(classNames, ' ');\n }\n\n public getTableHeaderClassNames(column: SkyGridColumnModel): string {\n const classNames: string[] = [];\n\n if (column && column.locked) {\n classNames.push('sky-grid-header-locked');\n }\n\n return this.addDelimiter(classNames, ' ');\n }\n\n public getCaretIconNames(column: SkyGridColumnModel): string {\n const iconNames: string[] = [];\n\n this.getSortDirection(column.field).subscribe((sortDir) => {\n if (sortDir === 'asc') {\n iconNames.push('chevron-up');\n }\n if (sortDir === 'desc') {\n iconNames.push('chevron-down');\n }\n });\n\n return this.addDelimiter(iconNames, ' ');\n }\n\n public onKeydown(event: KeyboardEvent, column: SkyGridColumnModel): void {\n const key = event.key.toLowerCase();\n if (key === 'enter' || key === ' ') {\n this.sortByColumn(column);\n }\n }\n\n public sortByColumn(column: SkyGridColumnModel): void {\n if (!this.isDraggingResizeHandle && column.isSortable) {\n this.currentSortField\n .pipe(\n take(1),\n map((field) => {\n let selector = {\n fieldSelector: column.field,\n descending: true,\n };\n\n if (\n field &&\n field.fieldSelector === column.field &&\n field.descending\n ) {\n selector = {\n fieldSelector: column.field,\n descending: false,\n };\n }\n this.sortFieldChange.emit(selector);\n this.currentSortField.next(selector);\n }),\n )\n .subscribe();\n }\n }\n\n public getSortDirection(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField\n ? field.descending\n ? 'desc'\n : 'asc'\n : undefined;\n }),\n );\n }\n\n public getAriaSortDirection(column: SkyGridColumnModel): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === column.field\n ? field.descending\n ? 'descending'\n : 'ascending'\n : column.isSortable\n ? 'none'\n : undefined;\n }),\n );\n }\n\n public getCaretVisibility(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField ? 'visible' : 'hidden';\n }),\n );\n }\n\n public getHelpInlineClass(columnField: string): Observable<boolean> {\n return this.getCaretVisibility(columnField).pipe(\n map((visibility: string) => {\n return visibility === 'hidden';\n }),\n );\n }\n\n public onMultiselectCheckboxChange(): void {\n this.emitSelectedRows(SkyGridSelectedRowsSource.CheckboxChange);\n }\n\n public updateColumnHeading(change: SkyGridColumnHeadingModelChange): void {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.heading = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateInlineHelpPopover(\n change: SkyGridColumnInlineHelpPopoverModelChange,\n ): void {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.inlineHelpPopover = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateColumnDescription(\n change: SkyGridColumnDescriptionModelChange,\n ): void {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.description = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public onResizeColumnStart(event: {\n stopPropagation: () => void;\n preventDefault: () => void;\n pageX?: number;\n }): void {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n\n this.isDraggingResizeHandle = true;\n this.xPosStart = event.pageX;\n this.showResizeBar = true;\n\n // Show visual indicator of where mouse is dragging (resizeBar).\n this.changeDetector.detectChanges();\n this.setResizeBarPosition(event.pageX);\n\n event.preventDefault();\n event.stopPropagation();\n\n const mouseMoveEvent = fromEvent(document, 'mousemove');\n const touchMoveEvent = fromEvent(document, 'touchmove');\n\n merge(mouseMoveEvent, touchMoveEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n }),\n )\n .subscribe((moveEvent: any) => {\n this.onResizeHandleMove(moveEvent);\n });\n\n const mouseUpEvent = fromEvent(document, 'mouseup');\n const touchEndEvent = fromEvent(document, 'touchend');\n\n merge(mouseUpEvent, touchEndEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n }),\n )\n .subscribe((endEvent: any) => {\n this.onResizeHandleRelease(endEvent);\n });\n }\n\n public onKeydownResizeCol(event: KeyboardEvent): void {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n }\n\n public onInputChangeResizeCol(event: Event): void {\n const input = event.target as HTMLInputElement;\n const newValue = Number(input.value);\n const deltaX = newValue - this.startColumnWidth;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newValue, deltaX);\n const left = input.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleMove(event: MouseEvent): void {\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n\n if (newColWidth <= this.minColWidth) {\n event.stopPropagation();\n return;\n }\n\n const max = this.getMaxRangeByIndex(this.activeResizeColumnIndex);\n if (this.fit === 'width' && newColWidth > max) {\n event.stopPropagation();\n return;\n }\n\n this.setResizeBarPosition(event.pageX);\n }\n\n public onResizeHandleBlur(): void {\n this.showResizeBar = false;\n }\n\n public onResizeHandleFocus(event: FocusEvent): void {\n this.showResizeBar = true;\n this.changeDetector.detectChanges();\n\n const target = event.target as HTMLElement;\n const left = target.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleRelease(event: MouseEvent): void {\n this.showResizeBar = false;\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newColWidth, deltaX);\n this.isDraggingResizeHandle = false;\n this.activeResizeColumnIndex = undefined;\n\n event.stopPropagation();\n this.changeDetector.markForCheck();\n }\n\n public onRowClick(event: any, selectedItem: ListItemModel): void {\n /* istanbul ignore else */\n if (this.enableMultiselect) {\n if (\n event.target === event.currentTarget ||\n !this.isInteractiveElement(event)\n ) {\n selectedItem.isSelected = !selectedItem.isSelected;\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.RowClick);\n }\n }\n }\n\n public isRowHighlighted(id: string): boolean {\n if (this.rowHighlightedId) {\n return id === this.rowHighlightedId;\n }\n return false;\n }\n\n public getRowHeight(index: number): string {\n return this.gridAdapter.getRowHeight(this.tableElementRef, index);\n }\n\n public cancelRowDelete(id: string): void {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== id,\n );\n this.rowDeleteCancel.emit({ id: id });\n\n this.destroyRowDelete(id);\n }\n\n public confirmRowDelete(id: string): void {\n this.rowDeleteConfigs.find((config) => config.id === id).pending = true;\n this.rowDeleteConfirm.emit({ id: id });\n }\n\n public getRowDeleteItem(id: string): SkyGridRowDeleteConfig {\n return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === id);\n }\n\n /**\n * Handles the CDK drag-and-drop event when a column header is dropped.\n */\n protected onColumnDropped(event: CdkDragDrop<SkyGridColumnModel[]>): void {\n const newColumnIds = this.gridAdapter.onColumnDrop(\n event,\n this.displayedColumns,\n );\n\n if (newColumnIds) {\n this.onHeaderDrop(newColumnIds);\n }\n }\n\n // Prevent touch devices from inadvertently scrolling grid while dragging columns.\n public onTouchMove(event: any): void {\n event.preventDefault();\n }\n\n public onTopScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.tableContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.tableContainerElementRef.nativeElement.scrollLeft =\n this.topScrollContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n public onGridScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.topScrollContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.topScrollContainerElementRef.nativeElement.scrollLeft =\n this.tableContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n private checkUserColumnWidthsForScroll(): void {\n if (\n !this.showTopScroll &&\n this.columnElementRefs &&\n this.columnElementRefs.length > 0\n ) {\n let columnsWidthTotal = 0;\n const windowSize = this.skyWindow.nativeWindow.innerWidth;\n this.columnElementRefs.forEach((col) => {\n if (!this.showTopScroll) {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width,\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n const width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth,\n );\n columnsWidthTotal = columnsWidthTotal + width;\n if (columnsWidthTotal > windowSize) {\n this.showTopScroll = true;\n setTimeout(() => {\n this.changeDetector.markForCheck();\n });\n }\n }\n });\n }\n }\n\n private multiselectSelectAll(): void {\n for (const item of this.items) {\n item.isSelected = true;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectAll);\n }\n\n private multiselectClearAll(): void {\n for (const item of this.items) {\n item.isSelected = false;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.ClearAll);\n }\n\n private handleIncomingMessages(message: SkyGridMessage): void {\n switch (message.type) {\n case SkyGridMessageType.SelectAll:\n this.multiselectSelectAll();\n break;\n\n case SkyGridMessageType.ClearAll:\n this.multiselectClearAll();\n break;\n case SkyGridMessageType.PromptDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.promptDeleteRow) {\n const existingConfig = this.rowDeleteConfigs.find(\n (config) => config.id === message.data.promptDeleteRow.id,\n );\n if (existingConfig) {\n existingConfig.pending = false;\n } else {\n this.rowDeleteConfigs.push({\n id: message.data.promptDeleteRow.id,\n pending: false,\n });\n const overlay = this.overlayService.create({\n enableScroll: true,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n environmentInjector: this.#environmentInjector,\n });\n\n overlay.attachTemplate(this.inlineDeleteTemplateRef, {\n $implicit: this.data.find(\n (item) => item.id === message.data.promptDeleteRow.id,\n ),\n });\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. This manual setting is 1 less than the omnibar's z-index of 1000. We\n * discussed changing the overlay service to allow for this but decided against that\n * change at this time due to its niche nature.\n */\n overlay.componentRef.instance.zIndex = '999';\n\n setTimeout(() => {\n const inlineDeleteRef = this.inlineDeleteRefs\n .toArray()\n .find((elRef) => {\n return (\n elRef.nativeElement.id ===\n 'row-delete-ref-' + message.data.promptDeleteRow.id\n );\n });\n const affixer = this.affixService.createAffixer(inlineDeleteRef);\n\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + message.data.promptDeleteRow.id + '\"]',\n );\n\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n\n this.rowDeleteContents[message.data.promptDeleteRow.id] = {\n affixer: affixer,\n overlay: overlay,\n };\n });\n }\n }\n break;\n case SkyGridMessageType.AbortDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.abortDeleteRow) {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== message.data.abortDeleteRow.id,\n );\n\n this.destroyRowDelete(message.data.abortDeleteRow.id);\n }\n break;\n }\n this.changeDetector.markForCheck();\n }\n\n private onHeaderDrop(newColumnIds: string[]): void {\n // update selected columnIds\n this.selectedColumnIdsSet = true;\n this.selectedColumnIds = newColumnIds;\n\n // mark for check because we are using ChangeDetectionStrategy.onPush\n this.changeDetector.markForCheck();\n }\n\n private setDisplayedColumns(respectHidden = false): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.columns) {\n if (this.selectedColumnIds !== undefined) {\n // setup displayed columns\n this.displayedColumns = this.selectedColumnIds\n .filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n })\n .map((columnId) => {\n return this.columns.filter((column) => column.id === columnId)[0];\n });\n } else if (respectHidden) {\n this.displayedColumns = this.columns.filter((column) => {\n return !column.hidden;\n });\n } else {\n this.displayedColumns = this.columns;\n }\n }\n }\n\n private transformData(): void {\n // Transform data into object with id and data properties\n if (\n this.data &&\n this.data.length > 0 &&\n this.data[0].id &&\n !this.data[0].data\n ) {\n if (this.multiselectRowId) {\n this.items = this.getGridDataWithSelectedRows();\n } else {\n this.items = this.data.map((item) => new ListItemModel(item.id, item));\n }\n } else {\n this.items = this.data;\n }\n }\n\n private getGridDataWithSelectedRows(): ListItemModel[] {\n const selectedRows = this.getSelectedRows();\n return this.data.map((item) => {\n let checked;\n if (Object.prototype.hasOwnProperty.call(item, this.multiselectRowId)) {\n checked = selectedRows.indexOf(item[this.multiselectRowId]) > -1;\n } else {\n checked = selectedRows.indexOf(item.id) > -1;\n }\n return new ListItemModel(item.id, item, checked);\n });\n }\n\n private applySelectedRows(): void {\n if (this.items && this.items.length > 0 && this.selectedRowIds) {\n for (const item of this.items) {\n item.isSelected = this.selectedRowIds.indexOf(item.id) > -1;\n }\n this.changeDetector.markForCheck();\n }\n }\n\n private setSortHeaders(): void {\n this.currentSortField.next(\n this.sortField || { fieldSelector: '', descending: false },\n );\n }\n\n private getColumnsFromComponent(): void {\n this.columns = this.columnComponents.map((columnComponent) => {\n return new SkyGridColumnModel(columnComponent.template, columnComponent);\n });\n }\n\n private updateColumns(): void {\n this.getColumnsFromComponent();\n\n // This set timeout is necessary to ensure the columns have rendered in the grid\n setTimeout(() => {\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n private resizeColumnByIndex(\n columnIndex: string,\n newColWidth: number,\n deltaX: number,\n ): void {\n const column = this.getColumnModelByIndex(columnIndex);\n\n // Prevent accidental shrinkage below minimum width.\n if (newColWidth <= this.minColWidth) {\n deltaX = deltaX + this.minColWidth - newColWidth;\n newColWidth = this.minColWidth;\n }\n\n // fit=width adds/removes width from the last column\n // fit=scroll adds/removes width from the table\n if (this.fit === 'width') {\n const lastColumn = this.getLastDisplayedColumn();\n\n // Prevent accidental growth that would bump last column off screen.\n const max = this.getMaxRangeByIndex(columnIndex);\n if (newColWidth > max) {\n newColWidth = max;\n deltaX = max - this.startColumnWidth;\n }\n column.width = newColWidth;\n lastColumn.width = lastColumn.width - deltaX;\n this.updateMaxRange();\n } else {\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth + deltaX}px`,\n );\n column.width = newColWidth;\n }\n\n this.changeDetector.detectChanges();\n this.columnWidthChange.emit(this.getColumnWidthModelChange());\n }\n\n private initColumnWidths(): void {\n // Establish table width.\n this.showTopScroll = true;\n\n // Set column widths based on the width initially given by the browser.\n // computedWidth prevents accidental overflow for browsers with sub-pixel widths.\n this.columnElementRefs.forEach((col, index) => {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width,\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n /* istanbul ignore next */\n this.getColumnModelByIndex(index).width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth,\n );\n });\n\n // 'scroll' tables should be allowed to expand outside of their constraints.\n if (this.fit === 'scroll') {\n this.gridAdapter.setStyle(this.tableElementRef, 'min-width', 'auto');\n }\n\n // Update max limits for input ranges.\n if (this.fit === 'width') {\n this.updateMaxRange();\n }\n\n this.changeDetector.detectChanges();\n }\n\n private transferColumnWidths(\n oldColumns: SkyGridColumnModel[],\n newColumns: SkyGridColumnModel[],\n ): void {\n /* sanity check */\n /* istanbul ignore else */\n if (oldColumns && newColumns) {\n for (const oldColumn of oldColumns) {\n if (oldColumn.width) {\n const matchingColumn = newColumns.find(\n (newColumn) => oldColumn.id === newColumn.id,\n );\n if (matchingColumn && !matchingColumn.width) {\n matchingColumn.width = oldColumn.width;\n }\n }\n }\n }\n this.changeDetector.markForCheck();\n }\n\n private getColumnWidthModelChange(): SkyGridColumnWidthModelChange[] {\n const columnWidthModelChange = new Array<SkyGridColumnWidthModelChange>();\n this.columns.forEach((column) => {\n columnWidthModelChange.push({\n id: column.id,\n field: column.field,\n width: column.width,\n });\n });\n return columnWidthModelChange;\n }\n\n private updateMaxRange(): void {\n const leftoverWidth =\n this.getLastDisplayedColumn().width - this.minColWidth;\n this.displayedColumns.forEach((column, index) => {\n const newMaxRange = column.width + leftoverWidth;\n const rangeInput = this.getRangeInputByIndex(index);\n rangeInput.nativeElement.max = newMaxRange;\n rangeInput.nativeElement.setAttribute('aria-valuemax', newMaxRange);\n });\n }\n\n private initializeResizeColumn(event: any): void {\n const clickTarget = event.target as HTMLElement;\n this.activeResizeColumnIndex = clickTarget.getAttribute('sky-cmp-index');\n const column = this.getColumnModelByIndex(this.activeResizeColumnIndex);\n this.startColumnWidth = column.width;\n }\n\n private resetTableWidth(): void {\n this.skyWindow.nativeWindow.setTimeout(() => {\n this.gridAdapter.setStyle(this.tableElementRef, 'width', `auto`);\n this.changeDetector.detectChanges();\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth}px`,\n );\n this.changeDetector.detectChanges();\n });\n }\n\n private getRangeInputByIndex(index: string | number): ElementRef {\n return this.columnRangeInputElementRefs.find(\n (input) =>\n input.nativeElement.getAttribute('sky-cmp-index') === index.toString(),\n );\n }\n\n private getColumnModelByIndex(index: string | number): SkyGridColumnModel {\n return this.displayedColumns[Number(index)];\n }\n\n private getMaxRangeByIndex(index: string): number {\n const columnElementRef = this.columnElementRefs.find(\n (th) => th.nativeElement.getAttribute('sky-cmp-index') === index,\n );\n const rangeInput = columnElementRef.nativeElement.querySelector(\n '.sky-grid-column-input-aria-only',\n );\n return Number(rangeInput.max);\n }\n\n private getLastDisplayedColumn(): SkyGridColumnModel {\n return this.getColumnModelByIndex(this.displayedColumns.length - 1);\n }\n\n private addDelimiter(text: string[], delimiter: string): string {\n return text.filter((val) => val).join(delimiter);\n }\n\n private destroyRowDelete(id: string): void {\n const rowDeleteContents = this.rowDeleteContents[id];\n /* istanbul ignore else */\n if (rowDeleteContents) {\n rowDeleteContents.affixer.destroy();\n this.overlayService.close(rowDeleteContents.overlay);\n delete this.rowDeleteContents[id];\n }\n }\n\n private emitSelectedRows(source: SkyGridSelectedRowsSource): void {\n const selectedRows: SkyGridSelectedRowsModelChange = {\n selectedRowIds: this.getSelectedRows(),\n source: source,\n };\n this.multiselectSelectionChange.emit(selectedRows);\n }\n\n private getSelectedRows(): any[] {\n return this.items\n .filter((item) => {\n return item.isSelected;\n })\n .map((item) => {\n if (\n Object.prototype.hasOwnProperty.call(item.data, this.multiselectRowId)\n ) {\n return item.data[this.multiselectRowId];\n }\n return item.id;\n });\n }\n\n private isInteractiveElement(event: any): any {\n const interactiveElSelectors = `\n a,\n button,\n input,\n label,\n option,\n select,\n textarea,\n details,\n dialog,\n menu,\n menuitem,\n summary`;\n return event.target.closest(interactiveElSelectors);\n }\n\n private setResizeBarPosition(xPosition: number): void {\n const parentScroll = this.tableContainerElementRef.nativeElement.scrollLeft;\n const resizeBarX =\n xPosition -\n this.tableElementRef.nativeElement.getBoundingClientRect().left -\n parentScroll;\n this.gridAdapter.setStyle(this.resizeBar, 'left', resizeBarX + 'px');\n }\n\n private applyUserConfig(): Promise<void> {\n return new Promise<void>((resolve) => {\n this.uiConfigService\n .getConfig(this.settingsKey)\n .pipe(take(1))\n .subscribe(\n (config: SkyGridUIConfig) => {\n /* istanbul ignore else */\n if (config && config.selectedColumnIds) {\n // Remove any columnIds that don't exist in the current data set.\n this.selectedColumnIds = config.selectedColumnIds.filter((id) =>\n this.columns.find((column) => column.id === id),\n );\n this.changeDetector.markForCheck();\n }\n\n resolve();\n },\n () => {\n resolve();\n },\n );\n });\n }\n\n private setUserConfig(config: SkyGridUIConfig): void {\n if (!this.settingsKey) {\n return;\n }\n\n this.uiConfigService\n .setConfig(this.settingsKey, config)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n (err) => {\n console.warn('Could not save grid settings.');\n console.warn(err);\n },\n );\n }\n\n private initColumns(): void {\n /* istanbul ignore else */\n if (this.columnComponents.length !== 0 || this.columns !== undefined) {\n /* istanbul ignore else */\n /* sanity check */\n if (this.columnComponents.length > 0) {\n this.getColumnsFromComponent();\n }\n\n this.transformData();\n this.setDisplayedColumns(true);\n this.changeDetector.markForCheck();\n }\n\n // Watch for added/removed columns:\n this.subscriptions.push(\n this.columnComponents.changes.subscribe(() => this.updateColumns()),\n );\n\n // Watch for column heading changes:\n this.columnComponents.forEach((comp: SkyGridColumnComponent) => {\n this.subscriptions.push(\n comp.headingModelChanges.subscribe(\n (change: SkyGridColumnHeadingModelChange) => {\n this.updateColumnHeading(change);\n },\n ),\n );\n this.subscriptions.push(\n comp.descriptionModelChanges.subscribe(\n (change: SkyGridColumnDescriptionModelChange) => {\n this.updateColumnDescription(change);\n },\n ),\n );\n this.subscriptions.push(\n comp.inlineHelpPopoverModelChanges.subscribe(\n (change: SkyGridColumnInlineHelpPopoverModelChange) => {\n this.updateInlineHelpPopover(change);\n },\n ),\n );\n });\n }\n\n private arraysEqual(arrayA: any[], arrayB: any[]): boolean {\n return (\n arrayA.length === arrayB.length &&\n arrayA.every((value, index) => value === arrayB[index])\n );\n }\n}\n","<div class=\"sky-grid\">\n @if (showTopScroll) {\n <div\n #topScrollContainer\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n }\n <div\n #gridContainer\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n >\n <table #gridTable class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\">\n <thead>\n <tr\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n [cdkDropListData]=\"displayedColumns\"\n (cdkDropListDropped)=\"onColumnDropped($event)\"\n >\n @if (enableMultiselect) {\n <th\n class=\"sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <th\n #gridCol\n cdkDrag\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [cdkDragDisabled]=\"column.locked\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n @if ((getCaretVisibility(column.field) | async) === 'hidden') {\n <span class=\"sky-grid-header-caret-hidden-spacing\"></span>\n }\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n variant=\"solid\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [iconName]=\"getCaretIconNames(column)\"\n />\n @if (column.inlineHelpPopover) {\n <sky-help-inline\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n />\n }\n </div>\n @if ((fit === 'width' && !last) || fit === 'scroll') {\n <span\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n }\n <input\n #colSizeRange\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur()\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n />\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n @for (item of items; track item; let i = $index) {\n <tr\n class=\"sky-grid-row\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n @if (enableMultiselect) {\n <td class=\"sky-grid-multiselect-cell sky-grid-header-locked\">\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"\n 'skyux_grid_multiselect_select_row' | skyLibResources\n \"\n [(ngModel)]=\"item.isSelected\"\n (change)=\"onMultiselectCheckboxChange()\"\n />\n </div>\n </td>\n }\n @for (\n column of displayedColumns;\n track column;\n let last = $last;\n let i = $index\n ) {\n <td\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n @if (showResizeBar) {\n <div\n #resizeBar\n aria-hidden=\"true\"\n class=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n ></div>\n }\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template #inlineDeleteTemplateRef let-item>\n <div\n #inlineDeleteRef\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n />\n </div>\n</ng-template>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule } from '@skyux/indicators';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\nimport { SkyPopoverModule } from '@skyux/popovers';\n\nimport { SkyGridsResourcesModule } from '../shared/sky-grids-resources.module';\n\nimport { SkyGridCellComponent } from './grid-cell.component';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridComponent } from './grid.component';\n\n/**\n * @deprecated `SkyGridComponent` and its features are deprecated. We recommend using the data grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-grid\n */\n@NgModule({\n declarations: [\n SkyGridComponent,\n SkyGridColumnComponent,\n SkyGridCellComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n FormsModule,\n SkyAffixModule,\n SkyCheckboxModule,\n SkyGridsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyInlineDeleteModule,\n SkyPopoverModule,\n SkyTextHighlightModule,\n ],\n exports: [SkyGridComponent, SkyGridColumnComponent],\n})\nexport class SkyGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.SkyGridAdapterService","i12.SkyGridCellComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyux/grids",
|
|
3
|
-
"version": "14.0.0-alpha.
|
|
3
|
+
"version": "14.0.0-alpha.2",
|
|
4
4
|
"author": "Blackbaud, Inc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blackbaud",
|
|
@@ -16,33 +16,24 @@
|
|
|
16
16
|
},
|
|
17
17
|
"homepage": "https://github.com/blackbaud/skyux#readme",
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@angular/
|
|
20
|
-
"@angular/
|
|
21
|
-
"@angular/
|
|
22
|
-
"@
|
|
23
|
-
"@skyux/
|
|
24
|
-
"@skyux/
|
|
25
|
-
"@skyux/
|
|
26
|
-
"@skyux/
|
|
27
|
-
"@skyux/
|
|
28
|
-
"@skyux/
|
|
29
|
-
"@skyux/
|
|
30
|
-
"@skyux/
|
|
19
|
+
"@angular/cdk": "^21.1.3",
|
|
20
|
+
"@angular/common": "^21.1.2",
|
|
21
|
+
"@angular/core": "^21.1.2",
|
|
22
|
+
"@angular/forms": "^21.1.2",
|
|
23
|
+
"@skyux/core": "14.0.0-alpha.2",
|
|
24
|
+
"@skyux/forms": "14.0.0-alpha.2",
|
|
25
|
+
"@skyux/help-inline": "14.0.0-alpha.2",
|
|
26
|
+
"@skyux/i18n": "14.0.0-alpha.2",
|
|
27
|
+
"@skyux/icon": "14.0.0-alpha.2",
|
|
28
|
+
"@skyux/indicators": "14.0.0-alpha.2",
|
|
29
|
+
"@skyux/layout": "14.0.0-alpha.2",
|
|
30
|
+
"@skyux/list-builder-common": "14.0.0-alpha.2",
|
|
31
|
+
"@skyux/popovers": "14.0.0-alpha.2"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
|
-
"@types/dragula": "2.1.36",
|
|
34
|
-
"dragula": "3.7.3",
|
|
35
|
-
"ng2-dragula": "5.1.0",
|
|
36
34
|
"tslib": "^2.8.1"
|
|
37
35
|
},
|
|
38
36
|
"sideEffects": false,
|
|
39
|
-
"overrides": {
|
|
40
|
-
"ng2-dragula@5.1.0": {
|
|
41
|
-
"@angular/animations": ">=19.0.0",
|
|
42
|
-
"@angular/core": ">=19.0.0",
|
|
43
|
-
"@angular/common": ">=19.0.0"
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
37
|
"module": "fesm2022/skyux-grids.mjs",
|
|
47
38
|
"typings": "types/skyux-grids.d.ts",
|
|
48
39
|
"exports": {
|
package/types/skyux-grids.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { TemplateRef, RendererFactory2, ElementRef, OnInit, AfterContentInit, AfterViewInit, OnChanges, OnDestroy, EventEmitter, ChangeDetectorRef, SimpleChanges } from '@angular/core';
|
|
3
|
+
import * as i5 from '@angular/cdk/drag-drop';
|
|
4
|
+
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
3
5
|
import * as i7 from '@skyux/core';
|
|
4
6
|
import { SkyAffixService, SkyOverlayService, SkyAppWindowRef, SkyUIConfigService, SkyLogService } from '@skyux/core';
|
|
5
7
|
import { ListSortFieldSelectorModel, ListItemModel } from '@skyux/list-builder-common';
|
|
6
|
-
import * as i5 from 'ng2-dragula';
|
|
7
|
-
import { DragulaService } from 'ng2-dragula';
|
|
8
8
|
import { Subject, BehaviorSubject, Observable } from 'rxjs';
|
|
9
9
|
import * as i4 from '@angular/common';
|
|
10
10
|
import * as i6 from '@angular/forms';
|
|
@@ -53,10 +53,17 @@ declare class SkyGridAdapterService {
|
|
|
53
53
|
private rendererFactory;
|
|
54
54
|
private renderer;
|
|
55
55
|
constructor(rendererFactory: RendererFactory2);
|
|
56
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Determines whether a column can be dropped at the given position.
|
|
58
|
+
* Columns cannot be dropped to the left of locked columns.
|
|
59
|
+
*/
|
|
60
|
+
canDrop(displayedColumns: SkyGridColumnModel[], currentIndex: number, targetIndex: number): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Handles the CDK drop event and returns the updated column IDs.
|
|
63
|
+
*/
|
|
64
|
+
onColumnDrop(event: CdkDragDrop<SkyGridColumnModel[]>, displayedColumns: SkyGridColumnModel[]): string[] | undefined;
|
|
57
65
|
getRowHeight(el: ElementRef, index: number): string;
|
|
58
66
|
setStyle(el: ElementRef, style: string, value: string): void;
|
|
59
|
-
private isLeftOfLocked;
|
|
60
67
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyGridAdapterService, never>;
|
|
61
68
|
static ɵprov: i0.ɵɵInjectableDeclaration<SkyGridAdapterService>;
|
|
62
69
|
}
|
|
@@ -212,7 +219,6 @@ declare class SkyGridComponent implements OnInit, AfterContentInit, AfterViewIni
|
|
|
212
219
|
#private;
|
|
213
220
|
private affixService;
|
|
214
221
|
private changeDetector;
|
|
215
|
-
private dragulaService;
|
|
216
222
|
private gridAdapter;
|
|
217
223
|
private overlayService;
|
|
218
224
|
private skyWindow;
|
|
@@ -334,7 +340,6 @@ declare class SkyGridComponent implements OnInit, AfterContentInit, AfterViewIni
|
|
|
334
340
|
columnResizeStep: number;
|
|
335
341
|
currentSortField: BehaviorSubject<ListSortFieldSelectorModel>;
|
|
336
342
|
displayedColumns: SkyGridColumnModel[];
|
|
337
|
-
dragulaGroupName: string;
|
|
338
343
|
gridId: number;
|
|
339
344
|
rowDeleteConfigs: SkyGridRowDeleteConfig[];
|
|
340
345
|
items: any[];
|
|
@@ -365,7 +370,7 @@ declare class SkyGridComponent implements OnInit, AfterContentInit, AfterViewIni
|
|
|
365
370
|
private _columns;
|
|
366
371
|
private _selectedColumnIds;
|
|
367
372
|
private _selectedRowIds;
|
|
368
|
-
constructor(affixService: SkyAffixService, changeDetector: ChangeDetectorRef,
|
|
373
|
+
constructor(affixService: SkyAffixService, changeDetector: ChangeDetectorRef, gridAdapter: SkyGridAdapterService, overlayService: SkyOverlayService, skyWindow: SkyAppWindowRef, uiConfigService: SkyUIConfigService, logger: SkyLogService);
|
|
369
374
|
ngOnInit(): void;
|
|
370
375
|
ngAfterContentInit(): void;
|
|
371
376
|
ngAfterViewInit(): void;
|
|
@@ -403,6 +408,10 @@ declare class SkyGridComponent implements OnInit, AfterContentInit, AfterViewIni
|
|
|
403
408
|
cancelRowDelete(id: string): void;
|
|
404
409
|
confirmRowDelete(id: string): void;
|
|
405
410
|
getRowDeleteItem(id: string): SkyGridRowDeleteConfig;
|
|
411
|
+
/**
|
|
412
|
+
* Handles the CDK drag-and-drop event when a column header is dropped.
|
|
413
|
+
*/
|
|
414
|
+
protected onColumnDropped(event: CdkDragDrop<SkyGridColumnModel[]>): void;
|
|
406
415
|
onTouchMove(event: any): void;
|
|
407
416
|
onTopScroll(event: any): void;
|
|
408
417
|
onGridScroll(event: any): void;
|
|
@@ -568,7 +577,7 @@ declare class SkyGridsResourcesModule {
|
|
|
568
577
|
*/
|
|
569
578
|
declare class SkyGridModule {
|
|
570
579
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyGridModule, never>;
|
|
571
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SkyGridModule, [typeof SkyGridComponent, typeof SkyGridColumnComponent, typeof SkyGridCellComponent], [typeof i4.CommonModule, typeof i5.
|
|
580
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SkyGridModule, [typeof SkyGridComponent, typeof SkyGridColumnComponent, typeof SkyGridCellComponent], [typeof i4.CommonModule, typeof i5.DragDropModule, typeof i6.FormsModule, typeof i7.SkyAffixModule, typeof i8.SkyCheckboxModule, typeof SkyGridsResourcesModule, typeof i10.SkyHelpInlineModule, typeof i11.SkyIconModule, typeof i12.SkyInlineDeleteModule, typeof i13.SkyPopoverModule, typeof i14.SkyTextHighlightModule], [typeof SkyGridComponent, typeof SkyGridColumnComponent]>;
|
|
572
581
|
static ɵinj: i0.ɵɵInjectorDeclaration<SkyGridModule>;
|
|
573
582
|
}
|
|
574
583
|
|