@datorama/core 22.13.8-rc.2 → 22.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/bundle.scss +5696 -4767
  2. package/bundles/datorama-core.umd.js +156 -199
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +61 -61
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.d.ts +0 -1
  7. package/datorama-core.metadata.json +1 -1
  8. package/esm2015/datorama-core.js +1 -2
  9. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  10. package/esm2015/lib/directives/clipboard.directive.js +7 -16
  11. package/esm2015/lib/grid/dato-grid-api.js +1 -1
  12. package/esm2015/lib/grid/dato-grid.js +1 -1
  13. package/esm2015/lib/grid/grid/grid.component.js +7 -6
  14. package/esm2015/lib/grid/grid-header/grid-header.component.js +1 -1
  15. package/esm2015/lib/grid/grid-helper.js +1 -1
  16. package/esm2015/lib/grid/grid-pagination/grid-pagination.component.js +2 -2
  17. package/esm2015/lib/grid/grid-toolbar/grid-toolbar.component.js +2 -2
  18. package/esm2015/lib/grid/grid.module.js +2 -2
  19. package/esm2015/lib/grid-v2/grid/grid-v2.component.js +10 -8
  20. package/esm2015/lib/grid-v2/grid/grid-v2.config.js +5 -22
  21. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +3 -3
  22. package/esm2015/lib/grid-v2/grid-column-cell-components/grid-avatar-cell/grid-avatar-cell.component.js +3 -3
  23. package/esm2015/lib/grid-v2/grid-column-cell-components/grid-initials-cell/grid-initials-cell.component.js +3 -3
  24. package/esm2015/lib/grid-v2/grid-column-cell-components/grid-items-cell/grid-items-cell.component.js +1 -1
  25. package/esm2015/lib/grid-v2/grid-column-cell-components/grid-items-count-cell/grid-items-count-cell.component.js +1 -1
  26. package/esm2015/lib/grid-v2/grid-column-cell-components/grid-status-cell/grid-status-cell.component.js +1 -1
  27. package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.component.js +2 -2
  28. package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.types.js +1 -1
  29. package/esm2015/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +4 -3
  30. package/esm2015/lib/grid-v2/grid-column-header-more-menu/grid-column-header-more-menu.component.js +1 -1
  31. package/esm2015/lib/grid-v2/grid-columns-display-menu/grid-columns-display-menu.component.js +1 -1
  32. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +11 -17
  33. package/esm2015/lib/grid-v2/grid-controller/grid-controller.types.js +1 -1
  34. package/esm2015/lib/grid-v2/grid-custom-header/custom-header-template.directive.js +1 -1
  35. package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +1 -1
  36. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +1 -1
  37. package/esm2015/lib/grid-v2/grid-groups-menu/grid-groups-menu.component.js +1 -1
  38. package/esm2015/lib/grid-v2/grid-loader/grid-v2-loader.component.js +1 -1
  39. package/esm2015/lib/grid-v2/grid-no-data-overlay/grid-v2-no-data-overlay.component.js +1 -1
  40. package/esm2015/lib/grid-v2/grid-on-hover/grid-on-hover.component.js +1 -1
  41. package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +1 -1
  42. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  43. package/esm2015/lib/grid-v2/grid-store/grid.query.js +2 -2
  44. package/esm2015/lib/grid-v2/grid-store/grid.service.js +52 -42
  45. package/esm2015/lib/grid-v2/grid-store/util.js +1 -1
  46. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +4 -10
  47. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.types.js +1 -1
  48. package/esm2015/lib/grid-v2/grid-v2.module.js +2 -2
  49. package/esm2015/lib/grid-v2/grid-v2.util.js +1 -1
  50. package/esm2015/lib/icon/icon.types.js +1 -1
  51. package/esm2015/lib/rich-text/rich-text.directive.js +38 -20
  52. package/esm2015/lib/select/select.component.js +9 -4
  53. package/esm2015/lib/version.js +2 -2
  54. package/esm5/datorama-core.js +1 -2
  55. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  56. package/esm5/lib/directives/clipboard.directive.js +7 -16
  57. package/esm5/lib/grid/dato-grid-api.js +1 -1
  58. package/esm5/lib/grid/dato-grid.js +1 -1
  59. package/esm5/lib/grid/grid/grid.component.js +7 -6
  60. package/esm5/lib/grid/grid-header/grid-header.component.js +1 -1
  61. package/esm5/lib/grid/grid-helper.js +1 -1
  62. package/esm5/lib/grid/grid-pagination/grid-pagination.component.js +2 -2
  63. package/esm5/lib/grid/grid-toolbar/grid-toolbar.component.js +2 -2
  64. package/esm5/lib/grid/grid.module.js +2 -2
  65. package/esm5/lib/grid-v2/grid/grid-v2.component.js +10 -8
  66. package/esm5/lib/grid-v2/grid/grid-v2.config.js +5 -22
  67. package/esm5/lib/grid-v2/grid/grid-v2.types.js +3 -3
  68. package/esm5/lib/grid-v2/grid-column-cell-components/grid-avatar-cell/grid-avatar-cell.component.js +3 -3
  69. package/esm5/lib/grid-v2/grid-column-cell-components/grid-initials-cell/grid-initials-cell.component.js +3 -3
  70. package/esm5/lib/grid-v2/grid-column-cell-components/grid-items-cell/grid-items-cell.component.js +1 -1
  71. package/esm5/lib/grid-v2/grid-column-cell-components/grid-items-count-cell/grid-items-count-cell.component.js +1 -1
  72. package/esm5/lib/grid-v2/grid-column-cell-components/grid-status-cell/grid-status-cell.component.js +1 -1
  73. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +2 -2
  74. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.types.js +1 -1
  75. package/esm5/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.js +4 -3
  76. package/esm5/lib/grid-v2/grid-column-header-more-menu/grid-column-header-more-menu.component.js +1 -1
  77. package/esm5/lib/grid-v2/grid-columns-display-menu/grid-columns-display-menu.component.js +1 -1
  78. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +11 -17
  79. package/esm5/lib/grid-v2/grid-controller/grid-controller.types.js +1 -1
  80. package/esm5/lib/grid-v2/grid-custom-header/custom-header-template.directive.js +1 -1
  81. package/esm5/lib/grid-v2/grid-filter/filter-validator.js +1 -1
  82. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +1 -1
  83. package/esm5/lib/grid-v2/grid-groups-menu/grid-groups-menu.component.js +1 -1
  84. package/esm5/lib/grid-v2/grid-loader/grid-v2-loader.component.js +1 -1
  85. package/esm5/lib/grid-v2/grid-no-data-overlay/grid-v2-no-data-overlay.component.js +1 -1
  86. package/esm5/lib/grid-v2/grid-on-hover/grid-on-hover.component.js +1 -1
  87. package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +1 -1
  88. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  89. package/esm5/lib/grid-v2/grid-store/grid.query.js +2 -2
  90. package/esm5/lib/grid-v2/grid-store/grid.service.js +52 -42
  91. package/esm5/lib/grid-v2/grid-store/util.js +1 -1
  92. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +4 -16
  93. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.types.js +1 -1
  94. package/esm5/lib/grid-v2/grid-v2.module.js +2 -2
  95. package/esm5/lib/grid-v2/grid-v2.util.js +1 -1
  96. package/esm5/lib/icon/icon.types.js +1 -1
  97. package/esm5/lib/rich-text/rich-text.directive.js +39 -21
  98. package/esm5/lib/select/select.component.js +9 -4
  99. package/esm5/lib/version.js +2 -2
  100. package/fesm2015/datorama-core.js +143 -178
  101. package/fesm2015/datorama-core.js.map +1 -1
  102. package/fesm5/datorama-core.js +144 -186
  103. package/fesm5/datorama-core.js.map +1 -1
  104. package/lib/directives/clipboard.directive.d.ts +2 -1
  105. package/lib/grid/dato-grid-api.d.ts +1 -1
  106. package/lib/grid/dato-grid.d.ts +1 -1
  107. package/lib/grid/grid/grid.component.d.ts +3 -4
  108. package/lib/grid/grid-helper.d.ts +1 -1
  109. package/lib/grid/grid-pagination/grid-pagination.component.d.ts +1 -1
  110. package/lib/grid-v2/grid/grid-v2.component.d.ts +2 -2
  111. package/lib/grid-v2/grid/grid-v2.config.d.ts +0 -1
  112. package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -3
  113. package/lib/grid-v2/grid-column-cell-components/grid-avatar-cell/grid-avatar-cell.component.d.ts +2 -2
  114. package/lib/grid-v2/grid-column-cell-components/grid-initials-cell/grid-initials-cell.component.d.ts +2 -2
  115. package/lib/grid-v2/grid-column-cell-components/grid-items-cell/grid-items-cell.component.d.ts +2 -2
  116. package/lib/grid-v2/grid-column-cell-components/grid-items-count-cell/grid-items-count-cell.component.d.ts +2 -2
  117. package/lib/grid-v2/grid-column-cell-components/grid-status-cell/grid-status-cell.component.d.ts +2 -2
  118. package/lib/grid-v2/grid-column-header/grid-column-header.component.d.ts +2 -2
  119. package/lib/grid-v2/grid-column-header/grid-column-header.types.d.ts +1 -1
  120. package/lib/grid-v2/grid-column-header/grid-multi-select-header/grid-multi-select-header.component.d.ts +2 -2
  121. package/lib/grid-v2/grid-column-header-more-menu/grid-column-header-more-menu.component.d.ts +1 -1
  122. package/lib/grid-v2/grid-columns-display-menu/grid-columns-display-menu.component.d.ts +1 -1
  123. package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +7 -7
  124. package/lib/grid-v2/grid-controller/grid-controller.types.d.ts +1 -1
  125. package/lib/grid-v2/grid-custom-header/custom-header-template.directive.d.ts +1 -1
  126. package/lib/grid-v2/grid-filter/filter-validator.d.ts +1 -1
  127. package/lib/grid-v2/grid-groups-menu/grid-groups-menu.component.d.ts +1 -1
  128. package/lib/grid-v2/grid-loader/grid-v2-loader.component.d.ts +2 -2
  129. package/lib/grid-v2/grid-no-data-overlay/grid-v2-no-data-overlay.component.d.ts +2 -2
  130. package/lib/grid-v2/grid-on-hover/grid-on-hover.component.d.ts +1 -1
  131. package/lib/grid-v2/grid-settings.d.ts +2 -2
  132. package/lib/grid-v2/grid-store/grid.query.d.ts +4 -4
  133. package/lib/grid-v2/grid-store/grid.service.d.ts +377 -6
  134. package/lib/grid-v2/grid-store/util.d.ts +1 -1
  135. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +1 -3
  136. package/lib/grid-v2/grid-toolbar/grid-toolbar.types.d.ts +1 -1
  137. package/lib/grid-v2/grid-v2.util.d.ts +1 -1
  138. package/lib/icon/icon.types.d.ts +1 -1
  139. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  140. package/package.json +2 -2
  141. package/testing/src/grid/row.ts +1 -1
  142. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  143. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  144. package/lib/rich-text/rich-text.service.d.ts +0 -10
@@ -59,8 +59,8 @@ import DOMPurify from 'dompurify';
59
59
  import tippy from 'tippy.js';
60
60
  import { coerceElement as coerceElement$1, coerceBooleanProperty, coerceCssPixelValue, coerceArray as coerceArray$2 } from '@angular/cdk/coercion';
61
61
  import { memo, debounce as debounce$1, delay } from 'helpful-decorators';
62
- import { AgGridNg2, AgGridModule } from 'ag-grid-angular';
63
- import { GridApi, ColumnApi, Events } from 'ag-grid-community';
62
+ import { AgGridAngular, AgGridModule } from '@ag-grid-community/angular';
63
+ import { GridApi, ColumnApi, Events } from '@ag-grid-community/core';
64
64
  import { trigger, transition, style, animate, AnimationBuilder } from '@angular/animations';
65
65
  import { ActiveDescendantKeyManager, ListKeyManager } from '@angular/cdk/a11y';
66
66
  import { SortablejsModule } from 'ngx-sortablejs';
@@ -3366,19 +3366,11 @@ DatoDisableControlDirective = __decorate([
3366
3366
  __metadata("design:paramtypes", [NgControl])
3367
3367
  ], DatoDisableControlDirective);
3368
3368
 
