@skyux/grids 4.0.3 → 4.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/bundles/skyux-grids.umd.js +245 -52
  3. package/bundles/skyux-grids.umd.js.map +1 -1
  4. package/bundles/skyux-grids.umd.min.js +11 -11
  5. package/bundles/skyux-grids.umd.min.js.map +1 -1
  6. package/esm2015/modules/grid/grid-adapter.service.js +11 -2
  7. package/esm2015/modules/grid/grid-cell.component.js +4 -1
  8. package/esm2015/modules/grid/grid-column.component.js +30 -19
  9. package/esm2015/modules/grid/grid-column.model.js +4 -1
  10. package/esm2015/modules/grid/grid.component.js +151 -23
  11. package/esm2015/modules/grid/grid.module.js +4 -2
  12. package/esm2015/modules/grid/types/grid-column-description-model-change.js +1 -1
  13. package/esm2015/modules/grid/types/grid-column-heading-model-change.js +1 -1
  14. package/esm2015/modules/grid/types/grid-column-inline-help-popover-model-change.js +1 -1
  15. package/esm2015/modules/grid/types/grid-column-width-model-change.js +1 -1
  16. package/esm2015/modules/grid/types/grid-message-type.js +13 -1
  17. package/esm2015/modules/grid/types/grid-message.js +1 -1
  18. package/esm2015/modules/grid/types/grid-row-delete-cancel-args.js +1 -1
  19. package/esm2015/modules/grid/types/grid-row-delete-config.js +1 -1
  20. package/esm2015/modules/grid/types/grid-row-delete-confirm-args.js +1 -1
  21. package/esm2015/modules/grid/types/grid-row-delete-contents.js +1 -0
  22. package/esm2015/modules/grid/types/grid-selected-rows-model-change.js +1 -1
  23. package/esm2015/modules/grid/types/grid-selected-rows-source.js +4 -1
  24. package/esm2015/modules/grid/types/grid-ui-config.js +1 -1
  25. package/esm2015/polyfills.js +3 -3
  26. package/esm5/modules/grid/grid-adapter.service.js +23 -3
  27. package/esm5/modules/grid/grid-cell.component.js +4 -1
  28. package/esm5/modules/grid/grid-column.component.js +30 -19
  29. package/esm5/modules/grid/grid-column.model.js +4 -1
  30. package/esm5/modules/grid/grid.component.js +157 -23
  31. package/esm5/modules/grid/grid.module.js +4 -2
  32. package/esm5/modules/grid/types/grid-column-description-model-change.js +1 -1
  33. package/esm5/modules/grid/types/grid-column-heading-model-change.js +1 -1
  34. package/esm5/modules/grid/types/grid-column-inline-help-popover-model-change.js +1 -1
  35. package/esm5/modules/grid/types/grid-column-width-model-change.js +1 -1
  36. package/esm5/modules/grid/types/grid-message-type.js +13 -1
  37. package/esm5/modules/grid/types/grid-message.js +1 -1
  38. package/esm5/modules/grid/types/grid-row-delete-cancel-args.js +1 -1
  39. package/esm5/modules/grid/types/grid-row-delete-config.js +1 -1
  40. package/esm5/modules/grid/types/grid-row-delete-confirm-args.js +1 -1
  41. package/esm5/modules/grid/types/grid-row-delete-contents.js +1 -0
  42. package/esm5/modules/grid/types/grid-selected-rows-model-change.js +1 -1
  43. package/esm5/modules/grid/types/grid-selected-rows-source.js +4 -1
  44. package/esm5/modules/grid/types/grid-ui-config.js +1 -1
  45. package/esm5/polyfills.js +3 -3
  46. package/fesm2015/skyux-grids.js +213 -42
  47. package/fesm2015/skyux-grids.js.map +1 -1
  48. package/fesm5/skyux-grids.js +231 -43
  49. package/fesm5/skyux-grids.js.map +1 -1
  50. package/modules/grid/grid-adapter.service.d.ts +3 -0
  51. package/modules/grid/grid-cell.component.d.ts +3 -0
  52. package/modules/grid/grid-column.component.d.ts +68 -12
  53. package/modules/grid/grid-column.model.d.ts +3 -0
  54. package/modules/grid/grid.component.d.ts +105 -7
  55. package/modules/grid/types/grid-column-description-model-change.d.ts +3 -0
  56. package/modules/grid/types/grid-column-heading-model-change.d.ts +3 -0
  57. package/modules/grid/types/grid-column-inline-help-popover-model-change.d.ts +3 -0
  58. package/modules/grid/types/grid-column-width-model-change.d.ts +9 -0
  59. package/modules/grid/types/grid-message-type.d.ts +12 -0
  60. package/modules/grid/types/grid-message.d.ts +6 -0
  61. package/modules/grid/types/grid-row-delete-cancel-args.d.ts +3 -0
  62. package/modules/grid/types/grid-row-delete-config.d.ts +3 -0
  63. package/modules/grid/types/grid-row-delete-confirm-args.d.ts +3 -0
  64. package/modules/grid/types/grid-row-delete-contents.d.ts +9 -0
  65. package/modules/grid/types/grid-selected-rows-model-change.d.ts +3 -0
  66. package/modules/grid/types/grid-selected-rows-source.d.ts +3 -0
  67. package/modules/grid/types/grid-ui-config.d.ts +3 -0
  68. package/package.json +3 -3
  69. package/skyux-grids.metadata.json +1 -1
  70. package/src/assets/img/grid-annotated.png +0 -0
  71. package/src/assets/img/grid-dont-use-complex.png +0 -0
  72. package/src/assets/img/grid-fit-scroll.png +0 -0
  73. package/src/assets/img/grid-fit-width.png +0 -0
  74. package/src/assets/img/grid-option-context-menu.png +0 -0
  75. package/src/assets/img/grid-option-filter.png +0 -0
  76. package/src/assets/img/grid-option-multi-dont-tile.png +0 -0
  77. package/src/assets/img/grid-option-multi.png +0 -0
  78. package/src/assets/img/grid-option-sort.png +0 -0
  79. package/src/assets/img/grid-option-template-column.png +0 -0
  80. package/src/assets/img/grid-reorder.png +0 -0
  81. package/src/assets/img/grid-resize.png +0 -0
  82. package/src/assets/img/grid-use-when.png +0 -0
