@theseam/ui-common 1.0.0-beta.0 → 1.0.0-beta.10

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 (153) hide show
  1. package/breadcrumbs/index.d.ts +1 -2
  2. package/buttons/index.d.ts +20 -13
  3. package/datatable/index.d.ts +77 -39
  4. package/dynamic/index.d.ts +5 -5
  5. package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
  6. package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
  7. package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
  8. package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  9. package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
  10. package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
  11. package/fesm2022/theseam-ui-common-card.mjs +21 -21
  12. package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
  13. package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
  14. package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
  15. package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
  16. package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
  17. package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
  18. package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  19. package/fesm2022/theseam-ui-common-core.mjs +31 -11
  20. package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
  21. package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
  22. package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
  23. package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
  24. package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
  25. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
  26. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
  27. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
  28. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  29. package/fesm2022/theseam-ui-common-datatable.mjs +727 -420
  30. package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
  31. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
  32. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  33. package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
  34. package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
  35. package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
  36. package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
  37. package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
  38. package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
  39. package/fesm2022/theseam-ui-common-form-field.mjs +129 -76
  40. package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
  41. package/fesm2022/theseam-ui-common-framework.mjs +669 -543
  42. package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
  44. package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
  45. package/fesm2022/theseam-ui-common-graphql.mjs +311 -254
  46. package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
  47. package/fesm2022/theseam-ui-common-icon.mjs +125 -89
  48. package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
  49. package/fesm2022/theseam-ui-common-layout.mjs +18 -26
  50. package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
  51. package/fesm2022/theseam-ui-common-loading.mjs +19 -28
  52. package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
  53. package/fesm2022/theseam-ui-common-menu.mjs +124 -95
  54. package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
  55. package/fesm2022/theseam-ui-common-modal.mjs +178 -129
  56. package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
  57. package/fesm2022/theseam-ui-common-models.mjs +3 -3
  58. package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
  59. package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
  60. package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
  61. package/fesm2022/theseam-ui-common-popover.mjs +81 -88
  62. package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
  63. package/fesm2022/theseam-ui-common-progress.mjs +15 -19
  64. package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
  65. package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
  66. package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
  67. package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
  68. package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
  69. package/fesm2022/theseam-ui-common-services.mjs +41 -26
  70. package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
  71. package/fesm2022/theseam-ui-common-shared.mjs +149 -159
  72. package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
  73. package/fesm2022/theseam-ui-common-storage.mjs +9 -6
  74. package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
  75. package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
  76. package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
  78. package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2022/theseam-ui-common-table-cell-type.mjs +63 -39
  80. package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
  81. package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
  82. package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
  83. package/fesm2022/theseam-ui-common-table.mjs +62 -41
  84. package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
  85. package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
  86. package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
  87. package/fesm2022/theseam-ui-common-testing.mjs +13 -10
  88. package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
  89. package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
  90. package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
  91. package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
  92. package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
  93. package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
  94. package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
  95. package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
  96. package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
  97. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
  98. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  99. package/fesm2022/theseam-ui-common-utils.mjs +113 -77
  100. package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
  101. package/fesm2022/theseam-ui-common-validators.mjs +10 -9
  102. package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
  103. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
  104. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  105. package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
  106. package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
  107. package/fesm2022/theseam-ui-common-widget.mjs +288 -314
  108. package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
  109. package/form-field/index.d.ts +1 -1
  110. package/framework/base-layout/base-layout.component.scss +9 -4
  111. package/framework/base-layout/styles/_variables.scss +4 -9
  112. package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
  113. package/framework/index.d.ts +6 -6
  114. package/framework/nav/nav-item/nav-item.component.scss +7 -6
  115. package/framework/nav/styles/_themes/light/_variables.scss +21 -5
  116. package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
  117. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
  118. package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
  119. package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
  120. package/graphql/index.d.ts +49 -7
  121. package/modal/README.md +5 -5
  122. package/modal/index.d.ts +1 -1
  123. package/models/index.d.ts +1 -1
  124. package/package.json +59 -60
  125. package/popover/index.d.ts +0 -2
  126. package/progress/progress-circle/styles/_variables.scss +15 -3
  127. package/shared/index.d.ts +0 -13
  128. package/story-helpers/index.d.ts +11 -1
  129. package/styles/bootstrap/_bootstrap.scss +34 -34
  130. package/styles/bootstrap/_bs-styles.scss +4 -8
  131. package/styles/bootstrap/_bs-utilities.scss +4 -4
  132. package/styles/bootstrap/_bs-variables.scss +65 -70
  133. package/styles/common/_forms.scss +9 -10
  134. package/styles/common/_global.scss +0 -1
  135. package/styles/common/_hacks.scss +1 -1
  136. package/styles/common/_table.scss +0 -1
  137. package/styles/common/_text.scss +3 -1
  138. package/styles/theme.scss +1 -1
  139. package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
  140. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
  141. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
  142. package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
  143. package/styles/vendor/quill/_quill.scss +15 -9
  144. package/table/index.d.ts +4 -1
  145. package/table-cell-type/index.d.ts +27 -2
  146. package/tel-input/README.md +27 -27
  147. package/utils/index.d.ts +3 -3
  148. package/viewers/index.d.ts +9 -2
  149. package/widget/_widget-theme.scss +1 -1
  150. package/widget/styles/_variables.scss +2 -2
  151. package/widget/widget/widget.component.scss +0 -2
  152. package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
  153. package/widget/widget-footer/widget-footer.component.scss +0 -1
@@ -3,7 +3,7 @@ import { trigger, transition, style, animate } from '@angular/animations';
3
3
  import { coerceArray } from '@angular/cdk/coercion';
4
4
  import { DataSource, isDataSource } from '@angular/cdk/collections';
5
5
  import * as i0 from '@angular/core';
6
- import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ContentChildren, ViewChild, Directive, Injectable, TemplateRef, ContentChild, Self, Inject, forwardRef, InjectionToken, Optional, isDevMode, inject, ChangeDetectorRef, ElementRef, HostListener, HostBinding, NgModule } from '@angular/core';
6
+ import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ContentChildren, ViewChild, Directive, Injectable, TemplateRef, ContentChild, Self, Inject, forwardRef, InjectionToken, Optional, isDevMode, input, inject, ChangeDetectorRef, ElementRef, HostListener, HostBinding, NgModule } from '@angular/core';
7
7
  import { Subject, BehaviorSubject, of, startWith as startWith$1, map as map$1, switchMap as switchMap$1, combineLatest, defer, EMPTY, debounceTime, tap as tap$1, Subscription, from, isObservable } from 'rxjs';
8
8
  import { switchMap, map, startWith, auditTime, shareReplay, take, tap, distinctUntilChanged, takeUntil, concatMap, catchError } from 'rxjs/operators';
9
9
  import { faEllipsisH, faChevronDown, faChevronRight, faSpinner, faFilter, faColumns, faFileDownload } from '@fortawesome/free-solid-svg-icons';
@@ -19,36 +19,36 @@ import { TheSeamConfirmDialogModule } from '@theseam/ui-common/confirm-dialog';
19
19
  import * as i2 from '@angular/router';
20
20
  import { RouterModule } from '@angular/router';
21
21
  import * as i2$1 from '@angular/common';
22
- import { CommonModule } from '@angular/common';
23
- import * as i5 from '@theseam/ui-common/icon';
22
+ import { CommonModule, NgTemplateOutlet } from '@angular/common';
23
+ import * as i3 from '@theseam/ui-common/icon';
24
24
  import { TheSeamIconModule } from '@theseam/ui-common/icon';
