@theseam/ui-common 1.0.0-beta.1 → 1.0.0-beta.11

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 +730 -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 +252 -195
  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 +5 -5
  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 +57 -58
  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,44 @@ 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.flex-fill": "column().alignHeader !== \"left\"", "class.justify-content-center": "column().alignHeader === \"center\"", "class.justify-content-end": "column().alignHeader === \"right\"" }, classAttribute: "d-inline-flex align-items-center" }, 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',
2808
+ '[class.flex-fill]': 'column().alignHeader !== "left"',
2809
+ // TODO: fix 'center' alignment. This solution leaves the sort icon on the
2810
+ // far right, away from the text.
2811
+ '[class.justify-content-center]': 'column().alignHeader === "center"',
2812
+ '[class.justify-content-end]': 'column().alignHeader === "right"',
2813
+ }, 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"] }]
2814
+ }], 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 }] }] } });
2815
+
2577
2816
  /**
2578
2817
  * Intended for internal classes declared by the `TheSeamDatatableModule`.
2579
2818
  */
2580
2819
  const THESEAM_DATATABLE = new InjectionToken('LibDatatable');
2581
2820
  const _THESEAM_DATATABLE = {
2582
2821
  provide: THESEAM_DATATABLE,
2583
- useExisting: forwardRef(() => DatatableComponent)
2822
+ useExisting: forwardRef(() => DatatableComponent),
2584
2823
  };
2585
2824
  const _THESEAM_DATATABLE_ACCESSOR = {
2586
2825
  provide: THESEAM_DATATABLE_ACCESSOR,
2587
- // tslint:disable-next-line:no-use-before-declare
2588
- useExisting: forwardRef(() => DatatableComponent)
2826
+ useExisting: forwardRef(() => DatatableComponent),
2589
2827
  };