3369
- function copyToClipboard(value) {
3370
- const el = createElement('textarea');
3371
- el.value = value;
3372
- // Set non-editable to avoid focus and move outside of view
3373
- el.setAttribute('readonly', '');
3374
- setStyles(el, { position: 'absolute', left: '-9999px' });
3375
- const remove = appendToBody(el);
3376
- // Select text inside element
3377
- el.select();
3378
- // Copy text to clipboard
3379
- document.execCommand('copy');
3380
- // Remove temporary element
3381
- remove();
3369
+ function writeToClipboard(value) {
3370
+ navigator.clipboard.writeText(value);
3371
+ }
3372
+ function readFromClipboard() {
3373
+ return navigator.clipboard.readText();
3382
3374
  }
3383
3375
  let DatoClipboardDirective = class DatoClipboardDirective {
3384
3376
  constructor() {
@@ -3388,7 +3380,7 @@ let DatoClipboardDirective = class DatoClipboardDirective {
3388
3380
  this.value = value;
3389
3381
  }
3390
3382
  onClick() {
3391
- copyToClipboard(this.value);
3383
+ writeToClipboard(this.value);
3392
3384
  this.copied.emit(this.value);
3393
3385
  }
3394
3386
  };
@@ -5153,7 +5145,8 @@ let DatoGridComponent = class DatoGridComponent extends BaseCustomControl {
5153
5145
  this.gridColumnApi = event.columnApi;
5154
5146
  if (this.gridColumnApi.getRowGroupColumns().length >= 1) {
5155
5147
  this.gridComponent.rowGroupOpened.pipe(untilDestroyed(this)).subscribe(event => this.rowGroupStateChange(event));
5156
- this.paginationComponent.toggleRowGroup.pipe(untilDestroyed(this)).subscribe(() => this.toggleCollapseState());
5148
+ this.paginationComponent &&
5149
+ this.paginationComponent.toggleRowGroup.pipe(untilDestroyed(this)).subscribe(() => this.toggleCollapseState());
5157
5150
  }
5158
5151
  this.cdr.detectChanges();
5159
5152
  this.gridReady.emit(event);
@@ -5244,8 +5237,8 @@ DatoGridComponent.ctorParameters = () => [
5244
5237
  { type: ChangeDetectorRef }
5245
5238
  ];
5246
5239
  __decorate([
5247
- ViewChild(AgGridNg2, { static: true }),
5248
- __metadata("design:type", AgGridNg2)
5240
+ ViewChild(AgGridAngular, { static: true }),
5241
+ __metadata("design:type", AgGridAngular)
5249
5242
  ], DatoGridComponent.prototype, "gridComponent", void 0);
5250
5243
  __decorate([
5251
5244
  ViewChild(DatoGridPaginationComponent, { static: true }),
@@ -5267,7 +5260,7 @@ DatoGridComponent = __decorate([
5267
5260
  changeDetection: ChangeDetectionStrategy.OnPush,
5268
5261
  encapsulation: ViewEncapsulation.None,
5269
5262
  providers: [valueAccessor$2],
5270
- styles: ["dato-grid{display:block;width:100%;height:100%;overflow:hidden}dato-grid.grid-pagination{padding-bottom:0;display:flex;flex-direction:column}dato-grid.grid-pagination ag-grid-angular{margin-bottom:7px;height:calc(100% - 32px)}.ag-dato-core{width:100%;height:100%}.ag-dato-core .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle}.ag-dato-core .ag-menu .da-grid-icon svg{vertical-align:middle}.ag-dato-core .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}.ag-dato-core .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}.ag-dato-core .sort-icon svg{width:14px;height:16px}.ag-dato-core .filter-icon svg{width:13px}.ag-dato-core .menu-icon svg{width:4px;height:14px}.ag-dato-core .menu-auto-size-icon svg,.ag-dato-core .menu-group-icon,.ag-dato-core .menu-pin-icon,.ag-dato-core .menu-un-group-icon{width:16px;height:16px}.ag-dato-core .menu-check-icon svg{width:15px;height:18px}.ag-dato-core .group-contracted-icon,.ag-dato-core .group-expanded-icon{width:7px}.ag-dato-core .group-expanded-icon{transform:rotate(90deg)}"]
5263
+ styles: ["@font-face{font-family:agGridClassic;src:url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\"),url(\"data:application/x-font-ttf;charset=utf-8;base64,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AAAAdAAAADoAAAB1AAAAdQAAAEkAAAB2AAAAdgAAAE4AAAB3AAAAdwAAAD4AAAB4AAAAeAAAAEUAAAB5AAAAeQAAAEsAAAB6AAAAegAAAE0AAPEBAADxAQAAAAEAAPECAADxAgAAAAIAAPEDAADxAwAAAAMAAPEEAADxBAAAAAQAAPEFAADxBQAAAAUAAPEGAADxBgAAAAYAAPEHAADxBwAAAAcAAPEIAADxCAAAAAgAAPEJAADxCQAAAAkAAPEKAADxCgAAAAoAAPELAADxCwAAAAsAAPEMAADxDAAAAAwAAPENAADxDQAAAA0AAPEOAADxDgAAAA4AAPEPAADxDwAAAA8AAPEQAADxEAAAABAAAPERAADxEQAAABEAAPESAADxEgAAABIAAPETAADxEwAAABMAAPEUAADxFAAAABUAAPEVAADxFQAAABYAAPEWAADxFgAAABcAAPEXAADxFwAAABgAAPEYAADxGAAAABkAAPEZAADxGQAAABoAAPEaAADxGgAAABsAAPEbAADxGwAAABwAAPEcAADxHAAAAB0AAPEdAADxHQAAAB4AAPEeAADxHgAAAB8AAPEfAADxHwAAACAAAPEgAADxIAAAACEAAPEhAADxIQAAACIAAPEiAADxIgAAACMAAPEjAADxIwAAACQAAPEkAADxJAAAACUAAPElAADxJQAAACYAAPEmAADxJgAAACcAAPEnAADxJwAAACgAAPEoAADxKAAAACkAAPEpAADxKQAAACoAAPEqAADxKgAAACsAAPErAADxKwAAACwAAPEsAADxLAAAAC0AAPEtAADxLQAAAC4AAPEuAADxLgAAAC8AAPEvAADxLwAAADAAAPEwAADxMAAAADEAAPExAADxMQAAADIAAPEyAADxMgAAADMAAPEzAADxMwAAADEAAPE0AADxNAAAACIAAPE1AADxNQAAAC8AAPE2AADxNgAAADQAAAAAABgAUgBqAIQA0AEUAVQBjAG+AdQCAAJIAmwCjgMUA2YDfgO+BCQEigTmBPwFFgViBaYF+AYQBigG0AcCB1QHcAfCB9AH4ggECFoIeAiUCPYJCgkcCWIJvAnUCf4KDAoaCigKNgpKCtQLXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteC14LXgteAAEAAAAAAzYDawAJAAABIRcHIRUhEwMhAzb+m3h4AWX9fNbWAoQCxNDQpwF3AXcAAAEAAAAAA+gD6AAgAAABNQcnNxcHJxEhJzcXByc3IRE3FwcnNxcRIRcHJzcXByEBwk9HyMhGUAEDT0bIyEZP/v1QRsjIR0/+/k9HyMhHTwECAyAJT0bIyEZP/v1QRsjIR0/+/k9HyMhHTwECUEbIyEZQAAAAAQAAAAADVgOMAAgAAAEHJwkBBycRIwGkrWUBYgFiZayhAnOtZAFi/p5krP3qAAAAAQAAAAAC7gLuAAsAAAEHJwcnNyc3FzcXBwLuRrSzR7S0R7O0RrMBQUe0tEeztEazs0a0AAUAAP/+A+gD6QATACMAJwArAC8AAAUhIi4BNRE0PgEzITIeARURFA4BAyEiBhURFBYzITI2NRE0JgEzESMlMxUjAzMRIwNq/RQiOiIiOiIC7CI6ISE6If0QEBgYEALwERcX/ahTUwFNU1OnVFQCIjkiAvEiOSIiOSL9DyI5IgOWFxH9EREYGBEC7xEX/rP+3aamAaD+YAAAAwAA//4D6APqABMAIwApAAABMh4BFREUDgEjISIuATURND4BMwUhIgYVERQWMyEyNjURNCYHASc3FxMDaiI6ISE6Iv0UIjoiIjoiAu39EBAYGBAC8BEXF2n+7vc0qeID6SI5Iv0PIjkiIjkiAvEiOSJVFxH9EREYGBEC7xEXuv4KxkGIAZ8AAAMAAP/+A+gD6gATACMAJwAAATIeARURFA4BIyEiLgE1ETQ+ATMFISIGFREUFjMhMjY1ETQmAyE1IQNqIjohIToi/RQiOiIiOiIC7f0QEBgYEALwERcX4f6yAU4D6SI5Iv0PIjkiIjkiAvEiOSJVFxH9EREYGBEC7xEX/g2mAAAAAgAA//4D6APqABMAIwAAATIeARURFA4BIyEiLgE1ETQ+ATMFISIGFREUFjMhMjY1ETQmA2oiOiEhOiL9FCI6IiI6IgLt/RAQGBgQAvARFxcD6SI5Iv0PIjkiIjkiAvEiOSJVFxH9EREYGBEC7xEXAAMAAAAAA3gDZAAFAAgAGAAACQEHFwkBAzcfAQYHBgcGFRQWMjY1NCcmJwLr/l86Y/79AT7IyMewCwsZDxYxRTEWDxkBwgGhO2P+/f7DAT3IyD4NDR4bJhkiMTEiGSUcHgAAAAACAAAAAAGhA5UAAwAHAAABESERJRUhNQGh/rIBTv6yApv9uAJI+qenAAAAAAYAAAAAA5UDlQADAAcACwAPABMAFwAAJRUhNSEVITUDFSE1IRUhNQMVITUhFSE1AaH+sgNC/rKm/rIDQv6ypv6yA0L+svqnp6enAU2mpqamAU6np6enAAADAAAAAAPpA+kAEwAjAC8AAAEyHgEVERQOASMhIi4BNRE0PgEzBSEiBhURFBYzITI2NRE0JgEzFSMVIzUjNTM1MwNrIjoiIjoi/RMiOiEhOiIC7v0QERgYEQLwERcX/sunp6enp6cD6SI5Iv0SIjkiIjkiAu4iOSJVFxH9ExEXFxEC7REX/rSmpqampwAAAAADAAAAAANCA0IABwALABEAAAEzESE1IxEhFyERIQM1IREzNQKbpv4MpgH0U/6zAU2n/rNTApv+DKYB9Pr+swGhU/6z+gAAAAABAAAAAAN9A30ACwAACQEXCQEHCQEnCQE3AfQBEnb+7gESdv7u/u52ARL+7nYCagESdv7u/u52ARL+7nYBEgESdgAAAAMAAAAAA4oDEAAyAEIAUgAAATY3Njc2NzYXFh8BBgcGBxYfAQYHBicmJyYnBgcGJicmNzY3LgEnJjc+ARcWFxYfARYXBwYHDgEWNzY3Njc2PwE0IyciBwYHBhceARc3JyYnJiMCDQIEQR8zJi0jHRs2MF5JJU2XGCgeJiUpLTpQgHMpYhocEBdeKj8LDA8QPC8sMh46JB8glyQsKDkCKRgcESMVCwIEigoIBgUcGxlpJwEWKxQiFQJrAQM3GCcTFwEBDyEnUD8fPHsSGQgLCAkhKj1gMhIUISU0RywXQiImISMhAQIcESsbFhiNAhQTMyMBAREJGhAHGRndAwIDER4aLAEyEB4LEwAAAAAHAAAAAAO4A4QADAAQABkAHQAmACoAMwAAEyIOARUUFjI2NTQuASkBFSEBIgYUFjI2NCYhFSE1BzIWFAYiJjQ2ARUhNSMyFhQGIiY0NpkcMBw9Vj0cMAMC/WYCmvziKz09Vj09AvP9ZoQeKys8KysDPP1mhCs9PVY9PQE1HDAcKz09KxwwHNEB+D1WPT1WPdDQHys8Kys8KwFH0dE9Vz09Vz0AAAEAAAAAA1YDiAAIAAABETMRNxcJATcBpaCsZf6e/p5lAXkCDv30rGX+nwFhZQAAAAMAAP/+A+gD6gATACMAJwAAATIeARURFA4BIyEiLgE1ETQ+ATMFISIGFREUFjMhMjY1ETQmAxUhNQNqIjohIToi/RQiOiIiOiIC7f0QEBgYEALwERcXjv4MA+kiOSL9DyI5IiI5IgLxIjkiVRcR/RERGBgRAu8RF/6zpqYAAAAAAwAAAAADxwM3ABkAMQA8AAABNxc2MxYXFhcOAQcXByc3ATY/ATUjIgcGBycTLgInBgceARcWNxcGJyYnJicmJzY3ATY3JyYnJicOAQcBITQmP0KHe3FYKW0+NUEgDv7SLksnCj4rOC1/5jZcPApENDGMTlNRMl1aYVY+OS8yWnUB2FBGDhIWHiELOywDDigwEgRSS4M9aCZEMygLAX8KAgFTBQYOG/7dBjhYNTJIRGMWGAtAHAoJNCU+MkqGTP6ZMV4TFxcfGjNUGwAAAwAAAAADxwM3ABkAMQA8AAABNxc2MxYXFhcOAQcXByc3ATY/ATUjIgcGBycTLgInBgceARcWNxcGJyYnJicmJzY3ATY3JyYnJicOAQcBITQmP0KHe3FYKW0+NUEgDv7SLksnCj4rOC1/5jZcPApENDGMTlNRMl1aYVY+OS8yWnUB2FBGDhIWHiELOywDDigwEgRSS4M9aCZEMygLAX8KAgFTBQYOG/7dBjhYNTJIRGMWGAtAHAoJNCU+MkqGTP6ZMV4TFxcfGjNUGwAAAwAAAAADxwMXABEAKAA2AAABFhcWFwYHBgcGJyYnJic2NzYHBgcWFxYXFjc2NycmJyYnDgIiLgEnJSY9ASMGBwYHFzY3NjcB/Id7cVhPdnyCj3w+OS8yWXOBcEQ0QF5iaHBgVkoOEhYeIQxGaHdpRwoBSgEKTzZHNiUoNiY8AxUDU0uCdk1PDAxKJj0yS4RLVaoySFg3OAYGNzJkExcWIBk4WzQ2XjoDDRwqAQgLGksUCAcCAAAAAAIAAAAAA5UDawAFAAkAABMhAREnNTEVMzVTA0L+sqamA2v+s/5fp/pUVAAAAgAAAAAC/ALuAAMACQAAAREjEQEnNycHFwE/UwIQw8M4+voC7v4MAfT+RMLCOPr6AAAAAAwAAAAAA0IDvwADAAcACwAPABMAFwAbAB8AIwAnACsALwAANzMVIzczFSM3MxUjATMVIzczFSM3MxUjATMVIzczFSM3MxUjATMVIzczFSMhIzUzp6am+qam+qam/gympvqmpvqmpv4Mpqb6pqb6pqb+DKam+qamAaCmptCmpqampgGgpqampqYBoKampqamAaCmpqamAAAABQAAAAADlQO/AB0AIQAlACkALQAAATM1IRUhNSMVIxUhNSEVITUhFSE1IRUhNSERIzUhASMVMxEjFTMRIxUzJSMVMwGhpgFO/rKmpwFNAU7+sv6zAU0BTv6y/mBUAU4BoKampqampv4MpqYDa1P6VFSmU/pT+lT6UwJH+v0SUwGhVAGhU1NTAAMAAAAAA9ACwwAQACIAMAAAARYXFh8BDgEHBicmLwE2NzYFDgEiJicGDwEWFxY3Nj8BJicHJj0BIwYHBgcXNjc2NwH8em9yViNc7H6AdXtfI2R6gAFnG3+efxtCNQNfgn9/g2EDNkSVAQpPNkc2JSg2JjwCwgIsLVMjWmgIBykrWiNjNjiER1lZRx0tA1EeHBscUgIvHiMOHCkBCAoaTBQJBgIAAgAAAAAC/ALuAAMACQAAJSMRMwE3JzcXBwL8U1P98MPDOPr6+gH0/kTCwjj6+gAAAQAAAAADoANWAAgAAAEXBwkBFwchFQFmqWT+ngFiZKoCOgGgqWUBYgFiZaqnAAAAAv/2//YD8wPyADQAawAAARYXFgYPAQYHBicuAScmNzY/ATYyFhcWFxYGDwEOAR4CNj8BPgEmJy4BNTEmPwE+ARcWFwEmJyYHBg8BDgEXFhcWFzMWNj8BNic0JzEmJy4BNj8BPgEeAgYPAQ4BFxYXHgEyPwE2NzYnJgJ+ORQUKDiEOU5LTE1yFBQUFDlIChkSAQIRAgQGGRsUEjVJSRuDHBITGwkYAhkpCBYKFhIBEzlNTEtOOYQ4KBQUORIVAQoWCCoYAg0LCRsTExuDG0lJNRIUGxkGBAMQAgESGQpIORQUFBQCfjlOS5k4hDkUFBQUck1MS045SAkQDjUyCBIGGhtISTYUExuEG0hIGwkRECIYKQgCBhASARM5FBQUFDmEOJlLTjkSDwcCCCkYIhAJBwobSEgbhBsTFDZJSBsaBhIIMjUOEAlIOU5LTE0AAAAAAgAAAAADlQOVABcAHwAAATcXBzMVIxcHJxUjNQcnNyM1Myc3FzUzAzM3NScjBxUCR5l2mdjYmXaZppl2mdjYmXaZppiKYmKKYgK9mXaZppl2mdjYmXaZppl2mdj9uGKKYmKKAAQAAP/+A+gD6QATACMAKgAxAAAFISIuATURND4BMyEyHgEVERQOAQMhIgYVERQWMyEyNjURNCYBBzcXNxcHATcHFwcXNwNq/RQiOiIiOiIC7CI6ISE6If0QEBgYEALwERcX/e3fRzGbOJwB3UfgMZ04nQIiOSIC8SI5IiI5Iv0PIjkiA5YXEf0RERgYEQLvERf9PkfeMJw4nAF94EcxnDicAAAAAwAAAAADlQOVAAMABwALAAAlFSE1ARUhNQEVITUDlfy+A0L8vgNC/L76p6cBTaamAU6npwAAAAAEAAD//gPoA+kAEwAjACoAMQAABSEiLgE1ETQ+ATMhMh4BFREUDgEDISIGFREUFjMhMjY1ETQmATcHJwcnNwEHNyc3JwcDav0UIjoiIjoiAuwiOiEhOiH9EBAYGBAC8BEXF/173kcwnDebATRH3zCcOJwCIjkiAvEiOSIiOSL9DyI5IgOWFxH9EREYGBEC7xEX/fpH3jCcOJwBk99HMZw3nAAAAAEAAAAAA0ICSAADAAATIRUhpwKa/WYCR6YAAAABAAAAAAKNAu4ABQAAATcnNxcHAVvDwzj6+gEywsI4+voAAAABAAAAAAMbA9MADQAAAQcnCQEHJxE3FwkBNxcBm2llAScBJ2VpaWX+2f7ZZWkCsWplASf+2WVq/oZqZf7ZASdlagAAAAMAAP//A+gD6gAUACQAMwAAATIXFhcWEAcGBwYgJyYnJhA3Njc2BQEWFxYzMjc2NzY1NCcmLwEmJyYjIgcGBwYVFhcWFwH0iHRxQkVFQnF0/vF1cUJEREJxdQHQ/bc2QUJHcWFfNzkXFypINkFDR3FhXjg5ARcXKgPqRUJxdf7wdXJCRERCcnUBEHVxQkX1/bcqFxc5N15icUdCQDZJKhcXOTdeYXFIQkE2AAACAAAAAANCA2sABwAPAAABMxEhETM1MxcjFSE1IxEhAkf6/Wb6pqdT/rJTAfQDGP1lAptTp6am/gwAAAABAAAAAANCA0IADgAAASMRFyMHJyM3NTM1IzUhAu5TpvpTU/qmVKcB9ALu/rNU+vpUU/pTAAAAAAUAAP/+A+gD6QATACEAKAA4AD8AAAUhIi4BNRE0PgEzITIeARURFA4BATUjIgYVERQWOwERIzUFIREhMjY1AwcnNxcHJxUjFwcnNxcHMxMhFSE1NCYDav0UIjoiIjoiAuwiOiEhOv1ufxAYGBB/pwNA/boCHhEX+Aw8cXE7DL8MO3FxOwxs0P3iAkYXAiI5IgLxIjkiIjki/Q8iOSIC8KYXEf0RERgCR1NT/bkYEQE8DDtxcTsMvww7cXE7DQJHpn4RFwABAAAAAANCA0IACwAAEzM1MxUzFSMVIzUjp/qm+vqm+gJH+vqm+voAAQAAAAACjQLuAAUAAAEnNycHFwKNw8M4+voBMsLCOPr6AAAAAgAA//8D6APqABQAKQAAASIHBgcGEBcWFxYgNzY3NhAnJicmBzIXFhcWFAcGBwYiJyYnJjQ3Njc2AfSHdXFCRERCcXUBD3RxQkVFQnF0iHFhXzc5OTdfYeJhXjg4ODheYQPqRUJxdf7wdXJCRERCcnUBEHVxQkVVOTdeYeJiXjc5OTdeYuJhXjc5AAADAAD//wPoA+oAFAApADYAAAEyFxYXFhAHBgcGICcmJyYQNzY3NhciBwYHBhYXFhcWMjc2NzY0JyYnJhMUDgEiLgE0PgEyHgEB9Ih0cUJFRUJxdP7xdXFCRERCcXWHcWFeODkBODheYeJhXzc5OTdfYYlDc4hzQ0NziHNDA+pFQnF1/vB1ckJEREJydQEQdXFCRVU5N15h4mJeNzk5N15i4mFeNzn+YERzQ0NziHNDQ3MAAAABAAAAAAOfA1YACAAAASc3CQEnNyE1AoOrZQFh/p9lqf3JAkeqZf6e/p5lqacAAAACAAAAAANsA2sADQAWAAABESERIxEUFjMhMjY1EQU3FwcnNxcRMwMY/bhTMSICSCIx/rNsOtDQOmxUAfT+3AEk/twiMTEiASQcbDvQ0DtsAZMAAAABAAAAAANCApsAAgAAEyEBpwKa/rMCm/6yAAAAAQAAAAACmwNCAAIAAAkBEQFNAU4B9AFN/WYAAAEAAAAAApsDQgACAAAJAgFNAU7+sgNB/rP+swABAAAAAANCApsAAgAAEwkBpwFNAU0BTQFO/rIAAQAAAAADpgNHAAUAAAkCNxcBA6b90f7Ldr8BuQLR/dEBNXW/AbkAAAP/9v/2A/MD8gAjAEcAVwAAJRYUDwEGBwYnLgEnJjc2PwE2Mh8BFhQPAQ4BHgI2PwE2MhcDFjI/AT4BHgIGDwEGFB8BFjI/ATY3NicuAScmBwYPAQYUFwE3NjQnASYiDwEGFBcBFjICUgcHVzlOS0xNchQUFBQ5VwcTB04GBlgbExM2SUgbVwcUByIHFAdXG0hJNhMTG1gGBk4HEwdXORQUFBRyTUxLTjlXBwcCGCwODvyiDiYOLA4OA14OJs8HEwdXORQUFBRyTUxLTjlXBwdNBxQHVxtISTYTExtYBgYBrgYGWBsTEzZJSBtXBxQHTQcHVzlOS0xNchQUFBQ5VwcTB/z1LA4mDgNeDg4sDicN/KIOAAP/9v/2A/MD8gAjAEcAVwAAJRYUDwEGBwYnLgEnJjc2PwE2Mh8BFhQPAQ4BHgI2PwE2MhcDFjI/AT4BHgIGDwEGFB8BFjI/ATY3NicuAScmBwYPAQYUFwE3NjQnASYiDwEGFBcBFjICUgcHVzlOS0xNchQUFBQ5VwcTB04GBlgbExM2SUgbVwcUByIHFAdXG0hJNhMTG1gGBk4HEwdXORQUFBRyTUxLTjlXBwcCGCwODvyiDiYOLA4OA14OJs8HEwdXORQUFBRyTUxLTjlXBwdNBxQHVxtISTYTExtYBgYBrgYGWBsTEzZJSBtXBxQHTQcHVzlOS0xNchQUFBQ5VwcTB/z1LA4mDgNeDg4sDicN/KIOAAAAEADGAAEAAAAAAAEADQAAAAEAAAAAAAIABwANAAEAAAAAAAMADQAUAAEAAAAAAAQADQAhAAEAAAAAAAUACwAuAAEAAAAAAAYADQA5AAEAAAAAAAoAKwBGAAEAAAAAAAsAEwBxAAMAAQQJAAEAGgCEAAMAAQQJAAIADgCeAAMAAQQJAAMAGgCsAAMAAQQJAAQAGgDGAAMAAQQJAAUAFgDgAAMAAQQJAAYAGgD2AAMAAQQJAAoAVgEQAAMAAQQJAAsAJgFmYWdHcmlkQ2xhc3NpY1JlZ3VsYXJhZ0dyaWRDbGFzc2ljYWdHcmlkQ2xhc3NpY1ZlcnNpb24gMS4wYWdHcmlkQ2xhc3NpY0dlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGEAZwBHAHIAaQBkAEMAbABhAHMAcwBpAGMAUgBlAGcAdQBsAGEAcgBhAGcARwByAGkAZABDAGwAYQBzAHMAaQBjAGEAZwBHAHIAaQBkAEMAbABhAHMAcwBpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAwAGEAZwBHAHIAaQBkAEMAbABhAHMAcwBpAGMARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVAAC2FnZ3JlZ2F0aW9uBmFycm93cwNhc2MGY2FuY2VsBWNoYXJ0EGNoZWNrYm94LWNoZWNrZWQWY2hlY2tib3gtaW5kZXRlcm1pbmF0ZRJjaGVja2JveC11bmNoZWNrZWQMY29sb3ItcGlja2VyBmNvbHVtbgdjb2x1bW5zCmNvbnRyYWN0ZWQEY29weQVjcm9zcwNjdXQEZGF0YQRkZXNjCGV4cGFuZGVkCWV5ZS1zbGFzaAtleWUtc2xhc2gtMQNleWUGZmlsdGVyBWZpcnN0BGdyaXAFZ3JvdXANaW5kZXRlcm1pbmF0ZQRsYXN0BGxlZnQGbGlua2VkB2xvYWRpbmcIbWF4aW1pemUEbWVudQhtaW5pbWl6ZQVtaW51cwRuZXh0BG5vbmULbm90LWFsbG93ZWQFcGFzdGUDcGluBXBpdm90BHBsdXMIcHJldmlvdXMQcmFkaW8tYnV0dG9uLW9mZg9yYWRpby1idXR0b24tb24FcmlnaHQEc2F2ZQpzbWFsbC1kb3duCnNtYWxsLWxlZnQLc21hbGwtcmlnaHQIc21hbGwtdXAEdGljawh1bmxpbmtlZAp1bmxpbmtlZC0xAWEBZwFyAWUBdAFpAW8BbgF3AXMBYwFsAWgBawFiAXgBLQFkAW0BdQFwAXkBZgF6AXYAAAA=\") format(\"truetype\");font-weight:400;font-style:normal}dato-grid{display:block;width:100%;height:100%;overflow:hidden}dato-grid.grid-pagination{padding-bottom:0;display:flex;flex-direction:column}dato-grid.grid-pagination ag-grid-angular{margin-bottom:7px;height:calc(100% - 32px)}.ag-dato-core{width:100%;height:100%}.ag-dato-core .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle}.ag-dato-core .ag-menu .da-grid-icon svg{vertical-align:middle}.ag-dato-core .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}.ag-dato-core .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}.ag-dato-core .sort-icon svg{width:14px;height:16px}.ag-dato-core .filter-icon svg{width:13px}.ag-dato-core .menu-icon svg{width:4px;height:14px}.ag-dato-core .menu-auto-size-icon svg,.ag-dato-core .menu-group-icon,.ag-dato-core .menu-pin-icon,.ag-dato-core .menu-un-group-icon{width:16px;height:16px}.ag-dato-core .menu-check-icon svg{width:15px;height:18px}.ag-dato-core .group-contracted-icon,.ag-dato-core .group-expanded-icon{width:7px}.ag-dato-core .group-expanded-icon{transform:rotate(90deg)}"]
5271
5264
  }),
5272
5265
  __metadata("design:paramtypes", [DatoGridHelper,
5273
5266
  ElementRef,
@@ -7707,8 +7700,9 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7707
7700
  writeValue(activeOptions) {
7708
7701
  this._model = activeOptions ? coerceArray$1(activeOptions) : [];
7709
7702
  if (this.options) {
7703
+ const overTheLimit = this.limitSelectedTo && this.isMulti && this._model.length >= this.limitSelectedTo;
7710
7704
  this.markAsActive(this._model, { deselectAll: true });
7711
- this.limitSelectedTo && this.updateDisabledState();
7705
+ overTheLimit && this.updateDisabledState();
7712
7706
  }
7713
7707
  /** For later updates */
7714
7708
  this.cdr.markForCheck();
@@ -7813,6 +7807,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7813
7807
  this.onChange(this._model);
7814
7808
  }
7815
7809
  removeOption(option) {
7810
+ const updateDisabled = this.limitSelectedTo && this._model.length === this.limitSelectedTo;
7816
7811
  this._model = this._model.filter(current => current[this.idKey] !== option[this.idKey]);
7817
7812
  const optionToRemove = this.options.find(datoOption => datoOption.option && datoOption.option[this.idKey] === option[this.idKey]);
7818
7813
  /**
@@ -7822,7 +7817,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
7822
7817
  if (optionToRemove) {
7823
7818
  optionToRemove.active = false;
7824
7819
  }
7825
- this.limitSelectedTo && this.updateDisabledState();
7820
+ updateDisabled && this.updateDisabledState();
7826
7821
  this.onChange(this._model);
7827
7822
  this.cdr.markForCheck();
7828
7823
  this.asyncUpdateDropdownPosition();
@@ -8096,6 +8091,9 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
8096
8091
  if (!datoOption) {
8097
8092
  return;
8098
8093
  }
8094
+ const modelLength = this._model.length;
8095
+ const updateDisabled = this.limitSelectedTo &&
8096
+ (modelLength === this.limitSelectedTo || (modelLength === this.limitSelectedTo - 1 && !datoOption.active));
8099
8097
  datoOption.active = !datoOption.active;
8100
8098
  const rawOption = datoOption.option;
8101
8099
  if (datoOption.active) {
@@ -8104,7 +8102,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
8104
8102
  else {
8105
8103
  this._model = this._model.filter(current => current[this.idKey] !== rawOption[this.idKey]);
8106
8104
  }
8107
- this.limitSelectedTo && this.updateDisabledState();
8105
+ updateDisabled && this.updateDisabledState();
8108
8106
  this.onChange(this._model);
8109
8107
  this.cdr.markForCheck();
8110
8108
  this.asyncUpdateDropdownPosition();
@@ -10564,7 +10562,7 @@ function toolbarActionToContextAction(params) {
10564
10562
  return contextActions;
10565
10563
  }
10566
10564
 
10567
- const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_AP');
10565
+ const DATO_GRID_STORAGE_API = new InjectionToken('DATO_GRID_STORAGE_API');
10568
10566
 
10569
10567
  const defaultEditableColumnRenderer = params => params && params.value ? `<div class="value-wrapper ellipsis">${params.value}</div>` : null;
10570
10568
  const editableCellRendererWithSearchHighlight = (params, searchTerm, allowHTML) => {
@@ -10583,7 +10581,7 @@ const searchHighlightCellRenderer = (params, searchTerm, allowHTML = true) => {
10583
10581
  }
10584
10582
  searchTerm = (searchTerm || '').trim();
10585
10583
  return searchTerm
10586
- ? cellValue.replace(new RegExp(searchTerm, 'gi'), (str) => `<span class="search-highlight">${str}</span>`)
10584
+ ? cellValue.replace(new RegExp(escapeRegExp(searchTerm), 'gi'), (str) => `<span class="search-highlight">${str}</span>`)
10587
10585
  : cellValue;
10588
10586
  };
10589
10587
  var GridMinWidths;
@@ -12043,7 +12041,7 @@ DatoGridColumnHeaderComponent = __decorate([
12043
12041
  Component({
12044
12042
  selector: 'dato-grid-column-header',
12045
12043
  template: "<div class=\"d-flex align-start-center\" [attr.data-auto-id]=\"field + '-column-header'\" [attr.data-field]=\"field\">\n <ng-container *ngIf=\"customTemplates && customTemplates.customHeader as customHeader\">\n <div class=\"mr-5\" [attr.data-auto-id]=\"field + '-dynamic-section'\">\n <ng-container *ngTemplateOutlet=\"customHeader; context: context\"></ng-container>\n </div>\n </ng-container>\n <div class=\"d-flex d-flex-grow align-start-center min-width-0 items-center\">\n <span class=\"dato-simple-bold primary-400-color ellipsis min-width-0 mr-5\" [datoTooltip]=\"headerTooltip\"\n datoTooltipPosition=\"bottom\">{{headerName}}</span>\n <div>\n <dato-icon class=\"primary-300-color\" *ngIf=\"headerInfo\" [datoTooltip]=\"headerInfo\" datoTooltipPosition=\"bottom\" datoIcon=\"question\"></dato-icon>\n </div>\n </div>\n <div class=\"sort-icon opacity-0\" *ngIf=\"params.enableSorting && (sortingInfo$ | async) as sortingInfo\"\n [class.active]=\"sortingInfo.active\">\n <dato-icon width=\"24px\" height=\"16px\" class=\"primary-300-color\"\n [attr.data-auto-id]=\"field + '-sort'\"\n [icon]=\"sortingInfo.icon\"></dato-icon>\n </div>\n <ng-container *ngIf=\"showFilter\">\n <div class=\"filter relative\" *datoSubscribe=\"filterActive$ as filterActive\">\n <dato-icon-button (click.stop)=\"openFilters(filters)\" datoTooltip=\"core.filters\" datoTooltipPosition=\"bottom\"\n datoType=\"none\" [attr.data-auto-id]=\"field + '-filter'\" class=\"filter-icon opacity-0\"\n [class.active]=\"filtersMenuOpen || filterActive\"\n datoSize=\"md\" icon=\"filter\"\n #filters></dato-icon-button>\n <div [class.opacity-100]=\"filterActive\"\n class=\"opacity-0 filter-active-circle accent-400-background-color absolute\"></div>\n </div>\n </ng-container>\n <dato-icon-button *ngIf=\"showMoreMenu\" (click.stop)=\"openMoreMenu(moreMenu)\" datoTooltip=\"core.more-options\" datoTooltipPosition=\"bottom\"\n datoType=\"none\" [attr.data-auto-id]=\"field + '-more-menu'\" [class.active]=\"moreMenuOpen\"\n datoSize=\"md\" icon=\"more-vertical\" #moreMenu></dato-icon-button>\n</div>\n",
12046
- styles: [":host .filter-icon,:host .sort-icon{transition:opacity .25s linear,width .25s ease-in-out;width:0}:host .sort-icon{height:16px}:host .filter-icon.active,:host .sort-icon.active{opacity:1;width:24px}:host:hover .filter-icon,:host:hover .sort-icon{opacity:1;width:24px}:host .filter-active-circle{pointer-events:none;transition:opacity .2s ease-in-out;position:absolute;height:8px;width:8px;top:2px;right:2px;border-radius:4px;border:1px solid #fff}:host ::ng-deep .filter dato-icon-button dato-icon{transition:color .2s ease-in-out}"]
12044
+ styles: [":host{width:100%}:host .filter-icon,:host .sort-icon{transition:opacity .25s linear,width .25s ease-in-out;width:0}:host .sort-icon{height:16px}:host .filter-icon.active,:host .sort-icon.active{opacity:1;width:24px}:host:hover .filter-icon,:host:hover .sort-icon{opacity:1;width:24px}:host .filter-active-circle{pointer-events:none;transition:opacity .2s ease-in-out;position:absolute;height:8px;width:8px;top:2px;right:2px;border-radius:4px;border:1px solid #fff}:host ::ng-deep .filter dato-icon-button dato-icon{transition:color .2s ease-in-out}"]
12047
12045
  }),
12048
12046
  __metadata("design:paramtypes", [ViewContainerRef,
12049
12047
  CustomHeaderControllerService,
@@ -12052,7 +12050,6 @@ DatoGridColumnHeaderComponent = __decorate([
12052
12050
  ], DatoGridColumnHeaderComponent);
12053
12051
 
12054
12052
  const agRowLevelPrefix = 'ag-row-level-';
12055
- const emptyFolderClassName = 'ag-empty-folder';
12056
12053
  function getTime$1(val) {
12057
12054
  let time = new Date(val || null).getTime();
12058
12055
  return isNaN(time) ? 0 : time;
@@ -12097,7 +12094,7 @@ const defaultGridOptions = Object.assign({
12097
12094
  [DatoGridColumnTypes.ItemsCount]: Object.assign(Object.assign({}, stringColDef), { cellRenderer: 'DatoGridItemsCountCellComponent' }),
12098
12095
  [DatoGridColumnTypes.Initials]: Object.assign(Object.assign({}, stringColDef), { cellRenderer: 'DatoGridInitialsCellComponent' }),
12099
12096
  [DatoGridColumnTypes.Avatar]: Object.assign(Object.assign({}, stringColDef), { cellRenderer: 'DatoGridAvatarCellComponent' })
12100
- }, multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, deltaColumnMode: true, loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
12097
+ }, multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, paginateChildRows: true, deltaColumnMode: true, loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
12101
12098
  minWidth: GridMinWidths.Default,
12102
12099
  sortable: true,
12103
12100
  resizable: true,
@@ -12125,15 +12122,11 @@ function getGridTreeCellRenderer() {
12125
12122
  const displayName = data[colDef['field']];
12126
12123
  const entityClassName = 'entity-display-name';
12127
12124
  const { svgRegistry } = colDef.gridService;
12128
- if (isFolder) {
12129
- setEmptyFolderClass(item.node);
12130
- }
12131
12125
  if (icon) {
12132
12126
  return `<span class="dato-simple-bold"> <span class="da-grid-icon folder d-flex">${svgRegistry.getSvg(icon)}</span><span class="${entityClassName}"></span> ${displayName}</span>`;
12133
12127
  }
12134
12128
  else {
12135
12129
  if (isFolder) {
12136
- setEmptyFolderClass(item);
12137
12130
  return `<span class="${entityClassName} dato-simple-bold">${displayName}</span>`;
12138
12131
  }
12139
12132
  else {
@@ -12275,6 +12268,9 @@ function onRowDragEnd({ overNode, node }) {
12275
12268
  const hoveredParentElement = getCellByRowID(potentialParent.id);
12276
12269
  hoveredParentElement && hoveredParentElement.classList.remove(agRowHoverClassName);
12277
12270
  potentialParent = null;
12271
+ /** Redraw the folders that has been dragged from and to,
12272
+ * to apply their classed through classRules config */
12273
+ this.api.redrawRows({ rowNodes: [nodeParent, folderToDropInto] });
12278
12274
  this.api.clearFocusedCell();
12279
12275
  }
12280
12276
  }
@@ -12290,24 +12286,9 @@ function setRowClasses(rows) {
12290
12286
  }
12291
12287
  }
12292
12288
  node.classList.add(`${agRowLevelPrefix}${row.level}`);
12293
- if (row.data.isFolder) {
12294
- setEmptyFolderClass(row, node);
12295
- }
12296
12289
  }
12297
12290
  });
12298
12291
  }
12299
- function setEmptyFolderClass(row, node) {
12300
- const currentNode = node || document.querySelectorAll(`[row-id="${row.id}"]`)[0];
12301
- if (!currentNode) {
12302
- return;
12303
- }
12304
- if (size(row.childrenAfterGroup) === 0) {
12305
- currentNode.classList.add(emptyFolderClassName);
12306
- }
12307
- else {
12308
- currentNode.classList.remove(emptyFolderClassName);
12309
- }
12310
- }
12311
12292
  function onRowSelected(params) {
12312
12293
  if (updatingCheckboxesProgrammatically) {
12313
12294
  return;
@@ -12490,8 +12471,9 @@ DatoGridMultiSelectColumnHeaderComponent.ctorParameters = () => [
12490
12471
  DatoGridMultiSelectColumnHeaderComponent = __decorate([
12491
12472
  Component({
12492
12473
  selector: 'dato-grid-multi-select-column-header',
12493
- template: "<dato-checkbox class=\"mt-5\" [formControl]=\"checkboxControl\" [indeterminatelyChecked]=\"indeterminatelyChecked\"></dato-checkbox>",
12494
- changeDetection: ChangeDetectionStrategy.OnPush
12474
+ template: "<dato-checkbox [formControl]=\"checkboxControl\" [indeterminatelyChecked]=\"indeterminatelyChecked\"></dato-checkbox>",
12475
+ changeDetection: ChangeDetectionStrategy.OnPush,
12476
+ styles: [":host{height:100%;display:flex;align-items:center}"]
12495
12477
  }),
12496
12478
  __metadata("design:paramtypes", [GridService, GridQuery, ChangeDetectorRef])
12497
12479
  ], DatoGridMultiSelectColumnHeaderComponent);
@@ -12507,7 +12489,7 @@ let GridService = class GridService {
12507
12489
  this.logger = logger;
12508
12490
  this.treeConfig = defaultGridTreeLabel;
12509
12491
  this.pageNumberToReturnAfterRefresh = -1;
12510
- this.updateGridActionsSubject = new Subject();
12492
+ this.reloadGridActionsSubject = new Subject();
12511
12493
  this.CHECKBOX_SELECTION_COL_ID = 'grid-checkbox-selection';
12512
12494
  }
12513
12495
  set treeData(isTreeData) {
@@ -12534,11 +12516,11 @@ let GridService = class GridService {
12534
12516
  ? context
12535
12517
  : deepmerge(this.gridRef.gridOptions.context || {}, context);
12536
12518
  }
12537
- updateGridActions() {
12538
- this.updateGridActionsSubject.next(true);
12519
+ reloadGridActions() {
12520
+ this.reloadGridActionsSubject.next();
12539
12521
  }
12540
- getUpdateGridActionsStatus() {
12541
- return this.updateGridActionsSubject.asObservable();
12522
+ onReloadGridActions() {
12523
+ return this.reloadGridActionsSubject.asObservable();
12542
12524
  }
12543
12525
  /**
12544
12526
  * @deprecated use selectRows instead
@@ -12639,25 +12621,40 @@ let GridService = class GridService {
12639
12621
  this.loadSavedSettings(savedSettings);
12640
12622
  }
12641
12623
  }
12624
+ initGridOptions(gridOptions) {
12625
+ let options = Object.assign({}, gridOptions);
12626
+ if (typeof gridOptions.enableSearch === 'undefined') {
12627
+ options.enableSearch = options.enableV2_1;
12628
+ }
12629
+ if (typeof gridOptions.enableBackground === 'undefined') {
12630
+ options.enableBackground = options.enableV2_1;
12631
+ }
12632
+ if (typeof gridOptions.showMultiSelectionCheckboxes === 'undefined') {
12633
+ options.showMultiSelectionCheckboxes =
12634
+ gridOptions.enableV2_1 && options.rowSelection !== GridRowSelectionType.SINGLE;
12635
+ }
12636
+ if (typeof gridOptions.enableSearchHighlight === 'undefined') {
12637
+ options.enableSearchHighlight = options.enableSearch && defaultGridOptions.enableSearchHighlight;
12638
+ }
12639
+ if (gridOptions.usePivotGridStyle) {
12640
+ const rowHeight = 30;
12641
+ options.rowHeight = rowHeight;
12642
+ options.defaultColDef = Object.assign(Object.assign({}, options.defaultColDef), { cellClassRules: this.getPivotModeCellClassRules(), headerClass: this.getPivotHeaderClass.bind(this), cellStyle: params => {
12643
+ const style = { lineHeight: `${rowHeight}px` };
12644
+ if (params.colDef.type === DatoGridColumnTypes.Number) {
12645
+ style.textAlign = 'end';
12646
+ }
12647
+ return style;
12648
+ } });
12649
+ options.autoGroupColumnDef = Object.assign(Object.assign({}, options.autoGroupColumnDef), { cellClassRules: this.getPivotModeCellClassRules(), headerClass: this.getPivotHeaderClass.bind(this) });
12650
+ }
12651
+ return options;
12652
+ }
12642
12653
  normalizeOptions(params) {
12643
12654
  this.customHeadersTemplates = params.customHeadersTemplates;
12644
12655
  const headerComponentParams = { gridService: this, gridQuery: this.gridQuery };
12645
12656
  params.gridOptions.autoGroupColumnDef = Object.assign(Object.assign({}, headerComponentParams), params.gridOptions.autoGroupColumnDef);
12646
12657
  params.gridOptions.defaultColDef = Object.assign(Object.assign({}, params.gridOptions.defaultColDef), { headerComponentParams });
12647
- if (typeof params.gridOptions.enableSearch === 'undefined') {
12648
- params.gridOptions.enableSearch = params.gridOptions.enableV2_1;
12649
- }
12650
- if (typeof params.gridOptions.enableBackground === 'undefined') {
12651
- params.gridOptions.enableBackground = params.gridOptions.enableV2_1;
12652
- }
12653
- if (typeof params.gridOptions.showMultiSelectionCheckboxes === 'undefined') {
12654
- params.gridOptions.showMultiSelectionCheckboxes =
12655
- params.gridOptions.enableV2_1 && params.gridOptions.rowSelection !== GridRowSelectionType.SINGLE;
12656
- }
12657
- if (typeof params.gridOptions.enableSearchHighlight === 'undefined') {
12658
- params.gridOptions.enableSearchHighlight =
12659
- params.gridOptions.enableSearch && defaultGridOptions.enableSearchHighlight;
12660
- }
12661
12658
  params.gridOptions.columnDefs = this.normalizeColumns(params.gridOptions.columnDefs, params.gridOptions);
12662
12659
  /** Add core filters */
12663
12660
  params.gridOptions.isExternalFilterPresent = () => true;
@@ -12684,23 +12681,18 @@ let GridService = class GridService {
12684
12681
  params.gridOptions.saveSettings = saveSettings !== false && !isNil(gridName);
12685
12682
  /** Server Side Pagination for select all option */
12686
12683
  this.initOnRowSelectedForServerSidePagination(params);
12684
+ /** Add tree grid specific required settings */
12685
+ if (this.isTreeData) {
12686
+ const inputRowClassRules = params.gridOptions.rowClassRules;
12687
+ params.gridOptions.rowClassRules = Object.assign(Object.assign({}, inputRowClassRules), { 'ag-empty-folder': params => {
12688
+ return params.data.isFolder && size(params.node.childrenAfterGroup) === 0;
12689
+ } });
12690
+ }
12687
12691
  /** Add pivot specific required settings */
12688
- if (params.gridOptions.pivotMode) {
12692
+ if (this.isPivotMode) {
12689
12693
  this.initPivotSecondaryColsProcess(params);
12690
12694
  params.gridOptions.saveSettings = false;
12691
12695
  }
12692
- if (params.gridOptions.usePivotGridStyle) {
12693
- const rowHeight = 30;
12694
- params.gridOptions.rowHeight = rowHeight;
12695
- params.gridOptions.defaultColDef = Object.assign(Object.assign({}, params.gridOptions.defaultColDef), { cellClassRules: this.getPivotModeCellClassRules(), headerClass: this.getPivotHeaderClass.bind(this), cellStyle: params => {
12696
- const style = { lineHeight: `${rowHeight}px` };
12697
- if (params.colDef.type === DatoGridColumnTypes.Number) {
12698
- style.textAlign = 'end';
12699
- }
12700
- return style;
12701
- } });
12702
- params.gridOptions.autoGroupColumnDef = Object.assign(Object.assign({}, params.gridOptions.autoGroupColumnDef), { cellClassRules: this.getPivotModeCellClassRules(), headerClass: this.getPivotHeaderClass.bind(this) });
12703
- }
12704
12696
  return params.gridOptions;
12705
12697
  }
12706
12698
  getPivotHeaderClass(params) {
@@ -12780,8 +12772,9 @@ let GridService = class GridService {
12780
12772
  colId: this.CHECKBOX_SELECTION_COL_ID,
12781
12773
  checkboxSelection: true,
12782
12774
  headerComponentFramework: DatoGridMultiSelectColumnHeaderComponent,
12783
- width: 30,
12784
- maxWidth: 30,
12775
+ minWidth: 29,
12776
+ width: 29,
12777
+ maxWidth: 29,
12785
12778
  suppressSizeToFit: true,
12786
12779
  cellClass: 'checkbox-selection-cell',
12787
12780
  headerClass: 'header-checkbox-selection-cell',
@@ -12986,8 +12979,7 @@ let GridService = class GridService {
12986
12979
  this.updateSettings({ gridAlignment, columnsSizes: null });
12987
12980
  }
12988
12981
  saveSettingsToServer(settings) {
12989
- const isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
12990
- this.storageAPI.set(this.gridName, settings, isGlobal);
12982
+ this.storageAPI.set(this.gridName, settings);
12991
12983
  }
12992
12984
  /**
12993
12985
  * @internal used to log grid events to the platform's logging service
@@ -13092,8 +13084,8 @@ let GridService = class GridService {
13092
13084
  copyAction.onClick = ([row]) => {
13093
13085
  const rawValue = this.api.grid.getValue(column.getColId(), row);
13094
13086
  const formatter = column.getColDef().valueFormatter;
13095
- const value = formatter ? formatter(rawValue) : rawValue;
13096
- copyToClipboard(value);
13087
+ const value = formatter && typeof formatter !== 'string' ? formatter(rawValue) : rawValue;
13088
+ writeToClipboard(value);
13097
13089
  };
13098
13090
  if (node.isSelected()) {
13099
13091
  selected = this.gridQuery.getSelectedRowNodes();
@@ -13467,8 +13459,8 @@ let GridService = class GridService {
13467
13459
  * Refer docs - https://www.ag-grid.com/angular-data-grid/cell-styles/#cell-class-rules */
13468
13460
  getPivotModeCellClassRules() {
13469
13461
  return {
13470
- 'primary-0-background-color': this.isLeafGroupEvenCell.bind(this),
13471
- 'primary-100-background-color pointer dato-simple-bold': this.isRowGroupValuedCell.bind(this)
13462
+ 'even-row-group-leaf-cell': this.isLeafGroupEvenCell.bind(this),
13463
+ 'row-group-root-cell': this.isRowGroupValuedCell.bind(this)
13472
13464
  };
13473
13465
  }
13474
13466
  isLeafGroupEvenCell(params) {
@@ -13886,8 +13878,8 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13886
13878
  this.onGridChange = new EventEmitter();
13887
13879
  this.rowActions = [];
13888
13880
  this.gridActions = [];
13889
- this.contentInit = new Subject();
13890
13881
  this.gridReady$ = this.gridQuery.gridReady$;
13882
+ this.contentInit = new Subject();
13891
13883
  this.gridElements = {
13892
13884
  centerViewport: null,
13893
13885
  centerContainer: null,
@@ -13896,7 +13888,7 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13896
13888
  this.treeGridClass = 'tree';
13897
13889
  }
13898
13890
  set gridOptions(gridOptions) {
13899
- this._gridOptions = gridOptions;
13891
+ this._gridOptions = this.gridService.initGridOptions(gridOptions);
13900
13892
  this.gridService.treeData = gridOptions.treeData;
13901
13893
  this.gridService.isPivotMode = gridOptions.pivotMode;
13902
13894
  if (this.agGridEl) {
@@ -13917,9 +13909,12 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13917
13909
  this.rowHoverComponent && this.rowHoverComponent.destroy();
13918
13910
  this.rowHoverComponent = null;
13919
13911
  }
13920
- ngAfterContentInit() {
13921
- this.contentInit.next();
13922
- this.contentInit.complete();
13912
+ initializeGrid(agGrid, agGridEl) {
13913
+ if (!this.contentInit.isStopped) {
13914
+ this._initializeGrid(agGrid, agGridEl);
13915
+ this.contentInit.next();
13916
+ this.contentInit.complete();
13917
+ }
13923
13918
  }
13924
13919
  /* @internal */
13925
13920
  _initializeGrid(agGrid, agGridEl) {
@@ -13929,10 +13924,7 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13929
13924
  .pipe(switchMap(() => {
13930
13925
  this.gridOptions = this.normalizeOptions();
13931
13926
  agGrid.gridOptions = this.gridOptions;
13932
- const isGlobal = this.gridOptions.isGlobalSettings;
13933
- const settingsLoader = this.gridOptions.saveSettings === false
13934
- ? of(null)
13935
- : this.storageAPI.get(this.gridOptions.gridName, isGlobal);
13927
+ const settingsLoader = this.gridOptions.saveSettings === false ? of(null) : this.storageAPI.get(this.gridOptions.gridName);
13936
13928
  return combineLatest([agGrid.gridReady, settingsLoader]);
13937
13929
  }), untilDestroyed(this))
13938
13930
  .subscribe(([{ api, columnApi }, savedSettings = {}]) => {
@@ -13962,12 +13954,6 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
13962
13954
  });
13963
13955
  }
13964
13956
  normalizeOptions() {
13965
- /**
13966
- * When treeData is enabled, Pagination must be turned off
13967
- */
13968
- if (this.gridOptions.treeData) {
13969
- this.gridOptions = Object.assign(Object.assign({}, this.gridOptions), { pagination: false });
13970
- }
13971
13957
  const params = {
13972
13958
  gridOptions: this.gridOptions,
13973
13959
  customHeadersTemplates: this.customHeadersTemplates,
@@ -14344,8 +14330,10 @@ let DatoGridV2Component = class DatoGridV2Component {
14344
14330
  this.host = host;
14345
14331
  }
14346
14332
  set grid(agGrid) {
14347
- const agGridEl = query('ag-grid-angular', this.host.nativeElement);
14348
- this.controller._initializeGrid(agGrid, agGridEl);
14333
+ if (agGrid) {
14334
+ const agGridEl = query('ag-grid-angular', this.host.nativeElement);
14335
+ this.controller.initializeGrid(agGrid, agGridEl);
14336
+ }
14349
14337
  }
14350
14338
  get gridOptions() {
14351
14339
  return this.controller ? this.controller.gridOptions : null;
@@ -14365,9 +14353,9 @@ DatoGridV2Component.ctorParameters = () => [
14365
14353
  { type: ElementRef }
14366
14354
  ];
14367
14355
  __decorate([
14368
- ViewChild(AgGridNg2, { static: true }),
14369
- __metadata("design:type", AgGridNg2),
14370
- __metadata("design:paramtypes", [AgGridNg2])
14356
+ ViewChild(AgGridAngular, { static: false }),
14357
+ __metadata("design:type", AgGridAngular),
14358
+ __metadata("design:paramtypes", [AgGridAngular])
14371
14359
  ], DatoGridV2Component.prototype, "grid", null);
14372
14360
  DatoGridV2Component = __decorate([
14373
14361
  Component({
@@ -14375,7 +14363,7 @@ DatoGridV2Component = __decorate([
14375
14363
  template: "<ag-grid-angular data-auto-id=\"grid\" class=\"dato-grid ag-theme-material\" [class.has-background]=\"enableBackground\" [class.enable-v2_1]=\"enableV2_1\"\n [class.with-multi-selection-col]=\"gridOptions?.showMultiSelectionCheckboxes\" [class.pivot-style]=\"isPivotStyle\">\n</ag-grid-angular>\n<dato-grid-pagination-v2 [class.has-background]=\"enableBackground\"></dato-grid-pagination-v2>\n",
14376
14364
  changeDetection: ChangeDetectionStrategy.OnPush,
14377
14365
  encapsulation: ViewEncapsulation.None,
14378
- styles: ["dato-grid-v2{flex-grow:1;display:flex;flex-direction:column;position:relative}dato-grid-v2 .dato-grid,dato-grid-v2 dato-grid-pagination-v2{position:absolute;left:0;right:0;bottom:0}dato-grid-v2 .dato-grid{top:0;bottom:50px}dato-grid-v2 .grid-hover-actions{position:absolute;z-index:2;transition:opacity .2s ease-in-out}dato-grid-v2 .ag-row-drag{width:initial!important}dato-grid-v2 .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle;width:initial;height:initial}dato-grid-v2 .da-grid-icon.drag{width:14px;height:14px;margin-right:6px;opacity:0;transition:opacity .3s;transform:translateY(-50%)}dato-grid-v2 .da-grid-icon.folder{width:18px;height:35px;margin:0 8px}dato-grid-v2 .ag-row.ag-row-hover .da-grid-icon.drag{opacity:1}dato-grid-v2 ag-grid-angular.tree .ag-group-contracted,dato-grid-v2 ag-grid-angular.tree .ag-group-expanded{display:inline-block;width:18px;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-group-checkbox{display:none}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-empty-folder .folder{margin-left:26px}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-1 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 1)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-1{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-2 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 2)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-2{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-3 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 3)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-3{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-4 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 4)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-4{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row div[col-id=ag-Grid-AutoColumn]{padding-left:0}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell{display:flex;align-items:center}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .ag-group-value>span{display:inline-block;vertical-align:middle}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .initials{border-radius:50%;padding:4px;margin-right:8px;margin-left:20px;width:28px;height:28px;display:inline-block;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-row-group-leaf-indent{margin-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-selection-checkbox .ag-icon-checkbox-indeterminate:before{text-align:center;content:'-';display:inline-block;position:absolute;top:0;left:0;right:0;bottom:0;line-height:.5;color:#fff}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell{line-height:33px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.dato-editable-cell{line-height:29px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.ag-cell-inline-editing{height:35px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell{line-height:42px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.dato-editable-cell{line-height:38px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.ag-cell-inline-editing{height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell{line-height:48px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.dato-editable-cell{line-height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.ag-cell-inline-editing{height:50px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell{line-height:57px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.dato-editable-cell{line-height:53px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.ag-cell-inline-editing{height:59px}dato-grid-v2 ag-grid-angular .ag-cell.checkbox-selection-cell{display:flex}dato-grid-v2 .ag-menu .da-grid-icon svg{vertical-align:middle}dato-grid-v2 .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}dato-grid-v2 .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}dato-grid-v2 .group-contracted-icon,dato-grid-v2 .group-expanded-icon{width:7px}dato-grid-v2 .group-expanded-icon{transform:rotate(90deg)}dato-grid-v2 .dato-grid .ag-cell{border-top:0;border-bottom:0}dato-grid-v2 .ag-overlay-wrapper ng-component{display:flex}.ag-dnd-ghost{min-width:100px;border:none;display:flex;justify-content:flex-start;align-content:center;align-items:center;cursor:-webkit-grabbing;cursor:grabbing;z-index:10000000}.ag-dnd-ghost .da-grid-icon.column-move-hide svg{height:18px;width:18px}.ag-dnd-ghost .da-grid-icon.column-move svg,.ag-dnd-ghost .da-grid-icon.column-move-pin svg{height:16px;width:16px}"]
14366
+ styles: ["dato-grid-v2{flex-grow:1;display:flex;flex-direction:column;position:relative}dato-grid-v2 .dato-grid,dato-grid-v2 dato-grid-pagination-v2{position:absolute;left:0;right:0;bottom:0}dato-grid-v2 .dato-grid{top:0;bottom:50px}dato-grid-v2 .grid-hover-actions{position:absolute;z-index:2;transition:opacity .2s ease-in-out}dato-grid-v2 .ag-row-drag{width:initial!important;min-width:auto!important}dato-grid-v2 .da-grid-icon{display:inline-block;line-height:31px;vertical-align:middle;width:initial;height:initial}dato-grid-v2 .da-grid-icon.drag{width:14px;height:14px;margin-right:6px;opacity:0;transition:opacity .3s;transform:translateY(-50%)}dato-grid-v2 .da-grid-icon.folder{width:18px;height:35px;margin:0 8px}dato-grid-v2 .ag-row.ag-row-hover .da-grid-icon.drag{opacity:1}dato-grid-v2 ag-grid-angular.tree .ag-group-contracted,dato-grid-v2 ag-grid-angular.tree .ag-group-expanded{display:inline-block;width:18px;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-group-checkbox{display:none}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-empty-folder .folder{margin-left:26px}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-1 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 1)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-1{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-2 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 2)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-2{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-3 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 3)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-3{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row.ag-row-level-4 .ag-cell-wrapper .ag-row-drag{padding-right:calc(55px * 4)}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-row-group-indent-4{margin-left:0!important;padding-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-row div[col-id=ag-Grid-AutoColumn]{padding-left:0}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell{display:flex;align-items:center}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .ag-group-value>span{display:inline-block;vertical-align:middle}dato-grid-v2 ag-grid-angular.tree .ag-row .ag-cell .initials{border-radius:50%;padding:4px;margin-right:8px;margin-left:20px;width:28px;height:28px;display:inline-block;text-align:center}dato-grid-v2 ag-grid-angular.tree .ag-row-group-leaf-indent{margin-left:0!important}dato-grid-v2 ag-grid-angular.tree .ag-selection-checkbox .ag-icon-checkbox-indeterminate:before{text-align:center;content:'-';display:inline-block;position:absolute;top:0;left:0;right:0;bottom:0;line-height:.5;color:#fff}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell{line-height:33px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.dato-editable-cell{line-height:29px}dato-grid-v2 ag-grid-angular.row-height-35 .ag-cell.ag-cell-inline-editing{height:35px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell{line-height:42px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.dato-editable-cell{line-height:38px}dato-grid-v2 ag-grid-angular.row-height-44 .ag-cell.ag-cell-inline-editing{height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell{line-height:48px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.dato-editable-cell{line-height:44px}dato-grid-v2 ag-grid-angular.row-height-50 .ag-cell.ag-cell-inline-editing{height:50px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell{line-height:57px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.dato-editable-cell{line-height:53px}dato-grid-v2 ag-grid-angular.row-height-59 .ag-cell.ag-cell-inline-editing{height:59px}dato-grid-v2 ag-grid-angular .ag-cell.checkbox-selection-cell{display:flex;padding-right:0}dato-grid-v2 .ag-menu .da-grid-icon svg{vertical-align:middle}dato-grid-v2 .ag-header-cell-sortable .ag-sort-none-icon{opacity:0;transition:opacity .2s}dato-grid-v2 .ag-header-cell-sortable:hover .ag-sort-none-icon{opacity:1}dato-grid-v2 .group-contracted-icon,dato-grid-v2 .group-expanded-icon{width:7px}dato-grid-v2 .group-expanded-icon{transform:rotate(90deg)}dato-grid-v2 .dato-grid .ag-cell{border-top:0;border-bottom:0}dato-grid-v2 .ag-overlay-wrapper ng-component{display:flex}.ag-dnd-ghost{min-width:100px;border:none;display:flex;justify-content:flex-start;align-content:center;align-items:center;cursor:-webkit-grabbing;cursor:grabbing;z-index:10000000}.ag-dnd-ghost .da-grid-icon.column-move-hide svg{height:18px;width:18px}.ag-dnd-ghost .da-grid-icon.column-move svg,.ag-dnd-ghost .da-grid-icon.column-move-pin svg{height:16px;width:16px}"]
14379
14367
  }),
14380
14368
  __metadata("design:paramtypes", [DatoGridControllerComponent, ElementRef])
14381
14369
  ], DatoGridV2Component);
@@ -15071,13 +15059,7 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
15071
15059
  });
15072
15060
  this.registerGroupListeners();
15073
15061
  this.subscribeRowsSelectionData();
15074
- this.subscribeUpdateGridActions();
15075
- }
15076
- getCellValueChangeEvent() {
15077
- return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.cellValueChanged.pipe(debounceTime(100), untilDestroyed(this)));
15078
- }
15079
- getRowDataUpdatedEvent() {
15080
- return this.gridController.gridQuery.waitForGrid(() => this.gridQuery.gridRef.rowDataUpdated.pipe(debounceTime(100), untilDestroyed(this)));
15062
+ this.subscribeReloadGridActions();
15081
15063
  }
15082
15064
  onActionClick(action) {
15083
15065
  if (isFunction(action.onClick)) {
@@ -15314,8 +15296,8 @@ let DatoGridV2ToolbarComponent = class DatoGridV2ToolbarComponent {
15314
15296
  this.cdr.detectChanges();
15315
15297
  });
15316
15298
  }
15317
- subscribeUpdateGridActions() {
15318
- this.gridService.getUpdateGridActionsStatus().subscribe(() => {
15299
+ subscribeReloadGridActions() {
15300
+ this.gridService.onReloadGridActions().subscribe(() => {
15319
15301
  this.initGridActions();
15320
15302
  });
15321
15303
  }
@@ -18490,9 +18472,9 @@ let DatoGridInitialsCellComponent = class DatoGridInitialsCellComponent {
18490
18472
  DatoGridInitialsCellComponent = __decorate([
18491
18473
  Component({
18492
18474
  selector: 'dato-grid-initials-cell',
18493
- template: "<div *ngIf=\"!isGroup\" class=\"height-100 d-flex items-center primary-500-color initials-container\">\n <div *ngIf=\"initials\" class=\"initials text-center mr-12\" [class.bold]=\"isBold\">{{ initials }}</div>\n <div [class.bold]=\"isBold\">{{text}}</div>\n</div>\n\n<span *ngIf=\"isGroup\">{{text}}</span>\n",
18475
+ template: "<div *ngIf=\"!isGroup\" class=\"height-100 d-flex items-center primary-500-color initials-container\">\n <div *ngIf=\"initials\" class=\"initials text-center mr-12\" [class.bold]=\"isBold\">{{ initials }}</div>\n <div class=\"ellipsis\" [class.bold]=\"isBold\">{{text}}</div>\n</div>\n\n<span *ngIf=\"isGroup\">{{text}}</span>\n",
18494
18476
  changeDetection: ChangeDetectionStrategy.OnPush,
18495
- styles: [".initials-container .initials{width:34px;height:34px;line-height:33px;border-radius:50%;font-size:15px}.initials-container.bold{font-weight:600}"]
18477
+ styles: [".initials-container .initials{width:34px;height:34px;line-height:33px;border-radius:50%;font-size:15px;flex:0 0 auto}.initials-container.bold{font-weight:600}"]
18496
18478
  })
18497
18479
  ], DatoGridInitialsCellComponent);
18498
18480
 
@@ -18514,9 +18496,9 @@ let DatoGridAvatarCellComponent = class DatoGridAvatarCellComponent {
18514
18496
  DatoGridAvatarCellComponent = __decorate([
18515
18497
  Component({
18516
18498
  selector: 'dato-grid-avatar-cell',
18517
- template: "<div *ngIf=\"!isGroup\" class=\"height-100 d-flex items-center primary-500-color avatar-container\">\n <div *ngIf=\"imageUrl\" [style.background-image]=\"'url(' + imageUrl + ')'\" class=\"avatar text-center mr-12\"></div>\n <div>{{text}}</div>\n</div>\n\n<span *ngIf=\"isGroup\">{{text}}</span>\n",
18499
+ template: "<div *ngIf=\"!isGroup\" class=\"height-100 d-flex items-center primary-500-color avatar-container\">\n <div *ngIf=\"imageUrl\" [style.background-image]=\"'url(' + imageUrl + ')'\" class=\"avatar text-center mr-12\"></div>\n <div class=\"ellipsis\">{{text}}</div>\n</div>\n\n<span *ngIf=\"isGroup\">{{text}}</span>\n",
18518
18500
  changeDetection: ChangeDetectionStrategy.OnPush,
18519
- styles: [".avatar-container .avatar{width:34px;height:34px;border-radius:50%;background-size:contain}"]
18501
+ styles: [".avatar-container .avatar{width:34px;height:34px;border-radius:50%;background-size:contain;flex:0 0 auto}"]
18520
18502
  })
18521
18503
  ], DatoGridAvatarCellComponent);
18522
18504
 
@@ -19162,39 +19144,6 @@ DatoEditableHeaderModule = __decorate([
19162
19144
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
19163
19145
  */
19164
19146
 
19165
- let RichTextService = class RichTextService {
19166
- constructor(http, config) {
19167
- this.http = http;
19168
- this.config = config;
19169
- }
19170
- getLib(appendScriptFunc, appendStyleFunc) {
19171
- if (!this.richTextScript$) {
19172
- this.initLib(appendScriptFunc, appendStyleFunc);
19173
- }
19174
- return this.richTextScript$;
19175
- }
19176
- initLib(appendScriptFunc, appendStyleFunc) {
19177
- this.richTextScript$ = combineLatest([
19178
- this.http
19179
- .get(`${this.config.paths.richText}/index.js`, { responseType: 'text' })
19180
- .pipe(tap(lib => appendScriptFunc(lib, 'rich-text-editor'))),
19181
- this.http
19182
- .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
19183
- .pipe(tap(style => appendStyleFunc(style, 'tinymce-autocomplete')))
19184
- ]).pipe(shareReplay(1));
19185
- }
19186
- };
19187
- RichTextService.ctorParameters = () => [
19188
- { type: HttpClient },
19189
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
19190
- ];
19191
- RichTextService.ɵprov = ɵɵdefineInjectable({ factory: function RichTextService_Factory() { return new RichTextService(ɵɵinject(HttpClient), ɵɵinject(DATO_CORE_CONFIG)); }, token: RichTextService, providedIn: "root" });
19192
- RichTextService = __decorate([
19193
- Injectable({ providedIn: 'root' }),
19194
- __param(1, Inject(DATO_CORE_CONFIG)),
19195
- __metadata("design:paramtypes", [HttpClient, Object])
19196
- ], RichTextService);
19197
-
19198
19147
  /**
19199
19148
  * @license
19200
19149
  * Copyright Datorama. All Rights Reserved.
@@ -19208,20 +19157,20 @@ const getTinymce = () => {
19208
19157
  };
19209
19158
  const ɵ0$3 = getTinymce;
19210
19159
  let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirective extends BaseCustomControl {
19211
- constructor(ngZone, richTextService, config, host) {
19160
+ constructor(ngZone, http, host, config) {
19212
19161
  super();
19213
19162
  this.ngZone = ngZone;
19214
- this.richTextService = richTextService;
19215
- this.config = config;
19163
+ this.http = http;
19216
19164
  this.host = host;
19165
+ this.config = config;
19217
19166
  this.autocompleteOptions = {};
19218
19167
  this.forcePlainTextPasting = false;
19219
19168
  this.format = 'html';
19220
19169
  this.isOneLine = false;
19221
19170
  this.initialValue = '';
19222
- this.defaultPlugins = 'link fullscreen image lists table autocomplete';
19171
+ this.defaultPlugins = 'link fullscreen textcolor colorpicker image lists table textpattern autocomplete';
19223
19172
  this.defaultToolbar = [
19224
- 'fontfamily fontsize forecolor backcolor bold italic underline link',
19173
+ 'fontselect fontsizeselect forecolor backcolor bold italic underline link',
19225
19174
  'alignleft aligncenter alignright alignjustify outdent indent | table numlist bullist | image fullscreen'
19226
19175
  ];
19227
19176
  }
@@ -19240,11 +19189,28 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
19240
19189
  base: this.config.paths.richText,
19241
19190
  query: ''
19242
19191
  };
19243
- this.richTextService
19244
- .getLib(appendScript, appendStyle)
19245
- .pipe(untilDestroyed(this))
19246
- .subscribe(() => {
19192
+ /**
19193
+ * We support only one instance in load time
19194
+ */
19195
+ if (window.tinymce) {
19247
19196
  this.init.call(this);
19197
+ }
19198
+ else {
19199
+ this.loadLib().subscribe(lib => {
19200
+ appendScript(lib, 'rich-text-editor');
19201
+ this.init.call(this);
19202
+ this.loadAutoCompleteStyle();
19203
+ });
19204
+ }
19205
+ }
19206
+ loadLib() {
19207
+ return this.http.get(`${this.config.paths.richText}/index.js`, { responseType: 'text' });
19208
+ }
19209
+ loadAutoCompleteStyle() {
19210
+ this.http
19211
+ .get(`${this.config.paths.richText}/plugins/autocomplete/plugin.css`, { responseType: 'text' })
19212
+ .subscribe(style => {
19213
+ appendStyle(style, 'tinymce-autocomplete');
19248
19214
  });
19249
19215
  }
19250
19216
  initEditor(_, editor) {
@@ -19265,6 +19231,8 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
19265
19231
  target: this.host.nativeElement,
19266
19232
  width: this.width || 600,
19267
19233
  height: this.height || 300,
19234
+ force_br_newlines: true,
19235
+ force_p_newlines: false,
19268
19236
  resize: 'both',
19269
19237
  branding: false,
19270
19238
  inline: this.inline,
@@ -19272,12 +19240,10 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
19272
19240
  readonly: this.disabled,
19273
19241
  plugins: this.plugins || this.defaultPlugins,
19274
19242
  toolbar: isNil(this.toolbar) ? this.defaultToolbar : this.toolbar,
19275
- font_size_formats: '8px 10px 12px 14px 18px 24px 36px',
19243
+ fontsize_formats: '8px 10px 12px 14px 18px 24px 36px',
19276
19244
  min_width: 480,
19277
19245
  menubar: false,
19278
19246
  autocomplete: this.autocompleteOptions,
19279
- suffix: '.min',
19280
- skin: 'tinymce-5',
19281
19247
  setup: editor => {
19282
19248
  this.editor = editor;
19283
19249
  editor.on('init', (e) => {
@@ -19345,9 +19311,9 @@ let DatoRichTextDirective = DatoRichTextDirective_1 = class DatoRichTextDirectiv
19345
19311
  };
19346
19312
  DatoRichTextDirective.ctorParameters = () => [
19347
19313
  { type: NgZone },
19348
- { type: RichTextService },
19349
- { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] },
19350
- { type: ElementRef }
19314
+ { type: HttpClient },
19315
+ { type: ElementRef },
19316
+ { type: undefined, decorators: [{ type: Inject, args: [DATO_CORE_CONFIG,] }] }
19351
19317
  ];
19352
19318
  __decorate([
19353
19319
  Input(),
@@ -19413,9 +19379,10 @@ DatoRichTextDirective = DatoRichTextDirective_1 = __decorate([
19413
19379
  }
19414
19380
  ]
19415
19381
  }),
19416
- __param(2, Inject(DATO_CORE_CONFIG)),
19382
+ __param(3, Inject(DATO_CORE_CONFIG)),
19417
19383
  __metadata("design:paramtypes", [NgZone,
19418
- RichTextService, Object, ElementRef])
19384
+ HttpClient,
19385
+ ElementRef, Object])
19419
19386
  ], DatoRichTextDirective);
19420
19387
 
19421
19388
  /**
@@ -21696,9 +21663,7 @@ let DatoBreadcrumbsComponent = class DatoBreadcrumbsComponent {
21696
21663
  this._breadcrumbs = [...start, ...dots, ...end];
21697
21664
  }
21698
21665
  initEditableHeader() {
21699
- this.headerControl.valueChanges
21700
- .pipe(debounceTime(300), untilDestroyed(this))
21701
- .subscribe((res) => {
21666
+ this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe((res) => {
21702
21667
  this.updateEditableText.emit(res);
21703
21668
  this.cdr.detectChanges();
21704
21669
  });
@@ -22963,7 +22928,7 @@ function fixNgLeaks() {
22963
22928
  };
22964
22929
  }
22965
22930
 
22966
- window.coreVersion = '22.13.7-rc.';
22931
+ window.coreVersion = '22.14.0';
22967
22932
 
22968
22933
  /**
22969
22934
  * @license
@@ -22977,5 +22942,5 @@ window.coreVersion = '22.13.7-rc.';
22977
22942
  * Generated bundle index. Do not edit.
22978
22943
  */
22979
22944
 
22980
- export { APP_TRANSLATE, AceService, BaseCustomControl, COMPARE_RESULT, CUSTOM_RANGE_ID, ColorPalette, ConfirmationType, ContentRef, ContentType, CustomHeaderControllerService, DATE_PICKER_CONFIG, DATE_PICKER_POPOVER_ID, DATO_CORE_LOGGER, DATO_FORM_ERRORS, DATO_GRID_STORAGE_API, DEFAULT_FORMAT, DEFAULT_GRID_SEARCH_DEBOUNCE_TIME, DatePickerConfig, DatePickerMonthComponent, DateType, DatoAccordionComponent, DatoAccordionContentComponent, DatoAccordionGroupComponent, DatoAccordionHeaderComponent, DatoAccordionModule, DatoAceDirective, DatoAceDraggableDirective, DatoAceModule, DatoActionType, DatoAutoCompleteContentDirective, DatoAutoFocusDirective, DatoAutocompleteComponent, DatoAutocompleteDirective, DatoAutocompleteModule, DatoBreadcrumbsComponent, DatoBreadcrumbsModule, DatoButtonComponent, DatoButtonGroupComponent, DatoButtonGroupModule, DatoButtonModule, DatoCamelCasePipe, DatoCarouselComponent, DatoCarouselItemDirective, DatoCarouselItemElement, DatoCarouselModule, DatoCheckboxComponent, DatoCheckboxModule, DatoClipboardDirective, DatoColorDirective, DatoConfirmationDialogComponent, DatoControlErrorComponent, DatoControlErrorContainerDirective, DatoControlErrorsDirective, DatoCoreError, DatoCoreModule, DatoCustomHeaderTemplateComponent, DatoCustomHeaderTemplateDirective, DatoCustomMoreMenuTemplateDirective, DatoDatePickerContainerComponent, DatoDatePickerModule, DatoDatePickerRangeComponent, DatoDatePickerSingleComponent, DatoDialog, DatoDialogCloseDirective, DatoDialogComponent, DatoDialogContentComponent, DatoDialogDismissDirective, DatoDialogFooterComponent, DatoDialogHeaderComponent, DatoDialogModule, DatoDialogRef, DatoDirectivesModule, DatoDisableControlDirective, DatoDraggableDirective, DatoDynamicContentComponent, DatoDynamicContentModule, DatoEditableHeaderComponent, DatoEditableHeaderModule, DatoFileInputComponent, DatoFileInputDefaultComponent, DatoFileInputModule, DatoFilterConditions, DatoFontDirective, DatoFontIconComponent, DatoFontIconModule, DatoFormSubmitDirective, DatoFormValidationModule, DatoGrid, DatoGridAPI, DatoGridAvatarCellComponent, DatoGridColumnDisplayMenuComponent, DatoGridColumnHeaderComponent, DatoGridColumnHeaderMoreMenuComponent, DatoGridColumnTypes, DatoGridComponent, DatoGridControllerComponent, DatoGridDateFilterOptions, DatoGridFilterComponent, DatoGridFilterOptionsMap, DatoGridFilterSections, DatoGridFilterTypes, DatoGridGroupsMenuComponent, DatoGridHeaderComponent, DatoGridHeaderV2Component, DatoGridInitialsCellComponent, DatoGridItemsCellComponent, DatoGridModule, DatoGridMoreMenuActions, DatoGridNumberFilterOptions, DatoGridOnHoverComponent, DatoGridPaginationComponent, DatoGridPaginationV2Component, DatoGridStatusCellComponent, DatoGridStringFilterOptions, DatoGridToolbarComponent, DatoGridToolbarItemDirective, DatoGridToolbarItemElementDirective, DatoGridV2Component, DatoGridV2LoaderComponent, DatoGridV2Module, DatoGridV2NoDataOverlayComponent, DatoGridV2ToolbarButtonComponent, DatoGridV2ToolbarComponent, DatoGroupComponent, DatoHighlightPipe, DatoHotkeys, DatoHotkeysDirective, DatoHotkeysHelpComponent, DatoHotkeysModule, DatoIconButtonComponent, DatoIconButtonModule, DatoIconComponent, DatoIconModule, DatoInfiniteScrollComponent, DatoInfiniteScrollModule, DatoInputComponent, DatoInputModule, DatoInputNumberComponent, DatoInputNumberDirective, DatoInputNumberModule, DatoKebabCasePipe, DatoLinkButtonComponent, DatoLinkButtonModule, DatoListComponent, DatoListModule, DatoListNoDataComponent, DatoListNoResultComponent, DatoListV2Component, DatoListV2Module, DatoLoaderComponent, DatoLoadersModule, DatoMenuComponent, DatoMenuContentDirective, DatoMenuItemDirective, DatoMenuModule, DatoMenuTriggerForDirective, DatoMultiOptionComponent, DatoMultiOptionV2Component, DatoOperatorTogglerComponent, DatoOperatorTogglerModule, DatoOptionComponent, DatoOptionV2Component, DatoOptionsModule, DatoOriginDirective, DatoOverlay, DatoPageLoaderComponent, DatoPanel, DatoPanelComponent, DatoPanelContentComponent, DatoPanelFooterComponent, DatoPanelHeaderComponent, DatoPanelInternalConfig, DatoPanelModule, DatoPanelRef, DatoPillsComponent, DatoPillsModule, DatoPipesModule, DatoPopover, DatoPopoverComponent, DatoPopoverModule, DatoProgressBarComponent, DatoProgressBarModule, DatoRadioComponent, DatoRadioModule, DatoRichTextDirective, DatoRichTextModule, DatoSearchResultsGroupSortPipe, DatoSearchResultsSortPipe, DatoSearchableContainerComponent, DatoSearchableDirective, DatoSearchableHighlightDirective, DatoSearchableModule, DatoSelectActiveDirective, DatoSelectComponent, DatoSelectEmptyComponent, DatoSelectModule, DatoShortNumberPipe, DatoSliderComponent, DatoSliderModule, DatoSnackbar, DatoSnackbarComponent, DatoSnackbarModule, DatoSortableComponent, DatoSortableHandleDirective, DatoSortableModule, DatoStaticImageSrcDirective, DatoStaticImagesSrcModule, DatoSubscribeContext, DatoSubscribeDirective, DatoTab, DatoTabContent, DatoTabTitle, DatoTabsModule, DatoTabset, DatoTemplatePortal, DatoTextModule, DatoThemesModule, DatoToast, DatoToastComponent, DatoToastModule, DatoTogglerComponent, DatoTogglerModule, DatoTooltipDirective, DatoTooltipV2Directive, DatoTrackByPropPipe, DatoTranslateService, DatoTreePipe, DatoTriggerMulti, DatoTriggerSingle, DialogConfig, DialogResultStatus, Dimensions, EventModifiersPlugin, GridActionType, GridMinWidths, GridRowSelectionType, GridStatusColumnTypes, GridToolbarService, ISO_FORMAT, IconRegistry, KeyCodes, KeyboardEventKeys, ListValueTypes, MockService, OperatorTypes, POPPER_BOUNDARY, PaletteDirective, PanelResultCloseTrigger, PillType, PopoverCloseDirective, PopoverContentDirective, PopoverRef, PopoverTrigger, ROOT_NODE_ID, RelativeDateType, RenderMethod, RowSelectionType, RowSelectionTypeV2, SELECT_MAX_HEIGHT, SUPPORTED_LOCALES, SelectType, SnackbarRef, SnackbarType, Store, SvgRegistry, ToolbarActionType, ToolbarArea, ToolbarConfirmation, ToolbarDeleteConfirmation, ToolbarHandler, TranslatePipe, Types, _valueChanges, a, addClass, addJSObjectCompletor, allowedFileTypes, alphabeticalGroupSort, alphabeticalSort, appendChild, appendScript, appendStyle, appendToBody, assertString, camelCase, capitalize, cloneDeep, closest, coerceArray, coerceElement, compareWith, compose, convertFromTreeData, convertToTreeData, copyToClipboard, createComponent, createElement, createGUID, createHTMLCompletor, curry, dateCompare, daysOfTheMonth, debounce, declarations$2 as declarations, deepEqual, deepmerge, defaultActions$1 as defaultActions, defaultConfig, defaultEditableColumnRenderer, defaultGridOptions, defaultGridTreeLabel, defaultOptionsDisplayLimit, defaultTreeOptions, dialogSizePreset, diff, difference, differenceBy, dimensionsChanges, directives, drop, editableCellRendererWithSearchHighlight, escape, escapeRegExp, filter, filterByControlValue, filterByTerm, filterDialogDismissed, filterDialogSuccess, filterGroupByControlValue, filterGroupByTerm, filterKey, find, findIndex, findKey, fixNgLeaks, forEach, formatKeys, generateMonths, get, getAttr, getCustomRange, getDateISOString, getDefaultConfirmationOptions, getDefaultOptions, getDefaultsToastOptions, getElementCoords, getFunctionName, getGridConfiguration, getGridModel, getInitials, getLocalizedFormat, getMultiTemplate, getOptionTemplate, getPopperDefaults, getUTCDate, getVisibleActions, gridTreeFilePathKey, groupBy, groupSortOrder, has, inView, intersection, invert, isArrayValuesEqual, isArrowUpDown, isBoolean, isEmpty, isEmptyString, isEnter, isEqual, isEscape, isFraction, isFunction, isMacintosh, isNil, isNumber, isObject, isRangeCondition, isRangeCustom, isString, isTestEnv, isValidMediaLink, kebabCase, keyBy, keysSymbols, last, map, mapKeys, mapValues, maxFileSize, merge, minBy, mockInDev, mocks, ngContentResolver, noop, normalizeData, omit, omitBy, optionalDebounce, pallete, parseDateString, partial, polling, prependChild, publicApi$1 as publicApi, query, queryAll, random, rawDiff, reject, relativeDateTypes, removeClass, resolveRange, round, searchHighlightCellRenderer, searchResultsGroupSort, searchResultsSort, setAttr, setAttribute, setDimensions, setEmptyFolderClass, setGridConfiguration, setGridModel, setMaxDimensions, setMinDimensions, setStyle, setStyles, shortNumber, size, sortBy, stubs, supportedLocales, tapLog, tapOnce, throttle, toBoolean, toFormData, toNumber, toResponseBody, toString, toggleClass, toolbarActionToContextAction, tryParsePivotValue, unescape, union, uniq, uniqBy, uploadProgress, validBase64Image, validUrl, validateCondition, validateDate, validateDateCondition, validateFilter, validateNumberCondition, validateRange, validateStringCondition, values, workerMap, zoneStable, ɵ0$2 as ɵ0, ɵ1$2 as ɵ1, ɵ2, DATO_CORE_CONFIG as ɵb, DatoGridHelper as ɵc, Popper as ɵd, GridQuery as ɵe, GridStore as ɵf, GridService as ɵg, DatoDateRangesFilterPipe as ɵh, ListStore as ɵi, DatoListSelectAllComponent as ɵj, DatoGridMultiSelectColumnHeaderComponent as ɵk, DatoGridItemsCountCellComponent as ɵl, DatoGridV2ToolbarMoreMenuComponent as ɵm, DatoGridSearchBarComponent as ɵn, RichTextService as ɵo };
22945
+ export { APP_TRANSLATE, AceService, BaseCustomControl, COMPARE_RESULT, CUSTOM_RANGE_ID, ColorPalette, ConfirmationType, ContentRef, ContentType, CustomHeaderControllerService, DATE_PICKER_CONFIG, DATE_PICKER_POPOVER_ID, DATO_CORE_LOGGER, DATO_FORM_ERRORS, DATO_GRID_STORAGE_API, DEFAULT_FORMAT, DEFAULT_GRID_SEARCH_DEBOUNCE_TIME, DatePickerConfig, DatePickerMonthComponent, DateType, DatoAccordionComponent, DatoAccordionContentComponent, DatoAccordionGroupComponent, DatoAccordionHeaderComponent, DatoAccordionModule, DatoAceDirective, DatoAceDraggableDirective, DatoAceModule, DatoActionType, DatoAutoCompleteContentDirective, DatoAutoFocusDirective, DatoAutocompleteComponent, DatoAutocompleteDirective, DatoAutocompleteModule, DatoBreadcrumbsComponent, DatoBreadcrumbsModule, DatoButtonComponent, DatoButtonGroupComponent, DatoButtonGroupModule, DatoButtonModule, DatoCamelCasePipe, DatoCarouselComponent, DatoCarouselItemDirective, DatoCarouselItemElement, DatoCarouselModule, DatoCheckboxComponent, DatoCheckboxModule, DatoClipboardDirective, DatoColorDirective, DatoConfirmationDialogComponent, DatoControlErrorComponent, DatoControlErrorContainerDirective, DatoControlErrorsDirective, DatoCoreError, DatoCoreModule, DatoCustomHeaderTemplateComponent, DatoCustomHeaderTemplateDirective, DatoCustomMoreMenuTemplateDirective, DatoDatePickerContainerComponent, DatoDatePickerModule, DatoDatePickerRangeComponent, DatoDatePickerSingleComponent, DatoDialog, DatoDialogCloseDirective, DatoDialogComponent, DatoDialogContentComponent, DatoDialogDismissDirective, DatoDialogFooterComponent, DatoDialogHeaderComponent, DatoDialogModule, DatoDialogRef, DatoDirectivesModule, DatoDisableControlDirective, DatoDraggableDirective, DatoDynamicContentComponent, DatoDynamicContentModule, DatoEditableHeaderComponent, DatoEditableHeaderModule, DatoFileInputComponent, DatoFileInputDefaultComponent, DatoFileInputModule, DatoFilterConditions, DatoFontDirective, DatoFontIconComponent, DatoFontIconModule, DatoFormSubmitDirective, DatoFormValidationModule, DatoGrid, DatoGridAPI, DatoGridAvatarCellComponent, DatoGridColumnDisplayMenuComponent, DatoGridColumnHeaderComponent, DatoGridColumnHeaderMoreMenuComponent, DatoGridColumnTypes, DatoGridComponent, DatoGridControllerComponent, DatoGridDateFilterOptions, DatoGridFilterComponent, DatoGridFilterOptionsMap, DatoGridFilterSections, DatoGridFilterTypes, DatoGridGroupsMenuComponent, DatoGridHeaderComponent, DatoGridHeaderV2Component, DatoGridInitialsCellComponent, DatoGridItemsCellComponent, DatoGridModule, DatoGridMoreMenuActions, DatoGridNumberFilterOptions, DatoGridOnHoverComponent, DatoGridPaginationComponent, DatoGridPaginationV2Component, DatoGridStatusCellComponent, DatoGridStringFilterOptions, DatoGridToolbarComponent, DatoGridToolbarItemDirective, DatoGridToolbarItemElementDirective, DatoGridV2Component, DatoGridV2LoaderComponent, DatoGridV2Module, DatoGridV2NoDataOverlayComponent, DatoGridV2ToolbarButtonComponent, DatoGridV2ToolbarComponent, DatoGroupComponent, DatoHighlightPipe, DatoHotkeys, DatoHotkeysDirective, DatoHotkeysHelpComponent, DatoHotkeysModule, DatoIconButtonComponent, DatoIconButtonModule, DatoIconComponent, DatoIconModule, DatoInfiniteScrollComponent, DatoInfiniteScrollModule, DatoInputComponent, DatoInputModule, DatoInputNumberComponent, DatoInputNumberDirective, DatoInputNumberModule, DatoKebabCasePipe, DatoLinkButtonComponent, DatoLinkButtonModule, DatoListComponent, DatoListModule, DatoListNoDataComponent, DatoListNoResultComponent, DatoListV2Component, DatoListV2Module, DatoLoaderComponent, DatoLoadersModule, DatoMenuComponent, DatoMenuContentDirective, DatoMenuItemDirective, DatoMenuModule, DatoMenuTriggerForDirective, DatoMultiOptionComponent, DatoMultiOptionV2Component, DatoOperatorTogglerComponent, DatoOperatorTogglerModule, DatoOptionComponent, DatoOptionV2Component, DatoOptionsModule, DatoOriginDirective, DatoOverlay, DatoPageLoaderComponent, DatoPanel, DatoPanelComponent, DatoPanelContentComponent, DatoPanelFooterComponent, DatoPanelHeaderComponent, DatoPanelInternalConfig, DatoPanelModule, DatoPanelRef, DatoPillsComponent, DatoPillsModule, DatoPipesModule, DatoPopover, DatoPopoverComponent, DatoPopoverModule, DatoProgressBarComponent, DatoProgressBarModule, DatoRadioComponent, DatoRadioModule, DatoRichTextDirective, DatoRichTextModule, DatoSearchResultsGroupSortPipe, DatoSearchResultsSortPipe, DatoSearchableContainerComponent, DatoSearchableDirective, DatoSearchableHighlightDirective, DatoSearchableModule, DatoSelectActiveDirective, DatoSelectComponent, DatoSelectEmptyComponent, DatoSelectModule, DatoShortNumberPipe, DatoSliderComponent, DatoSliderModule, DatoSnackbar, DatoSnackbarComponent, DatoSnackbarModule, DatoSortableComponent, DatoSortableHandleDirective, DatoSortableModule, DatoStaticImageSrcDirective, DatoStaticImagesSrcModule, DatoSubscribeContext, DatoSubscribeDirective, DatoTab, DatoTabContent, DatoTabTitle, DatoTabsModule, DatoTabset, DatoTemplatePortal, DatoTextModule, DatoThemesModule, DatoToast, DatoToastComponent, DatoToastModule, DatoTogglerComponent, DatoTogglerModule, DatoTooltipDirective, DatoTooltipV2Directive, DatoTrackByPropPipe, DatoTranslateService, DatoTreePipe, DatoTriggerMulti, DatoTriggerSingle, DialogConfig, DialogResultStatus, Dimensions, EventModifiersPlugin, GridActionType, GridMinWidths, GridRowSelectionType, GridStatusColumnTypes, GridToolbarService, ISO_FORMAT, IconRegistry, KeyCodes, KeyboardEventKeys, ListValueTypes, MockService, OperatorTypes, POPPER_BOUNDARY, PaletteDirective, PanelResultCloseTrigger, PillType, PopoverCloseDirective, PopoverContentDirective, PopoverRef, PopoverTrigger, ROOT_NODE_ID, RelativeDateType, RenderMethod, RowSelectionType, RowSelectionTypeV2, SELECT_MAX_HEIGHT, SUPPORTED_LOCALES, SelectType, SnackbarRef, SnackbarType, Store, SvgRegistry, ToolbarActionType, ToolbarArea, ToolbarConfirmation, ToolbarDeleteConfirmation, ToolbarHandler, TranslatePipe, Types, _valueChanges, a, addClass, addJSObjectCompletor, allowedFileTypes, alphabeticalGroupSort, alphabeticalSort, appendChild, appendScript, appendStyle, appendToBody, assertString, camelCase, capitalize, cloneDeep, closest, coerceArray, coerceElement, compareWith, compose, convertFromTreeData, convertToTreeData, createComponent, createElement, createGUID, createHTMLCompletor, curry, dateCompare, daysOfTheMonth, debounce, declarations$2 as declarations, deepEqual, deepmerge, defaultActions$1 as defaultActions, defaultConfig, defaultEditableColumnRenderer, defaultGridOptions, defaultGridTreeLabel, defaultOptionsDisplayLimit, defaultTreeOptions, dialogSizePreset, diff, difference, differenceBy, dimensionsChanges, directives, drop, editableCellRendererWithSearchHighlight, escape, escapeRegExp, filter, filterByControlValue, filterByTerm, filterDialogDismissed, filterDialogSuccess, filterGroupByControlValue, filterGroupByTerm, filterKey, find, findIndex, findKey, fixNgLeaks, forEach, formatKeys, generateMonths, get, getAttr, getCustomRange, getDateISOString, getDefaultConfirmationOptions, getDefaultOptions, getDefaultsToastOptions, getElementCoords, getFunctionName, getGridConfiguration, getGridModel, getInitials, getLocalizedFormat, getMultiTemplate, getOptionTemplate, getPopperDefaults, getUTCDate, getVisibleActions, gridTreeFilePathKey, groupBy, groupSortOrder, has, inView, intersection, invert, isArrayValuesEqual, isArrowUpDown, isBoolean, isEmpty, isEmptyString, isEnter, isEqual, isEscape, isFraction, isFunction, isMacintosh, isNil, isNumber, isObject, isRangeCondition, isRangeCustom, isString, isTestEnv, isValidMediaLink, kebabCase, keyBy, keysSymbols, last, map, mapKeys, mapValues, maxFileSize, merge, minBy, mockInDev, mocks, ngContentResolver, noop, normalizeData, omit, omitBy, optionalDebounce, pallete, parseDateString, partial, polling, prependChild, publicApi$1 as publicApi, query, queryAll, random, rawDiff, readFromClipboard, reject, relativeDateTypes, removeClass, resolveRange, round, searchHighlightCellRenderer, searchResultsGroupSort, searchResultsSort, setAttr, setAttribute, setDimensions, setGridConfiguration, setGridModel, setMaxDimensions, setMinDimensions, setStyle, setStyles, shortNumber, size, sortBy, stubs, supportedLocales, tapLog, tapOnce, throttle, toBoolean, toFormData, toNumber, toResponseBody, toString, toggleClass, toolbarActionToContextAction, tryParsePivotValue, unescape, union, uniq, uniqBy, uploadProgress, validBase64Image, validUrl, validateCondition, validateDate, validateDateCondition, validateFilter, validateNumberCondition, validateRange, validateStringCondition, values, workerMap, writeToClipboard, zoneStable, ɵ0$2 as ɵ0, ɵ1$2 as ɵ1, ɵ2, DATO_CORE_CONFIG as ɵb, DatoGridHelper as ɵc, Popper as ɵd, GridQuery as ɵe, GridStore as ɵf, GridService as ɵg, DatoDateRangesFilterPipe as ɵh, ListStore as ɵi, DatoListSelectAllComponent as ɵj, DatoGridMultiSelectColumnHeaderComponent as ɵk, DatoGridItemsCountCellComponent as ɵl, DatoGridV2ToolbarMoreMenuComponent as ɵm, DatoGridSearchBarComponent as ɵn };
22981
22946
  //# sourceMappingURL=datorama-core.js.map