25
- import * as i4$1 from '@angular/forms';
26
- import { FormGroup, FormControl, FormGroupDirective, ControlContainer, UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
25
+ import * as i9 from '@theseam/ui-common/table-cell-type';
26
+ import { setColumnAlignDefaults, TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type';
27
+ import * as i2$2 from '@angular/forms';
28
+ import { FormGroup, FormControl, FormGroupDirective, ControlContainer, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
27
29
  import * as i1$1 from '@theseam/ui-common/services';
28
30
  import * as i7 from '@fortawesome/angular-fontawesome';
29
31
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
30
- import * as i2$2 from '@theseam/ui-common/shared';
31
- import { TheSeamSharedModule } from '@theseam/ui-common/shared';
32
- import * as i3$1 from '@theseam/ui-common/buttons';
32
+ import * as i8 from '@theseam/ui-common/shared';
33
+ import { TheSeamNgSelectExtraDirective, TheSeamAutoFocusDirective, TheSeamSharedModule } from '@theseam/ui-common/shared';
34
+ import * as i4$2 from '@theseam/ui-common/buttons';
33
35
  import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
34
- import * as i11 from '@theseam/ui-common/popover';
36
+ import * as i2$3 from '@theseam/ui-common/popover';
35
37
  import { TheSeamPopoverModule } from '@theseam/ui-common/popover';
36
- import * as i12 from '@theseam/ui-common/table-cell-type';
37
- import { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type';
38
- import * as i3 from '@theseam/ui-common/form-field';
39
- import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
40
- import * as i5$1 from '@ng-select/ng-select';
38
+ import * as i3$1 from '@ng-select/ng-select';
41
39
  import { NgSelectModule } from '@ng-select/ng-select';
42
- import * as i4$2 from '@theseam/ui-common/checkbox';
40
+ import * as i4$1 from '@theseam/ui-common/form-field';
41
+ import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
42
+ import * as i4$3 from '@theseam/ui-common/checkbox';
43
43
  import { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox';
44
44
  import * as i3$2 from '@theseam/ui-common/dynamic';
45
45
  import { THESEAM_DYNAMIC_DATA } from '@theseam/ui-common/dynamic';
46
46
  import * as i1$2 from 'ngx-toastr';
47
47
  import { ToastrModule } from 'ngx-toastr';
48
- import * as i2$3 from '@theseam/ui-common/loading';
48
+ import * as i2$4 from '@theseam/ui-common/loading';
49
49
  import { TheSeamLoadingModule } from '@theseam/ui-common/loading';
50
50
  import * as i1$3 from '@theseam/ui-common/modal';
51
- import * as i2$4 from '@theseam/ui-common/dynamic-component-loader';
51
+ import * as i2$5 from '@theseam/ui-common/dynamic-component-loader';
52
52
  import * as i3$3 from '@angular/common/http';
53
53
  import { ESCAPE } from '@angular/cdk/keycodes';
54
54
  import { TemplatePortal, PortalModule } from '@angular/cdk/portal';
@@ -77,16 +77,16 @@ class DatatableActionMenuItemComponent {
77
77
  subMenu;
78
78
  // eslint-disable-next-line @angular-eslint/no-output-native
79
79
  click = new EventEmitter();
80
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuItemComponent, isStandalone: false, selector: "seam-datatable-action-menu-item", inputs: { label: "label", href: ["attr.href", "href"], target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", routerLink: "routerLink", confirmDialog: "confirmDialog", disabled: "disabled", subMenu: "subMenu" }, outputs: { click: "click" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableActionMenuItemComponent, isStandalone: false, selector: "seam-datatable-action-menu-item", inputs: { label: "label", href: ["attr.href", "href"], target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", routerLink: "routerLink", confirmDialog: "confirmDialog", disabled: "disabled", subMenu: "subMenu" }, outputs: { click: "click" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
82
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuItemComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{
86
86
  selector: 'seam-datatable-action-menu-item',
87
87
  template: ``,
88
88
  changeDetection: ChangeDetectionStrategy.OnPush,
89
- standalone: false
89
+ standalone: false,
90
90
  }]
91
91
  }], propDecorators: { label: [{
92
92
  type: Input
@@ -162,9 +162,10 @@ class DatatableActionMenuComponent {
162
162
  }
163
163
  activateItem(event, item) {
164
164
  if (item.confirmDialog) {
165
- this._confirmDialog.open(item.confirmDialog.message, item.confirmDialog.alert)
165
+ this._confirmDialog
166
+ .open(item.confirmDialog.message, item.confirmDialog.alert)
166
167
  .afterClosed()
167
- .subscribe(v => {
168
+ .subscribe((v) => {
168
169
  if (v === 'confirm') {
169
170
  item.click.emit(event);
170
171
  if (item.href) {
@@ -197,7 +198,9 @@ class DatatableActionMenuComponent {
197
198
  if (item.state) {
198
199
  extras.state = item.state;
199
200
  }
200
- const commands = Array.isArray(item.routerLink) ? item.routerLink : [item.routerLink];
201
+ const commands = Array.isArray(item.routerLink)
202
+ ? item.routerLink
203
+ : [item.routerLink];
201
204
  this._router.navigate(commands, extras);
202
205
  }
203
206
  }
@@ -207,15 +210,15 @@ class DatatableActionMenuComponent {
207
210
  item.click.emit(event);
208
211
  }
209
212
  }
210
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuComponent, deps: [{ token: i1.SeamConfirmDialogService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
211
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuComponent, isStandalone: false, selector: "seam-datatable-action-menu", inputs: { isSubMenu: "isSubMenu" }, queries: [{ propertyName: "items", predicate: DatatableActionMenuItemComponent }], viewQueries: [{ propertyName: "menu", first: true, predicate: MenuComponent, descendants: true, static: true }], exportAs: ["seamDatatableActionMenu"], ngImport: i0, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\">\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu && items?.length\">\n <button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i5.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }] });
213
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuComponent, deps: [{ token: i1.SeamConfirmDialogService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
214
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableActionMenuComponent, isStandalone: false, selector: "seam-datatable-action-menu", inputs: { isSubMenu: "isSubMenu" }, queries: [{ propertyName: "items", predicate: DatatableActionMenuItemComponent }], viewQueries: [{ propertyName: "menu", first: true, predicate: MenuComponent, descendants: true, static: true }], exportAs: ["seamDatatableActionMenu"], ngImport: i0, template: "<seam-menu\n #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\"\n>\n <ng-container *ngFor=\"let item of items\">\n <ng-container\n *ngIf=\"\n (item.routerLink || item.href) && !item.confirmDialog;\n else noRouterLink\n \"\n >\n <a\n *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\"\n >\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\"\n >\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\"\n >\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\"\n >\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu && items?.length\">\n <button\n type=\"button\"\n class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\"\n >\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }] });
212
215
  }
213
216
  __decorate([
214
217
  InputBoolean()
215
218
  ], DatatableActionMenuComponent.prototype, "isSubMenu", void 0);
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuComponent, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuComponent, decorators: [{
217
220
  type: Component,
218
- args: [{ selector: 'seam-datatable-action-menu', exportAs: 'seamDatatableActionMenu', standalone: false, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\">\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu && items?.length\">\n <button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
221
+ args: [{ selector: 'seam-datatable-action-menu', exportAs: 'seamDatatableActionMenu', standalone: false, template: "<seam-menu\n #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\"\n>\n <ng-container *ngFor=\"let item of items\">\n <ng-container\n *ngIf=\"\n (item.routerLink || item.href) && !item.confirmDialog;\n else noRouterLink\n \"\n >\n <a\n *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\"\n >\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\"\n >\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\"\n >\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\"\n >\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu && items?.length\">\n <button\n type=\"button\"\n class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\"\n >\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
219
222
  }], ctorParameters: () => [{ type: i1.SeamConfirmDialogService }, { type: i2.Router }], propDecorators: { menu: [{
220
223
  type: ViewChild,
221
224
  args: [MenuComponent, { static: true }]
@@ -231,14 +234,14 @@ class DatatableCellTplDirective {
231
234
  constructor(template) {
232
235
  this.template = template;
233
236
  }
234
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableCellTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
235
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableCellTplDirective, isStandalone: false, selector: "[seamDatatableCellTpl]", ngImport: i0 });
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableCellTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
238
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableCellTplDirective, isStandalone: false, selector: "[seamDatatableCellTpl]", ngImport: i0 });
236
239
  }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableCellTplDirective, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableCellTplDirective, decorators: [{
238
241
  type: Directive,
239
242
  args: [{
240
243
  selector: '[seamDatatableCellTpl]',
241
- standalone: false
244
+ standalone: false,
242
245
  }]
243
246
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
244
247
 
@@ -250,10 +253,10 @@ class DatatableColumnChangesService {
250
253
  onInputChange() {
251
254
  this.columnInputChanges.next(undefined);
252
255
  }
253
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
254
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnChangesService });
256
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
257
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnChangesService });
255
258
  }
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnChangesService, decorators: [{
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnChangesService, decorators: [{
257
260
  type: Injectable
258
261
  }] });
259
262
 
@@ -285,6 +288,9 @@ class DatatableColumnComponent {
285
288
  summaryFunc;
286
289
  summaryTemplate;
287
290
  hidden;
291
+ align;
292
+ alignHeader;
293
+ alignCell;
288
294
  _isFirstChange = true;
289
295
  cellTplDirective;
290
296
  // eslint-disable-next-line @angular-eslint/no-input-rename
@@ -307,6 +313,7 @@ class DatatableColumnComponent {
307
313
  // get treeToggleTemplate(): TemplateRef<any> {
308
314
  // return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;
309
315
  // }
316
+ __propsChanged = [];
310
317
  constructor(_columnChangesService) {
311
318
  this._columnChangesService = _columnChangesService;
312
319
  }
@@ -317,6 +324,13 @@ class DatatableColumnComponent {
317
324
  else {
318
325
  this._columnChangesService.onInputChange();
319
326
  }
327
+ for (const propName in changes) {
328
+ if (Object.prototype.hasOwnProperty.call(changes, propName)) {
329
+ if (!this.__propsChanged.includes(propName)) {
330
+ this.__propsChanged.push(propName);
331
+ }
332
+ }
333
+ }
320
334
  }
321
335
  getCellDirective() {
322
336
  if (this.cellTplDirective) {
@@ -324,12 +338,12 @@ class DatatableColumnComponent {
324
338
  }
325
339
  return null;
326
340
  }
327
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnComponent, deps: [{ token: DatatableColumnChangesService }], target: i0.ɵɵFactoryTarget.Component });
328
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnComponent, isStandalone: false, selector: "seam-datatable-column", inputs: { name: "name", prop: "prop", flexGrow: "flexGrow", minWidth: "minWidth", maxWidth: "maxWidth", width: "width", resizeable: "resizeable", sortable: "sortable", draggable: "draggable", canAutoResize: "canAutoResize", comparator: "comparator", headerTemplate: "headerTemplate", checkboxable: "checkboxable", headerCheckboxable: "headerCheckboxable", headerClass: "headerClass", cellClass: "cellClass", frozenLeft: "frozenLeft", frozenRight: "frozenRight", pipe: "pipe", isTreeColumn: "isTreeColumn", treeLevelIndent: "treeLevelIndent", summaryFunc: "summaryFunc", summaryTemplate: "summaryTemplate", hidden: "hidden", _cellTemplateInput: ["cellTemplate", "_cellTemplateInput"] }, queries: [{ propertyName: "cellTplDirective", first: true, predicate: DatatableCellTplDirective, descendants: true, static: true }, { propertyName: "_cellTemplateQuery", first: true, predicate: DatatableCellTplDirective, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<p>\n datatable-column works!\n</p>\n", styles: [""] });
341
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnComponent, deps: [{ token: DatatableColumnChangesService }], target: i0.ɵɵFactoryTarget.Component });
342
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnComponent, isStandalone: false, selector: "seam-datatable-column", inputs: { name: "name", prop: "prop", flexGrow: "flexGrow", minWidth: "minWidth", maxWidth: "maxWidth", width: "width", resizeable: "resizeable", sortable: "sortable", draggable: "draggable", canAutoResize: "canAutoResize", comparator: "comparator", headerTemplate: "headerTemplate", checkboxable: "checkboxable", headerCheckboxable: "headerCheckboxable", headerClass: "headerClass", cellClass: "cellClass", frozenLeft: "frozenLeft", frozenRight: "frozenRight", pipe: "pipe", isTreeColumn: "isTreeColumn", treeLevelIndent: "treeLevelIndent", summaryFunc: "summaryFunc", summaryTemplate: "summaryTemplate", hidden: "hidden", align: "align", alignHeader: "alignHeader", alignCell: "alignCell", _cellTemplateInput: ["cellTemplate", "_cellTemplateInput"] }, queries: [{ propertyName: "cellTplDirective", first: true, predicate: DatatableCellTplDirective, descendants: true, static: true }, { propertyName: "_cellTemplateQuery", first: true, predicate: DatatableCellTplDirective, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<p>datatable-column works!</p>\n", styles: [""] });
329
343
  }
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnComponent, decorators: [{
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnComponent, decorators: [{
331
345
  type: Component,
332
- args: [{ selector: 'seam-datatable-column', standalone: false, template: "<p>\n datatable-column works!\n</p>\n" }]
346
+ args: [{ selector: 'seam-datatable-column', standalone: false, template: "<p>datatable-column works!</p>\n" }]
333
347
  }], ctorParameters: () => [{ type: DatatableColumnChangesService }], propDecorators: { name: [{
334
348
  type: Input
335
349
  }], prop: [{
@@ -378,6 +392,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
378
392
  type: Input
379
393
  }], hidden: [{
380
394
  type: Input
395
+ }], align: [{
396
+ type: Input
397
+ }], alignHeader: [{
398
+ type: Input
399
+ }], alignCell: [{
400
+ type: Input
381
401
  }], cellTplDirective: [{
382
402
  type: ContentChild,
383
403
  args: [DatatableCellTplDirective, { static: true }]
@@ -388,20 +408,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
388
408
  type: ContentChild,
389
409
  args: [DatatableCellTplDirective, { read: TemplateRef, static: true }]
390
410
  }] } });
411
+ /**
412
+ * Check if a column is bound to a property.
413
+ *
414
+ * This is not guaranteed to be 100% accurate in all cases, but Angular seems
415
+ * to now define properties on the instance for all inputs. So, just relying
416
+ * on defined properties determine if bound will not work. The workaround is
417
+ * to track changes in `ngOnChanges` and use that to determine if a property
418
+ * is bound.
419
+ *
420
+ * NOTE: This is not an instance method, because the way we are handling the
421
+ * instance was causing the method to not be available where needed.
422
+ *
423
+ * @param column the column to check
424
+ * @param propName name of an input property
425
+ * @returns true if the property is bound, false otherwise
426
+ */
427
+ function isColumnBoundToProp(column, propName) {
428
+ return column.__propsChanged.includes(propName);
429
+ }
391
430
 
392
431
  class DatatableFooterTplDirective {
393
432
  template;
394
433
  constructor(template) {
395
434
  this.template = template;
396
435
  }
397
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFooterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
398
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableFooterTplDirective, isStandalone: false, selector: "[seamDatatableFooterTpl]", ngImport: i0 });
436
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableFooterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
437
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableFooterTplDirective, isStandalone: false, selector: "[seamDatatableFooterTpl]", ngImport: i0 });
399
438
  }
400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFooterTplDirective, decorators: [{
439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableFooterTplDirective, decorators: [{
401
440
  type: Directive,
402
441
  args: [{
403
442
  selector: '[seamDatatableFooterTpl]',
404
- standalone: false
443
+ standalone: false,
405
444
  }]
406
445
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
407
446
 
@@ -412,22 +451,25 @@ class TheSeamDatatableFooterDirective {
412
451
  get template() {
413
452
  return this._templateInput || this._templateQuery;
414
453
  }
415
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
416
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamDatatableFooterDirective, isStandalone: false, selector: "seam-datatable-footer", inputs: { _templateInput: ["template", "_templateInput"] }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableFooterTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
454
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
455
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamDatatableFooterDirective, isStandalone: false, selector: "seam-datatable-footer", inputs: { _templateInput: ["template", "_templateInput"] }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableFooterTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
417
456
  }
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableFooterDirective, decorators: [{
457
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableFooterDirective, decorators: [{
419
458
  type: Directive,
420
459
  args: [{
421
460
  // eslint-disable-next-line @angular-eslint/directive-selector
422
461
  selector: 'seam-datatable-footer',
423
- standalone: false
462
+ standalone: false,
424
463
  }]
425
464
  }], propDecorators: { _templateInput: [{
426
465
  type: Input,
427
466
  args: ['template']
428
467
  }], _templateQuery: [{
429
468
  type: ContentChild,
430
- args: [DatatableFooterTplDirective, { read: TemplateRef, static: true }]
469
+ args: [DatatableFooterTplDirective, {
470
+ read: TemplateRef,
471
+ static: true,
472
+ }]
431
473
  }] } });
432
474
 
433
475
  class DatatableFilterDirective {
@@ -440,14 +482,14 @@ class DatatableFilterDirective {
440
482
  get filter() {
441
483
  return this._filter;
442
484
  }
443
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFilterDirective, deps: [{ token: THESEAM_DATA_FILTER, self: true }], target: i0.ɵɵFactoryTarget.Directive });
444
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableFilterDirective, isStandalone: false, selector: "[seamDatatableFilter]", ngImport: i0 });
485
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableFilterDirective, deps: [{ token: THESEAM_DATA_FILTER, self: true }], target: i0.ɵɵFactoryTarget.Directive });
486
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableFilterDirective, isStandalone: false, selector: "[seamDatatableFilter]", ngImport: i0 });
445
487
  }
446
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFilterDirective, decorators: [{
488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableFilterDirective, decorators: [{
447
489
  type: Directive,
448
490
  args: [{
449
491
  selector: '[seamDatatableFilter]',
450
- standalone: false
492
+ standalone: false,
451
493
  }]
452
494
  }], ctorParameters: () => [{ type: undefined, decorators: [{
453
495
  type: Self
@@ -458,8 +500,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
458
500
 
459
501
  const _THESEAM_DATA_FILTER_CONTAINER = {
460
502
  provide: THESEAM_DATA_FILTER_CONTAINER,
461
- // tslint:disable-next-line:no-use-before-declare
462
- useExisting: forwardRef(() => DatatableMenuBarComponent)
503
+ useExisting: forwardRef(() => DatatableMenuBarComponent),
463
504
  };
464
505
  class DatatableMenuBarComponent {
465
506
  get filterDirectives() {
@@ -474,10 +515,9 @@ class DatatableMenuBarComponent {
474
515
  filtersChanged = new EventEmitter();
475
516
  filters() {
476
517
  const fDirectives = this._filterDirectives
477
- ? this._filterDirectives.map(f => f.filter).filter(notNullOrUndefined)
518
+ ? this._filterDirectives.map((f) => f.filter).filter(notNullOrUndefined)
478
519
  : [];
479
- const fArr = this._filtersArr
480
- .filter(f => fDirectives.findIndex(fd => fd.uid === f.uid) === -1);
520
+ const fArr = this._filtersArr.filter((f) => fDirectives.findIndex((fd) => fd.uid === f.uid) === -1);
481
521
  return [...fArr, ...fDirectives];
482
522
  }
483
523
  addFilter(dataFilter) {
@@ -485,13 +525,13 @@ class DatatableMenuBarComponent {
485
525
  this.filtersChanged.emit(this.filters());
486
526
  }
487
527
  removeFilter(dataFilter) {
488
- this._filtersArr = this._filtersArr.filter(f => f !== dataFilter);
528
+ this._filtersArr = this._filtersArr.filter((f) => f !== dataFilter);
489
529
  this.filtersChanged.emit(this.filters());
490
530
  }
491
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
492
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarComponent, isStandalone: false, selector: "seam-datatable-menu-bar", providers: [_THESEAM_DATA_FILTER_CONTAINER], queries: [{ propertyName: "filterDirectives", predicate: DatatableFilterDirective }], ngImport: i0, template: "<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block}\n"] });
531
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
532
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableMenuBarComponent, isStandalone: false, selector: "seam-datatable-menu-bar", providers: [_THESEAM_DATA_FILTER_CONTAINER], queries: [{ propertyName: "filterDirectives", predicate: DatatableFilterDirective }], ngImport: i0, template: "<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block}\n"] });
493
533
  }
494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarComponent, decorators: [{
534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarComponent, decorators: [{
495
535
  type: Component,
496
536
  args: [{ selector: 'seam-datatable-menu-bar', providers: [_THESEAM_DATA_FILTER_CONTAINER], standalone: false, template: "<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block}\n"] }]
497
537
  }], propDecorators: { filterDirectives: [{
@@ -504,14 +544,14 @@ class DatatableRowDetailTplDirective {
504
544
  constructor(template) {
505
545
  this.template = template;
506
546
  }
507
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowDetailTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
508
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableRowDetailTplDirective, isStandalone: false, selector: "[seamDatatableRowDetailTpl]", ngImport: i0 });
547
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableRowDetailTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
548
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableRowDetailTplDirective, isStandalone: false, selector: "[seamDatatableRowDetailTpl]", ngImport: i0 });
509
549
  }
510
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowDetailTplDirective, decorators: [{
550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableRowDetailTplDirective, decorators: [{
511
551
  type: Directive,
512
552
  args: [{
513
553
  selector: '[seamDatatableRowDetailTpl]',
514
- standalone: false
554
+ standalone: false,
515
555
  }]
516
556
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
517
557
 
@@ -531,6 +571,7 @@ class TheSeamDatatableRowDetailDirective {
531
571
  * Row detail row visbility was toggled.
532
572
  */
533
573
  // NOTE: This will trigger from the internal ngx-datatable toggle event.
574
+ // eslint-disable-next-line @angular-eslint/no-output-native
534
575
  toggle = new EventEmitter();
535
576
  /**
536
577
  * Internal use for wrapper only.
@@ -548,7 +589,7 @@ class TheSeamDatatableRowDetailDirective {
548
589
  toggleExpandRow(row) {
549
590
  this._toggle.emit({
550
591
  type: 'row',
551
- value: row
592
+ value: row,
552
593
  });
553
594
  }
554
595
  /**
@@ -557,7 +598,7 @@ class TheSeamDatatableRowDetailDirective {
557
598
  expandAllRows() {
558
599
  this._toggle.emit({
559
600
  type: 'all',
560
- value: true
601
+ value: true,
561
602
  });
562
603
  }
563
604
  /**
@@ -566,18 +607,18 @@ class TheSeamDatatableRowDetailDirective {
566
607
  collapseAllRows() {
567
608
  this._toggle.emit({
568
609
  type: 'all',
569
- value: false
610
+ value: false,
570
611
  });
571
612
  }
572
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableRowDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
573
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamDatatableRowDetailDirective, isStandalone: false, selector: "seam-datatable-row-detail", inputs: { rowHeight: "rowHeight", _templateInput: ["template", "_templateInput"] }, outputs: { toggle: "toggle" }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableRowDetailTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
613
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableRowDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
614
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamDatatableRowDetailDirective, isStandalone: false, selector: "seam-datatable-row-detail", inputs: { rowHeight: "rowHeight", _templateInput: ["template", "_templateInput"] }, outputs: { toggle: "toggle" }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableRowDetailTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
574
615
  }
575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableRowDetailDirective, decorators: [{
616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableRowDetailDirective, decorators: [{
576
617
  type: Directive,
577
618
  args: [{
578
619
  // eslint-disable-next-line @angular-eslint/directive-selector
579
620
  selector: 'seam-datatable-row-detail',
580
- standalone: false
621
+ standalone: false,
581
622
  }]
582
623
  }], propDecorators: { rowHeight: [{
583
624
  type: Input
@@ -586,7 +627,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
586
627
  args: ['template']
587
628
  }], _templateQuery: [{
588
629
  type: ContentChild,
589
- args: [DatatableRowDetailTplDirective, { read: TemplateRef, static: true }]
630
+ args: [DatatableRowDetailTplDirective, {
631
+ read: TemplateRef,
632
+ static: true,
633
+ }]
590
634
  }], toggle: [{
591
635
  type: Output
592
636
  }] } });
@@ -596,14 +640,14 @@ class DatatableRowActionItemDirective {
596
640
  constructor(template) {
597
641
  this.template = template;
598
642
  }
599
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowActionItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
600
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableRowActionItemDirective, isStandalone: false, selector: "[seamDatatableRowActionItem]", ngImport: i0 });
643
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableRowActionItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
644
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableRowActionItemDirective, isStandalone: false, selector: "[seamDatatableRowActionItem]", ngImport: i0 });
601
645
  }
602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowActionItemDirective, decorators: [{
646
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableRowActionItemDirective, decorators: [{
603
647
  type: Directive,
604
648
  args: [{
605
649
  selector: '[seamDatatableRowActionItem]',
606
- standalone: false
650
+ standalone: false,
607
651
  }]
608
652
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
609
653
 
@@ -614,25 +658,25 @@ class DatatableDataSource extends DataSource {
614
658
  page$;
615
659
  constructor() {
616
660
  super();
617
- this.sorts$ = this._datatableSubject.pipe(switchMap(_datatable => {
661
+ this.sorts$ = this._datatableSubject.pipe(switchMap((_datatable) => {
618
662
  if (!_datatable) {
619
663
  return of([]);
620
664
  }
621
- return _datatable.sort.pipe(map(v => v.sorts), startWith(_datatable.sorts));
665
+ return _datatable.sort.pipe(map((v) => v.sorts), startWith(_datatable.sorts));
622
666
  }));
623
- this.filterStates$ = this._datatableSubject.pipe(switchMap(_datatable => {
667
+ this.filterStates$ = this._datatableSubject.pipe(switchMap((_datatable) => {
624
668
  if (!_datatable) {
625
669
  return of([]);
626
670
  }
627
671
  return _datatable.filterStates;
628
672
  }));
629
- this.page$ = this._datatableSubject.pipe(switchMap(_datatable => {
673
+ this.page$ = this._datatableSubject.pipe(switchMap((_datatable) => {
630
674
  if (!_datatable) {
631
675
  return of({
632
676
  offset: 0,
633
677
  pageSize: 0,
634
678
  limit: undefined,
635
- count: 0
679
+ count: 0,
636
680
  });
637
681
  }
638
682
  return _datatable.page.pipe(startWith(_datatable.pageInfo));
@@ -695,6 +739,7 @@ function setColumnDefaults(columns) {
695
739
  if (!Object.prototype.hasOwnProperty.call(column, 'hidden')) {
696
740
  column.hidden = false;
697
741
  }
742
+ setColumnAlignDefaults(column);
698
743
  }
699
744
  setColumnDefaults$1(columns);
700
745
  }
@@ -731,7 +776,7 @@ const THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_TYPES = [
731
776
  'blank',
732
777
  'not-blank',
733
778
  'between',
734
- 'not-between'
779
+ 'not-between',
735
780
  ];
736
781
  const THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES = [
737
782
  'lt',
@@ -742,7 +787,7 @@ const THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES = [
742
787
  ];
743
788
  const THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES = [
744
789
  'between',
745
- 'not-between'
790
+ 'not-between',
746
791
  ];
747
792
  const THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES = [
748
793
  'blank',
@@ -758,7 +803,7 @@ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_TYPES = [
758
803
  'blank',
759
804
  'not-blank',
760
805
  'between',
761
- 'not-between'
806
+ 'not-between',
762
807
  ];
763
808
  const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES = [
764
809
  'gt',
@@ -769,7 +814,7 @@ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES = [
769
814
  ];
770
815
  const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES = [
771
816
  'between',
772
- 'not-between'
817
+ 'not-between',
773
818
  ];
774
819
  const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES = [
775
820
  'blank',
@@ -782,7 +827,7 @@ const THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_TYPES = [
782
827
  'eq',
783
828
  'neq',
784
829
  'blank',
785
- 'not-blank'
830
+ 'not-blank',
786
831
  ];
787
832
  const THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES = [
788
833
  'contains',
@@ -792,7 +837,7 @@ const THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES = [
792
837
  ];
793
838
  const THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES = [
794
839
  'blank',
795
- 'not-blank'
840
+ 'not-blank',
796
841
  ];
797
842
 
798
843
  class SearchDateColumnsDataFilter extends ColumnsDataFilter {
@@ -801,7 +846,7 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
801
846
  form;
802
847
  filterStateChanges;
803
848
  options;
804
- _updateFilterValue = new Subject;
849
+ _updateFilterValue = new Subject();
805
850
  constructor(prop, initialValue, column) {
806
851
  super(prop, initialValue, column);
807
852
  this.form = new FormGroup({
@@ -813,7 +858,7 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
813
858
  this.uid = `${this.name}--${prop}`;
814
859
  this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
815
860
  this.options = {
816
- dateType: this.column.filterOptions?.dateType || 'date'
861
+ dateType: this.column.filterOptions?.dateType || 'date',
817
862
  };
818
863
  }
819
864
  dataFilter(data, filterValue, options) {
@@ -823,23 +868,28 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
823
868
  return this._dateSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
824
869
  }
825
870
  _isInvalidDate(dateString) {
826
- return isNullOrUndefinedOrEmpty(dateString) || isNaN(new Date(dateString).valueOf());
871
+ return (isNullOrUndefinedOrEmpty(dateString) ||
872
+ isNaN(new Date(dateString).valueOf()));
827
873
  }
828
874
  _isInvalidSearchTerm(searchText, fromText, toText, comparator) {
829
- if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(comparator) && this._isInvalidDate(searchText)) {
875
+ if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(comparator) &&
876
+ this._isInvalidDate(searchText)) {
830
877
  return true;
831
878
  }
832
- else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(comparator) && (this._isInvalidDate(fromText) || this._isInvalidDate(toText))) {
879
+ else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(comparator) &&
880
+ (this._isInvalidDate(fromText) || this._isInvalidDate(toText))) {
833
881
  return true;
834
882
  }
835
883
  return false;
836
884
  }
837
885
  _dateSearchDataFilter(prop, data, text, fromText, toText, comparator) {
838
886
  if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
887
+ // eslint-disable-next-line no-console
839
888
  console.warn('No filter applied - invalid options.');
840
889
  return data;
841
890
  }
842
891
  if (this._isInvalidSearchTerm(text, fromText, toText, comparator)) {
892
+ // eslint-disable-next-line no-console
843
893
  console.warn('No filter applied - invalid search terms.');
844
894
  return data;
845
895
  }
@@ -847,17 +897,25 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
847
897
  const textDate = getFormattedDateForComparison(text, this.options.dateType, true);
848
898
  const fromTextDate = getFormattedDateForComparison(fromText, this.options.dateType, true);
849
899
  const toTextDate = getFormattedDateForComparison(toText, this.options.dateType, true);
850
- return data.filter(item => {
851
- let propDate = getFormattedDateForComparison(item[prop], this.options.dateType, useLocalTime);
852
- if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
853
- (comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
900
+ return data.filter((item) => {
901
+ const propDate = getFormattedDateForComparison(item[prop], this.options.dateType, useLocalTime);
902
+ if ((comparator === 'blank' &&
903
+ (isNullOrUndefined(item[prop]) ||
904
+ isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
905
+ (comparator === 'not-blank' &&
906
+ notNullOrUndefined(item[prop]) &&
907
+ notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
854
908
  (comparator === 'lt' && propDate.valueOf() < textDate.valueOf()) ||
855
909
  (comparator === 'lte' && propDate.valueOf() <= textDate.valueOf()) ||
856
910
  (comparator === 'gt' && propDate.valueOf() > textDate.valueOf()) ||
857
911
  (comparator === 'gte' && propDate.valueOf() >= textDate.valueOf()) ||
858
912
  (comparator === 'eq' && propDate.valueOf() === textDate.valueOf()) ||
859
- (comparator === 'between' && propDate.valueOf() >= fromTextDate.valueOf() && propDate.valueOf() <= toTextDate.valueOf()) ||
860
- (comparator === 'not-between' && !(propDate.valueOf() >= fromTextDate.valueOf() && propDate.valueOf() <= toTextDate.valueOf()))) {
913
+ (comparator === 'between' &&
914
+ propDate.valueOf() >= fromTextDate.valueOf() &&
915
+ propDate.valueOf() <= toTextDate.valueOf()) ||
916
+ (comparator === 'not-between' &&
917
+ !(propDate.valueOf() >= fromTextDate.valueOf() &&
918
+ propDate.valueOf() <= toTextDate.valueOf()))) {
861
919
  return true;
862
920
  }
863
921
  return false;
@@ -872,8 +930,8 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
872
930
  state: {
873
931
  prop: this.prop,
874
932
  formValue: this.form.value,
875
- options: this.options
876
- }
933
+ options: this.options,
934
+ },
877
935
  };
878
936
  }
879
937
  applyFilter() {
@@ -884,7 +942,7 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
884
942
  searchType: 'eq',
885
943
  searchText: null,
886
944
  fromText: null,
887
- toText: null
945
+ toText: null,
888
946
  });
889
947
  this._updateFilterValue.next();
890
948
  }
@@ -896,10 +954,13 @@ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
896
954
  if (THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
897
955
  return false;
898
956
  }
899
- else if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
957
+ else if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(formValue.searchType) &&
958
+ notNullOrUndefinedOrEmpty(formValue.searchText)) {
900
959
  return false;
901
960
  }
902
- else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
961
+ else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(formValue.searchType) &&
962
+ notNullOrUndefinedOrEmpty(formValue.fromText) &&
963
+ notNullOrUndefinedOrEmpty(formValue.toText)) {
903
964
  return false;
904
965
  }
905
966
  return true;
@@ -912,7 +973,7 @@ class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
912
973
  form;
913
974
  filterStateChanges;
914
975
  options;
915
- _updateFilterValue = new Subject;
976
+ _updateFilterValue = new Subject();
916
977
  constructor(prop, initialValue, column) {
917
978
  super(prop, initialValue, column);
918
979
  this.form = new FormGroup({
@@ -931,37 +992,52 @@ class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
931
992
  return this.numberSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
932
993
  }
933
994
  _isInvalidSearchTerm(searchText, fromText, toText, comparator) {
934
- if (isNaN(searchText) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(comparator)) {
995
+ if (isNaN(searchText) &&
996
+ THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(comparator)) {
935
997
  return true;
936
998
  }
937
- else if ((isNaN(fromText) || isNaN(toText)) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(comparator)) {
999
+ else if ((isNaN(fromText) || isNaN(toText)) &&
1000
+ THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(comparator)) {
938
1001
  return true;
939
1002
  }
940
1003
  return false;
941
1004
  }
942
1005
  numberSearchDataFilter(prop, data, text, fromText, toText, comparator) {
943
1006
  if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
1007
+ // eslint-disable-next-line no-console
944
1008
  console.warn('No filter applied - invalid options.');
945
1009
  return data;
946
1010
  }
947
1011
  const textNumeric = notNullOrUndefinedOrEmpty(text) ? parseFloat(text) : NaN;
948
- const toTextNumeric = notNullOrUndefinedOrEmpty(toText) ? parseFloat(toText) : NaN;
949
- const fromTextNumeric = notNullOrUndefinedOrEmpty(fromText) ? parseFloat(fromText) : NaN;
1012
+ const toTextNumeric = notNullOrUndefinedOrEmpty(toText)
1013
+ ? parseFloat(toText)
1014
+ : NaN;
1015
+ const fromTextNumeric = notNullOrUndefinedOrEmpty(fromText)
1016
+ ? parseFloat(fromText)
1017
+ : NaN;
950
1018
  if (this._isInvalidSearchTerm(textNumeric, fromTextNumeric, toTextNumeric, comparator)) {
1019
+ // eslint-disable-next-line no-console
951
1020
  console.warn('No filter applied - invalid search terms.');
952
1021
  return data;
953
1022
  }
954
- return data.filter(item => {
955
- let propNumeric = parseFloat(item[prop]);
956
- if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
957
- (comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
1023
+ return data.filter((item) => {
1024
+ const propNumeric = parseFloat(item[prop]);
1025
+ if ((comparator === 'blank' &&
1026
+ (isNullOrUndefined(item[prop]) ||
1027
+ isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
1028
+ (comparator === 'not-blank' &&
1029
+ notNullOrUndefined(item[prop]) &&
1030
+ notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
958
1031
  (comparator === 'lt' && propNumeric < textNumeric) ||
959
1032
  (comparator === 'lte' && propNumeric <= textNumeric) ||
960
1033
  (comparator === 'gt' && propNumeric > textNumeric) ||
961
1034
  (comparator === 'gte' && propNumeric >= textNumeric) ||
962
1035
  (comparator === 'eq' && propNumeric === textNumeric) ||
963
- (comparator === 'between' && propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric) ||
964
- (comparator === 'not-between' && !(propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric))) {
1036
+ (comparator === 'between' &&
1037
+ propNumeric >= fromTextNumeric &&
1038
+ propNumeric <= toTextNumeric) ||
1039
+ (comparator === 'not-between' &&
1040
+ !(propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric))) {
965
1041
  return true;
966
1042
  }
967
1043
  return false;
@@ -975,8 +1051,8 @@ class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
975
1051
  name: this.name,
976
1052
  state: {
977
1053
  prop: this.prop,
978
- formValue: this.form.value
979
- }
1054
+ formValue: this.form.value,
1055
+ },
980
1056
  };
981
1057
  }
982
1058
  applyFilter() {
@@ -987,7 +1063,7 @@ class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
987
1063
  searchType: 'eq',
988
1064
  searchText: null,
989
1065
  fromText: null,
990
- toText: null
1066
+ toText: null,
991
1067
  });
992
1068
  this._updateFilterValue.next();
993
1069
  }
@@ -999,10 +1075,13 @@ class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
999
1075
  else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
1000
1076
  return false;
1001
1077
  }
1002
- else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
1078
+ else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(formValue.searchType) &&
1079
+ notNullOrUndefinedOrEmpty(formValue.searchText)) {
1003
1080
  return false;
1004
1081
  }
1005
- else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
1082
+ else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(formValue.searchType) &&
1083
+ notNullOrUndefinedOrEmpty(formValue.fromText) &&
1084
+ notNullOrUndefinedOrEmpty(formValue.toText)) {
1006
1085
  return false;
1007
1086
  }
1008
1087
  return true;
@@ -1015,11 +1094,13 @@ class SearchTextColumnsDataFilter extends ColumnsDataFilter {
1015
1094
  form;
1016
1095
  filterStateChanges;
1017
1096
  options;
1018
- _updateFilterValue = new Subject;
1097
+ _updateFilterValue = new Subject();
1019
1098
  constructor(prop, initialValue, column) {
1020
1099
  super(prop, initialValue, column);
1021
1100
  this.form = new FormGroup({
1022
- searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'contains'),
1101
+ searchType: new FormControl(notNullOrUndefined(initialValue)
1102
+ ? initialValue.searchType
1103
+ : 'contains'),
1023
1104
  searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
1024
1105
  // caseSensitive: new FormControl<boolean | null>(notNullOrUndefined(initialValue) ? initialValue.caseSensitive : null),
1025
1106
  });
@@ -1036,7 +1117,7 @@ class SearchTextColumnsDataFilter extends ColumnsDataFilter {
1036
1117
  if (!data || data.length < 0 || isNullOrUndefined(comparator)) {
1037
1118
  return data;
1038
1119
  }
1039
- return data.filter(item => {
1120
+ return data.filter((item) => {
1040
1121
  let value1 = `${notNullOrUndefined(item[prop]) ? item[prop] : ''}`;
1041
1122
  let value2 = text || '';
1042
1123
  // if (!options.caseSensitive) {
@@ -1065,7 +1146,7 @@ class SearchTextColumnsDataFilter extends ColumnsDataFilter {
1065
1146
  state: {
1066
1147
  prop: this.prop,
1067
1148
  formValue: this.form.value,
1068
- }
1149
+ },
1069
1150
  };
1070
1151
  }
1071
1152
  applyFilter() {
@@ -1084,7 +1165,8 @@ class SearchTextColumnsDataFilter extends ColumnsDataFilter {
1084
1165
  if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
1085
1166
  return true;
1086
1167
  }
1087
- else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
1168
+ else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(formValue.searchType) &&
1169
+ notNullOrUndefinedOrEmpty(formValue.searchText)) {
1088
1170
  return false;
1089
1171
  }
1090
1172
  else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
@@ -1095,9 +1177,18 @@ class SearchTextColumnsDataFilter extends ColumnsDataFilter {
1095
1177
  }
1096
1178
 
1097
1179
  const THESEAM_COLUMNS_DATA_FILTERS_DEFAULT = [
1098
- { name: THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, class: SearchTextColumnsDataFilter },
1099
- { name: THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, class: SearchNumericColumnsDataFilter },
1100
- { name: THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, class: SearchDateColumnsDataFilter },
1180
+ {
1181
+ name: THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME,
1182
+ class: SearchTextColumnsDataFilter,
1183
+ },
1184
+ {
1185
+ name: THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME,
1186
+ class: SearchNumericColumnsDataFilter,
1187
+ },
1188
+ {
1189
+ name: THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME,
1190
+ class: SearchDateColumnsDataFilter,
1191
+ },
1101
1192
  ];
1102
1193
  const getFormattedDateForComparison = (date, dateType, setToLocalTime = false) => {
1103
1194
  const dateObj = new Date(notNullOrUndefined(date) ? date : '');
@@ -1122,15 +1213,13 @@ class ColumnsFiltersService {
1122
1213
  _columnFilterTemplates = new BehaviorSubject([]);
1123
1214
  columnFilterTemplates$ = this._columnFilterTemplates.asObservable();
1124
1215
  _columns = new BehaviorSubject([]);
1125
- columnsFilters$ = this._columns.pipe(map$1(columns => columns
1126
- .map(col => col.$$filter)
1127
- .filter(notNullOrUndefined)));
1128
- columnActiveFilterProps$ = this.columnsFilters$.pipe(switchMap$1(filters => {
1216
+ columnsFilters$ = this._columns.pipe(map$1((columns) => columns.map((col) => col.$$filter).filter(notNullOrUndefined)));
1217
+ columnActiveFilterProps$ = this.columnsFilters$.pipe(switchMap$1((filters) => {
1129
1218
  if (!filters.length) {
1130
1219
  return of([]);
1131
1220
  }
1132
- return combineLatest(filters.map(f => f.filterStateChanges.pipe(map$1((filterState) => !f.isDefault() ? filterState.state.prop : null))));
1133
- }), map$1(props => props.filter(notNullOrUndefined)));
1221
+ return combineLatest(filters.map((f) => f.filterStateChanges.pipe(map$1((filterState) => !f.isDefault() ? filterState.state.prop : null))));
1222
+ }), map$1((props) => props.filter(notNullOrUndefined)));
1134
1223
  constructor(_customColumnsDataFilters) {
1135
1224
  this._customColumnsDataFilters = _customColumnsDataFilters;
1136
1225
  }
@@ -1148,19 +1237,19 @@ class ColumnsFiltersService {
1148
1237
  const filterClass = this._getColumnsDataFilterType(column);
1149
1238
  let filter;
1150
1239
  if (notNullOrUndefined(this._customColumnsDataFilters)) {
1151
- filter = this._customColumnsDataFilters.find(x => x.name === filterClass);
1240
+ filter = this._customColumnsDataFilters.find((x) => x.name === filterClass);
1152
1241
  }
1153
1242
  if (isNullOrUndefined(filter)) {
1154
- filter = THESEAM_COLUMNS_DATA_FILTERS_DEFAULT.find(x => x.name === filterClass);
1243
+ filter = THESEAM_COLUMNS_DATA_FILTERS_DEFAULT.find((x) => x.name === filterClass);
1155
1244
  }
1156
1245
  if (notNullOrUndefined(filter)) {
1157
- // eslint-disable-next-line new-cap
1158
1246
  return new filter.class(prop, initialValue, column);
1159
1247
  }
1160
1248
  return null;
1161
1249
  }
1162
1250
  _getColumnsDataFilterType(column) {
1163
- if (notNullOrUndefined(column.filterOptions) && notNullOrUndefined(column.filterOptions.filterType)) {
1251
+ if (notNullOrUndefined(column.filterOptions) &&
1252
+ notNullOrUndefined(column.filterOptions.filterType)) {
1164
1253
  return column.filterOptions.filterType;
1165
1254
  }
1166
1255
  else if (notNullOrUndefined(column.cellType)) {
@@ -1182,7 +1271,11 @@ class ColumnsFiltersService {
1182
1271
  if (isNullOrUndefined(column)) {
1183
1272
  return null;
1184
1273
  }
1185
- const prop = column.filterOptions?.filterProp || column.prop || (notNullOrUndefined(column.name) ? camelCase(column.name) : undefined);
1274
+ const prop = column.filterOptions?.filterProp ||
1275
+ column.prop ||
1276
+ (notNullOrUndefined(column.name)
1277
+ ? camelCase(column.name)
1278
+ : undefined);
1186
1279
  if (isNullOrUndefined(prop)) {
1187
1280
  return null;
1188
1281
  }
@@ -1196,26 +1289,28 @@ class ColumnsFiltersService {
1196
1289
  return undefined;
1197
1290
  }
1198
1291
  const columns = this._columns.value;
1199
- const column = columns.find(col => this.getColumnFilterProp(col) === prop);
1292
+ const column = columns.find((col) => this.getColumnFilterProp(col) === prop);
1200
1293
  return column ? column.$$filter : undefined;
1201
1294
  }
1202
1295
  filters() {
1203
1296
  return this._columns.value
1204
- .map(col => col.$$filter)
1297
+ .map((col) => col.$$filter)
1205
1298
  .filter(notNullOrUndefined);
1206
1299
  }
1207
1300
  addFilter(filter) {
1208
1301
  // Filters are now managed through columns, so this method is deprecated
1302
+ // eslint-disable-next-line no-console
1209
1303
  console.warn('ColumnsFiltersService.addFilter is deprecated - filters are now managed through columns');
1210
1304
  }
1211
1305
  removeFilter(filter) {
1212
1306
  // Filters are now managed through columns, so this method is deprecated
1307
+ // eslint-disable-next-line no-console
1213
1308
  console.warn('ColumnsFiltersService.removeFilter is deprecated - filters are now managed through columns');
1214
1309
  }
1215
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsFiltersService, deps: [{ token: THESEAM_COLUMNS_DATA_FILTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1216
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsFiltersService });
1310
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsFiltersService, deps: [{ token: THESEAM_COLUMNS_DATA_FILTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1311
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsFiltersService });
1217
1312
  }
1218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsFiltersService, decorators: [{
1313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsFiltersService, decorators: [{
1219
1314
  type: Injectable
1220
1315
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1221
1316
  type: Optional
@@ -1257,14 +1352,18 @@ class ColumnsManagerService {
1257
1352
  this._columnChangesService = _columnChangesService;
1258
1353
  this._columnsFilters = _columnsFilters;
1259
1354
  const templateColumns$ = this._columnChangesService.columnInputChanges$.pipe(startWith(undefined), switchMap(() => {
1260
- return this._templateColumns.asObservable().pipe(map(translateTemplateColumns));
1355
+ return this._templateColumns
1356
+ .asObservable()
1357
+ .pipe(map(translateTemplateColumns));
1261
1358
  }));
1262
1359
  this.columns$ = defer(() => {
1263
1360
  let isFirst = true;
1264
1361
  return combineLatest([
1265
1362
  this._inputColumns.asObservable(),
1266
1363
  templateColumns$,
1267
- this._updateColumns.asObservable().pipe(auditTime(0), startWith(undefined))
1364
+ this._updateColumns
1365
+ .asObservable()
1366
+ .pipe(auditTime(0), startWith(undefined)),
1268
1367
  ]).pipe(switchMap(([inputColumns, templateColumns]) => {
1269
1368
  const cols = this._mergeColumns(inputColumns, templateColumns);
1270
1369
  const hasColumnsChanged = this._hasColumnsChanged(cols);
@@ -1370,7 +1469,7 @@ class ColumnsManagerService {
1370
1469
  if (notNullOrUndefined(inpColDif)) {
1371
1470
  this._updateColDif(inpColDif, internalCol, inpCol);
1372
1471
  }
1373
- const tplCol = this._findColumnByProp(prop, templateColumns);
1472
+ const tplCol = this._getTemplateColumnByProp(prop, templateColumns);
1374
1473
  if (tplCol !== undefined) {
1375
1474
  const tplColDif = this._getColDif(tplCol, ColumnsTypes.Template);
1376
1475
  if (notNullOrUndefined(tplColDif)) {
@@ -1385,7 +1484,7 @@ class ColumnsManagerService {
1385
1484
  // TODO: Rethink this, because I don't know if this is correct.
1386
1485
  ...(tplCol || {}),
1387
1486
  // Store filter directly on column object
1388
- $$filter: existingFilter || this._createColumnFilter(inpCol)
1487
+ $$filter: existingFilter || this._createColumnFilter(inpCol),
1389
1488
  };
1390
1489
  if (this._shouldAddTreeToggleColumn(_col)) {
1391
1490
  _col.treeToggleTemplate = this._treeToggleTpl;
@@ -1424,16 +1523,33 @@ class ColumnsManagerService {
1424
1523
  if (internalCols === undefined) {
1425
1524
  return undefined;
1426
1525
  }
1427
- return internalCols.find(c => getColumnProp(c) === prop);
1526
+ return internalCols.find((c) => getColumnProp(c) === prop);
1428
1527
  }
1429
1528
  _findColumnByProp(prop, columns) {
1430
- return columns.find(c => getColumnProp(c) === prop);
1529
+ return columns.find((c) => getColumnProp(c) === prop);
1530
+ }
1531
+ _getTemplateColumnByProp(prop, columns) {
1532
+ const tplCol = this._findColumnByProp(prop, columns);
1533
+ if (tplCol === undefined) {
1534
+ return undefined;
1535
+ }
1536
+ const _tplCol = {};
1537
+ for (const key in tplCol) {
1538
+ if (Object.prototype.hasOwnProperty.call(tplCol, key) &&
1539
+ isColumnBoundToProp(tplCol, key)) {
1540
+ _tplCol[key] = tplCol[key];
1541
+ }
1542
+ }
1543
+ return _tplCol;
1431
1544
  }
1432
1545
  _getDifMapForColumnsType(columnsType) {
1433
1546
  switch (columnsType) {
1434
- case ColumnsTypes.Input: return this._inpColDiffersMap;
1435
- case ColumnsTypes.Template: return this._tplColDiffersMap;
1436
- case ColumnsTypes.Result: return this._resultColDiffersMap;
1547
+ case ColumnsTypes.Input:
1548
+ return this._inpColDiffersMap;
1549
+ case ColumnsTypes.Template:
1550
+ return this._tplColDiffersMap;
1551
+ case ColumnsTypes.Result:
1552
+ return this._resultColDiffersMap;
1437
1553
  }
1438
1554
  }
1439
1555
  _getColumnDiffer(prop, colsType) {
@@ -1458,20 +1574,21 @@ class ColumnsManagerService {
1458
1574
  return this._getColumnDiffer(prop, colsType).diff(col);
1459
1575
  }
1460
1576
  _updateColDif(colDif, internalColumn, col) {
1461
- colDif.forEachRemovedItem(r => {
1462
- if (internalColumn && Object.prototype.hasOwnProperty.call(internalColumn, r.key)) {
1577
+ colDif.forEachRemovedItem((r) => {
1578
+ if (internalColumn &&
1579
+ Object.prototype.hasOwnProperty.call(internalColumn, r.key)) {
1463
1580
  const k = r.key;
1464
1581
  delete internalColumn[k];
1465
1582
  }
1466
1583
  });
1467
- colDif.forEachAddedItem(r => col[r.key] = r.currentValue);
1468
- colDif.forEachChangedItem(r => col[r.key] = r.currentValue);
1584
+ colDif.forEachAddedItem((r) => (col[r.key] = r.currentValue));
1585
+ colDif.forEachChangedItem((r) => (col[r.key] = r.currentValue));
1469
1586
  }
1470
1587
  _hasAddedOrRemovedColumns(columns) {
1471
1588
  if (!this._colPropsDiffer) {
1472
1589
  this._colPropsDiffer = this._differs.find([]).create();
1473
1590
  }
1474
- const props = columns.map(c => getColumnProp(c));
1591
+ const props = columns.map((c) => getColumnProp(c));
1475
1592
  return this._colPropsDiffer.diff(props) !== null;
1476
1593
  }
1477
1594
  _hasColumnsChanged(columns) {
@@ -1504,8 +1621,10 @@ class ColumnsManagerService {
1504
1621
  return this._actionItemColumnPosition === 'staticRight';
1505
1622
  }
1506
1623
  _shouldAddTreeToggleColumn(column) {
1507
- return column.isTreeColumn !== undefined && column.isTreeColumn &&
1508
- (!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate));
1624
+ return (column.isTreeColumn !== undefined &&
1625
+ column.isTreeColumn &&
1626
+ (!hasProperty(column, 'treeToggleTemplate') ||
1627
+ !notNullOrUndefined(column.treeToggleTemplate)));
1509
1628
  }
1510
1629
  _shouldAddHeaderTemplate(column) {
1511
1630
  return !hasProperty(column, 'headerTemplate');
@@ -1528,12 +1647,12 @@ class ColumnsManagerService {
1528
1647
  if (!column.filterable) {
1529
1648
  return undefined;
1530
1649
  }
1531
- return this._columnsFilters.createColumnDataFilter(column, null) || undefined;
1650
+ return (this._columnsFilters.createColumnDataFilter(column, null) || undefined);
1532
1651
  }
1533
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsManagerService, deps: [{ token: i0.KeyValueDiffers }, { token: DatatableColumnChangesService }, { token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Injectable });
1534
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsManagerService });
1652
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsManagerService, deps: [{ token: i0.KeyValueDiffers }, { token: DatatableColumnChangesService }, { token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Injectable });
1653
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsManagerService });
1535
1654
  }
1536
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsManagerService, decorators: [{
1655
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsManagerService, decorators: [{
1537
1656
  type: Injectable
1538
1657
  }], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: DatatableColumnChangesService }, { type: ColumnsFiltersService }] });
1539
1658
 
@@ -1541,11 +1660,17 @@ const THESEAM_DATATABLE_ACCESSOR = new InjectionToken('TheSeamDatatableAccessor'
1541
1660
 
1542
1661
  function removeUnusedDiffs(cols, colDiffersInp, colDiffersTpl) {
1543
1662
  const inpKeys = Object.keys(colDiffersInp);
1544
- inpKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)
1545
- .forEach(k => { delete colDiffersInp[k]; });
1663
+ inpKeys
1664
+ .filter((k) => cols.findIndex((c) => c.prop === k) === -1)
1665
+ .forEach((k) => {
1666
+ delete colDiffersInp[k];
1667
+ });
1546
1668
  const tplKeys = Object.keys(colDiffersTpl);
1547
- tplKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)
1548
- .forEach(k => { delete colDiffersTpl[k]; });
1669
+ tplKeys
1670
+ .filter((k) => cols.findIndex((c) => c.prop === k) === -1)
1671
+ .forEach((k) => {
1672
+ delete colDiffersTpl[k];
1673
+ });
1549
1674
  }
1550
1675
 
1551
1676
  /**
@@ -1583,7 +1708,7 @@ class ColumnsAlteration {
1583
1708
  return {
1584
1709
  id: this.id,
1585
1710
  type: this.type,
1586
- state: this.state
1711
+ state: this.state,
1587
1712
  };
1588
1713
  }
1589
1714
  }
@@ -1614,7 +1739,7 @@ class HideColumnColumnsAlteration extends ColumnsAlteration {
1614
1739
  type: this.type,
1615
1740
  summary,
1616
1741
  details,
1617
- sortOrder: this._getColumnSortOrder()
1742
+ sortOrder: this._getColumnSortOrder(),
1618
1743
  };
1619
1744
  }
1620
1745
  getDisplaySortOrder() {
@@ -1676,7 +1801,7 @@ class SortColumnsAlteration extends ColumnsAlteration {
1676
1801
  type: this.type,
1677
1802
  summary,
1678
1803
  details,
1679
- sortOrder: 0
1804
+ sortOrder: 0,
1680
1805
  };
1681
1806
  }
1682
1807
  getDisplaySortOrder() {
@@ -1697,7 +1822,7 @@ class SortColumnsAlteration extends ColumnsAlteration {
1697
1822
  if (this.state.sorts.length === 0) {
1698
1823
  return 'No sorting';
1699
1824
  }
1700
- const sortDescriptions = this.state.sorts.map(sort => {
1825
+ const sortDescriptions = this.state.sorts.map((sort) => {
1701
1826
  const direction = sort.dir === 'asc' ? '↑' : '↓';
1702
1827
  return `${sort.prop} ${direction}`;
1703
1828
  });
@@ -1744,7 +1869,7 @@ class WidthColumnsAlteration extends ColumnsAlteration {
1744
1869
  type: this.type,
1745
1870
  summary,
1746
1871
  details,
1747
- sortOrder: this._getColumnSortOrder()
1872
+ sortOrder: this._getColumnSortOrder(),
1748
1873
  };
1749
1874
  }
1750
1875
  getDisplaySortOrder() {
@@ -1767,7 +1892,9 @@ class WidthColumnsAlteration extends ColumnsAlteration {
1767
1892
  return true;
1768
1893
  }
1769
1894
  _createWidthSummary() {
1770
- const widthText = notNullOrUndefined(this.state.width) ? `${this.state.width}px` : 'auto';
1895
+ const widthText = notNullOrUndefined(this.state.width)
1896
+ ? `${this.state.width}px`
1897
+ : 'auto';
1771
1898
  return `${this.state.columnProp}: ${widthText}`;
1772
1899
  }
1773
1900
  _createWidthDetails() {
@@ -1809,13 +1936,13 @@ class ColumnsAlterationsManagerService {
1809
1936
  this._alterations = [...this._alterations, ...alterations];
1810
1937
  const changes = [
1811
1938
  ...removed,
1812
- ...alterations.map(a => {
1939
+ ...alterations.map((a) => {
1813
1940
  const record = {
1814
1941
  type: 'added',
1815
- alteration: a
1942
+ alteration: a,
1816
1943
  };
1817
1944
  return record;
1818
- })
1945
+ }),
1819
1946
  ];
1820
1947
  if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {
1821
1948
  return changes;
@@ -1826,12 +1953,12 @@ class ColumnsAlterationsManagerService {
1826
1953
  remove(alterations, options) {
1827
1954
  // console.log('remove', alterations)
1828
1955
  const removed = [];
1829
- this._alterations = this._alterations.filter(x => {
1830
- const found = alterations.findIndex(y => y.id === x.id) !== -1;
1956
+ this._alterations = this._alterations.filter((x) => {
1957
+ const found = alterations.findIndex((y) => y.id === x.id) !== -1;
1831
1958
  if (found) {
1832
1959
  const eventRecord = {
1833
1960
  type: 'removed',
1834
- alteration: x
1961
+ alteration: x,
1835
1962
  };
1836
1963
  removed.push(eventRecord);
1837
1964
  }
@@ -1895,7 +2022,7 @@ class ColumnsAlterationsManagerService {
1895
2022
  return changes;
1896
2023
  }
1897
2024
  _removeNonPersistant() {
1898
- const nonPersistent = this._alterations.filter(x => !x.persistent);
2025
+ const nonPersistent = this._alterations.filter((x) => !x.persistent);
1899
2026
  this.remove(nonPersistent, { emitEvent: false });
1900
2027
  }
1901
2028
  _emitChanges(changes) {
@@ -1903,14 +2030,14 @@ class ColumnsAlterationsManagerService {
1903
2030
  return;
1904
2031
  }
1905
2032
  const event = {
1906
- changes
2033
+ changes,
1907
2034
  };
1908
2035
  this._changesSubject.next(event);
1909
2036
  }
1910
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsAlterationsManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1911
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsAlterationsManagerService });
2037
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsAlterationsManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2038
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsAlterationsManagerService });
1912
2039
  }
1913
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsAlterationsManagerService, decorators: [{
2040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: ColumnsAlterationsManagerService, decorators: [{
1914
2041
  type: Injectable
1915
2042
  }], ctorParameters: () => [] });
1916
2043
 
@@ -1945,7 +2072,7 @@ class FilterColumnsAlteration extends ColumnsAlteration {
1945
2072
  searchType: operation,
1946
2073
  searchText: null,
1947
2074
  fromText: null,
1948
- toText: null
2075
+ toText: null,
1949
2076
  };
1950
2077
  // Set values based on operation type
1951
2078
  if (this._isRangeOperation(operation)) {
@@ -1973,7 +2100,7 @@ class FilterColumnsAlteration extends ColumnsAlteration {
1973
2100
  type: this.type,
1974
2101
  summary,
1975
2102
  details,
1976
- sortOrder: this._getColumnSortOrder()
2103
+ sortOrder: this._getColumnSortOrder(),
1977
2104
  };
1978
2105
  }
1979
2106
  getDisplaySortOrder() {
@@ -1984,8 +2111,14 @@ class FilterColumnsAlteration extends ColumnsAlteration {
1984
2111
  }
1985
2112
  _isValueOperation(operation) {
1986
2113
  const valueOperations = [
1987
- 'contains', 'ncontains', 'eq', 'neq', // text
1988
- 'gt', 'lt', 'gte', 'lte' // numeric/date
2114
+ 'contains',
2115
+ 'ncontains',
2116
+ 'eq',
2117
+ 'neq', // text
2118
+ 'gt',
2119
+ 'lt',
2120
+ 'gte',
2121
+ 'lte', // numeric/date
1989
2122
  ];
1990
2123
  return valueOperations.includes(operation);
1991
2124
  }
@@ -2006,7 +2139,8 @@ class FilterColumnsAlteration extends ColumnsAlteration {
2006
2139
  }
2007
2140
  // Validate required values for operations
2008
2141
  if (this._isRangeOperation(state.operation)) {
2009
- if (!notNullOrUndefined(state.fromValue) || !notNullOrUndefined(state.toValue)) {
2142
+ if (!notNullOrUndefined(state.fromValue) ||
2143
+ !notNullOrUndefined(state.toValue)) {
2010
2144
  throw new Error(`Range operation '${state.operation}' requires both fromValue and toValue`);
2011
2145
  }
2012
2146
  }
@@ -2018,9 +2152,36 @@ class FilterColumnsAlteration extends ColumnsAlteration {
2018
2152
  return true;
2019
2153
  }
2020
2154
  _isValidOperationForFilterType(operation, filterType) {
2021
- const textOperations = ['contains', 'ncontains', 'eq', 'neq', 'blank', 'not-blank'];
2022
- const numericOperations = ['gt', 'lt', 'eq', 'gte', 'lte', 'blank', 'not-blank', 'between', 'not-between'];
2023
- const dateOperations = ['lt', 'lte', 'gt', 'gte', 'eq', 'blank', 'not-blank', 'between', 'not-between'];
2155
+ const textOperations = [
2156
+ 'contains',
2157
+ 'ncontains',
2158
+ 'eq',
2159
+ 'neq',
2160
+ 'blank',
2161
+ 'not-blank',
2162
+ ];
2163
+ const numericOperations = [
2164
+ 'gt',
2165
+ 'lt',
2166
+ 'eq',
2167
+ 'gte',
2168
+ 'lte',
2169
+ 'blank',
2170
+ 'not-blank',
2171
+ 'between',
2172
+ 'not-between',
2173
+ ];
2174
+ const dateOperations = [
2175
+ 'lt',
2176
+ 'lte',
2177
+ 'gt',
2178
+ 'gte',
2179
+ 'eq',
2180
+ 'blank',
2181
+ 'not-blank',
2182
+ 'between',
2183
+ 'not-between',
2184
+ ];
2024
2185
  switch (filterType) {
2025
2186
  case 'text':
2026
2187
  return textOperations.includes(operation);
@@ -2051,7 +2212,7 @@ class FilterColumnsAlteration extends ColumnsAlteration {
2051
2212
  const details = [
2052
2213
  `Column: ${columnProp}`,
2053
2214
  `Type: ${filterType}`,
2054
- `Operation: ${this._getOperationDisplayName(operation)}`
2215
+ `Operation: ${this._getOperationDisplayName(operation)}`,
2055
2216
  ];
2056
2217
  if (this._isRangeOperation(operation)) {
2057
2218
  details.push(`From: ${fromValue}`);
@@ -2064,31 +2225,31 @@ class FilterColumnsAlteration extends ColumnsAlteration {
2064
2225
  }
2065
2226
  _getOperationSymbol(operation) {
2066
2227
  const symbols = {
2067
- 'contains': 'contains',
2068
- 'ncontains': 'does not contain',
2069
- 'eq': '=',
2070
- 'neq': '≠',
2071
- 'gt': '>',
2072
- 'lt': '<',
2073
- 'gte': '≥',
2074
- 'lte': '≤'
2228
+ contains: 'contains',
2229
+ ncontains: 'does not contain',
2230
+ eq: '=',
2231
+ neq: '≠',
2232
+ gt: '>',
2233
+ lt: '<',
2234
+ gte: '≥',
2235
+ lte: '≤',
2075
2236
  };
2076
2237
  return symbols[operation] || operation;
2077
2238
  }
2078
2239
  _getOperationDisplayName(operation) {
2079
2240
  const names = {
2080
- 'contains': 'Contains',
2081
- 'ncontains': 'Does not contain',
2082
- 'eq': 'Equals',
2083
- 'neq': 'Not equals',
2084
- 'gt': 'Greater than',
2085
- 'lt': 'Less than',
2086
- 'gte': 'Greater than or equal',
2087
- 'lte': 'Less than or equal',
2088
- 'blank': 'Is blank',
2241
+ contains: 'Contains',
2242
+ ncontains: 'Does not contain',
2243
+ eq: 'Equals',
2244
+ neq: 'Not equals',
2245
+ gt: 'Greater than',
2246
+ lt: 'Less than',
2247
+ gte: 'Greater than or equal',
2248
+ lte: 'Less than or equal',
2249
+ blank: 'Is blank',
2089
2250
  'not-blank': 'Is not blank',
2090
- 'between': 'Between',
2091
- 'not-between': 'Not between'
2251
+ between: 'Between',
2252
+ 'not-between': 'Not between',
2092
2253
  };
2093
2254
  return names[operation] || operation;
2094
2255
  }
@@ -2104,10 +2265,10 @@ class FilterColumnsAlteration extends ColumnsAlteration {
2104
2265
  */
2105
2266
  const INTERNAL_COLUMN_PROPS = [
2106
2267
  ACTION_MENU_COLUMN_PROP,
2107
- CHECKBOX_COLUMN_PROP
2268
+ CHECKBOX_COLUMN_PROP,
2108
2269
  ];
2109
2270
  function isInternalColumn(column) {
2110
- return INTERNAL_COLUMN_PROPS.findIndex(p => getColumnProp(column) === p) !== -1;
2271
+ return (INTERNAL_COLUMN_PROPS.findIndex((p) => getColumnProp(column) === p) !== -1);
2111
2272
  }
2112
2273
 
2113
2274
  class OrderColumnsAlteration extends ColumnsAlteration {
@@ -2134,9 +2295,9 @@ class OrderColumnsAlteration extends ColumnsAlteration {
2134
2295
  // to be changed.
2135
2296
  const internalColumns = columns
2136
2297
  .map((column, index) => ({ column, index }))
2137
- .filter(x => isInternalColumn(x.column));
2298
+ .filter((x) => isInternalColumn(x.column));
2138
2299
  for (const c of stateColumns) {
2139
- const currentIndex = columns.findIndex(x => getColumnProp(x) === c.columnProp);
2300
+ const currentIndex = columns.findIndex((x) => getColumnProp(x) === c.columnProp);
2140
2301
  if (currentIndex === c.index || currentIndex === -1) {
2141
2302
  // Skip if already at correct index.
2142
2303
  // Skip columns not found. It may be a column that was removed from the
@@ -2146,7 +2307,7 @@ class OrderColumnsAlteration extends ColumnsAlteration {
2146
2307
  arrayMoveMutable(columns, currentIndex, c.index);
2147
2308
  }
2148
2309
  for (const c of internalColumns) {
2149
- const currentIndex = columns.findIndex(col => col === c.column);
2310
+ const currentIndex = columns.findIndex((col) => col === c.column);
2150
2311
  if (currentIndex !== -1) {
2151
2312
  arrayMoveMutable(columns, currentIndex, c.index);
2152
2313
  }
@@ -2166,7 +2327,7 @@ class OrderColumnsAlteration extends ColumnsAlteration {
2166
2327
  type: this.type,
2167
2328
  summary,
2168
2329
  details,
2169
- sortOrder: 0
2330
+ sortOrder: 0,
2170
2331
  };
2171
2332
  }
2172
2333
  getDisplaySortOrder() {
@@ -2187,10 +2348,12 @@ class OrderColumnsAlteration extends ColumnsAlteration {
2187
2348
  return true;
2188
2349
  }
2189
2350
  _isColumnOrderRecordValid(columnOrder) {
2190
- return notNullOrUndefined(columnOrder.columnProp) && notNullOrUndefined(columnOrder.index);
2351
+ return (notNullOrUndefined(columnOrder.columnProp) &&
2352
+ notNullOrUndefined(columnOrder.index));
2191
2353
  }
2192
2354
  _stateColumns() {
2193
- return this.state.columns.filter(c => {
2355
+ return this.state.columns
2356
+ .filter((c) => {
2194
2357
  if (!this._isColumnOrderRecordValid(c)) {
2195
2358
  if (isDevMode()) {
2196
2359
  // eslint-disable-next-line no-console
@@ -2199,7 +2362,8 @@ class OrderColumnsAlteration extends ColumnsAlteration {
2199
2362
  return false;
2200
2363
  }
2201
2364
  return true;
2202
- }).sort((a, b) => a.index === b.index ? 0 : a.index > b.index ? 1 : -1);
2365
+ })
2366
+ .sort((a, b) => (a.index === b.index ? 0 : a.index > b.index ? 1 : -1));
2203
2367
  }
2204
2368
  _createOrderSummary() {
2205
2369
  if (this.state.columns.length === 0) {
@@ -2213,7 +2377,7 @@ class OrderColumnsAlteration extends ColumnsAlteration {
2213
2377
  return ['Columns are in their default order'];
2214
2378
  }
2215
2379
  const sortedColumns = this._stateColumns();
2216
- return sortedColumns.map(col => `${col.columnProp}: Position ${col.index + 1}`);
2380
+ return sortedColumns.map((col) => `${col.columnProp}: Position ${col.index + 1}`);
2217
2381
  }
2218
2382
  }
2219
2383
 
@@ -2257,9 +2421,14 @@ function mapColumnsAlterationsStates(states) {
2257
2421
  return alterations;
2258
2422
  }
2259
2423
 
2260
- const ActionItemColumnPosition = ['frozenLeft', 'frozenRight', 'staticLeft', 'staticRight'];
2424
+ const ActionItemColumnPosition = [
2425
+ 'frozenLeft',
2426
+ 'frozenRight',
2427
+ 'staticLeft',
2428
+ 'staticRight',
2429
+ ];
2261
2430
  function isActionItemColumnPosition(input) {
2262
- return ActionItemColumnPosition.indexOf(input) != -1;
2431
+ return (ActionItemColumnPosition.indexOf(input) !== -1);
2263
2432
  }
2264
2433
 
2265
2434
  const THESEAM_DATATABLE_CONFIG = new InjectionToken('TheSeamDatatableConfig');
@@ -2269,14 +2438,14 @@ class DatatableColumnFilterTplDirective {
2269
2438
  constructor(template) {
2270
2439
  this.template = template;
2271
2440
  }
2272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2273
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterTplDirective, isStandalone: false, selector: "[seamDatatableColumnFilterTpl]", ngImport: i0 });
2441
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2442
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnFilterTplDirective, isStandalone: false, selector: "[seamDatatableColumnFilterTpl]", ngImport: i0 });
2274
2443
  }
2275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterTplDirective, decorators: [{
2444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterTplDirective, decorators: [{
2276
2445
  type: Directive,
2277
2446
  args: [{
2278
2447
  selector: '[seamDatatableColumnFilterTpl]',
2279
- standalone: false
2448
+ standalone: false,
2280
2449
  }]
2281
2450
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
2282
2451
 
@@ -2288,15 +2457,15 @@ class TheSeamDatatableColumnFilterDirective {
2288
2457
  get template() {
2289
2458
  return this._templateInput || this._templateQuery;
2290
2459
  }
2291
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2292
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamDatatableColumnFilterDirective, isStandalone: false, selector: "seam-datatable-column-filter", inputs: { filterName: "filterName", _templateInput: ["template", "_templateInput"] }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableColumnFilterTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
2460
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2461
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamDatatableColumnFilterDirective, isStandalone: false, selector: "seam-datatable-column-filter", inputs: { filterName: "filterName", _templateInput: ["template", "_templateInput"] }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableColumnFilterTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
2293
2462
  }
2294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, decorators: [{
2463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, decorators: [{
2295
2464
  type: Directive,
2296
2465
  args: [{
2297
2466
  // eslint-disable-next-line @angular-eslint/directive-selector
2298
2467
  selector: 'seam-datatable-column-filter',
2299
- standalone: false
2468
+ standalone: false,
2300
2469
  }]
2301
2470
  }], propDecorators: { filterName: [{
2302
2471
  type: Input
@@ -2305,13 +2474,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
2305
2474
  args: ['template']
2306
2475
  }], _templateQuery: [{
2307
2476
  type: ContentChild,
2308
- args: [DatatableColumnFilterTplDirective, { read: TemplateRef, static: true }]
2477
+ args: [DatatableColumnFilterTplDirective, {
2478
+ read: TemplateRef,
2479
+ static: true,
2480
+ }]
2309
2481
  }] } });
2310
2482
 
2311
2483
  const CURRENT_DATATABLE_PREFERENCES_VERSION = 2;
2312
2484
  const EMPTY_DATATABLE_PREFERENCES = {
2313
2485
  version: 2,
2314
- alterations: []
2486
+ alterations: [],
2315
2487
  };
2316
2488
 
2317
2489
  const THESEAM_DATATABLE_PREFERENCES_ACCESSOR = new InjectionToken('TheSeamDatatablePreferencesAccessor');
@@ -2343,7 +2515,9 @@ class DatatablePreferencesService {
2343
2515
  if (!this._prefsAccessor) {
2344
2516
  return of(JSON.parse(JSON.stringify(EMPTY_DATATABLE_PREFERENCES)));
2345
2517
  }
2346
- return this._preferencesManager.preferences(preferenceKey, this._prefsAccessor, EMPTY_DATATABLE_PREFERENCES).pipe(map(prefs => {
2518
+ return this._preferencesManager
2519
+ .preferences(preferenceKey, this._prefsAccessor, EMPTY_DATATABLE_PREFERENCES)
2520
+ .pipe(map((prefs) => {
2347
2521
  if (this._isValidDatatablePreferences(prefs)) {
2348
2522
  return prefs;
2349
2523
  }
@@ -2358,7 +2532,8 @@ class DatatablePreferencesService {
2358
2532
  return;
2359
2533
  }
2360
2534
  this._pending = true;
2361
- this.preferences(preferenceKey).pipe(map(prefs => {
2535
+ this.preferences(preferenceKey)
2536
+ .pipe(map((prefs) => {
2362
2537
  // Making the preferences immutable may not be necessary, but for now
2363
2538
  // this obj->str->obj will work as a naive clone.
2364
2539
  // const columns = JSON.parse(JSON.stringify(prefs.columns || []))
@@ -2376,13 +2551,13 @@ class DatatablePreferencesService {
2376
2551
  // return newPrefs
2377
2552
  const newPrefs = {
2378
2553
  ...EMPTY_DATATABLE_PREFERENCES,
2379
- alterations
2554
+ alterations,
2380
2555
  };
2381
2556
  this._pending = false;
2382
2557
  return newPrefs;
2383
2558
  }),
2384
2559
  // tap(v => console.log('newPrefs', v)),
2385
- take(1), switchMap(newPrefs => this._prefsAccessor
2560
+ take(1), switchMap((newPrefs) => this._prefsAccessor
2386
2561
  ? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))
2387
2562
  : of(newPrefs)), tap(() => this.refresh(preferenceKey)))
2388
2563
  .subscribe();
@@ -2390,13 +2565,13 @@ class DatatablePreferencesService {
2390
2565
  _isValidDatatablePreferences(prefs) {
2391
2566
  return prefs.version === CURRENT_DATATABLE_PREFERENCES_VERSION;
2392
2567
  }
2393
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatablePreferencesService, deps: [{ token: i1$1.TheSeamPreferencesManagerService }, { token: THESEAM_DATATABLE_PREFERENCES_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2394
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatablePreferencesService, providedIn: 'root' });
2568
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatablePreferencesService, deps: [{ token: i1$1.TheSeamPreferencesManagerService }, { token: THESEAM_DATATABLE_PREFERENCES_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2569
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatablePreferencesService, providedIn: 'root' });
2395
2570
  }
2396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatablePreferencesService, decorators: [{
2571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatablePreferencesService, decorators: [{
2397
2572
  type: Injectable,
2398
2573
  args: [{
2399
- providedIn: 'root'
2574
+ providedIn: 'root',
2400
2575
  }]
2401
2576
  }], ctorParameters: () => [{ type: i1$1.TheSeamPreferencesManagerService }, { type: undefined, decorators: [{
2402
2577
  type: Optional
@@ -2417,24 +2592,31 @@ class DatatableColumnFilterSearchTextComponent {
2417
2592
  filterForm;
2418
2593
  showTextbox$;
2419
2594
  ngOnInit() {
2420
- this.showTextbox$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(value => THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(value || '')));
2595
+ this.showTextbox$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1((value) => THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(value || '')));
2421
2596
  }
2422
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2423
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterSearchTextComponent, isStandalone: false, selector: "seam-datatable-column-filter-search-text", inputs: { filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n seamAutoFocus\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n <ng-container *ngIf=\"showTextbox$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n <!-- TODO: implement this? Does not work with current Seam GraphQL/SQL Server implementation. -->\n <!-- <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <seam-checkbox seamInput formControlName=\"caseSensitive\">Case Sensitive</seam-checkbox>\n </seam-form-field> -->\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2597
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2598
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnFilterSearchTextComponent, isStandalone: true, selector: "seam-datatable-column-filter-search-text", inputs: { filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n seamAutoFocus\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"\n ></ng-select>\n </seam-form-field>\n <ng-container *ngIf=\"showTextbox$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n formControlName=\"searchText\"\n placeholder=\"Type to search\"\n seamAutoFocus\n />\n </seam-form-field>\n <!-- TODO: implement this? Does not work with current Seam GraphQL/SQL Server implementation. -->\n <!-- <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <seam-checkbox seamInput formControlName=\"caseSensitive\">Case Sensitive</seam-checkbox>\n </seam-form-field> -->\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3$1.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "directive", type: TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2424
2599
  {
2425
2600
  provide: ControlContainer,
2426
- useExisting: FormGroupDirective
2427
- }
2601
+ useExisting: FormGroupDirective,
2602
+ },
2428
2603
  ] });
2429
2604
  }
2430
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, decorators: [{
2605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, decorators: [{
2431
2606
  type: Component,
2432
2607
  args: [{ selector: 'seam-datatable-column-filter-search-text', viewProviders: [
2433
2608
  {
2434
2609
  provide: ControlContainer,
2435
- useExisting: FormGroupDirective
2436
- }
2437
- ], standalone: false, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n seamAutoFocus\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n <ng-container *ngIf=\"showTextbox$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n <!-- TODO: implement this? Does not work with current Seam GraphQL/SQL Server implementation. -->\n <!-- <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <seam-checkbox seamInput formControlName=\"caseSensitive\">Case Sensitive</seam-checkbox>\n </seam-form-field> -->\n </ng-container>\n</ng-container>\n" }]
2610
+ useExisting: FormGroupDirective,
2611
+ },
2612
+ ], imports: [
2613
+ CommonModule,
2614
+ ReactiveFormsModule,
2615
+ NgSelectModule,
2616
+ TheSeamFormFieldModule,
2617
+ TheSeamNgSelectExtraDirective,
2618
+ TheSeamAutoFocusDirective,
2619
+ ], template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n seamAutoFocus\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"\n ></ng-select>\n </seam-form-field>\n <ng-container *ngIf=\"showTextbox$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n formControlName=\"searchText\"\n placeholder=\"Type to search\"\n seamAutoFocus\n />\n </seam-form-field>\n <!-- TODO: implement this? Does not work with current Seam GraphQL/SQL Server implementation. -->\n <!-- <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <seam-checkbox seamInput formControlName=\"caseSensitive\">Case Sensitive</seam-checkbox>\n </seam-form-field> -->\n </ng-container>\n</ng-container>\n" }]
2438
2620
  }], propDecorators: { filterForm: [{
2439
2621
  type: Input
2440
2622
  }] } });
@@ -2455,25 +2637,34 @@ class DatatableColumnFilterSearchNumericComponent {
2455
2637
  showSearchInput$;
2456
2638
  showRangeInputs$;
2457
2639
  ngOnInit() {
2458
- this.showSearchInput$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(searchType || '')));
2459
- this.showRangeInputs$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(searchType || '')));
2640
+ this.showSearchInput$ =
2641
+ this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1((searchType) => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(searchType || '')));
2642
+ this.showRangeInputs$ =
2643
+ this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1((searchType) => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(searchType || '')));
2460
2644
  }
2461
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterSearchNumericComponent, isStandalone: false, selector: "seam-datatable-column-filter-search-numeric", inputs: { filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2645
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2646
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnFilterSearchNumericComponent, isStandalone: true, selector: "seam-datatable-column-filter-search-numeric", inputs: { filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"\n ></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n formControlName=\"searchText\"\n placeholder=\"Type to search\"\n seamAutoFocus\n />\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n formControlName=\"fromText\"\n placeholder=\"Range Start\"\n seamAutoFocus\n />\n </seam-form-field>\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"toText\" placeholder=\"Range End\" />\n </seam-form-field>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3$1.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "directive", type: TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2463
2647
  {
2464
2648
  provide: ControlContainer,
2465
- useExisting: FormGroupDirective
2466
- }
2649
+ useExisting: FormGroupDirective,
2650
+ },
2467
2651
  ] });
2468
2652
  }
2469
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, decorators: [{
2653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, decorators: [{
2470
2654
  type: Component,
2471
2655
  args: [{ selector: 'seam-datatable-column-filter-search-numeric', viewProviders: [
2472
2656
  {
2473
2657
  provide: ControlContainer,
2474
- useExisting: FormGroupDirective
2475
- }
2476
- ], standalone: false, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n" }]
2658
+ useExisting: FormGroupDirective,
2659
+ },
2660
+ ], imports: [
2661
+ CommonModule,
2662
+ ReactiveFormsModule,
2663
+ NgSelectModule,
2664
+ TheSeamFormFieldModule,
2665
+ TheSeamNgSelectExtraDirective,
2666
+ TheSeamAutoFocusDirective,
2667
+ ], template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"\n ></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n formControlName=\"searchText\"\n placeholder=\"Type to search\"\n seamAutoFocus\n />\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n formControlName=\"fromText\"\n placeholder=\"Range Start\"\n seamAutoFocus\n />\n </seam-form-field>\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"toText\" placeholder=\"Range End\" />\n </seam-form-field>\n </ng-container>\n</ng-container>\n" }]
2477
2668
  }], propDecorators: { filterForm: [{
2478
2669
  type: Input
2479
2670
  }] } });
@@ -2499,25 +2690,34 @@ class DatatableColumnFilterSearchDateComponent {
2499
2690
  if (notNullOrUndefined(this.options?.dateType)) {
2500
2691
  this.dateFormat = this.options?.dateType;
2501
2692
  }
2502
- this.showSearchInput$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(searchType || '')));
2503
- this.showRangeInputs$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(searchType || '')));
2693
+ this.showSearchInput$ =
2694
+ this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1((searchType) => THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(searchType || '')));
2695
+ this.showRangeInputs$ =
2696
+ this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1((searchType) => THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(searchType || '')));
2504
2697
  }
2505
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2506
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterSearchDateComponent, isStandalone: false, selector: "seam-datatable-column-filter-search-date", inputs: { options: "options", filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2698
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2699
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnFilterSearchDateComponent, isStandalone: true, selector: "seam-datatable-column-filter-search-date", inputs: { options: "options", filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"\n ></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n [type]=\"dateFormat\"\n formControlName=\"searchText\"\n placeholder=\"Type to search\"\n seamAutoFocus\n />\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n [type]=\"dateFormat\"\n formControlName=\"fromText\"\n placeholder=\"Range Start\"\n seamAutoFocus\n />\n </seam-form-field>\n\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n [type]=\"dateFormat\"\n formControlName=\"toText\"\n placeholder=\"Range End\"\n />\n </seam-form-field>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3$1.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "directive", type: TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2507
2700
  {
2508
2701
  provide: ControlContainer,
2509
- useExisting: FormGroupDirective
2510
- }
2702
+ useExisting: FormGroupDirective,
2703
+ },
2511
2704
  ] });
2512
2705
  }
2513
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, decorators: [{
2706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, decorators: [{
2514
2707
  type: Component,
2515
2708
  args: [{ selector: 'seam-datatable-column-filter-search-date', viewProviders: [
2516
2709
  {
2517
2710
  provide: ControlContainer,
2518
- useExisting: FormGroupDirective
2519
- }
2520
- ], standalone: false, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n" }]
2711
+ useExisting: FormGroupDirective,
2712
+ },
2713
+ ], imports: [
2714
+ CommonModule,
2715
+ ReactiveFormsModule,
2716
+ NgSelectModule,
2717
+ TheSeamFormFieldModule,
2718
+ TheSeamNgSelectExtraDirective,
2719
+ TheSeamAutoFocusDirective,
2720
+ ], template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"\n ></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n [type]=\"dateFormat\"\n formControlName=\"searchText\"\n placeholder=\"Type to search\"\n seamAutoFocus\n />\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n [type]=\"dateFormat\"\n formControlName=\"fromText\"\n placeholder=\"Range Start\"\n seamAutoFocus\n />\n </seam-form-field>\n\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input\n seamInput\n [type]=\"dateFormat\"\n formControlName=\"toText\"\n placeholder=\"Range End\"\n />\n </seam-form-field>\n </ng-container>\n</ng-container>\n" }]
2521
2721
  }], propDecorators: { options: [{
2522
2722
  type: Input
2523
2723
  }], filterForm: [{
@@ -2543,9 +2743,13 @@ class DatatableColumnFilterMenuComponent {
2543
2743
  if (notNullOrUndefined(this.columnFilter)) {
2544
2744
  this._filterForm = this.columnFilter.form;
2545
2745
  }
2546
- this.customFilterTemplate$ = this._columnsFilters.columnFilterTemplates$.pipe(map$1(templates => templates.find(t => t.filterName === this.columnFilter?.name)));
2547
- if (this.updateMethod === 'valueChanges' && notNullOrUndefined(this._filterForm)) {
2548
- this._filterForm.valueChanges.pipe(debounceTime(this.debounce || 0), tap$1(() => this.columnFilter?.applyFilter())).subscribe();
2746
+ this.customFilterTemplate$ =
2747
+ this._columnsFilters.columnFilterTemplates$.pipe(map$1((templates) => templates.find((t) => t.filterName === this.columnFilter?.name)));
2748
+ if (this.updateMethod === 'valueChanges' &&
2749
+ notNullOrUndefined(this._filterForm)) {
2750
+ this._filterForm.valueChanges
2751
+ .pipe(debounceTime(this.debounce || 0), tap$1(() => this.columnFilter?.applyFilter()))
2752
+ .subscribe();
2549
2753
  }
2550
2754
  }
2551
2755
  submit() {
@@ -2555,15 +2759,23 @@ class DatatableColumnFilterMenuComponent {
2555
2759
  clearFilter() {
2556
2760
  this.columnFilter?.clearFilter();
2557
2761
  }
2558
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterMenuComponent, deps: [{ token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Component });
2559
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterMenuComponent, isStandalone: false, selector: "seam-datatable-column-filter-menu", inputs: { column: "column", updateMethod: "updateMethod", debounce: "debounce" }, outputs: { closePopover: "closePopover" }, ngImport: i0, template: "<ng-container *ngIf=\"_filterForm && columnFilter\">\n <form [formGroup]=\"_filterForm\" (ngSubmit)=\"submit()\">\n <ng-container [ngSwitch]=\"columnFilter.name\">\n <div *ngSwitchCase=\"'search-text'\">\n <seam-datatable-column-filter-search-text [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-text>\n </div>\n <div *ngSwitchCase=\"'search-numeric'\">\n <seam-datatable-column-filter-search-numeric [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-numeric>\n </div>\n <div *ngSwitchCase=\"'search-date'\">\n <seam-datatable-column-filter-search-date [filterForm]=\"_filterForm\" [options]=\"columnFilter.options\"></seam-datatable-column-filter-search-date>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngIf=\"customFilterTemplate$ | async as filterTpl\">\n <ng-container *ngIf=\"filterTpl.template\">\n <ng-container\n [ngTemplateOutlet]=\"filterTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: _filterForm, filterForm: _filterForm, options: columnFilter.options, column: column, columnFilter: columnFilter }\">\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <hr class=\"mb-1\">\n <div class=\"d-flex align-items-center\" [class.justify-content-between]=\"updateMethod === 'submit'\" [class.text-right]=\"updateMethod === 'valueChanges'\">\n <button seamButton size=\"sm\" class=\"text-primary p-0\" (click)=\"clearFilter()\" [disabled]=\"columnFilter?.isDefault() === true\">Clear</button>\n <button\n *ngIf=\"updateMethod === 'submit'\"\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n type=\"submit\"\n [disabled]=\"columnFilter?.isDefault() === true\">\n Apply\n </button>\n </div>\n </form>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DatatableColumnFilterSearchTextComponent, selector: "seam-datatable-column-filter-search-text", inputs: ["filterForm"] }, { kind: "component", type: DatatableColumnFilterSearchNumericComponent, selector: "seam-datatable-column-filter-search-numeric", inputs: ["filterForm"] }, { kind: "component", type: DatatableColumnFilterSearchDateComponent, selector: "seam-datatable-column-filter-search-date", inputs: ["options", "filterForm"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }] });
2762
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterMenuComponent, deps: [{ token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Component });
2763
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnFilterMenuComponent, isStandalone: true, selector: "seam-datatable-column-filter-menu", inputs: { column: "column", updateMethod: "updateMethod", debounce: "debounce" }, outputs: { closePopover: "closePopover" }, ngImport: i0, template: "<ng-container *ngIf=\"_filterForm && columnFilter\">\n <form [formGroup]=\"_filterForm\" (ngSubmit)=\"submit()\">\n <ng-container [ngSwitch]=\"columnFilter.name\">\n <div *ngSwitchCase=\"'search-text'\">\n <seam-datatable-column-filter-search-text\n [filterForm]=\"_filterForm\"\n ></seam-datatable-column-filter-search-text>\n </div>\n <div *ngSwitchCase=\"'search-numeric'\">\n <seam-datatable-column-filter-search-numeric\n [filterForm]=\"_filterForm\"\n ></seam-datatable-column-filter-search-numeric>\n </div>\n <div *ngSwitchCase=\"'search-date'\">\n <seam-datatable-column-filter-search-date\n [filterForm]=\"_filterForm\"\n [options]=\"columnFilter.options\"\n ></seam-datatable-column-filter-search-date>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngIf=\"customFilterTemplate$ | async as filterTpl\">\n <ng-container *ngIf=\"filterTpl.template\">\n <ng-container\n [ngTemplateOutlet]=\"filterTpl.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: _filterForm,\n filterForm: _filterForm,\n options: columnFilter.options,\n column: column,\n columnFilter: columnFilter,\n }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <hr class=\"mb-1\" />\n <div\n class=\"d-flex align-items-center\"\n [class.justify-content-between]=\"updateMethod === 'submit'\"\n [class.text-right]=\"updateMethod === 'valueChanges'\"\n >\n <button\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n (click)=\"clearFilter()\"\n [disabled]=\"columnFilter?.isDefault() === true\"\n >\n Clear\n </button>\n <button\n *ngIf=\"updateMethod === 'submit'\"\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n type=\"submit\"\n [disabled]=\"columnFilter?.isDefault() === true\"\n >\n Apply\n </button>\n </div>\n </form>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i4$2.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: DatatableColumnFilterSearchTextComponent, selector: "seam-datatable-column-filter-search-text", inputs: ["filterForm"] }, { kind: "component", type: DatatableColumnFilterSearchNumericComponent, selector: "seam-datatable-column-filter-search-numeric", inputs: ["filterForm"] }, { kind: "component", type: DatatableColumnFilterSearchDateComponent, selector: "seam-datatable-column-filter-search-date", inputs: ["options", "filterForm"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }] });
2560
2764
  }
2561
2765
  __decorate([
2562
2766
  InputNumber()
2563
2767
  ], DatatableColumnFilterMenuComponent.prototype, "debounce", void 0);
2564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterMenuComponent, decorators: [{
2768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnFilterMenuComponent, decorators: [{
2565
2769
  type: Component,
2566
- args: [{ selector: 'seam-datatable-column-filter-menu', standalone: false, template: "<ng-container *ngIf=\"_filterForm && columnFilter\">\n <form [formGroup]=\"_filterForm\" (ngSubmit)=\"submit()\">\n <ng-container [ngSwitch]=\"columnFilter.name\">\n <div *ngSwitchCase=\"'search-text'\">\n <seam-datatable-column-filter-search-text [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-text>\n </div>\n <div *ngSwitchCase=\"'search-numeric'\">\n <seam-datatable-column-filter-search-numeric [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-numeric>\n </div>\n <div *ngSwitchCase=\"'search-date'\">\n <seam-datatable-column-filter-search-date [filterForm]=\"_filterForm\" [options]=\"columnFilter.options\"></seam-datatable-column-filter-search-date>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngIf=\"customFilterTemplate$ | async as filterTpl\">\n <ng-container *ngIf=\"filterTpl.template\">\n <ng-container\n [ngTemplateOutlet]=\"filterTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: _filterForm, filterForm: _filterForm, options: columnFilter.options, column: column, columnFilter: columnFilter }\">\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <hr class=\"mb-1\">\n <div class=\"d-flex align-items-center\" [class.justify-content-between]=\"updateMethod === 'submit'\" [class.text-right]=\"updateMethod === 'valueChanges'\">\n <button seamButton size=\"sm\" class=\"text-primary p-0\" (click)=\"clearFilter()\" [disabled]=\"columnFilter?.isDefault() === true\">Clear</button>\n <button\n *ngIf=\"updateMethod === 'submit'\"\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n type=\"submit\"\n [disabled]=\"columnFilter?.isDefault() === true\">\n Apply\n </button>\n </div>\n </form>\n</ng-container>\n" }]
2770
+ args: [{ selector: 'seam-datatable-column-filter-menu', imports: [
2771
+ CommonModule,
2772
+ NgTemplateOutlet,
2773
+ ReactiveFormsModule,
2774
+ TheSeamButtonsModule,
2775
+ DatatableColumnFilterSearchTextComponent,
2776
+ DatatableColumnFilterSearchNumericComponent,
2777
+ DatatableColumnFilterSearchDateComponent,
2778
+ ], template: "<ng-container *ngIf=\"_filterForm && columnFilter\">\n <form [formGroup]=\"_filterForm\" (ngSubmit)=\"submit()\">\n <ng-container [ngSwitch]=\"columnFilter.name\">\n <div *ngSwitchCase=\"'search-text'\">\n <seam-datatable-column-filter-search-text\n [filterForm]=\"_filterForm\"\n ></seam-datatable-column-filter-search-text>\n </div>\n <div *ngSwitchCase=\"'search-numeric'\">\n <seam-datatable-column-filter-search-numeric\n [filterForm]=\"_filterForm\"\n ></seam-datatable-column-filter-search-numeric>\n </div>\n <div *ngSwitchCase=\"'search-date'\">\n <seam-datatable-column-filter-search-date\n [filterForm]=\"_filterForm\"\n [options]=\"columnFilter.options\"\n ></seam-datatable-column-filter-search-date>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngIf=\"customFilterTemplate$ | async as filterTpl\">\n <ng-container *ngIf=\"filterTpl.template\">\n <ng-container\n [ngTemplateOutlet]=\"filterTpl.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: _filterForm,\n filterForm: _filterForm,\n options: columnFilter.options,\n column: column,\n columnFilter: columnFilter,\n }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <hr class=\"mb-1\" />\n <div\n class=\"d-flex align-items-center\"\n [class.justify-content-between]=\"updateMethod === 'submit'\"\n [class.text-right]=\"updateMethod === 'valueChanges'\"\n >\n <button\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n (click)=\"clearFilter()\"\n [disabled]=\"columnFilter?.isDefault() === true\"\n >\n Clear\n </button>\n <button\n *ngIf=\"updateMethod === 'submit'\"\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n type=\"submit\"\n [disabled]=\"columnFilter?.isDefault() === true\"\n >\n Apply\n </button>\n </div>\n </form>\n</ng-container>\n" }]
2567
2779
  }], ctorParameters: () => [{ type: ColumnsFiltersService }], propDecorators: { column: [{
2568
2780
  type: Input
2569
2781
  }], updateMethod: [{
@@ -2574,18 +2786,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
2574
2786
  type: Output
2575
2787
  }] } });
2576
2788
 
2789
+ class DatatableColumnHeaderComponent {
2790
+ column = input.required(...(ngDevMode ? [{ debugName: "column" }] : []));
2791
+ sortFn = input.required(...(ngDevMode ? [{ debugName: "sortFn" }] : []));
2792
+ columnFilterIcon = input(...(ngDevMode ? [undefined, { debugName: "columnFilterIcon" }] : []));
2793
+ columnFilterUpdateMethod = input(...(ngDevMode ? [undefined, { debugName: "columnFilterUpdateMethod" }] : []));
2794
+ columnFilterUpdateDebounce = input(...(ngDevMode ? [undefined, { debugName: "columnFilterUpdateDebounce" }] : []));
2795
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2796
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.7", type: DatatableColumnHeaderComponent, isStandalone: true, selector: "seam-datatable-column-header", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, sortFn: { classPropertyName: "sortFn", publicName: "sortFn", isSignal: true, isRequired: true, transformFunction: null }, columnFilterIcon: { classPropertyName: "columnFilterIcon", publicName: "columnFilterIcon", isSignal: true, isRequired: false, transformFunction: null }, columnFilterUpdateMethod: { classPropertyName: "columnFilterUpdateMethod", publicName: "columnFilterUpdateMethod", isSignal: true, isRequired: false, transformFunction: null }, columnFilterUpdateDebounce: { classPropertyName: "columnFilterUpdateDebounce", publicName: "columnFilterUpdateDebounce", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.justify-content-center": "column().alignHeader === \"center\"", "class.justify-content-end": "column().alignHeader === \"right\"" }, classAttribute: "d-inline-flex align-items-center flex-fill" }, ngImport: i0, template: "@if (column().filterable) {\n <button\n seamIconBtn\n [icon]=\"columnFilterIcon()\"\n size=\"sm\"\n [seamPopover]=\"filterMenu\"\n [seamPopoverBaseWidth]=\"300\"\n class=\"datatable-column-header-filter-button d-flex align-items-center mr-2\"\n [class.datatable-column-header-filter-button-active]=\"column().filterActive\"\n style=\"width: 1rem\"\n title=\"Click to see filter options\"\n ></button>\n}\n@if (column().sortable) {\n <button\n seamButton\n class=\"datatable-sort-target p-0\"\n (click)=\"sortFn()()\"\n title=\"Click to sort\"\n >\n <strong class=\"draggable\">{{ column().name }}</strong>\n </button>\n} @else {\n <strong class=\"draggable\">{{ column().name }}</strong>\n}\n<div\n class=\"datatable-column-header-separator\"\n [attr.data-column-id]=\"column().$$id\"\n></div>\n<ng-template #filterMenu let-popover=\"popover\">\n <seam-datatable-column-filter-menu\n [column]=\"column()\"\n [updateMethod]=\"columnFilterUpdateMethod()\"\n [debounce]=\"columnFilterUpdateDebounce()\"\n (closePopover)=\"popover?.closePopover()\"\n ></seam-datatable-column-filter-menu>\n</ng-template>\n", styles: [".datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i4$2.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "ngmodule", type: TheSeamPopoverModule }, { kind: "directive", type: i2$3.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i3.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "component", type: DatatableColumnFilterMenuComponent, selector: "seam-datatable-column-filter-menu", inputs: ["column", "updateMethod", "debounce"], outputs: ["closePopover"] }] });
2797
+ }
2798
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnHeaderComponent, decorators: [{
2799
+ type: Component,
2800
+ args: [{ selector: 'seam-datatable-column-header', imports: [
2801
+ CommonModule,
2802
+ TheSeamButtonsModule,
2803
+ TheSeamPopoverModule,
2804
+ TheSeamIconModule,
2805
+ DatatableColumnFilterMenuComponent,
2806
+ ], host: {
2807
+ class: 'd-inline-flex align-items-center flex-fill',
2808
+ '[class.justify-content-center]': 'column().alignHeader === "center"',
2809
+ '[class.justify-content-end]': 'column().alignHeader === "right"',
2810
+ }, template: "@if (column().filterable) {\n <button\n seamIconBtn\n [icon]=\"columnFilterIcon()\"\n size=\"sm\"\n [seamPopover]=\"filterMenu\"\n [seamPopoverBaseWidth]=\"300\"\n class=\"datatable-column-header-filter-button d-flex align-items-center mr-2\"\n [class.datatable-column-header-filter-button-active]=\"column().filterActive\"\n style=\"width: 1rem\"\n title=\"Click to see filter options\"\n ></button>\n}\n@if (column().sortable) {\n <button\n seamButton\n class=\"datatable-sort-target p-0\"\n (click)=\"sortFn()()\"\n title=\"Click to sort\"\n >\n <strong class=\"draggable\">{{ column().name }}</strong>\n </button>\n} @else {\n <strong class=\"draggable\">{{ column().name }}</strong>\n}\n<div\n class=\"datatable-column-header-separator\"\n [attr.data-column-id]=\"column().$$id\"\n></div>\n<ng-template #filterMenu let-popover=\"popover\">\n <seam-datatable-column-filter-menu\n [column]=\"column()\"\n [updateMethod]=\"columnFilterUpdateMethod()\"\n [debounce]=\"columnFilterUpdateDebounce()\"\n (closePopover)=\"popover?.closePopover()\"\n ></seam-datatable-column-filter-menu>\n</ng-template>\n", styles: [".datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}\n"] }]
2811
+ }], propDecorators: { column: [{ type: i0.Input, args: [{ isSignal: true, alias: "column", required: true }] }], sortFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortFn", required: true }] }], columnFilterIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnFilterIcon", required: false }] }], columnFilterUpdateMethod: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnFilterUpdateMethod", required: false }] }], columnFilterUpdateDebounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnFilterUpdateDebounce", required: false }] }] } });
2812
+
2577
2813
  /**
2578
2814
  * Intended for internal classes declared by the `TheSeamDatatableModule`.
2579
2815
  */
2580
2816
  const THESEAM_DATATABLE = new InjectionToken('LibDatatable');
2581
2817
  const _THESEAM_DATATABLE = {
2582
2818
  provide: THESEAM_DATATABLE,
2583
- useExisting: forwardRef(() => DatatableComponent)
2819
+ useExisting: forwardRef(() => DatatableComponent),
2584
2820
  };
2585
2821
  const _THESEAM_DATATABLE_ACCESSOR = {
2586
2822
  provide: THESEAM_DATATABLE_ACCESSOR,
2587
- // tslint:disable-next-line:no-use-before-declare
2588
- useExisting: forwardRef(() => DatatableComponent)
2823
+ useExisting: forwardRef(() => DatatableComponent),
2589
2824
  };
2590
2825
  class DatatableComponent {
2591
2826
  _preferences;
@@ -2626,18 +2861,24 @@ class DatatableComponent {
2626
2861
  get filters() {
2627
2862
  return [
2628
2863
  ...this._menuBarsFiltersSubject.value,
2629
- ...this._columnsFilters.filters()
2864
+ ...this._columnsFilters.filters(),
2630
2865
  ];
2631
2866
  }
2632
2867
  filters$;
2633
- get preferencesKey() { return this._preferencesKey.value; }
2634
- set preferencesKey(value) { this._preferencesKey.next(value || undefined); }
2868
+ get preferencesKey() {
2869
+ return this._preferencesKey.value;
2870
+ }
2871
+ set preferencesKey(value) {
2872
+ this._preferencesKey.next(value || undefined);
2873
+ }
2635
2874
  _preferencesKey = new BehaviorSubject(undefined);
2636
2875
  targetMarkerTemplate;
2637
2876
  set columns(value) {
2638
2877
  this._columnsManager.setInputColumns(Array.isArray(value) ? value : []);
2639
2878
  }
2640
- get rows() { return this._rows.value; }
2879
+ get rows() {
2880
+ return this._rows.value;
2881
+ }
2641
2882
  set rows(value) {
2642
2883
  this._rows.next(value || []);
2643
2884
  }
@@ -2654,15 +2895,20 @@ class DatatableComponent {
2654
2895
  count = 0;
2655
2896
  offset = 0;
2656
2897
  loadingIndicator = false;
2657
- get selectionType() { return this._columnsManager.getSelectionType(); }
2898
+ get selectionType() {
2899
+ return this._columnsManager.getSelectionType();
2900
+ }
2658
2901
  set selectionType(value) {
2659
2902
  this._columnsManager.setSelectionType(notNullOrUndefined(value) ? value : undefined);
2660
2903
  }
2661
2904
  reorderable = true;
2662
2905
  swapColumns = false;
2663
- get sortType() { return this._sortType; }
2906
+ get sortType() {
2907
+ return this._sortType;
2908
+ }
2664
2909
  set sortType(value) {
2665
- if (notNullOrUndefined(value) && (value === SortType.single || value === SortType.multi)) {
2910
+ if (notNullOrUndefined(value) &&
2911
+ (value === SortType.single || value === SortType.multi)) {
2666
2912
  this._sortType = value;
2667
2913
  }
2668
2914
  else {
@@ -2697,7 +2943,7 @@ class DatatableComponent {
2697
2943
  pagerLeftArrow: 'datatable-icon-left',
2698
2944
  pagerRightArrow: 'datatable-icon-right',
2699
2945
  pagerPrevious: 'datatable-icon-prev',
2700
- pagerNext: 'datatable-icon-skip'
2946
+ pagerNext: 'datatable-icon-skip',
2701
2947
  };
2702
2948
  _cssClasses;
2703
2949
  get messages() {
@@ -2710,7 +2956,7 @@ class DatatableComponent {
2710
2956
  else if (notNullOrUndefined(this._config?.messages)) {
2711
2957
  this._messages = {
2712
2958
  ...this._messagesDefault,
2713
- ...this._config?.messages
2959
+ ...this._config?.messages,
2714
2960
  };
2715
2961
  }
2716
2962
  else {
@@ -2724,7 +2970,7 @@ class DatatableComponent {
2724
2970
  // Footer total message
2725
2971
  totalMessage: 'total',
2726
2972
  // Footer selected message
2727
- selectedMessage: 'selected'
2973
+ selectedMessage: 'selected',
2728
2974
  };
2729
2975
  _messages;
2730
2976
  rowIdentity = (x) => x;
@@ -2801,12 +3047,15 @@ class DatatableComponent {
2801
3047
  *
2802
3048
  * Defaults to `frozenRight`.
2803
3049
  */
2804
- get actionItemColumnPosition() { return this._actionItemColumnPosition; }
3050
+ get actionItemColumnPosition() {
3051
+ return this._actionItemColumnPosition;
3052
+ }
2805
3053
  set actionItemColumnPosition(value) {
2806
3054
  if (notNullOrUndefined(value) && isActionItemColumnPosition(value)) {
2807
3055
  this._actionItemColumnPosition = value;
2808
3056
  }
2809
- else if (notNullOrUndefined(this._config?.actionItemColumnPosition) && isActionItemColumnPosition(this._config?.actionItemColumnPosition)) {
3057
+ else if (notNullOrUndefined(this._config?.actionItemColumnPosition) &&
3058
+ isActionItemColumnPosition(this._config?.actionItemColumnPosition)) {
2810
3059
  this._actionItemColumnPosition = this._config?.actionItemColumnPosition;
2811
3060
  }
2812
3061
  else {
@@ -2846,8 +3095,8 @@ class DatatableComponent {
2846
3095
  this._columnFilterUpdateMethod = this._columnFilterUpdateMethodDefault;
2847
3096
  }
2848
3097
  }
2849
- _columnFilterUpdateMethodDefault = 'valueChanges';
2850
3098
  _columnFilterUpdateMethod;
3099
+ _columnFilterUpdateMethodDefault = 'valueChanges';
2851
3100
  get columnFilterUpdateDebounce() {
2852
3101
  return this._columnFilterUpdateDebounce;
2853
3102
  }
@@ -2856,7 +3105,8 @@ class DatatableComponent {
2856
3105
  this._columnFilterUpdateDebounce = value;
2857
3106
  }
2858
3107
  else if (notNullOrUndefined(this._config?.columnFilterUpdateDebounce)) {
2859
- this._columnFilterUpdateDebounce = this._config?.columnFilterUpdateDebounce;
3108
+ this._columnFilterUpdateDebounce =
3109
+ this._config?.columnFilterUpdateDebounce;
2860
3110
  }
2861
3111
  else {
2862
3112
  this._columnFilterUpdateDebounce = this._columnFilterUpdateDebounceDefault;
@@ -2882,7 +3132,9 @@ class DatatableComponent {
2882
3132
  this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []));
2883
3133
  }
2884
3134
  actionMenu;
2885
- get rowActionItem() { return this._rowActionItem; }
3135
+ get rowActionItem() {
3136
+ return this._rowActionItem;
3137
+ }
2886
3138
  set rowActionItem(value) {
2887
3139
  this._rowActionItem = value;
2888
3140
  this._columnsManager.setRowActionItem(notNullOrUndefined(value) ? value : undefined);
@@ -2890,7 +3142,9 @@ class DatatableComponent {
2890
3142
  _rowActionItem;
2891
3143
  rowDetail;
2892
3144
  footer;
2893
- get menuBarComponent() { return this._menuBarComponent; }
3145
+ get menuBarComponent() {
3146
+ return this._menuBarComponent;
3147
+ }
2894
3148
  set menuBarComponent(value) {
2895
3149
  this._menuBarComponent = value;
2896
3150
  if (this._menuBarSub) {
@@ -2898,8 +3152,9 @@ class DatatableComponent {
2898
3152
  }
2899
3153
  if (value) {
2900
3154
  this._setMenuBarFilters(value.filters());
2901
- this._menuBarSub = this._menuBarComponent?.filtersChanged
2902
- .subscribe(() => { this._setMenuBarFilters(value.filters()); });
3155
+ this._menuBarSub = this._menuBarComponent?.filtersChanged.subscribe(() => {
3156
+ this._setMenuBarFilters(value.filters());
3157
+ });
2903
3158
  }
2904
3159
  }
2905
3160
  _menuBarComponent;
@@ -2910,31 +3165,41 @@ class DatatableComponent {
2910
3165
  ngxDatatable;
2911
3166
  ngxDatatableElement;
2912
3167
  ngxRowDetail;
2913
- get actionMenuCellTpl() { return this._actionMenuCellTpl; }
3168
+ get actionMenuCellTpl() {
3169
+ return this._actionMenuCellTpl;
3170
+ }
2914
3171
  set actionMenuCellTpl(value) {
2915
3172
  this._actionMenuCellTpl = value;
2916
3173
  this._columnsManager.setActionMenuCellTpl(notNullOrUndefined(value) ? value : undefined);
2917
3174
  }
2918
3175
  _actionMenuCellTpl;
2919
- get treeToggleTpl() { return this._treeToggleTpl; }
3176
+ get treeToggleTpl() {
3177
+ return this._treeToggleTpl;
3178
+ }
2920
3179
  set treeToggleTpl(value) {
2921
3180
  this._treeToggleTpl = value;
2922
3181
  this._columnsManager.setTreeToggleTpl(notNullOrUndefined(value) ? value : undefined);
2923
3182
  }
2924
3183
  _treeToggleTpl;
2925
- get headerTpl() { return this._headerTpl; }
3184
+ get headerTpl() {
3185
+ return this._headerTpl;
3186
+ }
2926
3187
  set headerTpl(value) {
2927
3188
  this._headerTpl = value;
2928
3189
  this._columnsManager.setHeaderTpl(notNullOrUndefined(value) ? value : undefined);
2929
3190
  }
2930
3191
  _headerTpl;
2931
- get blankHeaderTpl() { return this._blankHeaderTpl; }
3192
+ get blankHeaderTpl() {
3193
+ return this._blankHeaderTpl;
3194
+ }
2932
3195
  set blankHeaderTpl(value) {
2933
3196
  this._blankHeaderTpl = value;
2934
3197
  this._columnsManager.setBlankHeaderTpl(notNullOrUndefined(value) ? value : undefined);
2935
3198
  }
2936
3199
  _blankHeaderTpl;
2937
- get cellTypeSelectorTpl() { return this._cellTypeSelectorTpl; }
3200
+ get cellTypeSelectorTpl() {
3201
+ return this._cellTypeSelectorTpl;
3202
+ }
2938
3203
  set cellTypeSelectorTpl(value) {
2939
3204
  this._cellTypeSelectorTpl = value;
2940
3205
  this._columnsManager.setCellTypeSelectorTpl(notNullOrUndefined(value) ? value : undefined);
@@ -2958,8 +3223,8 @@ class DatatableComponent {
2958
3223
  const id = event.target.parentElement
2959
3224
  ?.querySelector('.datatable-column-header-separator')
2960
3225
  ?.getAttribute('data-column-id');
2961
- this._columnsManager.columns$.pipe(take(1)).subscribe(columns => {
2962
- const column = columns.find(c => c.$$id === id);
3226
+ this._columnsManager.columns$.pipe(take(1)).subscribe((columns) => {
3227
+ const column = columns.find((c) => c.$$id === id);
2963
3228
  if (column) {
2964
3229
  const columnProp = getColumnProp(column);
2965
3230
  if (columnProp) {
@@ -2977,28 +3242,31 @@ class DatatableComponent {
2977
3242
  this._columnsAlterationsManager = _columnsAlterationsManager;
2978
3243
  this._columnsFilters = _columnsFilters;
2979
3244
  this._config = _config;
2980
- this._preferencesKey.pipe(distinctUntilChanged(), switchMap(key => {
3245
+ this._preferencesKey
3246
+ .pipe(distinctUntilChanged(), switchMap((key) => {
2981
3247
  if (!notNullOrUndefined(key) || key.length === 0) {
2982
3248
  return of(undefined);
2983
3249
  }
2984
3250
  return from(waitOnConditionAsync(() => this._preferences.isLoaded(key))).pipe(switchMap(() => this._columnsAlterationsManager.changes.pipe(startWith(undefined), tap(() => {
2985
- console.log('%cSaving columns alterations to preferences', 'color: blue', this._columnsAlterationsManager.get());
3251
+ // console.log('%cSaving columns alterations to preferences', 'color: blue', this._columnsAlterationsManager.get())
2986
3252
  this._preferences.setAlterations(key, this._columnsAlterationsManager.get());
2987
3253
  }))));
2988
- }), takeUntil(this._ngUnsubscribe)).subscribe();
3254
+ }), takeUntil(this._ngUnsubscribe))
3255
+ .subscribe();
2989
3256
  const applyPrefs = (cols) => this._columnsAlterationsManager.changes.pipe(startWith(undefined), map(() => {
2990
- console.log('%cApplying columns alterations', 'color: blue', cols);
3257
+ // console.log('%cApplying columns alterations', 'color: blue', cols)
2991
3258
  this._columnsAlterationsManager.apply(cols, this);
2992
3259
  return cols;
2993
3260
  }));
2994
- this._preferencesKey.pipe(distinctUntilChanged(), switchMap(prefsKey => {
3261
+ this._preferencesKey
3262
+ .pipe(distinctUntilChanged(), switchMap((prefsKey) => {
2995
3263
  if (!notNullOrUndefined(prefsKey)) {
2996
3264
  return of(undefined);
2997
3265
  }
2998
3266
  return this._preferences.preferences(prefsKey).pipe(switchMap(async (preferences) => {
2999
3267
  await waitOnConditionAsync(() => this._preferences.isLoaded(prefsKey));
3000
3268
  return preferences;
3001
- }), take(1), map(preferences => {
3269
+ }), take(1), map((preferences) => {
3002
3270
  let alterations = [];
3003
3271
  try {
3004
3272
  alterations = mapColumnsAlterationsStates(preferences.alterations);
@@ -3011,18 +3279,28 @@ class DatatableComponent {
3011
3279
  console.warn(e);
3012
3280
  }
3013
3281
  }
3014
- console.log('%cSetting columns alterations from preferences', 'color: blue', alterations);
3282
+ // console.log('%cSetting columns alterations from preferences', 'color: blue', alterations)
3015
3283
  this._columnsAlterationsManager.add(alterations);
3016
3284
  }));
3017
- }), takeUntil(this._ngUnsubscribe)).subscribe();
3018
- this.columns$ = combineLatest([this._columnsManager.columns$, this._columnsFilters.columnActiveFilterProps$]).pipe(map(([columns, columnActiveFilterProps]) => columns.map(col => ({
3285
+ }), takeUntil(this._ngUnsubscribe))
3286
+ .subscribe();
3287
+ this.columns$ = combineLatest([
3288
+ this._columnsManager.columns$,
3289
+ this._columnsFilters.columnActiveFilterProps$,
3290
+ ]).pipe(map(([columns, columnActiveFilterProps]) => columns.map((col) => ({
3019
3291
  ...col,
3020
- filterActive: columnActiveFilterProps.includes(this._columnsFilters.getColumnFilterProp(col) || '')
3292
+ filterActive: columnActiveFilterProps.includes(this._columnsFilters.getColumnFilterProp(col) || ''),
3021
3293
  }))));
3022
- this.displayColumns$ = this.columns$.pipe(switchMap(cols => applyPrefs(cols)), map(cols => cols.filter(c => !c.hidden)), tap(v => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)));
3023
- this.filters$ = combineLatest([this._menuBarsFiltersSubject.asObservable(), this._columnsFilters.columnsFilters$]).pipe(map(([menuFilters, columnsFilters]) => [...menuFilters, ...columnsFilters]));
3024
- this.filterStates = this.filters$.pipe(switchMap(filters => composeDataFilterStates(filters)));
3025
- this.rows$ = this._dataSourceSubject.pipe(switchMap(dataSource => {
3294
+ this.displayColumns$ = this.columns$.pipe(switchMap((cols) => applyPrefs(cols)), map((cols) => cols.filter((c) => !c.hidden)), tap((v) => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)));
3295
+ this.filters$ = combineLatest([
3296
+ this._menuBarsFiltersSubject.asObservable(),
3297
+ this._columnsFilters.columnsFilters$,
3298
+ ]).pipe(map(([menuFilters, columnsFilters]) => [
3299
+ ...menuFilters,
3300
+ ...columnsFilters,
3301
+ ]));
3302
+ this.filterStates = this.filters$.pipe(switchMap((filters) => composeDataFilterStates(filters)));
3303
+ this.rows$ = this._dataSourceSubject.pipe(switchMap((dataSource) => {
3026
3304
  // console.log('dataSource', dataSource)
3027
3305
  let dataStream;
3028
3306
  if (isDataSource(dataSource)) {
@@ -3044,9 +3322,9 @@ class DatatableComponent {
3044
3322
  }
3045
3323
  if (!this.externalFiltering) {
3046
3324
  // console.log('not using externalFiltering')
3047
- dataStream = dataStream.pipe(switchMap(rows => this.filters$.pipe(
3325
+ dataStream = dataStream.pipe(switchMap((rows) => this.filters$.pipe(
3048
3326
  // tap(v => console.log('filters', v)),
3049
- concatMap(filters => of(rows).pipe(composeDataFilters(filters))))));
3327
+ concatMap((filters) => of(rows).pipe(composeDataFilters(filters))))));
3050
3328
  // dataStream = this._filtersSubject.pipe(
3051
3329
  // tap(v => console.log('filters', v)),
3052
3330
  // concatMap(filters => dataStream.pipe(composeDataFilters(filters))),
@@ -3058,11 +3336,11 @@ class DatatableComponent {
3058
3336
  takeUntil(this._ngUnsubscribe));
3059
3337
  }));
3060
3338
  // TODO: Implement viewChange for CollectionViewer.
3061
- this.viewChange = this.page.pipe(map(p => ({ start: 0, end: p.count })));
3339
+ this.viewChange = this.page.pipe(map((p) => ({ start: 0, end: p.count })));
3062
3340
  }
3063
3341
  ngOnInit() {
3064
3342
  if (this.rowDetail) {
3065
- this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe(event => {
3343
+ this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe((event) => {
3066
3344
  if (this.ngxRowDetail) {
3067
3345
  this.ngxRowDetail.toggle.emit(event);
3068
3346
  }
@@ -3110,7 +3388,7 @@ class DatatableComponent {
3110
3388
  if (!this.columnComponents || this.columnComponents.length === 0) {
3111
3389
  return null;
3112
3390
  }
3113
- const tpl = this.columnComponents.find(t => t.prop === propName);
3391
+ const tpl = this.columnComponents.find((t) => t.prop === propName);
3114
3392
  if (tpl) {
3115
3393
  return tpl;
3116
3394
  }
@@ -3130,7 +3408,9 @@ class DatatableComponent {
3130
3408
  return item.prop;
3131
3409
  }
3132
3410
  onDatatableResize(event) {
3133
- if (this.ngxDatatable && this.ngxDatatableElement && this.ngxDatatableElement.nativeElement) {
3411
+ if (this.ngxDatatable &&
3412
+ this.ngxDatatableElement &&
3413
+ this.ngxDatatableElement.nativeElement) {
3134
3414
  // TODO: Consider integrating this into the ngx-datatable library to avoid
3135
3415
  // multiple resize calls when the table resizes itself.
3136
3416
  this.ngxDatatable.recalculate();
@@ -3156,7 +3436,7 @@ class DatatableComponent {
3156
3436
  const alteration = new WidthColumnsAlteration({
3157
3437
  columnProp,
3158
3438
  width: event.column.width,
3159
- canAutoResize: false
3439
+ canAutoResize: false,
3160
3440
  }, true);
3161
3441
  this._columnsAlterationsManager.add([alteration]);
3162
3442
  }
@@ -3166,12 +3446,14 @@ class DatatableComponent {
3166
3446
  this.reorder.emit(event);
3167
3447
  const columnProp = getColumnProp(event.column);
3168
3448
  if (columnProp) {
3169
- const currentOrderAlteration = this._columnsAlterationsManager.get().find(x => x.type === 'order');
3449
+ const currentOrderAlteration = this._columnsAlterationsManager
3450
+ .get()
3451
+ .find((x) => x.type === 'order');
3170
3452
  const state = {
3171
3453
  columns: [
3172
3454
  ...(currentOrderAlteration?.state.columns || []).filter((x) => x.columnProp !== columnProp),
3173
- { columnProp, index: event.newValue }
3174
- ]
3455
+ { columnProp, index: event.newValue },
3456
+ ],
3175
3457
  };
3176
3458
  const alteration = new OrderColumnsAlteration(state, true);
3177
3459
  this._columnsAlterationsManager.add([alteration]);
@@ -3204,18 +3486,18 @@ class DatatableComponent {
3204
3486
  offset: this.ngxDatatable?.offset ?? 0,
3205
3487
  pageSize: this.ngxDatatable?.pageSize ?? 0,
3206
3488
  limit: this.ngxDatatable?.limit,
3207
- count: this.ngxDatatable?.count ?? 0
3489
+ count: this.ngxDatatable?.count ?? 0,
3208
3490
  };
3209
3491
  }
3210
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableComponent, deps: [{ token: DatatablePreferencesService }, { token: ColumnsManagerService }, { token: ColumnsAlterationsManagerService }, { token: ColumnsFiltersService }, { token: THESEAM_DATATABLE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3211
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableComponent, isStandalone: false, selector: "seam-datatable", inputs: { preferencesKey: "preferencesKey", targetMarkerTemplate: "targetMarkerTemplate", columns: "columns", rows: "rows", columnMode: "columnMode", groupRowsBy: "groupRowsBy", groupedRows: "groupedRows", selected: "selected", externalPaging: "externalPaging", externalSorting: "externalSorting", externalFiltering: "externalFiltering", limit: "limit", count: "count", offset: "offset", loadingIndicator: "loadingIndicator", selectionType: "selectionType", reorderable: "reorderable", swapColumns: "swapColumns", sortType: "sortType", sorts: "sorts", cssClasses: "cssClasses", messages: "messages", rowIdentity: "rowIdentity", rowClass: "rowClass", selectCheck: "selectCheck", displayCheck: "displayCheck", groupExpansionDefault: "groupExpansionDefault", trackByProp: "trackByProp", selectAllRowsOnPage: "selectAllRowsOnPage", treeFromRelation: "treeFromRelation", treeToRelation: "treeToRelation", summaryRow: "summaryRow", summaryHeight: "summaryHeight", summaryPosition: "summaryPosition", virtualization: "virtualization", headerHeight: "headerHeight", rowHeight: "rowHeight", footerHeight: "footerHeight", scrollbarV: "scrollbarV", scrollbarH: "scrollbarH", dataSource: "dataSource", actionItemColumnPosition: "actionItemColumnPosition", columnFilterIcon: "columnFilterIcon", columnFilterUpdateMethod: "columnFilterUpdateMethod", columnFilterUpdateDebounce: "columnFilterUpdateDebounce" }, outputs: { scroll: "scroll", activate: "activate", select: "select", sort: "sort", page: "page", reorder: "reorder", resize: "resize", tableContextmenu: "tableContextmenu", treeAction: "treeAction", actionRefreshRequest: "actionRefreshRequest", hiddenColumnsChange: "hiddenColumnsChange" }, host: { listeners: { "dblclick": "_dblClick($event)" } }, providers: [
3492
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableComponent, deps: [{ token: DatatablePreferencesService }, { token: ColumnsManagerService }, { token: ColumnsAlterationsManagerService }, { token: ColumnsFiltersService }, { token: THESEAM_DATATABLE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3493
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableComponent, isStandalone: false, selector: "seam-datatable", inputs: { preferencesKey: "preferencesKey", targetMarkerTemplate: "targetMarkerTemplate", columns: "columns", rows: "rows", columnMode: "columnMode", groupRowsBy: "groupRowsBy", groupedRows: "groupedRows", selected: "selected", externalPaging: "externalPaging", externalSorting: "externalSorting", externalFiltering: "externalFiltering", limit: "limit", count: "count", offset: "offset", loadingIndicator: "loadingIndicator", selectionType: "selectionType", reorderable: "reorderable", swapColumns: "swapColumns", sortType: "sortType", sorts: "sorts", cssClasses: "cssClasses", messages: "messages", rowIdentity: "rowIdentity", rowClass: "rowClass", selectCheck: "selectCheck", displayCheck: "displayCheck", groupExpansionDefault: "groupExpansionDefault", trackByProp: "trackByProp", selectAllRowsOnPage: "selectAllRowsOnPage", treeFromRelation: "treeFromRelation", treeToRelation: "treeToRelation", summaryRow: "summaryRow", summaryHeight: "summaryHeight", summaryPosition: "summaryPosition", virtualization: "virtualization", headerHeight: "headerHeight", rowHeight: "rowHeight", footerHeight: "footerHeight", scrollbarV: "scrollbarV", scrollbarH: "scrollbarH", dataSource: "dataSource", actionItemColumnPosition: "actionItemColumnPosition", columnFilterIcon: "columnFilterIcon", columnFilterUpdateMethod: "columnFilterUpdateMethod", columnFilterUpdateDebounce: "columnFilterUpdateDebounce" }, outputs: { scroll: "scroll", activate: "activate", select: "select", sort: "sort", page: "page", reorder: "reorder", resize: "resize", tableContextmenu: "tableContextmenu", treeAction: "treeAction", actionRefreshRequest: "actionRefreshRequest", hiddenColumnsChange: "hiddenColumnsChange" }, host: { listeners: { "dblclick": "_dblClick($event)" } }, providers: [
3212
3494
  _THESEAM_DATATABLE,
3213
3495
  DatatableColumnChangesService,
3214
3496
  _THESEAM_DATATABLE_ACCESSOR,
3215
3497
  ColumnsManagerService,
3216
3498
  ColumnsAlterationsManagerService,
3217
- ColumnsFiltersService
3218
- ], queries: [{ propertyName: "actionMenu", first: true, predicate: DatatableActionMenuComponent, descendants: true, static: true }, { propertyName: "rowActionItem", first: true, predicate: DatatableRowActionItemDirective, descendants: true }, { propertyName: "rowDetail", first: true, predicate: TheSeamDatatableRowDetailDirective, descendants: true, static: true }, { propertyName: "footer", first: true, predicate: TheSeamDatatableFooterDirective, descendants: true, static: true }, { propertyName: "menuBarComponent", first: true, predicate: DatatableMenuBarComponent, descendants: true }, { propertyName: "columnComponents", predicate: DatatableColumnComponent }, { propertyName: "columnFilterTemplates", predicate: TheSeamDatatableColumnFilterDirective }], viewQueries: [{ propertyName: "ngxDatatable", first: true, predicate: DatatableComponent$1, descendants: true }, { propertyName: "ngxDatatableElement", first: true, predicate: DatatableComponent$1, descendants: true, read: ElementRef }, { propertyName: "ngxRowDetail", first: true, predicate: DatatableRowDetailDirective, descendants: true }, { propertyName: "actionMenuCellTpl", first: true, predicate: ["actionMenuCellTpl"], descendants: true, static: true }, { propertyName: "treeToggleTpl", first: true, predicate: ["treeToggleTpl"], descendants: true, static: true }, { propertyName: "headerTpl", first: true, predicate: ["headerTpl"], descendants: true, static: true }, { propertyName: "blankHeaderTpl", first: true, predicate: ["blankHeaderTpl"], descendants: true, static: true }, { propertyName: "cellTypeSelectorTpl", first: true, predicate: ["cellTypeSelectorTpl"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"$any(cssClasses)\"\n [messages]=\"$any(messages)\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <!-- <b>Age: {{ group.age }}</b> -->\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template\n #headerTpl\n ngx-datatable-header-template\n let-column=\"column\"\n let-sortFn=\"sortFn\"\n>\n <div class=\"d-inline-flex align-items-center\">\n <ng-container *ngIf=\"$any(column).filterable\">\n <button\n seamIconBtn\n [icon]=\"columnFilterIcon\"\n size=\"sm\"\n [seamPopover]=\"filterMenu\"\n [seamPopoverBaseWidth]=\"300\"\n class=\"datatable-column-header-filter-button d-flex align-items-center mr-2\"\n [class.datatable-column-header-filter-button-active]=\"$any(column).filterActive\"\n style=\"width: 1rem;\"\n title=\"Click to see filter options\"></button>\n </ng-container>\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <button\n seamButton\n *ngIf=\"column.sortable\"\n class=\"datatable-sort-target p-0\"\n (click)=\"sortFn()\"\n title=\"Click to sort\">\n <strong class=\"draggable\">{{column.name}}</strong>\n </button>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\n </div>\n <ng-template #filterMenu let-popover=\"popover\">\n <seam-datatable-column-filter-menu\n [column]=\"column\"\n [updateMethod]=\"columnFilterUpdateMethod\"\n [debounce]=\"columnFilterUpdateDebounce\"\n (closePopover)=\"popover?.closePopover()\"></seam-datatable-column-filter-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"$any(column).cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;inset:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}.datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}::ng-deep .ngx-datatable .datatable-body-row{position:relative}::ng-deep .ngx-datatable .datatable-row-right{position:absolute!important;top:0}::ng-deep .ngx-datatable .datatable-row-right{right:0}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarVDynamic", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "ghostLoadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "displayPageCount", "displayPager", "disableRowCheck", "rowDraggable", "enableClearingSortState", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "rowDragEvents"] }, { kind: "directive", type: i6.DatatableRowDetailDirective, selector: "ngx-datatable-row-detail", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i6.DatatableGroupHeaderDirective, selector: "ngx-datatable-group-header", inputs: ["rowHeight", "checkboxable", "template"], outputs: ["toggle"] }, { kind: "directive", type: i6.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i6.DataTableColumnCellTreeToggle, selector: "[ngx-datatable-tree-toggle]" }, { kind: "directive", type: i6.DatatableFooterDirective, selector: "ngx-datatable-footer", inputs: ["footerHeight", "totalMessage", "selectedMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "template"] }, { kind: "directive", type: i6.DatatableGroupHeaderTemplateDirective, selector: "[ngx-datatable-group-header-template]" }, { kind: "component", type: i7.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i2$2.TheSeamElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"], exportAs: ["seamElemResized"] }, { kind: "component", type: i5.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "component", type: i3$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "directive", type: i11.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "component", type: i12.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }, { kind: "component", type: DatatableColumnFilterMenuComponent, selector: "seam-datatable-column-filter-menu", inputs: ["column", "updateMethod", "debounce"], outputs: ["closePopover"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
3499
+ ColumnsFiltersService,
3500
+ ], queries: [{ propertyName: "actionMenu", first: true, predicate: DatatableActionMenuComponent, descendants: true, static: true }, { propertyName: "rowActionItem", first: true, predicate: DatatableRowActionItemDirective, descendants: true }, { propertyName: "rowDetail", first: true, predicate: TheSeamDatatableRowDetailDirective, descendants: true, static: true }, { propertyName: "footer", first: true, predicate: TheSeamDatatableFooterDirective, descendants: true, static: true }, { propertyName: "menuBarComponent", first: true, predicate: DatatableMenuBarComponent, descendants: true }, { propertyName: "columnComponents", predicate: DatatableColumnComponent }, { propertyName: "columnFilterTemplates", predicate: TheSeamDatatableColumnFilterDirective }], viewQueries: [{ propertyName: "ngxDatatable", first: true, predicate: DatatableComponent$1, descendants: true }, { propertyName: "ngxDatatableElement", first: true, predicate: DatatableComponent$1, descendants: true, read: ElementRef }, { propertyName: "ngxRowDetail", first: true, predicate: DatatableRowDetailDirective, descendants: true }, { propertyName: "actionMenuCellTpl", first: true, predicate: ["actionMenuCellTpl"], descendants: true, static: true }, { propertyName: "treeToggleTpl", first: true, predicate: ["treeToggleTpl"], descendants: true, static: true }, { propertyName: "headerTpl", first: true, predicate: ["headerTpl"], descendants: true, static: true }, { propertyName: "blankHeaderTpl", first: true, predicate: ["blankHeaderTpl"], descendants: true, static: true }, { propertyName: "cellTypeSelectorTpl", first: true, predicate: ["cellTypeSelectorTpl"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"$any(cssClasses)\"\n [messages]=\"$any(messages)\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\"\n >\n <ngx-datatable-group-header\n [rowHeight]=\"50\"\n #myGroupHeader\n *ngIf=\"groupRowsBy\"\n >\n <ng-template\n let-group=\"group\"\n let-expanded=\"expanded\"\n ngx-datatable-group-header-template\n >\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\"\n >\n <!-- <b>Age: {{ group.age }}</b> -->\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail\n *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\"\n >\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer\n *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\"\n >\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template\n #headerTpl\n ngx-datatable-header-template\n let-column=\"column\"\n let-sortFn=\"sortFn\"\n>\n <seam-datatable-column-header\n [column]=\"column\"\n [sortFn]=\"sortFn\"\n [columnFilterIcon]=\"columnFilterIcon\"\n [columnFilterUpdateMethod]=\"columnFilterUpdateMethod\"\n [columnFilterUpdateDebounce]=\"columnFilterUpdateDebounce\"\n ></seam-datatable-column-header>\n</ng-template>\n\n<ng-template\n #cellTypeSelectorTpl\n ngx-datatable-cell-template\n let-value=\"value\"\n let-rowIndex=\"rowIndex\"\n let-row=\"row\"\n let-column=\"column\"\n>\n <seam-table-cell-type-selector\n *ngIf=\"row\"\n [type]=\"$any(column).cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\"\n >\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template\n #actionMenuCellTpl\n ngx-datatable-cell-template\n let-value=\"value\"\n let-rowIndex=\"rowIndex\"\n let-row=\"row\"\n>\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n row: row,\n rowIndex: rowIndex,\n }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus === 'disabled'\"\n (click)=\"tree.onTreeAction()\"\n >\n <span *ngIf=\"tree.treeStatus === 'loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus === 'collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus === 'expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus === 'disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;inset:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}::ng-deep .ngx-datatable .datatable-body-row{position:relative}::ng-deep .ngx-datatable .datatable-row-right{position:absolute!important;top:0}::ng-deep .ngx-datatable .datatable-row-right{right:0}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarVDynamic", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "ghostLoadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "displayPageCount", "displayPager", "disableRowCheck", "rowDraggable", "enableClearingSortState", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "rowDragEvents"] }, { kind: "directive", type: i6.DatatableRowDetailDirective, selector: "ngx-datatable-row-detail", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i6.DatatableGroupHeaderDirective, selector: "ngx-datatable-group-header", inputs: ["rowHeight", "checkboxable", "template"], outputs: ["toggle"] }, { kind: "directive", type: i6.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i6.DataTableColumnCellTreeToggle, selector: "[ngx-datatable-tree-toggle]" }, { kind: "directive", type: i6.DatatableFooterDirective, selector: "ngx-datatable-footer", inputs: ["footerHeight", "totalMessage", "selectedMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "template"] }, { kind: "directive", type: i6.DatatableGroupHeaderTemplateDirective, selector: "[ngx-datatable-group-header-template]" }, { kind: "component", type: i7.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i8.TheSeamElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"], exportAs: ["seamElemResized"] }, { kind: "component", type: i9.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }, { kind: "component", type: DatatableColumnHeaderComponent, selector: "seam-datatable-column-header", inputs: ["column", "sortFn", "columnFilterIcon", "columnFilterUpdateMethod", "columnFilterUpdateDebounce"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
3219
3501
  trigger('slideDown', [
3220
3502
  transition(':enter', [
3221
3503
  style({ transform: 'translateY(-20%)', opacity: '0' }),
@@ -3224,8 +3506,8 @@ class DatatableComponent {
3224
3506
  transition(':leave', [
3225
3507
  style({ transform: 'translateY(0)', opacity: '1' }),
3226
3508
  animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),
3227
- ])
3228
- ])
3509
+ ]),
3510
+ ]),
3229
3511
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3230
3512
  }
3231
3513
  __decorate([
@@ -3285,7 +3567,7 @@ __decorate([
3285
3567
  __decorate([
3286
3568
  InputBoolean()
3287
3569
  ], DatatableComponent.prototype, "scrollbarH", void 0);
3288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableComponent, decorators: [{
3570
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableComponent, decorators: [{
3289
3571
  type: Component,
3290
3572
  args: [{ selector: 'seam-datatable', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
3291
3573
  trigger('slideDown', [
@@ -3296,16 +3578,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
3296
3578
  transition(':leave', [
3297
3579
  style({ transform: 'translateY(0)', opacity: '1' }),
3298
3580
  animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),
3299
- ])
3300
- ])
3581
+ ]),
3582
+ ]),
3301
3583
  ], providers: [
3302
3584
  _THESEAM_DATATABLE,
3303
3585
  DatatableColumnChangesService,
3304
3586
  _THESEAM_DATATABLE_ACCESSOR,
3305
3587
  ColumnsManagerService,
3306
3588
  ColumnsAlterationsManagerService,
3307
- ColumnsFiltersService
3308
- ], standalone: false, template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"$any(cssClasses)\"\n [messages]=\"$any(messages)\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <!-- <b>Age: {{ group.age }}</b> -->\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template\n #headerTpl\n ngx-datatable-header-template\n let-column=\"column\"\n let-sortFn=\"sortFn\"\n>\n <div class=\"d-inline-flex align-items-center\">\n <ng-container *ngIf=\"$any(column).filterable\">\n <button\n seamIconBtn\n [icon]=\"columnFilterIcon\"\n size=\"sm\"\n [seamPopover]=\"filterMenu\"\n [seamPopoverBaseWidth]=\"300\"\n class=\"datatable-column-header-filter-button d-flex align-items-center mr-2\"\n [class.datatable-column-header-filter-button-active]=\"$any(column).filterActive\"\n style=\"width: 1rem;\"\n title=\"Click to see filter options\"></button>\n </ng-container>\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <button\n seamButton\n *ngIf=\"column.sortable\"\n class=\"datatable-sort-target p-0\"\n (click)=\"sortFn()\"\n title=\"Click to sort\">\n <strong class=\"draggable\">{{column.name}}</strong>\n </button>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\n </div>\n <ng-template #filterMenu let-popover=\"popover\">\n <seam-datatable-column-filter-menu\n [column]=\"column\"\n [updateMethod]=\"columnFilterUpdateMethod\"\n [debounce]=\"columnFilterUpdateDebounce\"\n (closePopover)=\"popover?.closePopover()\"></seam-datatable-column-filter-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"$any(column).cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;inset:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}.datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}::ng-deep .ngx-datatable .datatable-body-row{position:relative}::ng-deep .ngx-datatable .datatable-row-right{position:absolute!important;top:0}::ng-deep .ngx-datatable .datatable-row-right{right:0}\n"] }]
3589
+ ColumnsFiltersService,
3590
+ ], standalone: false, template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"$any(cssClasses)\"\n [messages]=\"$any(messages)\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\"\n >\n <ngx-datatable-group-header\n [rowHeight]=\"50\"\n #myGroupHeader\n *ngIf=\"groupRowsBy\"\n >\n <ng-template\n let-group=\"group\"\n let-expanded=\"expanded\"\n ngx-datatable-group-header-template\n >\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\"\n >\n <!-- <b>Age: {{ group.age }}</b> -->\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail\n *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\"\n >\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer\n *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\"\n >\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template\n #headerTpl\n ngx-datatable-header-template\n let-column=\"column\"\n let-sortFn=\"sortFn\"\n>\n <seam-datatable-column-header\n [column]=\"column\"\n [sortFn]=\"sortFn\"\n [columnFilterIcon]=\"columnFilterIcon\"\n [columnFilterUpdateMethod]=\"columnFilterUpdateMethod\"\n [columnFilterUpdateDebounce]=\"columnFilterUpdateDebounce\"\n ></seam-datatable-column-header>\n</ng-template>\n\n<ng-template\n #cellTypeSelectorTpl\n ngx-datatable-cell-template\n let-value=\"value\"\n let-rowIndex=\"rowIndex\"\n let-row=\"row\"\n let-column=\"column\"\n>\n <seam-table-cell-type-selector\n *ngIf=\"row\"\n [type]=\"$any(column).cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\"\n >\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template\n #actionMenuCellTpl\n ngx-datatable-cell-template\n let-value=\"value\"\n let-rowIndex=\"rowIndex\"\n let-row=\"row\"\n>\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n row: row,\n rowIndex: rowIndex,\n }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus === 'disabled'\"\n (click)=\"tree.onTreeAction()\"\n >\n <span *ngIf=\"tree.treeStatus === 'loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus === 'collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus === 'expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus === 'disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;inset:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}::ng-deep .ngx-datatable .datatable-body-row{position:relative}::ng-deep .ngx-datatable .datatable-row-right{position:absolute!important;top:0}::ng-deep .ngx-datatable .datatable-row-right{right:0}\n"] }]
3309
3591
  }], ctorParameters: () => [{ type: DatatablePreferencesService }, { type: ColumnsManagerService }, { type: ColumnsAlterationsManagerService }, { type: ColumnsFiltersService }, { type: undefined, decorators: [{
3310
3592
  type: Optional
3311
3593
  }, {
@@ -3483,11 +3765,10 @@ class DatatableColumnPreferencesComponent {
3483
3765
  this._columnsAlterationsManager = _columnsAlterationsManager;
3484
3766
  this._columns$ = combineLatest([
3485
3767
  this._datatable.columns$ ?? of([]),
3486
- observeControlValue(this._filterControl)
3768
+ observeControlValue(this._filterControl),
3487
3769
  ]).pipe(map(([columns, filter]) => {
3488
3770
  const _filter = (filter || '').trim().toLowerCase();
3489
- return columns
3490
- .filter(c => this._canToggleColumn(c, _filter));
3771
+ return columns.filter((c) => this._canToggleColumn(c, _filter));
3491
3772
  }));
3492
3773
  }
3493
3774
  _canToggleColumn(column, filter, omitInternalColumns = true) {
@@ -3500,7 +3781,7 @@ class DatatableColumnPreferencesComponent {
3500
3781
  if (filter.length === 0) {
3501
3782
  return true;
3502
3783
  }
3503
- return `${(getColumnProp(column) || '')}`.toLowerCase().indexOf(filter) !== -1;
3784
+ return `${getColumnProp(column) || ''}`.toLowerCase().indexOf(filter) !== -1;
3504
3785
  }
3505
3786
  _onChange(event, col) {
3506
3787
  const columnProp = getColumnProp(col);
@@ -3510,16 +3791,16 @@ class DatatableColumnPreferencesComponent {
3510
3791
  }
3511
3792
  const alteration = new HideColumnColumnsAlteration({
3512
3793
  columnProp,
3513
- hidden
3794
+ hidden,
3514
3795
  }, hidden);
3515
3796
  this._columnsAlterationsManager.add([alteration]);
3516
3797
  }
3517
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesComponent, deps: [{ token: THESEAM_DATATABLE }, { token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
3518
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnPreferencesComponent, isStandalone: false, selector: "seam-datatable-column-preferences", ngImport: i0, template: "<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\" >\n <input seamInput [formControl]=\"_filterControl\" seamInputSize=\"sm\" placeholder=\"Search\" seamAutoFocus>\n</seam-form-field>\n\n<div seamOverlayScrollbar style=\"min-height: 200px; max-height: 600px; min-width: 250px;\" class=\"flex-grow-1 mb-2\">\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox [checked]=\"!col.hidden\" (change)=\"_onChange($event, col)\">{{ col.name || col.prop }}</seam-checkbox>\n </ng-container>\n </div>\n\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "component", type: i4$2.TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3798
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesComponent, deps: [{ token: THESEAM_DATATABLE }, { token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
3799
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnPreferencesComponent, isStandalone: false, selector: "seam-datatable-column-preferences", ngImport: i0, template: "<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\">\n <input\n seamInput\n [formControl]=\"_filterControl\"\n seamInputSize=\"sm\"\n placeholder=\"Search\"\n seamAutoFocus\n />\n</seam-form-field>\n\n<div\n seamOverlayScrollbar\n style=\"min-height: 200px; max-height: 600px; min-width: 250px\"\n class=\"flex-grow-1 mb-2\"\n>\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox\n [checked]=\"!col.hidden\"\n (change)=\"_onChange($event, col)\"\n >{{ col.name || col.prop }}</seam-checkbox\n >\n </ng-container>\n </div>\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "component", type: i4$3.TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3519
3800
  }
3520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesComponent, decorators: [{
3801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesComponent, decorators: [{
3521
3802
  type: Component,
3522
- args: [{ selector: 'seam-datatable-column-preferences', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\" >\n <input seamInput [formControl]=\"_filterControl\" seamInputSize=\"sm\" placeholder=\"Search\" seamAutoFocus>\n</seam-form-field>\n\n<div seamOverlayScrollbar style=\"min-height: 200px; max-height: 600px; min-width: 250px;\" class=\"flex-grow-1 mb-2\">\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox [checked]=\"!col.hidden\" (change)=\"_onChange($event, col)\">{{ col.name || col.prop }}</seam-checkbox>\n </ng-container>\n </div>\n\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
3803
+ args: [{ selector: 'seam-datatable-column-preferences', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\">\n <input\n seamInput\n [formControl]=\"_filterControl\"\n seamInputSize=\"sm\"\n placeholder=\"Search\"\n seamAutoFocus\n />\n</seam-form-field>\n\n<div\n seamOverlayScrollbar\n style=\"min-height: 200px; max-height: 600px; min-width: 250px\"\n class=\"flex-grow-1 mb-2\"\n>\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox\n [checked]=\"!col.hidden\"\n (change)=\"_onChange($event, col)\"\n >{{ col.name || col.prop }}</seam-checkbox\n >\n </ng-container>\n </div>\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
3523
3804
  }], ctorParameters: () => [{ type: DatatableComponent, decorators: [{
3524
3805
  type: Inject,
3525
3806
  args: [THESEAM_DATATABLE]
@@ -3561,12 +3842,12 @@ class DatatableColumnPreferencesButtonComponent {
3561
3842
  _resetColumns(event) {
3562
3843
  this._columnsAlterationsManager.clear();
3563
3844
  }
3564
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, deps: [{ token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
3565
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnPreferencesButtonComponent, isStandalone: false, selector: "seam-datatable-column-preferences-button", ngImport: i0, template: "<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\">\n Show/Hide Columns\n </button>\n\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\">\n Reset Columns\n </button>\n</seam-menu>\n\n<button type=\"button\" class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Column Preferences\">\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n\n", styles: [""], dependencies: [{ kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i5.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i11.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "component", type: DatatableColumnPreferencesComponent, selector: "seam-datatable-column-preferences" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3845
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, deps: [{ token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
3846
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableColumnPreferencesButtonComponent, isStandalone: false, selector: "seam-datatable-column-preferences-button", ngImport: i0, template: "<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu\n #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\"\n>\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\"\n >\n Show/Hide Columns\n </button>\n\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\"\n >\n Reset Columns\n </button>\n</seam-menu>\n\n<button\n type=\"button\"\n class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px\"\n title=\"Column Preferences\"\n>\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i2$3.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "component", type: DatatableColumnPreferencesComponent, selector: "seam-datatable-column-preferences" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3566
3847
  }
3567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, decorators: [{
3848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, decorators: [{
3568
3849
  type: Component,
3569
- args: [{ selector: 'seam-datatable-column-preferences-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\">\n Show/Hide Columns\n </button>\n\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\">\n Reset Columns\n </button>\n</seam-menu>\n\n<button type=\"button\" class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Column Preferences\">\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n\n" }]
3850
+ args: [{ selector: 'seam-datatable-column-preferences-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu\n #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\"\n>\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\"\n >\n Show/Hide Columns\n </button>\n\n <button\n seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\"\n >\n Reset Columns\n </button>\n</seam-menu>\n\n<button\n type=\"button\"\n class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px\"\n title=\"Column Preferences\"\n>\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n" }]
3570
3851
  }], ctorParameters: () => [{ type: ColumnsAlterationsManagerService }] });
3571
3852
 
3572
3853
  class DatatableExportButtonComponent {
@@ -3599,17 +3880,17 @@ class DatatableExportButtonComponent {
3599
3880
  }
3600
3881
  const export$ = combineLatest([
3601
3882
  this._datatable.rows$,
3602
- this._datatable.columns$.pipe(map(cols => cols.filter(c => !isInternalColumn(c))))
3883
+ this._datatable.columns$.pipe(map((cols) => cols.filter((c) => !isInternalColumn(c)))),
3603
3884
  ]).pipe(take(1), map(([rows, columns]) => {
3604
3885
  if (exporter.skipDataMapping) {
3605
3886
  return rows;
3606
3887
  }
3607
3888
  return this._mapExportData(columns || [], rows);
3608
- }), concatMap(data => exporter.export(data)), catchError(err => {
3889
+ }), concatMap((data) => exporter.export(data)), catchError((err) => {
3609
3890
  // eslint-disable-next-line no-console
3610
3891
  console.error(err);
3611
3892
  return of(false);
3612
- }), tap(success => {
3893
+ }), tap((success) => {
3613
3894
  if (success) {
3614
3895
  this._toastr.success(`${exporter.label} export complete.`, 'Data Export');
3615
3896
  }
@@ -3646,16 +3927,16 @@ class DatatableExportButtonComponent {
3646
3927
  }
3647
3928
  return undefined;
3648
3929
  }
3649
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableExportButtonComponent, deps: [{ token: THESEAM_DATATABLE }, { token: i1$2.ToastrService }, { token: i2$3.TheSeamLoadingOverlayService }, { token: i3$2.DynamicValueHelperService }, { token: THESEAM_DYNAMIC_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3650
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableExportButtonComponent, isStandalone: false, selector: "seam-datatable-export-button", inputs: { exporters: "exporters" }, ngImport: i0, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i5.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i3$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3930
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableExportButtonComponent, deps: [{ token: THESEAM_DATATABLE }, { token: i1$2.ToastrService }, { token: i2$4.TheSeamLoadingOverlayService }, { token: i3$2.DynamicValueHelperService }, { token: THESEAM_DYNAMIC_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3931
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableExportButtonComponent, isStandalone: false, selector: "seam-datatable-export-button", inputs: { exporters: "exporters" }, ngImport: i0, template: "<seam-menu #menu>\n <button\n *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\"\n >\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px\"\n title=\"Export\"\n [disabled]=\"disabled\"\n>\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i4$2.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3651
3932
  }
3652
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
3933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
3653
3934
  type: Component,
3654
- args: [{ selector: 'seam-datatable-export-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"] }]
3935
+ args: [{ selector: 'seam-datatable-export-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<seam-menu #menu>\n <button\n *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\"\n >\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px\"\n title=\"Export\"\n [disabled]=\"disabled\"\n>\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"] }]
3655
3936
  }], ctorParameters: () => [{ type: DatatableComponent, decorators: [{
3656
3937
  type: Inject,
3657
3938
  args: [THESEAM_DATATABLE]
3658
- }] }, { type: i1$2.ToastrService }, { type: i2$3.TheSeamLoadingOverlayService }, { type: i3$2.DynamicValueHelperService }, { type: undefined, decorators: [{
3939
+ }] }, { type: i1$2.ToastrService }, { type: i2$4.TheSeamLoadingOverlayService }, { type: i3$2.DynamicValueHelperService }, { type: undefined, decorators: [{
3659
3940
  type: Optional
3660
3941
  }, {
3661
3942
  type: Inject,
@@ -3665,37 +3946,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
3665
3946
  }] } });
3666
3947
 
3667
3948
  class DatatableMenuBarColumnCenterComponent {
3668
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3669
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarColumnCenterComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-center", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 auto;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3949
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3950
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableMenuBarColumnCenterComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-center", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 auto;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3670
3951
  }
3671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, decorators: [{
3952
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, decorators: [{
3672
3953
  type: Component,
3673
3954
  args: [{ selector: 'seam-datatable-menu-bar-column-center', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 auto;justify-content:center}\n"] }]
3674
3955
  }] });
3675
3956
 
3676
3957
  class DatatableMenuBarColumnLeftComponent {
3677
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3678
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarColumnLeftComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-left", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-start}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3958
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3959
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableMenuBarColumnLeftComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-left", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-start}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3679
3960
  }
3680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, decorators: [{
3961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, decorators: [{
3681
3962
  type: Component,
3682
3963
  args: [{ selector: 'seam-datatable-menu-bar-column-left', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-start}\n"] }]
3683
3964
  }] });
3684
3965
 
3685
3966
  class DatatableMenuBarColumnRightComponent {
3686
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnRightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3687
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarColumnRightComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-right", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3967
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnRightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3968
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableMenuBarColumnRightComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-right", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3688
3969
  }
3689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnRightComponent, decorators: [{
3970
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnRightComponent, decorators: [{
3690
3971
  type: Component,
3691
3972
  args: [{ selector: 'seam-datatable-menu-bar-column-right', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-end}\n"] }]
3692
3973
  }] });
3693
3974
 
3694
3975
  class DatatableMenuBarRowComponent {
3695
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3696
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarRowComponent, isStandalone: false, selector: "seam-datatable-menu-bar-row", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3976
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3977
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableMenuBarRowComponent, isStandalone: false, selector: "seam-datatable-menu-bar-row", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3697
3978
  }
3698
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarRowComponent, decorators: [{
3979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarRowComponent, decorators: [{
3699
3980
  type: Component,
3700
3981
  args: [{ selector: 'seam-datatable-menu-bar-row', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}\n"] }]
3701
3982
  }] });
@@ -3715,10 +3996,10 @@ class DatatableMenuBarTextComponent {
3715
3996
  }
3716
3997
  }
3717
3998
  }
3718
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarTextComponent, deps: [{ token: DatatableMenuBarComponent }, { token: THESEAM_MENUBAR_ITEM_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3719
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarTextComponent, isStandalone: false, selector: "seam-datatable-menu-bar-text", inputs: { value: "value" }, ngImport: i0, template: "{{ value }}\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3999
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarTextComponent, deps: [{ token: DatatableMenuBarComponent }, { token: THESEAM_MENUBAR_ITEM_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4000
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: DatatableMenuBarTextComponent, isStandalone: false, selector: "seam-datatable-menu-bar-text", inputs: { value: "value" }, ngImport: i0, template: "{{ value }}\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3720
4001
  }
3721
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarTextComponent, decorators: [{
4002
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarTextComponent, decorators: [{
3722
4003
  type: Component,
3723
4004
  args: [{ selector: 'seam-datatable-menu-bar-text', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "{{ value }}\n" }]
3724
4005
  }], ctorParameters: () => [{ type: DatatableMenuBarComponent }, { type: undefined, decorators: [{
@@ -3793,16 +4074,16 @@ class DatatableActionMenuItemDirective {
3793
4074
  this._dynamicComponentLoader = _dynamicComponentLoader;
3794
4075
  this._http = _http;
3795
4076
  }
3796
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemDirective, deps: [{ token: i1$3.Modal }, { token: i2$4.TheSeamDynamicComponentLoader }, { token: i3$3.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3797
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuItemDirective, isStandalone: false, selector: "[seamDatatableActionMenuItem]", inputs: { label: "label", href: ["attr.href", "href"], target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", routerLink: "routerLink", confirmDialog: "confirmDialog", row: "row" }, outputs: { click: "click" }, host: { properties: { "class.list-group-item": "this._listGroupItem", "class.list-group-item-action": "this._listGroupItemAction" } }, ngImport: i0 });
4077
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuItemDirective, deps: [{ token: i1$3.Modal }, { token: i2$5.TheSeamDynamicComponentLoader }, { token: i3$3.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
4078
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableActionMenuItemDirective, isStandalone: false, selector: "[seamDatatableActionMenuItem]", inputs: { label: "label", href: ["attr.href", "href"], target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", routerLink: "routerLink", confirmDialog: "confirmDialog", row: "row" }, outputs: { click: "click" }, host: { properties: { "class.list-group-item": "this._listGroupItem", "class.list-group-item-action": "this._listGroupItemAction" } }, ngImport: i0 });
3798
4079
  }
3799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemDirective, decorators: [{
4080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuItemDirective, decorators: [{
3800
4081
  type: Directive,
3801
4082
  args: [{
3802
4083
  selector: '[seamDatatableActionMenuItem]',
3803
- standalone: false
4084
+ standalone: false,
3804
4085
  }]
3805
- }], ctorParameters: () => [{ type: i1$3.Modal }, { type: i2$4.TheSeamDynamicComponentLoader }, { type: i3$3.HttpClient, decorators: [{
4086
+ }], ctorParameters: () => [{ type: i1$3.Modal }, { type: i2$5.TheSeamDynamicComponentLoader }, { type: i3$3.HttpClient, decorators: [{
3806
4087
  type: Optional
3807
4088
  }] }], propDecorators: { _listGroupItem: [{
3808
4089
  type: HostBinding,
@@ -3857,16 +4138,26 @@ class DatatableActionMenuToggleDirective {
3857
4138
  _onClick(event) {
3858
4139
  this.toggle();
3859
4140
  }
3860
- _mouseDown(event) { this.onInputDown(event); }
3861
- _pointerDown(event) { this.onInputDown(event); }
3862
- _mouseUp(event) { this.onInputUp(event); }
3863
- _pointerUp(event) { this.onInputUp(event); }
4141
+ _mouseDown(event) {
4142
+ this.onInputDown(event);
4143
+ }
4144
+ _pointerDown(event) {
4145
+ this.onInputDown(event);
4146
+ }
4147
+ _mouseUp(event) {
4148
+ this.onInputUp(event);
4149
+ }
4150
+ _pointerUp(event) {
4151
+ this.onInputUp(event);
4152
+ }
3864
4153
  constructor(_elementRef, _viewContainerRef, _overlay) {
3865
4154
  this._elementRef = _elementRef;
3866
4155
  this._viewContainerRef = _viewContainerRef;
3867
4156
  this._overlay = _overlay;
3868
4157
  }
3869
- get active() { return this._active; }
4158
+ get active() {
4159
+ return this._active;
4160
+ }
3870
4161
  toggle() {
3871
4162
  if (this._active) {
3872
4163
  this.disable();
@@ -3899,7 +4190,8 @@ class DatatableActionMenuToggleDirective {
3899
4190
  this._active = false;
3900
4191
  }
3901
4192
  getOverlayPosition(origin) {
3902
- const positionStrategy = this._overlay.position()
4193
+ const positionStrategy = this._overlay
4194
+ .position()
3903
4195
  .flexibleConnectedTo(origin)
3904
4196
  .withPositions(this.getPositions())
3905
4197
  .withFlexibleDimensions(false)
@@ -3947,15 +4239,15 @@ class DatatableActionMenuToggleDirective {
3947
4239
  onInputUp(event) {
3948
4240
  this._actionDown = false;
3949
4241
  }
3950
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
3951
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuToggleDirective, isStandalone: false, selector: "[seamDatatableActionMenuToggle]", inputs: { seamDatatableActionMenuToggle: "seamDatatableActionMenuToggle" }, host: { listeners: { "document:keydown": "_onKeydown($event)", "click": "_onClick($event)", "mousedown": "_mouseDown($event)", "pointerdown": "_pointerDown($event)", "mouseup": "_mouseUp($event)", "pointerup": "_pointerUp($event)" } }, exportAs: ["seamDatatableActionMenuToggle"], ngImport: i0 });
4242
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
4243
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: DatatableActionMenuToggleDirective, isStandalone: false, selector: "[seamDatatableActionMenuToggle]", inputs: { seamDatatableActionMenuToggle: "seamDatatableActionMenuToggle" }, host: { listeners: { "document:keydown": "_onKeydown($event)", "click": "_onClick($event)", "mousedown": "_mouseDown($event)", "pointerdown": "_pointerDown($event)", "mouseup": "_mouseUp($event)", "pointerup": "_pointerUp($event)" } }, exportAs: ["seamDatatableActionMenuToggle"], ngImport: i0 });
3952
4244
  }
3953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuToggleDirective, decorators: [{
4245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuToggleDirective, decorators: [{
3954
4246
  type: Directive,
3955
4247
  args: [{
3956
4248
  selector: '[seamDatatableActionMenuToggle]',
3957
4249
  exportAs: 'seamDatatableActionMenuToggle',
3958
- standalone: false
4250
+ standalone: false,
3959
4251
  }]
3960
4252
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1$4.Overlay }], propDecorators: { seamDatatableActionMenuToggle: [{
3961
4253
  type: Input
@@ -4012,12 +4304,12 @@ class TheSeamDatatableScrollbarHelperService {
4012
4304
  onInitScroller(scroller) {
4013
4305
  this._scrollbars.initializeInstance(scroller.parentElement, {
4014
4306
  callbacks: {
4015
- onScroll: e => {
4307
+ onScroll: (e) => {
4016
4308
  this._ngZone.run(() => {
4017
4309
  scroller.onScrolled(e);
4018
4310
  });
4019
- }
4020
- }
4311
+ },
4312
+ },
4021
4313
  });
4022
4314
  }
4023
4315
  onDestroyScroller(scroller) {
@@ -4026,26 +4318,28 @@ class TheSeamDatatableScrollbarHelperService {
4026
4318
  setOffset(scroller, offsetY) {
4027
4319
  this._ngZone.runOutsideAngular(() => {
4028
4320
  if (this.animatedScrolling) {
4029
- this._scrollbars.getInstance(scroller.parentElement)
4321
+ this._scrollbars
4322
+ .getInstance(scroller.parentElement)
4030
4323
  .scroll({ y: offsetY }, this.animatedScrollingTime);
4031
4324
  }
4032
4325
  else {
4033
- this._scrollbars.getInstance(scroller.parentElement)
4326
+ this._scrollbars
4327
+ .getInstance(scroller.parentElement)
4034
4328
  .scroll({ y: offsetY });
4035
4329
  }
4036
4330
  });
4037
4331
  }
4038
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, deps: [{ token: i0.NgZone }, { token: i1$5.TheSeamOverlayScrollbarsService }], target: i0.ɵɵFactoryTarget.Injectable });
4039
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService });
4332
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, deps: [{ token: i0.NgZone }, { token: i1$5.TheSeamOverlayScrollbarsService }], target: i0.ɵɵFactoryTarget.Injectable });
4333
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableScrollbarHelperService });
4040
4334
  }
4041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, decorators: [{
4335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, decorators: [{
4042
4336
  type: Injectable
4043
4337
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$5.TheSeamOverlayScrollbarsService }] });
4044
4338
 
4045
4339
  function withStoredColumnInfo(columns, preferenceColumns) {
4046
4340
  const _columns = [];
4047
4341
  for (const col of columns) {
4048
- const storedCol = preferenceColumns.find(v => v.prop === col.prop);
4342
+ const storedCol = preferenceColumns.find((v) => v.prop === col.prop);
4049
4343
  if (storedCol) {
4050
4344
  const _col = { ...col };
4051
4345
  if (hasProperty(storedCol, 'width')) {
@@ -4062,8 +4356,8 @@ function withStoredColumnInfo(columns, preferenceColumns) {
4062
4356
  }
4063
4357
 
4064
4358
  class TheSeamDatatableModule {
4065
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4066
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, declarations: [DatatableComponent,
4359
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4360
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, declarations: [DatatableComponent,
4067
4361
  DatatableCellTplDirective,
4068
4362
  DatatableColumnComponent,
4069
4363
  DatatableActionMenuComponent,
@@ -4085,10 +4379,6 @@ class TheSeamDatatableModule {
4085
4379
  DatatableMenuBarColumnCenterComponent,
4086
4380
  DatatableMenuBarColumnRightComponent,
4087
4381
  DatatableMenuBarTextComponent,
4088
- DatatableColumnFilterMenuComponent,
4089
- DatatableColumnFilterSearchTextComponent,
4090
- DatatableColumnFilterSearchNumericComponent,
4091
- DatatableColumnFilterSearchDateComponent,
4092
4382
  DatatableColumnFilterTplDirective,
4093
4383
  TheSeamDatatableColumnFilterDirective], imports: [CommonModule,
4094
4384
  NgxDatatableModule,
@@ -4111,7 +4401,12 @@ class TheSeamDatatableModule {
4111
4401
  TheSeamTableCellTypeModule,
4112
4402
  TheSeamDataFiltersModule,
4113
4403
  NgSelectModule,
4114
- TheSeamToggleGroupModule], exports: [DatatableComponent,
4404
+ TheSeamToggleGroupModule,
4405
+ DatatableColumnHeaderComponent,
4406
+ DatatableColumnFilterMenuComponent,
4407
+ DatatableColumnFilterSearchTextComponent,
4408
+ DatatableColumnFilterSearchNumericComponent,
4409
+ DatatableColumnFilterSearchDateComponent], exports: [DatatableComponent,
4115
4410
  DatatableCellTplDirective,
4116
4411
  DatatableColumnComponent,
4117
4412
  DatatableActionMenuComponent,
@@ -4138,8 +4433,11 @@ class TheSeamDatatableModule {
4138
4433
  DatatableColumnFilterSearchDateComponent,
4139
4434
  DatatableColumnFilterTplDirective,
4140
4435
  TheSeamDatatableColumnFilterDirective] });
4141
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, providers: [
4142
- { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService },
4436
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, providers: [
4437
+ {
4438
+ provide: ScrollbarHelper,
4439
+ useClass: TheSeamDatatableScrollbarHelperService,
4440
+ },
4143
4441
  ], imports: [CommonModule,
4144
4442
  NgxDatatableModule,
4145
4443
  FontAwesomeModule,
@@ -4161,9 +4459,14 @@ class TheSeamDatatableModule {
4161
4459
  TheSeamTableCellTypeModule,
4162
4460
  TheSeamDataFiltersModule,
4163
4461
  NgSelectModule,
4164
- TheSeamToggleGroupModule] });
4462
+ TheSeamToggleGroupModule,
4463
+ DatatableColumnHeaderComponent,
4464
+ DatatableColumnFilterMenuComponent,
4465
+ DatatableColumnFilterSearchTextComponent,
4466
+ DatatableColumnFilterSearchNumericComponent,
4467
+ DatatableColumnFilterSearchDateComponent] });
4165
4468
  }
4166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, decorators: [{
4469
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, decorators: [{
4167
4470
  type: NgModule,
4168
4471
  args: [{
4169
4472
  declarations: [
@@ -4189,10 +4492,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4189
4492
  DatatableMenuBarColumnCenterComponent,
4190
4493
  DatatableMenuBarColumnRightComponent,
4191
4494
  DatatableMenuBarTextComponent,
4192
- DatatableColumnFilterMenuComponent,
4193
- DatatableColumnFilterSearchTextComponent,
4194
- DatatableColumnFilterSearchNumericComponent,
4195
- DatatableColumnFilterSearchDateComponent,
4196
4495
  DatatableColumnFilterTplDirective,
4197
4496
  TheSeamDatatableColumnFilterDirective,
4198
4497
  ],
@@ -4219,6 +4518,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4219
4518
  TheSeamDataFiltersModule,
4220
4519
  NgSelectModule,
4221
4520
  TheSeamToggleGroupModule,
4521
+ DatatableColumnHeaderComponent,
4522
+ DatatableColumnFilterMenuComponent,
4523
+ DatatableColumnFilterSearchTextComponent,
4524
+ DatatableColumnFilterSearchNumericComponent,
4525
+ DatatableColumnFilterSearchDateComponent,
4222
4526
  ],
4223
4527
  exports: [
4224
4528
  DatatableComponent,
@@ -4250,7 +4554,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4250
4554
  TheSeamDatatableColumnFilterDirective,
4251
4555
  ],
4252
4556
  providers: [
4253
- { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService },
4557
+ {
4558
+ provide: ScrollbarHelper,
4559
+ useClass: TheSeamDatatableScrollbarHelperService,
4560
+ },
4254
4561
  ],
4255
4562
  }]
4256
4563
  }] });
@@ -4259,5 +4566,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4259
4566
  * Generated bundle index. Do not edit.
4260
4567
  */
4261
4568
 
4262
- export { CURRENT_DATATABLE_PREFERENCES_VERSION, ColumnsAlteration, ColumnsDataFilter, ColumnsFiltersService, DatatableActionMenuComponent, DatatableActionMenuItemComponent, DatatableActionMenuItemDirective, DatatableActionMenuToggleDirective, DatatableCellTplDirective, DatatableColumnChangesService, DatatableColumnComponent, DatatableColumnFilterMenuComponent, DatatableColumnFilterSearchDateComponent, DatatableColumnFilterSearchNumericComponent, DatatableColumnFilterSearchTextComponent, DatatableColumnFilterTplDirective, DatatableColumnPreferencesButtonComponent, DatatableColumnPreferencesComponent, DatatableComponent, DatatableDataSource, DatatableExportButtonComponent, DatatableFilterDirective, DatatableFooterTplDirective, DatatableGqlDataSource, DatatableMenuBarColumnCenterComponent, DatatableMenuBarColumnLeftComponent, DatatableMenuBarColumnRightComponent, DatatableMenuBarComponent, DatatableMenuBarRowComponent, DatatableMenuBarTextComponent, DatatablePreferencesService, DatatableRowActionItemDirective, DatatableRowDetailTplDirective, EMPTY_DATATABLE_PREFERENCES, SearchDateColumnsDataFilter, SearchNumericColumnsDataFilter, SearchTextColumnsDataFilter, THESEAM_COLUMNS_DATA_FILTER, THESEAM_COLUMNS_DATA_FILTERS_DEFAULT, THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES, THESEAM_DATATABLE, THESEAM_DATATABLE_CONFIG, THESEAM_DATATABLE_PREFERENCES_ACCESSOR, THESEAM_MENUBAR_ITEM_DATA, TheSeamDatatableColumnFilterDirective, TheSeamDatatableFooterDirective, TheSeamDatatableModule, TheSeamDatatableRowDetailDirective, TheSeamDatatableScrollbarHelperService, _THESEAM_DATATABLE, _THESEAM_DATATABLE_ACCESSOR, _THESEAM_DATA_FILTER_CONTAINER, getFormattedDateForComparison, mapColumnsAlterationsStates, withStoredColumnInfo };
4569
+ export { CURRENT_DATATABLE_PREFERENCES_VERSION, ColumnsAlteration, ColumnsDataFilter, ColumnsFiltersService, DatatableActionMenuComponent, DatatableActionMenuItemComponent, DatatableActionMenuItemDirective, DatatableActionMenuToggleDirective, DatatableCellTplDirective, DatatableColumnChangesService, DatatableColumnComponent, DatatableColumnFilterMenuComponent, DatatableColumnFilterSearchDateComponent, DatatableColumnFilterSearchNumericComponent, DatatableColumnFilterSearchTextComponent, DatatableColumnFilterTplDirective, DatatableColumnPreferencesButtonComponent, DatatableColumnPreferencesComponent, DatatableComponent, DatatableDataSource, DatatableExportButtonComponent, DatatableFilterDirective, DatatableFooterTplDirective, DatatableGqlDataSource, DatatableMenuBarColumnCenterComponent, DatatableMenuBarColumnLeftComponent, DatatableMenuBarColumnRightComponent, DatatableMenuBarComponent, DatatableMenuBarRowComponent, DatatableMenuBarTextComponent, DatatablePreferencesService, DatatableRowActionItemDirective, DatatableRowDetailTplDirective, EMPTY_DATATABLE_PREFERENCES, SearchDateColumnsDataFilter, SearchNumericColumnsDataFilter, SearchTextColumnsDataFilter, THESEAM_COLUMNS_DATA_FILTER, THESEAM_COLUMNS_DATA_FILTERS_DEFAULT, THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES, THESEAM_DATATABLE, THESEAM_DATATABLE_CONFIG, THESEAM_DATATABLE_PREFERENCES_ACCESSOR, THESEAM_MENUBAR_ITEM_DATA, TheSeamDatatableColumnFilterDirective, TheSeamDatatableFooterDirective, TheSeamDatatableModule, TheSeamDatatableRowDetailDirective, TheSeamDatatableScrollbarHelperService, _THESEAM_DATATABLE, _THESEAM_DATATABLE_ACCESSOR, _THESEAM_DATA_FILTER_CONTAINER, getFormattedDateForComparison, isColumnBoundToProp, mapColumnsAlterationsStates, withStoredColumnInfo };
4263
4570
  //# sourceMappingURL=theseam-ui-common-datatable.mjs.map