@@ -1,9 +1,9 @@
1
- import { __decorate, __read } from 'tslib';
1
+ import { __decorate, __read, __values } from 'tslib';
2
2
  import { EventEmitter, Input, ContentChildren, TemplateRef, Component, ChangeDetectionStrategy, RendererFactory2, Injectable, ChangeDetectorRef, Output, ViewChildren, ViewChild, HostListener, ViewContainerRef, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { DragulaService, DragulaModule } from 'ng2-dragula';
6
- import { SkyAppWindowRef, SkyUIConfigService } from '@skyux/core';
6
+ import { SkyAffixAutoFitContext, SkyAffixService, SkyOverlayService, SkyAppWindowRef, SkyUIConfigService, SkyAffixModule, SkyOverlayModule } from '@skyux/core';
7
7
  import { SkyCheckboxModule } from '@skyux/forms';
8
8
  import { SkyHelpInlineModule, SkyIconModule, SkyTextHighlightModule } from '@skyux/indicators';
9
9
  import { SkyInlineDeleteModule } from '@skyux/layout';
@@ -15,12 +15,27 @@ import { getStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '
15
15
 
16
16
  var SkyGridMessageType;
17
17
  (function (SkyGridMessageType) {
18
+ /**
19
+ * Selects the multiselect checkboxes for all rows in the grid.
20
+ */
18
21
  SkyGridMessageType[SkyGridMessageType["SelectAll"] = 0] = "SelectAll";
22
+ /**
23
+ * Clears the multiselect checkboxes for all rows in the grid.
24
+ */
19
25
  SkyGridMessageType[SkyGridMessageType["ClearAll"] = 1] = "ClearAll";
26
+ /**
27
+ * @internal
28
+ */
20
29
  SkyGridMessageType[SkyGridMessageType["PromptDeleteRow"] = 2] = "PromptDeleteRow";
30
+ /**
31
+ * @internal
32
+ */
21
33
  SkyGridMessageType[SkyGridMessageType["AbortDeleteRow"] = 3] = "AbortDeleteRow";
22
34
  })(SkyGridMessageType || (SkyGridMessageType = {}));
23
35
 
36
+ /**
37
+ * @internal
38
+ */
24
39
  var SkyGridSelectedRowsSource;
25
40
  (function (SkyGridSelectedRowsSource) {
26
41
  SkyGridSelectedRowsSource[SkyGridSelectedRowsSource["CheckboxChange"] = 0] = "CheckboxChange";
@@ -30,17 +45,28 @@ var SkyGridSelectedRowsSource;
30
45
  SkyGridSelectedRowsSource[SkyGridSelectedRowsSource["SelectedRowIdsChange"] = 4] = "SelectedRowIdsChange";
31
46
  })(SkyGridSelectedRowsSource || (SkyGridSelectedRowsSource = {}));
32
47
 
48
+ /**
49
+ * Specifies the column information.
50
+ */
33
51
  var SkyGridColumnComponent = /** @class */ (function () {
34
52
  function SkyGridColumnComponent() {
35
- this.isSortable = true;
36
53
  /**
37
54
  * Specifies the horizontal alignment of the column's data and header.
38
55
  * @default 'left'
39
56
  */
40
57
  this.alignment = 'left';
41
- /* tslint:disable:no-input-rename */
58
+ /**
59
+ * Indicates whether the column sorts the grid when users click the column header.
60
+ * @default true
61
+ */
62
+ this.isSortable = true;
63
+ /**
64
+ * Specifies a search function to apply for the specific column. By default,
65
+ * the column executes a string compare on the column data.
66
+ * @default (value, searchText) => value.toString().toLowerCase().indexOf(searchText) !== -1
67
+ */
68
+ /* tslint:disable-next-line:no-input-rename */
42
69
  this.searchFunction = this.search;
43
- /* tslint:enable:no-input-rename */
44
70
  this.descriptionChanges = new EventEmitter();
45
71
  this.descriptionModelChanges = new EventEmitter();
46
72
  this.headingChanges = new EventEmitter();
@@ -92,46 +118,46 @@ var SkyGridColumnComponent = /** @class */ (function () {
92
118
  };
93
119
  __decorate([
94
120
  Input()
95
- ], SkyGridColumnComponent.prototype, "id", void 0);
96
- __decorate([
97
- Input()
98
- ], SkyGridColumnComponent.prototype, "heading", void 0);
121
+ ], SkyGridColumnComponent.prototype, "alignment", void 0);
99
122
  __decorate([
100
123
  Input()
101
- ], SkyGridColumnComponent.prototype, "inlineHelpPopover", void 0);
124
+ ], SkyGridColumnComponent.prototype, "description", void 0);
102
125
  __decorate([
103
126
  Input()
104
- ], SkyGridColumnComponent.prototype, "width", void 0);
127
+ ], SkyGridColumnComponent.prototype, "excludeFromHighlighting", void 0);
105
128
  __decorate([
106
129
  Input()
107
- ], SkyGridColumnComponent.prototype, "hidden", void 0);
130
+ ], SkyGridColumnComponent.prototype, "field", void 0);
108
131
  __decorate([
109
132
  Input()
110
- ], SkyGridColumnComponent.prototype, "locked", void 0);
133
+ ], SkyGridColumnComponent.prototype, "heading", void 0);
111
134
  __decorate([
112
135
  Input()
113
- ], SkyGridColumnComponent.prototype, "field", void 0);
136
+ ], SkyGridColumnComponent.prototype, "hidden", void 0);
114
137
  __decorate([
115
138
  Input()
116
- ], SkyGridColumnComponent.prototype, "type", void 0);
139
+ ], SkyGridColumnComponent.prototype, "id", void 0);
117
140
  __decorate([
118
141
  Input()
119
- ], SkyGridColumnComponent.prototype, "description", void 0);
142
+ ], SkyGridColumnComponent.prototype, "inlineHelpPopover", void 0);
120
143
  __decorate([
121
144
  Input()
122
145
  ], SkyGridColumnComponent.prototype, "isSortable", void 0);