2590
2828
  class DatatableComponent {
2591
2829
  _preferences;
@@ -2626,18 +2864,24 @@ class DatatableComponent {
2626
2864
  get filters() {
2627
2865
  return [
2628
2866
  ...this._menuBarsFiltersSubject.value,
2629
- ...this._columnsFilters.filters()
2867
+ ...this._columnsFilters.filters(),
2630
2868
  ];
2631
2869
  }
2632
2870
  filters$;
2633
- get preferencesKey() { return this._preferencesKey.value; }
2634
- set preferencesKey(value) { this._preferencesKey.next(value || undefined); }
2871
+ get preferencesKey() {
2872
+ return this._preferencesKey.value;
2873
+ }
2874
+ set preferencesKey(value) {
2875
+ this._preferencesKey.next(value || undefined);
2876
+ }
2635
2877
  _preferencesKey = new BehaviorSubject(undefined);
2636
2878
  targetMarkerTemplate;
2637
2879
  set columns(value) {
2638
2880
  this._columnsManager.setInputColumns(Array.isArray(value) ? value : []);
2639
2881
  }
2640
- get rows() { return this._rows.value; }
2882
+ get rows() {
2883
+ return this._rows.value;
2884
+ }
2641
2885
  set rows(value) {
2642
2886
  this._rows.next(value || []);
2643
2887
  }
@@ -2654,15 +2898,20 @@ class DatatableComponent {
2654
2898
  count = 0;
2655
2899
  offset = 0;
2656
2900
  loadingIndicator = false;
2657
- get selectionType() { return this._columnsManager.getSelectionType(); }
2901
+ get selectionType() {
2902
+ return this._columnsManager.getSelectionType();
2903
+ }
2658
2904
  set selectionType(value) {
2659
2905
  this._columnsManager.setSelectionType(notNullOrUndefined(value) ? value : undefined);
2660
2906
  }
2661
2907
  reorderable = true;
2662
2908
  swapColumns = false;
2663
- get sortType() { return this._sortType; }
2909
+ get sortType() {
2910
+ return this._sortType;
2911
+ }
2664
2912
  set sortType(value) {
2665
- if (notNullOrUndefined(value) && (value === SortType.single || value === SortType.multi)) {
2913
+ if (notNullOrUndefined(value) &&
2914
+ (value === SortType.single || value === SortType.multi)) {
2666
2915
  this._sortType = value;
2667
2916
  }
2668
2917
  else {
@@ -2697,7 +2946,7 @@ class DatatableComponent {
2697
2946
  pagerLeftArrow: 'datatable-icon-left',
2698
2947
  pagerRightArrow: 'datatable-icon-right',
2699
2948
  pagerPrevious: 'datatable-icon-prev',
2700
- pagerNext: 'datatable-icon-skip'
2949
+ pagerNext: 'datatable-icon-skip',
2701
2950
  };
2702
2951
  _cssClasses;
2703
2952
  get messages() {
@@ -2710,7 +2959,7 @@ class DatatableComponent {
2710
2959
  else if (notNullOrUndefined(this._config?.messages)) {
2711
2960
  this._messages = {
2712
2961
  ...this._messagesDefault,
2713
- ...this._config?.messages
2962
+ ...this._config?.messages,
2714
2963
  };
2715
2964
  }
2716
2965
  else {
@@ -2724,7 +2973,7 @@ class DatatableComponent {
2724
2973
  // Footer total message
2725
2974
  totalMessage: 'total',
2726
2975
  // Footer selected message
2727
- selectedMessage: 'selected'
2976
+ selectedMessage: 'selected',
2728
2977
  };
2729
2978
  _messages;
2730
2979
  rowIdentity = (x) => x;
@@ -2801,12 +3050,15 @@ class DatatableComponent {
2801
3050
  *
2802
3051
  * Defaults to `frozenRight`.
2803
3052
  */
2804
- get actionItemColumnPosition() { return this._actionItemColumnPosition; }
3053
+ get actionItemColumnPosition() {
3054
+ return this._actionItemColumnPosition;
3055
+ }
2805
3056
  set actionItemColumnPosition(value) {
2806
3057
  if (notNullOrUndefined(value) && isActionItemColumnPosition(value)) {
2807
3058
  this._actionItemColumnPosition = value;
2808
3059
  }
2809
- else if (notNullOrUndefined(this._config?.actionItemColumnPosition) && isActionItemColumnPosition(this._config?.actionItemColumnPosition)) {
3060
+ else if (notNullOrUndefined(this._config?.actionItemColumnPosition) &&
3061
+ isActionItemColumnPosition(this._config?.actionItemColumnPosition)) {
2810
3062
  this._actionItemColumnPosition = this._config?.actionItemColumnPosition;
2811
3063
  }
2812
3064
  else {
@@ -2846,8 +3098,8 @@ class DatatableComponent {
2846
3098
  this._columnFilterUpdateMethod = this._columnFilterUpdateMethodDefault;
2847
3099
  }
2848
3100
  }
2849
- _columnFilterUpdateMethodDefault = 'valueChanges';
2850
3101
  _columnFilterUpdateMethod;
3102
+ _columnFilterUpdateMethodDefault = 'valueChanges';
2851
3103
  get columnFilterUpdateDebounce() {
2852
3104
  return this._columnFilterUpdateDebounce;
2853
3105
  }
@@ -2856,7 +3108,8 @@ class DatatableComponent {
2856
3108
  this._columnFilterUpdateDebounce = value;
2857
3109
  }
2858
3110
  else if (notNullOrUndefined(this._config?.columnFilterUpdateDebounce)) {
2859
- this._columnFilterUpdateDebounce = this._config?.columnFilterUpdateDebounce;
3111
+ this._columnFilterUpdateDebounce =
3112
+ this._config?.columnFilterUpdateDebounce;
2860
3113
  }
2861
3114
  else {
2862
3115
  this._columnFilterUpdateDebounce = this._columnFilterUpdateDebounceDefault;
@@ -2882,7 +3135,9 @@ class DatatableComponent {
2882
3135
  this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []));
2883
3136
  }
2884
3137
  actionMenu;
2885
- get rowActionItem() { return this._rowActionItem; }
3138
+ get rowActionItem() {
3139
+ return this._rowActionItem;
3140
+ }
2886
3141
  set rowActionItem(value) {
2887
3142
  this._rowActionItem = value;
2888
3143
  this._columnsManager.setRowActionItem(notNullOrUndefined(value) ? value : undefined);
@@ -2890,7 +3145,9 @@ class DatatableComponent {
2890
3145
  _rowActionItem;
2891
3146
  rowDetail;
2892
3147
  footer;
2893
- get menuBarComponent() { return this._menuBarComponent; }
3148
+ get menuBarComponent() {
3149
+ return this._menuBarComponent;
3150
+ }
2894
3151
  set menuBarComponent(value) {
2895
3152
  this._menuBarComponent = value;
2896
3153
  if (this._menuBarSub) {
@@ -2898,8 +3155,9 @@ class DatatableComponent {
2898
3155
  }
2899
3156
  if (value) {
2900
3157
  this._setMenuBarFilters(value.filters());
2901
- this._menuBarSub = this._menuBarComponent?.filtersChanged
2902
- .subscribe(() => { this._setMenuBarFilters(value.filters()); });
3158
+ this._menuBarSub = this._menuBarComponent?.filtersChanged.subscribe(() => {
3159
+ this._setMenuBarFilters(value.filters());
3160
+ });
2903
3161
  }
2904
3162
  }
2905
3163
  _menuBarComponent;
@@ -2910,31 +3168,41 @@ class DatatableComponent {
2910
3168
  ngxDatatable;
2911
3169
  ngxDatatableElement;
2912
3170
  ngxRowDetail;
2913
- get actionMenuCellTpl() { return this._actionMenuCellTpl; }
3171
+ get actionMenuCellTpl() {
3172
+ return this._actionMenuCellTpl;
3173
+ }
2914
3174
  set actionMenuCellTpl(value) {
2915
3175
  this._actionMenuCellTpl = value;
2916
3176
  this._columnsManager.setActionMenuCellTpl(notNullOrUndefined(value) ? value : undefined);
2917
3177
  }
2918
3178
  _actionMenuCellTpl;
2919
- get treeToggleTpl() { return this._treeToggleTpl; }
3179
+ get treeToggleTpl() {
3180
+ return this._treeToggleTpl;
3181
+ }
2920
3182
  set treeToggleTpl(value) {
2921
3183
  this._treeToggleTpl = value;
2922
3184
  this._columnsManager.setTreeToggleTpl(notNullOrUndefined(value) ? value : undefined);
2923
3185
  }
2924
3186
  _treeToggleTpl;
2925
- get headerTpl() { return this._headerTpl; }
3187
+ get headerTpl() {
3188
+ return this._headerTpl;
3189
+ }
2926
3190
  set headerTpl(value) {
2927
3191
  this._headerTpl = value;
2928
3192
  this._columnsManager.setHeaderTpl(notNullOrUndefined(value) ? value : undefined);
2929
3193
  }
2930
3194
  _headerTpl;
2931
- get blankHeaderTpl() { return this._blankHeaderTpl; }
3195
+ get blankHeaderTpl() {
3196
+ return this._blankHeaderTpl;
3197
+ }
2932
3198
  set blankHeaderTpl(value) {
2933
3199
  this._blankHeaderTpl = value;
2934
3200
  this._columnsManager.setBlankHeaderTpl(notNullOrUndefined(value) ? value : undefined);
2935
3201
  }
2936
3202
  _blankHeaderTpl;
2937
- get cellTypeSelectorTpl() { return this._cellTypeSelectorTpl; }
3203
+ get cellTypeSelectorTpl() {
3204
+ return this._cellTypeSelectorTpl;
3205
+ }
2938
3206
  set cellTypeSelectorTpl(value) {
2939
3207
  this._cellTypeSelectorTpl = value;
2940
3208
  this._columnsManager.setCellTypeSelectorTpl(notNullOrUndefined(value) ? value : undefined);
@@ -2958,8 +3226,8 @@ class DatatableComponent {
2958
3226
  const id = event.target.parentElement
2959
3227
  ?.querySelector('.datatable-column-header-separator')
2960
3228
  ?.getAttribute('data-column-id');
2961
- this._columnsManager.columns$.pipe(take(1)).subscribe(columns => {
2962
- const column = columns.find(c => c.$$id === id);
3229
+ this._columnsManager.columns$.pipe(take(1)).subscribe((columns) => {
3230
+ const column = columns.find((c) => c.$$id === id);
2963
3231
  if (column) {
2964
3232
  const columnProp = getColumnProp(column);
2965
3233
  if (columnProp) {
@@ -2977,28 +3245,31 @@ class DatatableComponent {
2977
3245
  this._columnsAlterationsManager = _columnsAlterationsManager;
2978
3246
  this._columnsFilters = _columnsFilters;
2979
3247
  this._config = _config;
2980
- this._preferencesKey.pipe(distinctUntilChanged(), switchMap(key => {
3248
+ this._preferencesKey
3249
+ .pipe(distinctUntilChanged(), switchMap((key) => {
2981
3250
  if (!notNullOrUndefined(key) || key.length === 0) {
2982
3251
  return of(undefined);
2983
3252
  }
2984
3253
  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());
3254
+ // console.log('%cSaving columns alterations to preferences', 'color: blue', this._columnsAlterationsManager.get())
2986
3255
  this._preferences.setAlterations(key, this._columnsAlterationsManager.get());
2987
3256
  }))));
2988
- }), takeUntil(this._ngUnsubscribe)).subscribe();
3257
+ }), takeUntil(this._ngUnsubscribe))
3258
+ .subscribe();
2989
3259
  const applyPrefs = (cols) => this._columnsAlterationsManager.changes.pipe(startWith(undefined), map(() => {
2990
- console.log('%cApplying columns alterations', 'color: blue', cols);
3260
+ // console.log('%cApplying columns alterations', 'color: blue', cols)
2991
3261
  this._columnsAlterationsManager.apply(cols, this);
2992
3262
  return cols;
2993
3263
  }));
2994
- this._preferencesKey.pipe(distinctUntilChanged(), switchMap(prefsKey => {
3264
+ this._preferencesKey
3265
+ .pipe(distinctUntilChanged(), switchMap((prefsKey) => {
2995
3266
  if (!notNullOrUndefined(prefsKey)) {
2996
3267
  return of(undefined);
2997
3268
  }
2998
3269
  return this._preferences.preferences(prefsKey).pipe(switchMap(async (preferences) => {
2999
3270
  await waitOnConditionAsync(() => this._preferences.isLoaded(prefsKey));
3000
3271
  return preferences;
3001
- }), take(1), map(preferences => {
3272
+ }), take(1), map((preferences) => {
3002
3273
  let alterations = [];
3003
3274
  try {
3004
3275
  alterations = mapColumnsAlterationsStates(preferences.alterations);
@@ -3011,18 +3282,28 @@ class DatatableComponent {
3011
3282
  console.warn(e);
3012
3283
  }
3013
3284
  }
3014
- console.log('%cSetting columns alterations from preferences', 'color: blue', alterations);
3285
+ // console.log('%cSetting columns alterations from preferences', 'color: blue', alterations)
3015
3286
  this._columnsAlterationsManager.add(alterations);
3016
3287
  }));
3017
- }), takeUntil(this._ngUnsubscribe)).subscribe();
3018
- this.columns$ = combineLatest([this._columnsManager.columns$, this._columnsFilters.columnActiveFilterProps$]).pipe(map(([columns, columnActiveFilterProps]) => columns.map(col => ({
3288
+ }), takeUntil(this._ngUnsubscribe))
3289
+ .subscribe();
3290
+ this.columns$ = combineLatest([
3291
+ this._columnsManager.columns$,
3292
+ this._columnsFilters.columnActiveFilterProps$,
3293
+ ]).pipe(map(([columns, columnActiveFilterProps]) => columns.map((col) => ({
3019
3294
  ...col,
3020
- filterActive: columnActiveFilterProps.includes(this._columnsFilters.getColumnFilterProp(col) || '')
3295
+ filterActive: columnActiveFilterProps.includes(this._columnsFilters.getColumnFilterProp(col) || ''),
3021
3296
  }))));
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 => {
3297
+ this.displayColumns$ = this.columns$.pipe(switchMap((cols) => applyPrefs(cols)), map((cols) => cols.filter((c) => !c.hidden)), tap((v) => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)));
3298
+ this.filters$ = combineLatest([
3299
+ this._menuBarsFiltersSubject.asObservable(),
3300
+ this._columnsFilters.columnsFilters$,
3301
+ ]).pipe(map(([menuFilters, columnsFilters]) => [
3302
+ ...menuFilters,
3303
+ ...columnsFilters,
3304
+ ]));
3305
+ this.filterStates = this.filters$.pipe(switchMap((filters) => composeDataFilterStates(filters)));
3306
+ this.rows$ = this._dataSourceSubject.pipe(switchMap((dataSource) => {
3026
3307
  // console.log('dataSource', dataSource)
3027
3308
  let dataStream;
3028
3309
  if (isDataSource(dataSource)) {
@@ -3044,9 +3325,9 @@ class DatatableComponent {
3044
3325
  }
3045
3326
  if (!this.externalFiltering) {
3046
3327
  // console.log('not using externalFiltering')
3047
- dataStream = dataStream.pipe(switchMap(rows => this.filters$.pipe(
3328
+ dataStream = dataStream.pipe(switchMap((rows) => this.filters$.pipe(
3048
3329
  // tap(v => console.log('filters', v)),
3049
- concatMap(filters => of(rows).pipe(composeDataFilters(filters))))));
3330
+ concatMap((filters) => of(rows).pipe(composeDataFilters(filters))))));
3050
3331
  // dataStream = this._filtersSubject.pipe(
3051
3332
  // tap(v => console.log('filters', v)),
3052
3333
  // concatMap(filters => dataStream.pipe(composeDataFilters(filters))),
@@ -3058,11 +3339,11 @@ class DatatableComponent {
3058
3339
  takeUntil(this._ngUnsubscribe));
3059
3340
  }));
3060
3341
  // TODO: Implement viewChange for CollectionViewer.
3061
- this.viewChange = this.page.pipe(map(p => ({ start: 0, end: p.count })));
3342
+ this.viewChange = this.page.pipe(map((p) => ({ start: 0, end: p.count })));
3062
3343
  }
3063
3344
  ngOnInit() {
3064
3345
  if (this.rowDetail) {
3065
- this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe(event => {
3346
+ this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe((event) => {
3066
3347
  if (this.ngxRowDetail) {
3067
3348
  this.ngxRowDetail.toggle.emit(event);
3068
3349
  }
@@ -3110,7 +3391,7 @@ class DatatableComponent {
3110
3391
  if (!this.columnComponents || this.columnComponents.length === 0) {
3111
3392
  return null;
3112
3393
  }
3113
- const tpl = this.columnComponents.find(t => t.prop === propName);
3394
+ const tpl = this.columnComponents.find((t) => t.prop === propName);
3114
3395
  if (tpl) {
3115
3396
  return tpl;
3116
3397
  }
@@ -3130,7 +3411,9 @@ class DatatableComponent {
3130
3411
  return item.prop;
3131
3412
  }
3132
3413
  onDatatableResize(event) {
3133
- if (this.ngxDatatable && this.ngxDatatableElement && this.ngxDatatableElement.nativeElement) {
3414
+ if (this.ngxDatatable &&
3415
+ this.ngxDatatableElement &&
3416
+ this.ngxDatatableElement.nativeElement) {
3134
3417
  // TODO: Consider integrating this into the ngx-datatable library to avoid
3135
3418
  // multiple resize calls when the table resizes itself.
3136
3419
  this.ngxDatatable.recalculate();
@@ -3156,7 +3439,7 @@ class DatatableComponent {
3156
3439
  const alteration = new WidthColumnsAlteration({
3157
3440
  columnProp,
3158
3441
  width: event.column.width,
3159
- canAutoResize: false
3442
+ canAutoResize: false,
3160
3443
  }, true);
3161
3444
  this._columnsAlterationsManager.add([alteration]);
3162
3445
  }
@@ -3166,12 +3449,14 @@ class DatatableComponent {
3166
3449
  this.reorder.emit(event);
3167
3450
  const columnProp = getColumnProp(event.column);
3168
3451
  if (columnProp) {
3169
- const currentOrderAlteration = this._columnsAlterationsManager.get().find(x => x.type === 'order');
3452
+ const currentOrderAlteration = this._columnsAlterationsManager
3453
+ .get()
3454
+ .find((x) => x.type === 'order');
3170
3455
  const state = {
3171
3456
  columns: [
3172
3457
  ...(currentOrderAlteration?.state.columns || []).filter((x) => x.columnProp !== columnProp),
3173
- { columnProp, index: event.newValue }
3174
- ]
3458
+ { columnProp, index: event.newValue },
3459
+ ],
3175
3460
  };
3176
3461
  const alteration = new OrderColumnsAlteration(state, true);
3177
3462
  this._columnsAlterationsManager.add([alteration]);
@@ -3204,18 +3489,18 @@ class DatatableComponent {
3204
3489
  offset: this.ngxDatatable?.offset ?? 0,
3205
3490
  pageSize: this.ngxDatatable?.pageSize ?? 0,
3206
3491
  limit: this.ngxDatatable?.limit,
3207
- count: this.ngxDatatable?.count ?? 0
3492
+ count: this.ngxDatatable?.count ?? 0,
3208
3493
  };
3209
3494
  }
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: [
3495
+ 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 });
3496
+ 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
3497
  _THESEAM_DATATABLE,
3213
3498
  DatatableColumnChangesService,
3214
3499
  _THESEAM_DATATABLE_ACCESSOR,
3215
3500
  ColumnsManagerService,
3216
3501
  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: [
3502
+ ColumnsFiltersService,
3503
+ ], 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
3504
  trigger('slideDown', [
3220
3505
  transition(':enter', [
3221
3506
  style({ transform: 'translateY(-20%)', opacity: '0' }),
@@ -3224,8 +3509,8 @@ class DatatableComponent {
3224
3509
  transition(':leave', [
3225
3510
  style({ transform: 'translateY(0)', opacity: '1' }),
3226
3511
  animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),
3227
- ])
3228
- ])
3512
+ ]),
3513
+ ]),
3229
3514
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3230
3515
  }
3231
3516
  __decorate([
@@ -3285,7 +3570,7 @@ __decorate([
3285
3570
  __decorate([
3286
3571
  InputBoolean()
3287
3572
  ], DatatableComponent.prototype, "scrollbarH", void 0);
3288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableComponent, decorators: [{
3573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableComponent, decorators: [{
3289
3574
  type: Component,
3290
3575
  args: [{ selector: 'seam-datatable', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
3291
3576
  trigger('slideDown', [
@@ -3296,16 +3581,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
3296
3581
  transition(':leave', [
3297
3582
  style({ transform: 'translateY(0)', opacity: '1' }),
3298
3583
  animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),
3299
- ])
3300
- ])
3584
+ ]),
3585
+ ]),
3301
3586
  ], providers: [
3302
3587
  _THESEAM_DATATABLE,
3303
3588
  DatatableColumnChangesService,
3304
3589
  _THESEAM_DATATABLE_ACCESSOR,
3305
3590
  ColumnsManagerService,
3306
3591
  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"] }]
3592
+ ColumnsFiltersService,
3593
+ ], 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
3594
  }], ctorParameters: () => [{ type: DatatablePreferencesService }, { type: ColumnsManagerService }, { type: ColumnsAlterationsManagerService }, { type: ColumnsFiltersService }, { type: undefined, decorators: [{
3310
3595
  type: Optional
3311
3596
  }, {
@@ -3483,11 +3768,10 @@ class DatatableColumnPreferencesComponent {
3483
3768
  this._columnsAlterationsManager = _columnsAlterationsManager;
3484
3769
  this._columns$ = combineLatest([
3485
3770
  this._datatable.columns$ ?? of([]),
3486
- observeControlValue(this._filterControl)
3771
+ observeControlValue(this._filterControl),
3487
3772
  ]).pipe(map(([columns, filter]) => {
3488
3773
  const _filter = (filter || '').trim().toLowerCase();
3489
- return columns
3490
- .filter(c => this._canToggleColumn(c, _filter));
3774
+ return columns.filter((c) => this._canToggleColumn(c, _filter));
3491
3775
  }));
3492
3776
  }
3493
3777
  _canToggleColumn(column, filter, omitInternalColumns = true) {
@@ -3500,7 +3784,7 @@ class DatatableColumnPreferencesComponent {
3500
3784
  if (filter.length === 0) {
3501
3785
  return true;
3502
3786
  }
3503
- return `${(getColumnProp(column) || '')}`.toLowerCase().indexOf(filter) !== -1;
3787
+ return `${getColumnProp(column) || ''}`.toLowerCase().indexOf(filter) !== -1;
3504
3788
  }
3505
3789
  _onChange(event, col) {
3506
3790
  const columnProp = getColumnProp(col);
@@ -3510,16 +3794,16 @@ class DatatableColumnPreferencesComponent {
3510
3794
  }
3511
3795
  const alteration = new HideColumnColumnsAlteration({
3512
3796
  columnProp,
3513
- hidden
3797
+ hidden,
3514
3798
  }, hidden);
3515
3799
  this._columnsAlterationsManager.add([alteration]);
3516
3800
  }
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 });
3801
+ 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 });
3802
+ 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
3803
  }
3520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesComponent, decorators: [{
3804
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesComponent, decorators: [{
3521
3805
  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"] }]
3806
+ 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
3807
  }], ctorParameters: () => [{ type: DatatableComponent, decorators: [{
3524
3808
  type: Inject,
3525
3809
  args: [THESEAM_DATATABLE]
@@ -3561,12 +3845,12 @@ class DatatableColumnPreferencesButtonComponent {
3561
3845
  _resetColumns(event) {
3562
3846
  this._columnsAlterationsManager.clear();
3563
3847
  }
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 });
3848
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, deps: [{ token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
3849
+ 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
3850
  }
3567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, decorators: [{
3851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, decorators: [{
3568
3852
  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" }]
3853
+ 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
3854
  }], ctorParameters: () => [{ type: ColumnsAlterationsManagerService }] });
3571
3855
 
3572
3856
  class DatatableExportButtonComponent {
@@ -3599,17 +3883,17 @@ class DatatableExportButtonComponent {
3599
3883
  }
3600
3884
  const export$ = combineLatest([
3601
3885
  this._datatable.rows$,
3602
- this._datatable.columns$.pipe(map(cols => cols.filter(c => !isInternalColumn(c))))
3886
+ this._datatable.columns$.pipe(map((cols) => cols.filter((c) => !isInternalColumn(c)))),
3603
3887
  ]).pipe(take(1), map(([rows, columns]) => {
3604
3888
  if (exporter.skipDataMapping) {
3605
3889
  return rows;
3606
3890
  }
3607
3891
  return this._mapExportData(columns || [], rows);
3608
- }), concatMap(data => exporter.export(data)), catchError(err => {
3892
+ }), concatMap((data) => exporter.export(data)), catchError((err) => {
3609
3893
  // eslint-disable-next-line no-console
3610
3894
  console.error(err);
3611
3895
  return of(false);
3612
- }), tap(success => {
3896
+ }), tap((success) => {
3613
3897
  if (success) {
3614
3898
  this._toastr.success(`${exporter.label} export complete.`, 'Data Export');
3615
3899
  }
@@ -3646,16 +3930,16 @@ class DatatableExportButtonComponent {
3646
3930
  }
3647
3931
  return undefined;
3648
3932
  }
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 });
3933
+ 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 });
3934
+ 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
3935
  }
3652
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
3936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
3653
3937
  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"] }]
3938
+ 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
3939
  }], ctorParameters: () => [{ type: DatatableComponent, decorators: [{
3656
3940
  type: Inject,
3657
3941
  args: [THESEAM_DATATABLE]
3658
- }] }, { type: i1$2.ToastrService }, { type: i2$3.TheSeamLoadingOverlayService }, { type: i3$2.DynamicValueHelperService }, { type: undefined, decorators: [{
3942
+ }] }, { type: i1$2.ToastrService }, { type: i2$4.TheSeamLoadingOverlayService }, { type: i3$2.DynamicValueHelperService }, { type: undefined, decorators: [{
3659
3943
  type: Optional
3660
3944
  }, {
3661
3945
  type: Inject,
@@ -3665,37 +3949,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
3665
3949
  }] } });
3666
3950
 
3667
3951
  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 });
3952
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3953
+ 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
3954
  }
3671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, decorators: [{
3955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, decorators: [{
3672
3956
  type: Component,
3673
3957
  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
3958
  }] });
3675
3959
 
3676
3960
  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 });
3961
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3962
+ 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
3963
  }
3680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, decorators: [{
3964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, decorators: [{
3681
3965
  type: Component,
3682
3966
  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
3967
  }] });
3684
3968
 
3685
3969
  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 });
3970
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnRightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3971
+ 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
3972
  }
3689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnRightComponent, decorators: [{
3973
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarColumnRightComponent, decorators: [{
3690
3974
  type: Component,
3691
3975
  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
3976
  }] });
3693
3977
 
3694
3978
  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 });
3979
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3980
+ 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
3981
  }
3698
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarRowComponent, decorators: [{
3982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarRowComponent, decorators: [{
3699
3983
  type: Component,
3700
3984
  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
3985
  }] });
@@ -3715,10 +3999,10 @@ class DatatableMenuBarTextComponent {
3715
3999
  }
3716
4000
  }
3717
4001
  }
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 });
4002
+ 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 });
4003
+ 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
4004
  }
3721
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarTextComponent, decorators: [{
4005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableMenuBarTextComponent, decorators: [{
3722
4006
  type: Component,
3723
4007
  args: [{ selector: 'seam-datatable-menu-bar-text', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "{{ value }}\n" }]
3724
4008
  }], ctorParameters: () => [{ type: DatatableMenuBarComponent }, { type: undefined, decorators: [{
@@ -3793,16 +4077,16 @@ class DatatableActionMenuItemDirective {
3793
4077
  this._dynamicComponentLoader = _dynamicComponentLoader;
3794
4078
  this._http = _http;
3795
4079
  }
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 });
4080
+ 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 });
4081
+ 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
4082
  }
3799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemDirective, decorators: [{
4083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuItemDirective, decorators: [{
3800
4084
  type: Directive,
3801
4085
  args: [{
3802
4086
  selector: '[seamDatatableActionMenuItem]',
3803
- standalone: false
4087
+ standalone: false,
3804
4088
  }]
3805
- }], ctorParameters: () => [{ type: i1$3.Modal }, { type: i2$4.TheSeamDynamicComponentLoader }, { type: i3$3.HttpClient, decorators: [{
4089
+ }], ctorParameters: () => [{ type: i1$3.Modal }, { type: i2$5.TheSeamDynamicComponentLoader }, { type: i3$3.HttpClient, decorators: [{
3806
4090
  type: Optional
3807
4091
  }] }], propDecorators: { _listGroupItem: [{
3808
4092
  type: HostBinding,
@@ -3857,16 +4141,26 @@ class DatatableActionMenuToggleDirective {
3857
4141
  _onClick(event) {
3858
4142
  this.toggle();
3859
4143
  }
3860
- _mouseDown(event) { this.onInputDown(event); }
3861
- _pointerDown(event) { this.onInputDown(event); }
3862
- _mouseUp(event) { this.onInputUp(event); }
3863
- _pointerUp(event) { this.onInputUp(event); }
4144
+ _mouseDown(event) {
4145
+ this.onInputDown(event);
4146
+ }
4147
+ _pointerDown(event) {
4148
+ this.onInputDown(event);
4149
+ }
4150
+ _mouseUp(event) {
4151
+ this.onInputUp(event);
4152
+ }
4153
+ _pointerUp(event) {
4154
+ this.onInputUp(event);
4155
+ }
3864
4156
  constructor(_elementRef, _viewContainerRef, _overlay) {
3865
4157
  this._elementRef = _elementRef;
3866
4158
  this._viewContainerRef = _viewContainerRef;
3867
4159
  this._overlay = _overlay;
3868
4160
  }
3869
- get active() { return this._active; }
4161
+ get active() {
4162
+ return this._active;
4163
+ }
3870
4164
  toggle() {
3871
4165
  if (this._active) {
3872
4166
  this.disable();
@@ -3899,7 +4193,8 @@ class DatatableActionMenuToggleDirective {
3899
4193
  this._active = false;
3900
4194
  }
3901
4195
  getOverlayPosition(origin) {
3902
- const positionStrategy = this._overlay.position()
4196
+ const positionStrategy = this._overlay
4197
+ .position()
3903
4198
  .flexibleConnectedTo(origin)
3904
4199
  .withPositions(this.getPositions())
3905
4200
  .withFlexibleDimensions(false)
@@ -3947,15 +4242,15 @@ class DatatableActionMenuToggleDirective {
3947
4242
  onInputUp(event) {
3948
4243
  this._actionDown = false;
3949
4244
  }
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 });
4245
+ 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 });
4246
+ 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
4247
  }
3953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuToggleDirective, decorators: [{
4248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: DatatableActionMenuToggleDirective, decorators: [{
3954
4249
  type: Directive,
3955
4250
  args: [{
3956
4251
  selector: '[seamDatatableActionMenuToggle]',
3957
4252
  exportAs: 'seamDatatableActionMenuToggle',
3958
- standalone: false
4253
+ standalone: false,
3959
4254
  }]
3960
4255
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1$4.Overlay }], propDecorators: { seamDatatableActionMenuToggle: [{
3961
4256
  type: Input
@@ -4012,12 +4307,12 @@ class TheSeamDatatableScrollbarHelperService {
4012
4307
  onInitScroller(scroller) {
4013
4308
  this._scrollbars.initializeInstance(scroller.parentElement, {
4014
4309
  callbacks: {
4015
- onScroll: e => {
4310
+ onScroll: (e) => {
4016
4311
  this._ngZone.run(() => {
4017
4312
  scroller.onScrolled(e);
4018
4313
  });
4019
- }
4020
- }
4314
+ },
4315
+ },
4021
4316
  });
4022
4317
  }
4023
4318
  onDestroyScroller(scroller) {
@@ -4026,26 +4321,28 @@ class TheSeamDatatableScrollbarHelperService {
4026
4321
  setOffset(scroller, offsetY) {
4027
4322
  this._ngZone.runOutsideAngular(() => {
4028
4323
  if (this.animatedScrolling) {
4029
- this._scrollbars.getInstance(scroller.parentElement)
4324
+ this._scrollbars
4325
+ .getInstance(scroller.parentElement)
4030
4326
  .scroll({ y: offsetY }, this.animatedScrollingTime);
4031
4327
  }
4032
4328
  else {
4033
- this._scrollbars.getInstance(scroller.parentElement)
4329
+ this._scrollbars
4330
+ .getInstance(scroller.parentElement)
4034
4331
  .scroll({ y: offsetY });
4035
4332
  }
4036
4333
  });
4037
4334
  }
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 });
4335
+ 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 });
4336
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableScrollbarHelperService });
4040
4337
  }
4041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, decorators: [{
4338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, decorators: [{
4042
4339
  type: Injectable
4043
4340
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$5.TheSeamOverlayScrollbarsService }] });
4044
4341
 
4045
4342
  function withStoredColumnInfo(columns, preferenceColumns) {
4046
4343
  const _columns = [];
4047
4344
  for (const col of columns) {
4048
- const storedCol = preferenceColumns.find(v => v.prop === col.prop);
4345
+ const storedCol = preferenceColumns.find((v) => v.prop === col.prop);
4049
4346
  if (storedCol) {
4050
4347
  const _col = { ...col };
4051
4348
  if (hasProperty(storedCol, 'width')) {
@@ -4062,8 +4359,8 @@ function withStoredColumnInfo(columns, preferenceColumns) {
4062
4359
  }
4063
4360
 
4064
4361
  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,
4362
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4363
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, declarations: [DatatableComponent,
4067
4364
  DatatableCellTplDirective,
4068
4365
  DatatableColumnComponent,
4069
4366
  DatatableActionMenuComponent,
@@ -4085,10 +4382,6 @@ class TheSeamDatatableModule {
4085
4382
  DatatableMenuBarColumnCenterComponent,
4086
4383
  DatatableMenuBarColumnRightComponent,
4087
4384
  DatatableMenuBarTextComponent,
4088
- DatatableColumnFilterMenuComponent,
4089
- DatatableColumnFilterSearchTextComponent,
4090
- DatatableColumnFilterSearchNumericComponent,
4091
- DatatableColumnFilterSearchDateComponent,
4092
4385
  DatatableColumnFilterTplDirective,
4093
4386
  TheSeamDatatableColumnFilterDirective], imports: [CommonModule,
4094
4387
  NgxDatatableModule,
@@ -4111,7 +4404,12 @@ class TheSeamDatatableModule {
4111
4404
  TheSeamTableCellTypeModule,
4112
4405
  TheSeamDataFiltersModule,
4113
4406
  NgSelectModule,
4114
- TheSeamToggleGroupModule], exports: [DatatableComponent,
4407
+ TheSeamToggleGroupModule,
4408
+ DatatableColumnHeaderComponent,
4409
+ DatatableColumnFilterMenuComponent,
4410
+ DatatableColumnFilterSearchTextComponent,
4411
+ DatatableColumnFilterSearchNumericComponent,
4412
+ DatatableColumnFilterSearchDateComponent], exports: [DatatableComponent,
4115
4413
  DatatableCellTplDirective,
4116
4414
  DatatableColumnComponent,
4117
4415
  DatatableActionMenuComponent,
@@ -4138,8 +4436,11 @@ class TheSeamDatatableModule {
4138
4436
  DatatableColumnFilterSearchDateComponent,
4139
4437
  DatatableColumnFilterTplDirective,
4140
4438
  TheSeamDatatableColumnFilterDirective] });
4141
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, providers: [
4142
- { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService },
4439
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, providers: [
4440
+ {
4441
+ provide: ScrollbarHelper,
4442
+ useClass: TheSeamDatatableScrollbarHelperService,
4443
+ },
4143
4444
  ], imports: [CommonModule,
4144
4445
  NgxDatatableModule,
4145
4446
  FontAwesomeModule,
@@ -4161,9 +4462,14 @@ class TheSeamDatatableModule {
4161
4462
  TheSeamTableCellTypeModule,
4162
4463
  TheSeamDataFiltersModule,
4163
4464
  NgSelectModule,
4164
- TheSeamToggleGroupModule] });
4465
+ TheSeamToggleGroupModule,
4466
+ DatatableColumnHeaderComponent,
4467
+ DatatableColumnFilterMenuComponent,
4468
+ DatatableColumnFilterSearchTextComponent,
4469
+ DatatableColumnFilterSearchNumericComponent,
4470
+ DatatableColumnFilterSearchDateComponent] });
4165
4471
  }
4166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, decorators: [{
4472
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamDatatableModule, decorators: [{
4167
4473
  type: NgModule,
4168
4474
  args: [{
4169
4475
  declarations: [
@@ -4189,10 +4495,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4189
4495
  DatatableMenuBarColumnCenterComponent,
4190
4496
  DatatableMenuBarColumnRightComponent,
4191
4497
  DatatableMenuBarTextComponent,
4192
- DatatableColumnFilterMenuComponent,
4193
- DatatableColumnFilterSearchTextComponent,
4194
- DatatableColumnFilterSearchNumericComponent,
4195
- DatatableColumnFilterSearchDateComponent,
4196
4498
  DatatableColumnFilterTplDirective,
4197
4499
  TheSeamDatatableColumnFilterDirective,
4198
4500
  ],
@@ -4219,6 +4521,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4219
4521
  TheSeamDataFiltersModule,
4220
4522
  NgSelectModule,
4221
4523
  TheSeamToggleGroupModule,
4524
+ DatatableColumnHeaderComponent,
4525
+ DatatableColumnFilterMenuComponent,
4526
+ DatatableColumnFilterSearchTextComponent,
4527
+ DatatableColumnFilterSearchNumericComponent,
4528
+ DatatableColumnFilterSearchDateComponent,
4222
4529
  ],
4223
4530
  exports: [
4224
4531
  DatatableComponent,
@@ -4250,7 +4557,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4250
4557
  TheSeamDatatableColumnFilterDirective,
4251
4558
  ],
4252
4559
  providers: [
4253
- { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService },
4560
+ {
4561
+ provide: ScrollbarHelper,
4562
+ useClass: TheSeamDatatableScrollbarHelperService,
4563
+ },
4254
4564
  ],
4255
4565
  }]
4256
4566
  }] });
@@ -4259,5 +4569,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImpor
4259
4569
  * Generated bundle index. Do not edit.
4260
4570
  */
4261
4571
 
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 };
4572
+ 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
4573
  //# sourceMappingURL=theseam-ui-common-datatable.mjs.map