123
146
  __decorate([
124
147
  Input()
125
- ], SkyGridColumnComponent.prototype, "excludeFromHighlighting", void 0);
126
- __decorate([
127
- Input()
128
- ], SkyGridColumnComponent.prototype, "alignment", void 0);
148
+ ], SkyGridColumnComponent.prototype, "locked", void 0);
129
149
  __decorate([
130
150
  Input('search')
131
151
  ], SkyGridColumnComponent.prototype, "searchFunction", void 0);
152
+ __decorate([
153
+ Input()
154
+ ], SkyGridColumnComponent.prototype, "type", void 0);
132
155
  __decorate([
133
156
  Input('template')
134
157
  ], SkyGridColumnComponent.prototype, "templateInput", void 0);
158
+ __decorate([
159
+ Input()
160
+ ], SkyGridColumnComponent.prototype, "width", void 0);
135
161
  __decorate([
136
162
  ContentChildren(TemplateRef)
137
163
  ], SkyGridColumnComponent.prototype, "templates", void 0);
@@ -145,6 +171,9 @@ var SkyGridColumnComponent = /** @class */ (function () {
145
171
  return SkyGridColumnComponent;
146
172
  }());
147
173
 
174
+ /**
175
+ * @internal
176
+ */
148
177
  var SkyGridColumnModel = /** @class */ (function () {
149
178
  function SkyGridColumnModel(template, data) {
150
179
  this.isSortable = true;
@@ -173,6 +202,9 @@ var GRID_HEADER_LOCKED_SELECTOR = '.sky-grid-header-locked';
173
202
  var GRID_HEADER_RESIZE_HANDLE = '.sky-grid-resize-handle';
174
203
  var GRID_ROW_DELETE_SELECTOR = '.sky-grid-row-delete-heading';
175
204
  var GRID_MULTISELECT_SELECTOR = '.sky-grid-multiselect-cell';
205
+ /**
206
+ * @internal
207
+ */
176
208
  var SkyGridAdapterService = /** @class */ (function () {
177
209
  function SkyGridAdapterService(rendererFactory) {
178
210
  this.rendererFactory = rendererFactory;
@@ -231,7 +263,24 @@ var SkyGridAdapterService = /** @class */ (function () {
231
263
  this.renderer.setStyle(el.nativeElement, style, value);
232
264
  }
233
265
  };
234
- SkyGridAdapterService.prototype.isLeftOfLocked = function (sourceColumn, columns) {
266
+ SkyGridAdapterService.prototype.isLeftOfLocked = function (handle, columns) {
267
+ var e_1, _a;
268
+ var sourceColumn = handle;
269
+ try {
270
+ for (var _b = __values(Array.from(columns)), _c = _b.next(); !_c.done; _c = _b.next()) {
271
+ var column = _c.value;
272
+ if (column.contains(handle)) {
273
+ sourceColumn = column;
274
+ }
275
+ }
276
+ }
277
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
278
+ finally {
279
+ try {
280
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
281
+ }
282
+ finally { if (e_1) throw e_1.error; }
283
+ }
235
284
  for (var i = (columns.length - 1); i >= 0; i--) {
236
285
  if (columns[i].classList.contains('sky-grid-header-locked')) {
237
286
  return true;
@@ -276,27 +325,70 @@ if (!Element.prototype.closest) {
276
325
  // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
277
326
  // Returns true if the element would be selected by the specified selector string.
278
327
  if (!Element.prototype.matches) {
279
- Element.prototype.matches = Element.prototype.msMatchesSelector
280
- /* istanbul ignore next */ || Element.prototype.webkitMatchesSelector;
328
+ /* istanbul ignore next */
329
+ Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
281
330
  }
282
331
 
283
332
  var nextId = 0;
284
333
  var SkyGridComponent = /** @class */ (function () {
285
- function SkyGridComponent(dragulaService, gridAdapter, skyWindow, uiConfigService, changeDetector) {
334
+ function SkyGridComponent(affixService, changeDetector, dragulaService, gridAdapter, overlayService, skyWindow, uiConfigService) {
335
+ this.affixService = affixService;
336
+ this.changeDetector = changeDetector;
286
337
  this.dragulaService = dragulaService;
287
338
  this.gridAdapter = gridAdapter;
339
+ this.overlayService = overlayService;
288
340
  this.skyWindow = skyWindow;
289
341
  this.uiConfigService = uiConfigService;
290
- this.changeDetector = changeDetector;
342
+ /**
343
+ * Indicates whether to enable the multiselect feature to display a column of
344
+ * checkboxes on the left side of the grid. You can specify a unique ID with
345
+ * the `multiselectRowId` property, but multiselect defaults to the `id` property on
346
+ * the `data` object. To include options to select and clear all multiselect checkboxes,
347
+ * we recommend the [list view grid](https://developer.blackbaud.com/skyux/components/list/grid) component.
348
+ * @default false
349
+ */
291
350
  this.enableMultiselect = false;
351
+ /**
352
+ * Specifies how the grid fits to its parent. The valid options are `width`,
353
+ * which fits the grid to the parent's full width, and `scroll`, which allows the grid
354
+ * to exceed the parent's width. If the grid does not have enough columns to fill
355
+ * the parent's width, it always stretches to the parent's full width.
356
+ */
292
357
  this.fit = 'width';
358
+ /**
359
+ * Indicates whether to display a toolbar with the grid.
360
+ */
293
361
  this.hasToolbar = false;
362
+ /**
363
+ * Provides an observable to send commands to the grid.
364
+ */
294
365
  this.messageStream = new Subject();
366
+ /**
367
+ * Fires when the width of a column changes.
368
+ */
295
369
  this.columnWidthChange = new EventEmitter();
370
+ /**
371
+ * Fires when the selection of multiselect checkboxes changes.
372
+ * Emits an array of IDs for the selected rows based on the `multiselectRowId` property
373
+ * that the consumer provides.
374
+ */
296
375
  this.multiselectSelectionChange = new EventEmitter();
376
+ /**
377
+ * @internal
378
+ */
297
379
  this.rowDeleteCancel = new EventEmitter();
380
+ /**
381
+ * @internal
382
+ */
298
383
  this.rowDeleteConfirm = new EventEmitter();
384
+ /**
385
+ * Fires when the columns to display in the grid change or when the order of the columns changes.
386
+ * The event emits an array of IDs for the displayed columns that reflects the column order.
387
+ */
299
388
  this.selectedColumnIdsChange = new EventEmitter();
389
+ /**
390
+ * Fires when the active sort field changes.
391
+ */
300
392
  this.sortFieldChange = new EventEmitter();
301
393
  this.columnResizeStep = 10;
302
394
  this.gridId = ++nextId;
@@ -308,6 +400,7 @@ var SkyGridComponent = /** @class */ (function () {
308
400
  this.isDraggingResizeHandle = false;
309
401
  this.isResized = false;
310
402
  this.ngUnsubscribe = new Subject();
403
+ this.rowDeleteContents = {};
311
404
  this.subscriptions = [];
312
405
  this.scrollTriggered = false;
313
406
  this.selectedColumnIdsSet = false;
@@ -322,6 +415,10 @@ var SkyGridComponent = /** @class */ (function () {
322
415
  get: function () {
323
416
  return this._selectedColumnIds;
324
417
  },
418
+ /**
419
+ * Specifies the columns to display in the grid based on the `id` or `field` properties
420
+ * of the columns. If no columns are specified, then the grid displays all columns.
421
+ */
325
422
  set: function (value) {
326
423
  var currentIds = this._selectedColumnIds;
327
424
  this._selectedColumnIds = value;
@@ -353,6 +450,11 @@ var SkyGridComponent = /** @class */ (function () {
353
450
  get: function () {
354
451
  return this._selectedRowIds;
355
452
  },
453
+ /**
454
+ * Specifies a set of IDs for the rows to select in a multiselect grid.
455
+ * The IDs match the `id` properties of the `data` objects.
456
+ * Rows with IDs that are not included are de-selected in the grid.
457
+ */
356
458
  set: function (value) {
357
459
  if (value) {
358
460
  this._selectedRowIds = value;
@@ -363,6 +465,13 @@ var SkyGridComponent = /** @class */ (function () {
363
465
  enumerable: true,
364
466
  configurable: true
365
467
  });
468
+ Object.defineProperty(SkyGridComponent.prototype, "tableWidth", {
469
+ get: function () {
470
+ return this.tableElementRef.nativeElement.offsetWidth;
471
+ },
472
+ enumerable: true,
473
+ configurable: true
474
+ });
366
475
  SkyGridComponent.prototype.ngOnInit = function () {
367
476
  var _this = this;
368
477
  this.messageStream
@@ -393,12 +502,34 @@ var SkyGridComponent = /** @class */ (function () {
393
502
  SkyGridComponent.prototype.ngOnChanges = function (changes) {
394
503
  var _this = this;
395
504
  if (changes.columns && this.columns) {
505
+ if (this.selectedColumnIds) {
506
+ this.selectedColumnIds = this.selectedColumnIds.filter(function (columnId) { return _this.columns.find(function (column) { return column.id === columnId; }); });
507
+ }
396
508
  this.setDisplayedColumns(true);
397
509
  }
398
510
  if (changes.data && this.data) {
399
511
  this.transformData();
400
512
  // This set timeout is necessary to ensure the data has rendered in the grid
401
513
  setTimeout(function () {
514
+ // This cleans up any lingering row deletes for items that have been removed.
515
+ Object.keys(_this.rowDeleteContents).forEach(function (id) {
516
+ if (!_this.data.find(function (item) { return item.id === id; })) {
517
+ _this.destroyRowDelete(id);
518
+ }
519
+ else {
520
+ // The rows re-render thus messing up the affixers. We must reaffix them so that things
521
+ // continue to render correctly.
522
+ var rowElement = _this.tableElementRef.nativeElement.querySelector('[sky-cmp-id="' + id + '"]');
523
+ _this.rowDeleteContents[id].affixer.affixTo(rowElement, {
524
+ autoFitContext: SkyAffixAutoFitContext.Viewport,
525
+ isSticky: true,
526
+ placement: 'above',
527
+ verticalAlignment: 'top',
528
+ horizontalAlignment: 'left',
529
+ enableAutoFit: false
530
+ });
531
+ }
532
+ });
402
533
  _this.checkUserColumnWidthsForScroll();
403
534
  });
404
535
  }
@@ -407,12 +538,16 @@ var SkyGridComponent = /** @class */ (function () {
407
538
  }
408
539
  };
409
540
  SkyGridComponent.prototype.ngOnDestroy = function () {
541
+ var _this = this;
410
542
  this.subscriptions.forEach(function (subscription) {
411
543
  subscription.unsubscribe();
412
544
  });
413
545
  this.multiselectSelectionChange.complete();
414
546
  this.ngUnsubscribe.next();
415
547
  this.ngUnsubscribe.complete();
548
+ Object.keys(this.rowDeleteContents).forEach(function (id) {
549
+ _this.destroyRowDelete(id);
550
+ });
416
551
  };
417
552
  SkyGridComponent.prototype.onWindowResize = function () {
418
553
  this.checkUserColumnWidthsForScroll();
@@ -645,6 +780,7 @@ var SkyGridComponent = /** @class */ (function () {
645
780
  SkyGridComponent.prototype.cancelRowDelete = function (id) {
646
781
  this.rowDeleteConfigs = this.rowDeleteConfigs.filter(function (config) { return config.id !== id; });
647
782
  this.rowDeleteCancel.emit({ id: id });
783
+ this.destroyRowDelete(id);
648
784
  };
649
785
  SkyGridComponent.prototype.confirmRowDelete = function (id) {
650
786
  this.rowDeleteConfigs.find(function (config) { return config.id === id; }).pending = true;
@@ -721,6 +857,7 @@ var SkyGridComponent = /** @class */ (function () {
721
857
  this.emitSelectedRows(SkyGridSelectedRowsSource.ClearAll);
722
858
  };
723
859
  SkyGridComponent.prototype.handleIncomingMessages = function (message) {
860
+ var _this = this;
724
861
  /* tslint:disable-next-line:switch-default */
725
862
  switch (message.type) {
726
863
  case SkyGridMessageType.SelectAll:
@@ -740,6 +877,41 @@ var SkyGridComponent = /** @class */ (function () {
740
877
  }
741
878
  else {
742
879
  this.rowDeleteConfigs.push({ id: message.data.promptDeleteRow.id, pending: false });
880
+ var overlay_1 = this.overlayService.create({
881
+ enableScroll: true,
882
+ showBackdrop: false,
883
+ closeOnNavigation: true,
884
+ enableClose: false,
885
+ enablePointerEvents: true
886
+ });
887
+ overlay_1.attachTemplate(this.inlineDeleteTemplateRef, { $implicit: this.data.find(function (item) { return item.id === message.data.promptDeleteRow.id; }) });
888
+ /**
889
+ * We are manually setting the z-index here because overlays will always be on top of
890
+ * the omnibar. This manual setting is 1 less than the omnibar's z-index of 1000. We
891
+ * discussed changing the overlay service to allow for this but decided against that
892
+ * change at this time due to its niche nature.
893
+ */
894
+ overlay_1.componentRef.instance.zIndex = '999';
895
+ setTimeout(function () {
896
+ var inlineDeleteRef = _this.inlineDeleteRefs.toArray()
897
+ .find(function (elRef) {
898
+ return elRef.nativeElement.id === 'row-delete-ref-' + message.data.promptDeleteRow.id;
899
+ });
900
+ var affixer = _this.affixService.createAffixer(inlineDeleteRef);
901
+ var rowElement = _this.tableElementRef.nativeElement.querySelector('[sky-cmp-id="' + message.data.promptDeleteRow.id + '"]');
902
+ affixer.affixTo(rowElement, {
903
+ autoFitContext: SkyAffixAutoFitContext.Viewport,
904
+ isSticky: true,
905
+ placement: 'above',
906
+ verticalAlignment: 'top',
907
+ horizontalAlignment: 'left',
908
+ enableAutoFit: false
909
+ });
910
+ _this.rowDeleteContents[message.data.promptDeleteRow.id] = {
911
+ affixer: affixer,
912
+ overlay: overlay_1
913
+ };
914
+ });
743
915
  }
744
916
  }
745
917
  break;
@@ -748,6 +920,7 @@ var SkyGridComponent = /** @class */ (function () {
748
920
  /* istanbul ignore else */
749
921
  if (message.data && message.data.abortDeleteRow) {
750
922
  this.rowDeleteConfigs = this.rowDeleteConfigs.filter(function (config) { return config.id !== message.data.abortDeleteRow.id; });
923
+ this.destroyRowDelete(message.data.abortDeleteRow.id);
751
924
  }
752
925
  break;
753
926
  }
@@ -765,7 +938,8 @@ var SkyGridComponent = /** @class */ (function () {
765
938
  if (respectHidden === void 0) { respectHidden = false; }
766
939
  if (this.selectedColumnIds !== undefined) {
767
940
  // setup displayed columns
768
- this.displayedColumns = this.selectedColumnIds.map(function (columnId) { return _this.columns.filter(function (column) { return column.id === columnId; })[0]; });
941
+ this.displayedColumns = this.selectedColumnIds
942
+ .filter(function (columnId) { return _this.columns.find(function (column) { return column.id === columnId; }); }).map(function (columnId) { return _this.columns.filter(function (column) { return column.id === columnId; })[0]; });
769
943
  }
770
944
  else if (respectHidden) {
771
945
  this.displayedColumns = this.columns.filter(function (column) {
@@ -857,16 +1031,10 @@ var SkyGridComponent = /** @class */ (function () {
857
1031
  }
858
1032
  this.changeDetector.detectChanges();
859
1033
  this.columnWidthChange.emit(this.getColumnWidthModelChange());
860
- // If in "scroll" mode, reset the full table width.
861
- // This prevents pixel "hopping" for the non-resized columns
862
- if (this.fit === 'scroll') {
863
- this.tableWidth = this.tableElementRef.nativeElement.offsetWidth;
864
- }
865
1034
  };
866
1035
  SkyGridComponent.prototype.initColumnWidths = function () {
867
1036
  var _this = this;
868
1037
  // Establish table width.
869
- this.tableWidth = this.tableElementRef.nativeElement.offsetWidth;
870
1038
  this.showTopScroll = true;
871
1039
  // Set column widths based on the width initially given by the browser.
872
1040
  // computedWidth prevents accidental overflow for browsers with sub-pixel widths.
@@ -918,7 +1086,6 @@ var SkyGridComponent = /** @class */ (function () {
918
1086
  this.skyWindow.nativeWindow.setTimeout(function () {
919
1087
  _this.gridAdapter.setStyle(_this.tableElementRef, 'width', "auto");
920
1088
  _this.changeDetector.detectChanges();
921
- _this.tableWidth = _this.tableElementRef.nativeElement.offsetWidth;
922
1089
  _this.gridAdapter.setStyle(_this.tableElementRef, 'width', _this.tableWidth + "px");
923
1090
  _this.changeDetector.detectChanges();
924
1091
  });
@@ -944,6 +1111,14 @@ var SkyGridComponent = /** @class */ (function () {
944
1111
  SkyGridComponent.prototype.addDelimeter = function (text, delimiter) {
945
1112
  return text.filter(function (val) { return val; }).join(delimiter);
946
1113
  };
1114
+ SkyGridComponent.prototype.destroyRowDelete = function (id) {
1115
+ var rowDeleteContents = this.rowDeleteContents[id];
1116
+ if (rowDeleteContents) {
1117
+ rowDeleteContents.affixer.destroy();
1118
+ this.overlayService.close(rowDeleteContents.overlay);
1119
+ delete this.rowDeleteContents[id];
1120
+ }
1121
+ };
947
1122
  SkyGridComponent.prototype.emitSelectedRows = function (source) {
948
1123
  var selectedRows = {
949
1124
  selectedRowIds: this.getSelectedRows(),
@@ -1040,11 +1215,13 @@ var SkyGridComponent = /** @class */ (function () {
1040
1215
  });
1041
1216
  };
1042
1217
  SkyGridComponent.ctorParameters = function () { return [
1218
+ { type: SkyAffixService },
1219
+ { type: ChangeDetectorRef },
1043
1220
  { type: DragulaService },
1044
1221
  { type: SkyGridAdapterService },
1222
+ { type: SkyOverlayService },
1045
1223
  { type: SkyAppWindowRef },
1046
- { type: SkyUIConfigService },
1047
- { type: ChangeDetectorRef }
1224
+ { type: SkyUIConfigService }
1048
1225
  ]; };
1049
1226
  __decorate([
1050
1227
  Input()
@@ -1078,19 +1255,19 @@ var SkyGridComponent = /** @class */ (function () {
1078
1255
  ], SkyGridComponent.prototype, "rowHighlightedId", void 0);
1079
1256
  __decorate([
1080
1257
  Input()
1081
- ], SkyGridComponent.prototype, "settingsKey", void 0);
1258
+ ], SkyGridComponent.prototype, "selectedColumnIds", null);
1082
1259
  __decorate([
1083
1260
  Input()
1084
- ], SkyGridComponent.prototype, "sortField", void 0);
1261
+ ], SkyGridComponent.prototype, "selectedRowIds", null);
1085
1262
  __decorate([
1086
1263
  Input()
1087
- ], SkyGridComponent.prototype, "width", void 0);
1264
+ ], SkyGridComponent.prototype, "settingsKey", void 0);
1088
1265
  __decorate([
1089
1266
  Input()
1090
- ], SkyGridComponent.prototype, "selectedColumnIds", null);
1267
+ ], SkyGridComponent.prototype, "sortField", void 0);
1091
1268
  __decorate([
1092
1269
  Input()
1093
- ], SkyGridComponent.prototype, "selectedRowIds", null);
1270
+ ], SkyGridComponent.prototype, "width", void 0);
1094
1271
  __decorate([
1095
1272
  Output()
1096
1273
  ], SkyGridComponent.prototype, "columnWidthChange", void 0);
@@ -1110,7 +1287,7 @@ var SkyGridComponent = /** @class */ (function () {
1110
1287
  Output()
1111
1288
  ], SkyGridComponent.prototype, "sortFieldChange", void 0);
1112
1289
  __decorate([
1113
- ContentChildren(SkyGridColumnComponent, { descendants: true })
1290
+ ContentChildren(SkyGridColumnComponent)
1114
1291
  ], SkyGridComponent.prototype, "columnComponents", void 0);
1115
1292
  __decorate([
1116
1293
  ViewChildren('gridCol')
@@ -1118,6 +1295,12 @@ var SkyGridComponent = /** @class */ (function () {
1118
1295
  __decorate([
1119
1296
  ViewChildren('colSizeRange')
1120
1297
  ], SkyGridComponent.prototype, "columnRangeInputElementRefs", void 0);
1298
+ __decorate([
1299
+ ViewChildren('inlineDeleteRef')
1300
+ ], SkyGridComponent.prototype, "inlineDeleteRefs", void 0);
1301
+ __decorate([
1302
+ ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })
1303
+ ], SkyGridComponent.prototype, "inlineDeleteTemplateRef", void 0);
1121
1304
  __decorate([
1122
1305
  ViewChild('gridContainer')
1123
1306
  ], SkyGridComponent.prototype, "tableContainerElementRef", void 0);
@@ -1136,18 +1319,21 @@ var SkyGridComponent = /** @class */ (function () {
1136
1319
  SkyGridComponent = __decorate([
1137
1320
  Component({
1138
1321
  selector: 'sky-grid',
1139
- template: "<div class=\"sky-grid\">\n <div *ngIf=\"showTopScroll\"\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n #topScrollContainer\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n <div\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n #gridContainer\n >\n <table\n class=\"sky-grid-table\"\n [ngClass]=\"getTableClassNames()\"\n #gridTable>\n <thead>\n <tr dragula=\"sky-grid-heading\">\n <th *ngIf=\"rowDeleteConfigs && rowDeleteConfigs.length > 0\"\n class=\"sky-grid-row-delete-heading\"\n ></th>\n <th *ngIf=\"enableMultiselect\"\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 <th *ngFor=\"let column of displayedColumns; let last = last, let i = index\"\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 #gridCol\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 <span *ngIf=\"(getCaretVisibility(column.field) | async) === 'hidden'\"\n class=\"sky-grid-header-caret-hidden-spacing\"\n ></span>\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span\n class=\"sky-grid-header-text\"\n >{{column.heading?.trim()}}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n [ngClass]=\"'sky-grid-heading-sort-' + (getCaretVisibility(column.field) | async)\"\n [icon]=\"getCaretIconNames(column)\"\n >\n </sky-icon>\n <sky-help-inline *ngIf=\"column.inlineHelpPopover\"\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden' : 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 </sky-help-inline>\n </div>\n <span\n *ngIf=\"(fit==='width' && !last) || (fit==='scroll')\"\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 <input\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\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($event)\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n #colSizeRange />\n </th>\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n <tr\n class=\"sky-grid-row\"\n *ngFor=\"let item of items; let i = index\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.aria-selected]=\"item.isSelected\"\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 <td *ngIf=\"rowDeleteConfigs && rowDeleteConfigs.length > 0\"\n class=\"sky-grid-cell sky-grid-row-delete-cell\"\n [ngStyle]='{ \"height\": getRowDeleteItem(item.data.id) ? getRowHeight(i) : undefined }'\n >\n <sky-inline-delete *ngIf=\"getRowDeleteItem(item.data.id)\"\n [pending]=\"getRowDeleteItem(item.data.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.data.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.data.id)\"\n ></sky-inline-delete>\n </td>\n <td *ngIf=\"enableMultiselect\"\n class=\"sky-grid-multiselect-cell sky-grid-header-locked\"\n >\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"'skyux_grid_multiselect_select_row' | skyLibResources\"\n (change)=\"onMultiselectCheckboxChange()\"\n [(ngModel)]=\"item.isSelected\"\n >\n </sky-checkbox>\n </div>\n </td>\n <td *ngFor=\"let column of displayedColumns; let last = last; let i = index\"\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]=\"!column.excludeFromHighlighting ? highlightText : undefined\"\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 </sky-grid-cell>\n </td>\n </tr>\n </tbody>\n </table>\n <div *ngIf=\"showResizeBar\"\n aria-hidden=\"true\"\n id=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n #resizeBar\n >\n </div>\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{value}}</ng-template>\n",
1322
+ template: "<div class=\"sky-grid\">\n <div *ngIf=\"showTopScroll\"\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n #topScrollContainer\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n <div\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n #gridContainer\n >\n <table\n class=\"sky-grid-table\"\n [ngClass]=\"getTableClassNames()\"\n #gridTable>\n <thead>\n <tr dragula=\"sky-grid-heading\">\n <th *ngIf=\"enableMultiselect\"\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 <th *ngFor=\"let column of displayedColumns; let last = last, let i = index\"\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 #gridCol\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 <span *ngIf=\"(getCaretVisibility(column.field) | async) === 'hidden'\"\n class=\"sky-grid-header-caret-hidden-spacing\"\n ></span>\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span\n class=\"sky-grid-header-text\"\n >{{column.heading?.trim()}}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n [ngClass]=\"'sky-grid-heading-sort-' + (getCaretVisibility(column.field) | async)\"\n [icon]=\"getCaretIconNames(column)\"\n >\n </sky-icon>\n <sky-help-inline *ngIf=\"column.inlineHelpPopover\"\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden' : 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 </sky-help-inline>\n </div>\n <span\n *ngIf=\"(fit==='width' && !last) || (fit==='scroll')\"\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 <input\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($event)\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n #colSizeRange />\n </th>\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n <tr\n class=\"sky-grid-row\"\n *ngFor=\"let item of items; let i = index\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.aria-selected]=\"item.isSelected\"\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 <td *ngIf=\"enableMultiselect\"\n class=\"sky-grid-multiselect-cell sky-grid-header-locked\"\n >\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"'skyux_grid_multiselect_select_row' | skyLibResources\"\n (change)=\"onMultiselectCheckboxChange()\"\n [(ngModel)]=\"item.isSelected\"\n >\n </sky-checkbox>\n </div>\n </td>\n <td *ngFor=\"let column of displayedColumns; let last = last; let i = index\"\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]=\"!column.excludeFromHighlighting ? highlightText : undefined\"\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 </sky-grid-cell>\n </td>\n </tr>\n </tbody>\n </table>\n <div *ngIf=\"showResizeBar\"\n aria-hidden=\"true\"\n id=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n #resizeBar\n >\n </div>\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{value}}</ng-template>\n\n<ng-template\n let-item\n #inlineDeleteTemplateRef\n>\n <div\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]='{\n \"height\": getRowHeight(0),\n \"position\": \"fixed\",\n \"width\": tableWidth + \"px\"\n }'\n #inlineDeleteRef\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n ></sky-inline-delete>\n </div>\n</ng-template>\n",
1140
1323
  viewProviders: [DragulaService],
1141
1324
  providers: [
1142
1325
  SkyGridAdapterService
1143
1326
  ],
1144
1327
  changeDetection: ChangeDetectionStrategy.OnPush,
1145
- styles: [".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:15px;min-width:100%}.sky-grid-table.sky-grid-fit{max-width:100%;width:100%}.sky-grid-tbody{background-color:#fff}.sky-grid-row{border-bottom:1px dotted #cdcfd2}.sky-grid-row:nth-child(odd){background-color:#fbfbfb}.sky-grid-row.sky-grid-row-highlight{border-top:1px solid #0974a1;box-shadow:0 0 0 3px inset #0974a1}.sky-grid-row .sky-grid-cell{padding:0;min-width:10px}.sky-grid-heading{position:relative;border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:0 solid #cdcfd2;padding:0;cursor:pointer;background-color:#fff;overflow:visible;background-clip:padding-box;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-grid-heading:first-child{border-left:1px solid transparent}.sky-grid-heading.sky-grid-header-dragging{background-color:#eeeeef}.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-heading-sort,.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-heading-sort{width:14px}.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-help-inline-sort-hidden,.sky-grid-heading.sky-grid-column-alignment-left .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 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:5px;position:absolute;display:block;top:0;bottom:0;right:0}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-track{background:0 0}.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;background:0 0;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;background:0 0;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;background:0 0;display:none}.sky-grid-heading .sky-grid-column-input-aria-only:focus{background-color:#00b4f1}.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-row-delete-heading{padding:0;width:0}.sky-grid-multiselect-cell{padding:0;text-align:center}.sky-grid-multiselect-cell ::ng-deep.sky-switch-control{margin:0 auto}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:0;white-space:nowrap}@-moz-document url-prefix(){.sky-grid-multiselect-row td{border-left:0 solid transparent;border-right:0 solid transparent}}.sky-grid-multiselect-row:hover{background-color:#e9e4f1}.sky-grid-multiselect-row:hover:nth-child(odd){background:#e9e4f1}.sky-grid-multiselect-selected-row{background:#f1eef6;border-top:1px solid #dadbf6;border-bottom:1px solid #dadbf6}.sky-grid-multiselect-selected-row:nth-child(odd){background:#f1eef6}.sky-grid-has-toolbar .sky-grid-heading{border-top-width:0}.sky-grid-heading-sort.sky-grid-heading-sort-hidden{visibility:hidden}.sky-grid-heading-sort.sky-grid-heading-sort-visible{visibility:visible;padding-left:5px}.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:#00b4f1}.sky-grid-resize-handle:after{position:absolute;right:0;top:0;bottom:0;width:5px;height:100%;content:\"\"}#sky-grid-resize-bar{position:absolute;top:0;left:0;z-index:99;height:100%;width:5px;background:#00b4f1;opacity:.6}tr{position:relative}.sky-grid-row-delete-cell{padding:0;position:absolute;display:block;width:100%}.sky-grid-top-scroll-container{overflow:auto}.sky-grid-top-scroll{height:1px}"]
1328
+ styles: [".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:15px;min-width:100%}.sky-grid-table.sky-grid-fit{max-width:100%;width:100%}.sky-grid-tbody{background-color:#fff}.sky-grid-row{border-bottom:1px dotted #cdcfd2}.sky-grid-row:nth-child(odd){background-color:#fbfbfb}.sky-grid-row.sky-grid-row-highlight{border-top:1px solid #0974a1;box-shadow:0 0 0 3px inset #0974a1}.sky-grid-row .sky-grid-cell{padding:0;min-width:10px}.sky-grid-heading{position:relative;border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:0 solid #cdcfd2;padding:0;cursor:pointer;background-color:#fff;overflow:visible;background-clip:padding-box;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-grid-heading:first-child{border-left:1px solid transparent}.sky-grid-heading.sky-grid-header-dragging{background-color:#eeeeef}.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-heading-sort,.sky-grid-heading.sky-grid-column-alignment-left .sky-grid-heading-sort{width:14px}.sky-grid-heading.sky-grid-column-alignment-center .sky-grid-help-inline-sort-hidden,.sky-grid-heading.sky-grid-column-alignment-left .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 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:5px;position:absolute;display:block;top:0;bottom:0;right:0}.sky-grid-heading .sky-grid-column-input-aria-only::-moz-range-track{background:0 0}.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;background:0 0;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;background:0 0;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;background:0 0;display:none}.sky-grid-heading .sky-grid-column-input-aria-only:focus{background-color:#00b4f1}.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}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:0;white-space:nowrap}@-moz-document url-prefix(){.sky-grid-multiselect-row td{border-left:0 solid transparent;border-right:0 solid transparent}}.sky-grid-multiselect-row:hover{background-color:#e9e4f1}.sky-grid-multiselect-row:hover:nth-child(odd){background:#e9e4f1}.sky-grid-multiselect-selected-row{background:#f1eef6;border-top:1px solid #dadbf6;border-bottom:1px solid #dadbf6}.sky-grid-multiselect-selected-row:nth-child(odd){background:#f1eef6}.sky-grid-has-toolbar .sky-grid-heading{border-top-width:0}.sky-grid-heading-sort.sky-grid-heading-sort-hidden{visibility:hidden}.sky-grid-heading-sort.sky-grid-heading-sort-visible{visibility:visible;padding-left:5px}.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:#00b4f1}.sky-grid-resize-handle:after{position:absolute;right:0;top:0;bottom:0;width:5px;height:100%;content:\"\"}#sky-grid-resize-bar{position:absolute;top:0;left:0;z-index:99;height:100%;width:5px;background:#00b4f1;opacity:.6}tr{position:relative}.sky-grid-top-scroll-container{overflow:auto}.sky-grid-top-scroll{height:1px}"]
1146
1329
  })
1147
1330
  ], SkyGridComponent);
1148
1331
  return SkyGridComponent;
1149
1332
  }());
1150
1333
 
1334
+ /**
1335
+ * @internal
1336
+ */
1151
1337
  var SkyGridCellComponent = /** @class */ (function () {
1152
1338
  function SkyGridCellComponent() {
1153
1339
  }
@@ -1245,11 +1431,13 @@ var SkyGridModule = /** @class */ (function () {
1245
1431
  CommonModule,
1246
1432
  DragulaModule,
1247
1433
  FormsModule,
1434
+ SkyAffixModule,
1248
1435
  SkyCheckboxModule,
1249
1436
  SkyGridsResourcesModule,
1250
1437
  SkyHelpInlineModule,
1251
1438
  SkyIconModule,
1252
1439
  SkyInlineDeleteModule,
1440
+ SkyOverlayModule,
1253
1441
  SkyPopoverModule,
1254
1442
  SkyTextHighlightModule
1255
1443
  ],