@theseam/ui-common 0.4.26 → 0.4.28-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +60 -9
  3. package/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.d.ts +25 -0
  4. package/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.d.ts +18 -0
  5. package/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.d.ts +16 -0
  6. package/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.d.ts +15 -0
  7. package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +2 -2
  8. package/datatable/datatable.module.d.ts +29 -20
  9. package/datatable/directives/datatable-column-filter-tpl.directive.d.ts +8 -0
  10. package/datatable/directives/datatable-column-filter.directive.d.ts +10 -0
  11. package/datatable/models/action-item-column-position.d.ts +13 -0
  12. package/datatable/models/columns-data-filter.d.ts +57 -0
  13. package/datatable/models/columns-data-filters/models.d.ts +65 -0
  14. package/datatable/models/columns-data-filters/search-date.columns-data-filter.d.ts +23 -0
  15. package/datatable/models/columns-data-filters/search-numeric.columns-data-filter.d.ts +22 -0
  16. package/datatable/models/columns-data-filters/search-text.columns-data-filter.d.ts +21 -0
  17. package/datatable/models/columns-data-filters/utils.d.ts +15 -0
  18. package/datatable/models/datatable-config.d.ts +90 -0
  19. package/datatable/models/table-column.d.ts +22 -1
  20. package/datatable/public-api.d.ts +14 -0
  21. package/datatable/services/columns-filters.service.d.ts +29 -0
  22. package/datatable/services/columns-manager.service.d.ts +7 -0
  23. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  24. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  25. package/esm2020/datatable/datatable/datatable.component.mjs +231 -31
  26. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  27. package/esm2020/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.mjs +55 -0
  28. package/esm2020/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.mjs +54 -0
  29. package/esm2020/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.mjs +48 -0
  30. package/esm2020/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.mjs +44 -0
  31. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  32. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  33. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +1 -1
  34. package/esm2020/datatable/datatable.module.mjs +49 -7
  35. package/esm2020/datatable/directives/datatable-column-filter-tpl.directive.mjs +16 -0
  36. package/esm2020/datatable/directives/datatable-column-filter.directive.mjs +26 -0
  37. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  38. package/esm2020/datatable/models/columns-data-filter.mjs +10 -0
  39. package/esm2020/datatable/models/columns-data-filters/models.mjs +74 -0
  40. package/esm2020/datatable/models/columns-data-filters/search-date.columns-data-filter.mjs +113 -0
  41. package/esm2020/datatable/models/columns-data-filters/search-numeric.columns-data-filter.mjs +104 -0
  42. package/esm2020/datatable/models/columns-data-filters/search-text.columns-data-filter.mjs +86 -0
  43. package/esm2020/datatable/models/columns-data-filters/utils.mjs +28 -0
  44. package/esm2020/datatable/models/datatable-config.mjs +3 -0
  45. package/esm2020/datatable/models/table-column.mjs +1 -1
  46. package/esm2020/datatable/public-api.mjs +15 -1
  47. package/esm2020/datatable/services/columns-filters.service.mjs +109 -0
  48. package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
  49. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  50. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  51. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  52. package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
  53. package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
  54. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
  55. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  56. package/esm2020/framework/base-layout/index.mjs +2 -1
  57. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  58. package/esm2020/framework/nav/index.mjs +6 -0
  59. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  60. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  61. package/esm2020/framework/nav/nav.models.mjs +2 -0
  62. package/esm2020/framework/nav/nav.module.mjs +67 -0
  63. package/esm2020/framework/nav/nav.service.mjs +204 -0
  64. package/esm2020/framework/public-api.mjs +2 -1
  65. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +2 -2
  66. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
  67. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
  68. package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
  69. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  70. package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
  71. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  72. package/esm2020/framework/top-bar/index.mjs +3 -1
  73. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  74. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
  75. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
  76. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  77. package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
  78. package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
  79. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +1 -1
  80. package/esm2020/graphql/datatable/index.mjs +4 -1
  81. package/esm2020/graphql/datatable/map-filter-states.mjs +1 -1
  82. package/esm2020/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.mjs +139 -0
  83. package/esm2020/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.mjs +75 -0
  84. package/esm2020/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.mjs +44 -0
  85. package/esm2020/layout/layout.service.mjs +12 -2
  86. package/esm2020/menu/menu-toggle.directive.mjs +7 -2
  87. package/esm2020/popover/popover/popover.component.mjs +7 -3
  88. package/esm2020/popover/popover.directive.mjs +6 -2
  89. package/esm2020/rich-text/public-api.mjs +1 -1
  90. package/esm2020/rich-text/rich-text/rich-text.component.mjs +24 -3
  91. package/esm2020/rich-text/utils/models.mjs +1 -1
  92. package/esm2020/rich-text/utils/utils.mjs +1 -1
  93. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +5 -3
  94. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  95. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  96. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  97. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  98. package/fesm2015/theseam-ui-common-datatable.mjs +1025 -62
  99. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  100. package/fesm2015/theseam-ui-common-framework.mjs +905 -156
  101. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  102. package/fesm2015/theseam-ui-common-graphql.mjs +254 -1
  103. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  104. package/fesm2015/theseam-ui-common-layout.mjs +11 -2
  105. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  106. package/fesm2015/theseam-ui-common-menu.mjs +6 -1
  107. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  108. package/fesm2015/theseam-ui-common-popover.mjs +11 -3
  109. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  110. package/fesm2015/theseam-ui-common-rich-text.mjs +25 -2
  111. package/fesm2015/theseam-ui-common-rich-text.mjs.map +1 -1
  112. package/fesm2015/theseam-ui-common-table-cell-types.mjs +4 -2
  113. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  114. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  115. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  116. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  117. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  118. package/fesm2020/theseam-ui-common-datatable.mjs +1010 -62
  119. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  120. package/fesm2020/theseam-ui-common-framework.mjs +907 -156
  121. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  122. package/fesm2020/theseam-ui-common-graphql.mjs +254 -1
  123. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  124. package/fesm2020/theseam-ui-common-layout.mjs +11 -2
  125. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  126. package/fesm2020/theseam-ui-common-menu.mjs +6 -1
  127. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  128. package/fesm2020/theseam-ui-common-popover.mjs +11 -3
  129. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  130. package/fesm2020/theseam-ui-common-rich-text.mjs +23 -2
  131. package/fesm2020/theseam-ui-common-rich-text.mjs.map +1 -1
  132. package/fesm2020/theseam-ui-common-table-cell-types.mjs +4 -2
  133. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  134. package/framework/base-layout/base-layout.component.d.ts +4 -2
  135. package/framework/base-layout/base-layout.component.scss +18 -10
  136. package/framework/base-layout/base-layout.module.d.ts +11 -10
  137. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  138. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  139. package/framework/base-layout/index.d.ts +1 -0
  140. package/framework/base-layout/styles/_variables.scss +21 -0
  141. package/framework/nav/_nav-theme.scss +4 -0
  142. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  143. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  144. package/framework/nav/index.d.ts +5 -0
  145. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  146. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  147. package/framework/nav/nav-utils.d.ts +20 -0
  148. package/framework/nav/nav.models.d.ts +77 -0
  149. package/framework/nav/nav.module.d.ts +17 -0
  150. package/framework/nav/nav.service.d.ts +27 -0
  151. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  152. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  153. package/framework/nav/styles/_utilities.scss +3 -0
  154. package/framework/nav/styles/_variables.scss +2 -0
  155. package/framework/public-api.d.ts +1 -0
  156. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  157. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  158. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  159. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  160. package/framework/side-nav/side-nav.component.d.ts +13 -1
  161. package/framework/side-nav/side-nav.component.scss +0 -1
  162. package/framework/side-nav/side-nav.models.d.ts +7 -1
  163. package/framework/side-nav/side-nav.module.d.ts +1 -9
  164. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  165. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  166. package/framework/top-bar/index.d.ts +2 -0
  167. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  168. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  169. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  170. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  171. package/framework/top-bar/top-bar.component.d.ts +25 -3
  172. package/framework/top-bar/top-bar.component.scss +7 -2
  173. package/framework/top-bar/top-bar.module.d.ts +10 -8
  174. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  175. package/graphql/datatable/index.d.ts +3 -0
  176. package/graphql/datatable/map-filter-states.d.ts +2 -2
  177. package/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.d.ts +4 -0
  178. package/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.d.ts +4 -0
  179. package/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.d.ts +4 -0
  180. package/layout/layout.service.d.ts +9 -1
  181. package/menu/menu-toggle.directive.d.ts +2 -1
  182. package/package.json +2 -2
  183. package/popover/popover/popover.component.d.ts +4 -1
  184. package/popover/popover.directive.d.ts +2 -1
  185. package/rich-text/rich-text/rich-text.component.d.ts +6 -4
  186. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +83 -14
  187. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +38 -3
@@ -4,56 +4,59 @@ import { coerceArray } from '@angular/cdk/coercion';
4
4
  import { DataSource, isDataSource } from '@angular/cdk/collections';
5
5
  import * as i0 from '@angular/core';
6
6
  import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, Directive, Injectable, TemplateRef, ContentChild, Self, Inject, forwardRef, InjectionToken, isDevMode, Optional, ElementRef, HostListener, HostBinding, NgModule } from '@angular/core';
7
- import { Subject, BehaviorSubject, of, defer, combineLatest, EMPTY, Subscription, from, isObservable } from 'rxjs';
7
+ import { Subject, BehaviorSubject, of, defer, combineLatest, EMPTY, startWith as startWith$1, map as map$1, switchMap as switchMap$1, 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
- import { faEllipsisH, faChevronDown, faChevronRight, faSpinner, faColumns, faFileDownload } from '@fortawesome/free-solid-svg-icons';
10
- import * as i5$1 from '@marklb/ngx-datatable';
9
+ import { faEllipsisH, faChevronDown, faChevronRight, faSpinner, faFilter, faColumns, faFileDownload } from '@fortawesome/free-solid-svg-icons';
10
+ import * as i6 from '@marklb/ngx-datatable';
11
11
  import { camelCase, setColumnDefaults as setColumnDefaults$1, translateTemplates, SelectionType, SortType, ColumnMode, DatatableComponent as DatatableComponent$1, DatatableRowDetailDirective, NgxDatatableModule, ScrollbarHelper } from '@marklb/ngx-datatable';
12
12
  import { InputBoolean, InputNumber } from '@theseam/ui-common/core';
13
- import { THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_CONTAINER, composeDataFilterStates, composeDataFilters } from '@theseam/ui-common/data-filters';
14
- import { notNullOrUndefined, hasProperty, arrayMoveMutable, waitOnConditionAsync, observeControlValue } from '@theseam/ui-common/utils';
15
- import * as i4$1 from '@theseam/ui-common/menu';
13
+ import { THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_CONTAINER, composeDataFilterStates, composeDataFilters, TheSeamDataFiltersModule } from '@theseam/ui-common/data-filters';
14
+ import { notNullOrUndefined, hasProperty, arrayMoveMutable, isNullOrUndefined, isNullOrUndefinedOrEmpty, notNullOrUndefinedOrEmpty, waitOnConditionAsync, observeControlValue } from '@theseam/ui-common/utils';
15
+ import * as i4 from '@theseam/ui-common/menu';
16
16
  import { MenuComponent, TheSeamMenuModule } from '@theseam/ui-common/menu';
17
17
  import * as i1 from '@theseam/ui-common/confirm-dialog';
18
18
  import { TheSeamConfirmDialogModule } from '@theseam/ui-common/confirm-dialog';
19
19
  import * as i2 from '@angular/router';
20
20
  import { RouterModule } from '@angular/router';
21
- import * as i4 from '@angular/common';
21
+ import * as i2$1 from '@angular/common';
22
22
  import { CommonModule } from '@angular/common';
23
23
  import * as i5 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, ControlContainer, FormGroupDirective, UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
25
27
  import * as i1$1 from '@theseam/ui-common/services';
26
- import * as i6 from '@fortawesome/angular-fontawesome';
28
+ import * as i7 from '@fortawesome/angular-fontawesome';
27
29
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
28
- import * as i7 from '@theseam/ui-common/shared';
30
+ import * as i2$2 from '@theseam/ui-common/shared';
29
31
  import { TheSeamSharedModule } from '@theseam/ui-common/shared';
30
- import * as i8 from '@theseam/ui-common/table-cell-type';
32
+ import * as i3$1 from '@theseam/ui-common/buttons';
33
+ import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
34
+ import * as i11 from '@theseam/ui-common/popover';
35
+ import { TheSeamPopoverModule } from '@theseam/ui-common/popover';
36
+ import * as i12 from '@theseam/ui-common/table-cell-type';
31
37
  import { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type';
32
- import * as i7$1 from '@angular/forms';
33
- import { UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
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';
41
+ import { NgSelectModule } from '@ng-select/ng-select';
34
42
  import * as i1$2 from '@theseam/ui-common/scrollbar';
35
43
  import * as i5$2 from '@theseam/ui-common/checkbox';
36
44
  import { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox';
37
- import * as i6$1 from '@theseam/ui-common/form-field';
38
- import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
39
- import * as i4$2 from '@theseam/ui-common/popover';
40
- import { TheSeamPopoverModule } from '@theseam/ui-common/popover';
41
- import * as i3 from '@theseam/ui-common/dynamic';
45
+ import * as i3$2 from '@theseam/ui-common/dynamic';
42
46
  import { THESEAM_DYNAMIC_DATA } from '@theseam/ui-common/dynamic';
43
47
  import * as i1$3 from 'ngx-toastr';
44
48
  import { ToastrModule } from 'ngx-toastr';
45
- import * as i2$1 from '@theseam/ui-common/loading';
49
+ import * as i2$3 from '@theseam/ui-common/loading';
46
50
  import { TheSeamLoadingModule } from '@theseam/ui-common/loading';
47
- import * as i7$2 from '@theseam/ui-common/buttons';
48
- import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
49
51
  import * as i1$4 from '@theseam/ui-common/modal';
50
- import * as i2$2 from '@theseam/ui-common/dynamic-component-loader';
51
- import * as i3$1 from '@angular/common/http';
52
+ import * as i2$4 from '@theseam/ui-common/dynamic-component-loader';
53
+ import * as i3$3 from '@angular/common/http';
52
54
  import { ESCAPE } from '@angular/cdk/keycodes';
53
55
  import { TemplatePortal, PortalModule } from '@angular/cdk/portal';
54
56
  import * as i1$5 from '@angular/cdk/overlay';
55
57
  import { OverlayModule } from '@angular/cdk/overlay';
56
58
  import { A11yModule } from '@angular/cdk/a11y';
59
+ import { TheSeamToggleGroupModule } from '@theseam/ui-common/toggle-group';
57
60
 
58
61
  class DatatableActionMenuItemComponent {
59
62
  constructor() {
@@ -186,13 +189,13 @@ class DatatableActionMenuComponent {
186
189
  }
187
190
  }
188
191
  DatatableActionMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableActionMenuComponent, deps: [{ token: i1.SeamConfirmDialogService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
189
- DatatableActionMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableActionMenuComponent, 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{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4$1.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"] }] });
192
+ DatatableActionMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableActionMenuComponent, 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", "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"] }] });
190
193
  __decorate([
191
194
  InputBoolean()
192
195
  ], DatatableActionMenuComponent.prototype, "isSubMenu", void 0);
193
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableActionMenuComponent, decorators: [{
194
197
  type: Component,
195
- args: [{ selector: 'seam-datatable-action-menu', exportAs: 'seamDatatableActionMenu', 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{display:block;position:relative}.datatable-action-button{font-size:20px;line-height:20px;width:30px;height:30px;padding:0;border-radius:15px;text-align:center}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
198
+ args: [{ selector: 'seam-datatable-action-menu', exportAs: 'seamDatatableActionMenu', 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"] }]
196
199
  }], ctorParameters: function () { return [{ type: i1.SeamConfirmDialogService }, { type: i2.Router }]; }, propDecorators: { menu: [{
197
200
  type: ViewChild,
198
201
  args: [MenuComponent, { static: true }]
@@ -584,7 +587,7 @@ class DatatableDataSource extends DataSource {
584
587
  }
585
588
 
586
589
  const ACTION_MENU_COLUMN_PROP = '$$__actionMenu__';
587
- function createActionMenuColumn(cellTemplate, headerTemplate) {
590
+ function createActionMenuColumn(cellTemplate, headerTemplate, frozenLeft, frozenRight) {
588
591
  return {
589
592
  prop: ACTION_MENU_COLUMN_PROP,
590
593
  name: '',
@@ -595,7 +598,8 @@ function createActionMenuColumn(cellTemplate, headerTemplate) {
595
598
  sortable: false,
596
599
  draggable: false,
597
600
  // TODO: Fix column auto sizing with fixed column and cell overlay before enabling.
598
- // frozenRight: true,
601
+ frozenLeft: frozenLeft,
602
+ frozenRight: frozenRight,
599
603
  cellTemplate,
600
604
  headerTemplate,
601
605
  };
@@ -710,6 +714,13 @@ class ColumnsManagerService {
710
714
  this._updateColumns.next(undefined);
711
715
  }
712
716
  }
717
+ setActionItemColumnPosition(actionItemColumnPosition) {
718
+ const changed = this._actionItemColumnPosition !== actionItemColumnPosition;
719
+ this._actionItemColumnPosition = actionItemColumnPosition;
720
+ if (changed) {
721
+ this._updateColumns.next(undefined);
722
+ }
723
+ }
713
724
  setActionMenuCellTpl(actionMenuCellTpl) {
714
725
  const changed = this._actionMenuCellTpl !== actionMenuCellTpl;
715
726
  this._actionMenuCellTpl = actionMenuCellTpl;
@@ -783,7 +794,13 @@ class ColumnsManagerService {
783
794
  cols.push(_col);
784
795
  }
785
796
  if (this._shouldAddRowActionColumn()) {
786
- cols.push(createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl));
797
+ const actionMenuColumn = createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl, this._rowActionColumnIsFrozenLeft(), this._rowActionColumnIsFrozenRight());
798
+ if (this._rowActionColumnIsStaticLeft()) {
799
+ cols.unshift(actionMenuColumn);
800
+ }
801
+ else {
802
+ cols.push(actionMenuColumn);
803
+ }
787
804
  }
788
805
  // Make sure the default for any missing props are set.
789
806
  // TODO: Determine if this should be done earlier, because I don't like
@@ -869,6 +886,18 @@ class ColumnsManagerService {
869
886
  _shouldAddRowActionColumn() {
870
887
  return this._rowActionItem !== undefined;
871
888
  }
889
+ _rowActionColumnIsFrozenLeft() {
890
+ return this._actionItemColumnPosition === 'frozenLeft';
891
+ }
892
+ _rowActionColumnIsFrozenRight() {
893
+ return this._actionItemColumnPosition === 'frozenRight';
894
+ }
895
+ _rowActionColumnIsStaticLeft() {
896
+ return this._actionItemColumnPosition === 'staticLeft';
897
+ }
898
+ _rowActionColumnIsStaticRight() {
899
+ return this._actionItemColumnPosition === 'staticRight';
900
+ }
872
901
  _shouldAddTreeToggleColumn(column) {
873
902
  return column.isTreeColumn !== undefined && column.isTreeColumn &&
874
903
  (!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate));
@@ -1294,6 +1323,549 @@ function mapColumnsAlterationsStates(states) {
1294
1323
  return alterations;
1295
1324
  }
1296
1325
 
1326
+ const ActionItemColumnPosition = ['frozenLeft', 'frozenRight', 'staticLeft', 'staticRight'];
1327
+ function isActionItemColumnPosition(input) {
1328
+ return ActionItemColumnPosition.indexOf(input) != -1;
1329
+ }
1330
+
1331
+ class ColumnsDataFilter {
1332
+ constructor(prop, initialValue, column) {
1333
+ this.prop = prop;
1334
+ this.initialValue = initialValue;
1335
+ this.column = column;
1336
+ }
1337
+ }
1338
+ const THESEAM_COLUMNS_DATA_FILTER = new InjectionToken('ColumnsDataFilter');
1339
+
1340
+ const THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME = 'search-date';
1341
+ const THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_TYPES = [
1342
+ 'lt',
1343
+ 'lte',
1344
+ 'gt',
1345
+ 'gte',
1346
+ 'eq',
1347
+ 'blank',
1348
+ 'not-blank',
1349
+ 'between',
1350
+ 'not-between'
1351
+ ];
1352
+ const THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES = [
1353
+ 'lt',
1354
+ 'lte',
1355
+ 'gt',
1356
+ 'gte',
1357
+ 'eq',
1358
+ ];
1359
+ const THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES = [
1360
+ 'between',
1361
+ 'not-between'
1362
+ ];
1363
+ const THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES = [
1364
+ 'blank',
1365
+ 'not-blank',
1366
+ ];
1367
+ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME = 'search-numeric';
1368
+ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_TYPES = [
1369
+ 'gt',
1370
+ 'lt',
1371
+ 'eq',
1372
+ 'gte',
1373
+ 'lte',
1374
+ 'blank',
1375
+ 'not-blank',
1376
+ 'between',
1377
+ 'not-between'
1378
+ ];
1379
+ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES = [
1380
+ 'gt',
1381
+ 'lt',
1382
+ 'eq',
1383
+ 'gte',
1384
+ 'lte',
1385
+ ];
1386
+ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES = [
1387
+ 'between',
1388
+ 'not-between'
1389
+ ];
1390
+ const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES = [
1391
+ 'blank',
1392
+ 'not-blank',
1393
+ ];
1394
+ const THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME = 'search-text';
1395
+ const THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_TYPES = [
1396
+ 'contains',
1397
+ 'ncontains',
1398
+ 'eq',
1399
+ 'neq',
1400
+ 'blank',
1401
+ 'not-blank'
1402
+ ];
1403
+ const THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES = [
1404
+ 'contains',
1405
+ 'ncontains',
1406
+ 'eq',
1407
+ 'neq',
1408
+ ];
1409
+ const THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES = [
1410
+ 'blank',
1411
+ 'not-blank'
1412
+ ];
1413
+
1414
+ class SearchDateColumnsDataFilter extends ColumnsDataFilter {
1415
+ constructor(prop, initialValue, column) {
1416
+ var _a;
1417
+ super(prop, initialValue, column);
1418
+ this.name = THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME;
1419
+ this._updateFilterValue = new Subject;
1420
+ this.form = new FormGroup({
1421
+ searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'eq'),
1422
+ searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
1423
+ fromText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.fromText : null),
1424
+ toText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.toText : null),
1425
+ });
1426
+ this.uid = `${this.name}--${prop}`;
1427
+ this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
1428
+ this.options = {
1429
+ dateType: ((_a = this.column.filterOptions) === null || _a === void 0 ? void 0 : _a.dateType) || 'date'
1430
+ };
1431
+ }
1432
+ dataFilter(data, filterValue, options) {
1433
+ if (isNullOrUndefined(filterValue) || this.isDefault()) {
1434
+ return data;
1435
+ }
1436
+ return this._dateSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
1437
+ }
1438
+ _isInvalidDate(dateString) {
1439
+ return isNullOrUndefinedOrEmpty(dateString) || isNaN(new Date(dateString).valueOf());
1440
+ }
1441
+ _isInvalidSearchTerm(searchText, fromText, toText, comparator) {
1442
+ if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(comparator) && this._isInvalidDate(searchText)) {
1443
+ return true;
1444
+ }
1445
+ else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(comparator) && (this._isInvalidDate(fromText) || this._isInvalidDate(toText))) {
1446
+ return true;
1447
+ }
1448
+ return false;
1449
+ }
1450
+ _dateSearchDataFilter(prop, data, text, fromText, toText, comparator) {
1451
+ var _a;
1452
+ if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
1453
+ console.warn('No filter applied - invalid options.');
1454
+ return data;
1455
+ }
1456
+ if (this._isInvalidSearchTerm(text, fromText, toText, comparator)) {
1457
+ console.warn('No filter applied - invalid search terms.');
1458
+ return data;
1459
+ }
1460
+ const useLocalTime = ((_a = this.column.filterOptions) === null || _a === void 0 ? void 0 : _a.useLocalTime) === true;
1461
+ const textDate = getFormattedDateForComparison(text, this.options.dateType, true);
1462
+ const fromTextDate = getFormattedDateForComparison(fromText, this.options.dateType, true);
1463
+ const toTextDate = getFormattedDateForComparison(toText, this.options.dateType, true);
1464
+ return data.filter(item => {
1465
+ let propDate = getFormattedDateForComparison(item[prop], this.options.dateType, useLocalTime);
1466
+ if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
1467
+ (comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
1468
+ (comparator === 'lt' && propDate.valueOf() < textDate.valueOf()) ||
1469
+ (comparator === 'lte' && propDate.valueOf() <= textDate.valueOf()) ||
1470
+ (comparator === 'gt' && propDate.valueOf() > textDate.valueOf()) ||
1471
+ (comparator === 'gte' && propDate.valueOf() >= textDate.valueOf()) ||
1472
+ (comparator === 'eq' && propDate.valueOf() === textDate.valueOf()) ||
1473
+ (comparator === 'between' && propDate.valueOf() >= fromTextDate.valueOf() && propDate.valueOf() <= toTextDate.valueOf()) ||
1474
+ (comparator === 'not-between' && !(propDate.valueOf() >= fromTextDate.valueOf() && propDate.valueOf() <= toTextDate.valueOf()))) {
1475
+ return true;
1476
+ }
1477
+ return false;
1478
+ });
1479
+ }
1480
+ filter(data) {
1481
+ return this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.dataFilter(data, this.form.value, undefined)));
1482
+ }
1483
+ filterState() {
1484
+ return {
1485
+ name: this.name,
1486
+ state: {
1487
+ prop: this.prop,
1488
+ formValue: this.form.value,
1489
+ options: this.options
1490
+ }
1491
+ };
1492
+ }
1493
+ applyFilter() {
1494
+ this._updateFilterValue.next();
1495
+ }
1496
+ clearFilter() {
1497
+ this.form.setValue({
1498
+ searchType: 'eq',
1499
+ searchText: null,
1500
+ fromText: null,
1501
+ toText: null
1502
+ });
1503
+ this._updateFilterValue.next();
1504
+ }
1505
+ isDefault() {
1506
+ const formValue = this.form.value;
1507
+ if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
1508
+ return true;
1509
+ }
1510
+ if (THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
1511
+ return false;
1512
+ }
1513
+ else if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
1514
+ return false;
1515
+ }
1516
+ else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
1517
+ return false;
1518
+ }
1519
+ return true;
1520
+ }
1521
+ }
1522
+
1523
+ class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
1524
+ constructor(prop, initialValue, column) {
1525
+ super(prop, initialValue, column);
1526
+ this.name = THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME;
1527
+ this._updateFilterValue = new Subject;
1528
+ this.form = new FormGroup({
1529
+ searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'eq'),
1530
+ searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
1531
+ fromText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.fromText : null),
1532
+ toText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.toText : null),
1533
+ });
1534
+ this.uid = `${this.name}--${prop}`;
1535
+ this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
1536
+ }
1537
+ dataFilter(data, filterValue, options) {
1538
+ if (isNullOrUndefined(filterValue) || this.isDefault()) {
1539
+ return data;
1540
+ }
1541
+ return this.numberSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
1542
+ }
1543
+ _isInvalidSearchTerm(searchText, fromText, toText, comparator) {
1544
+ if (isNaN(searchText) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(comparator)) {
1545
+ return true;
1546
+ }
1547
+ else if ((isNaN(fromText) || isNaN(toText)) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(comparator)) {
1548
+ return true;
1549
+ }
1550
+ return false;
1551
+ }
1552
+ numberSearchDataFilter(prop, data, text, fromText, toText, comparator) {
1553
+ if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
1554
+ console.warn('No filter applied - invalid options.');
1555
+ return data;
1556
+ }
1557
+ const textNumeric = notNullOrUndefinedOrEmpty(text) ? parseFloat(text) : NaN;
1558
+ const toTextNumeric = notNullOrUndefinedOrEmpty(toText) ? parseFloat(toText) : NaN;
1559
+ const fromTextNumeric = notNullOrUndefinedOrEmpty(fromText) ? parseFloat(fromText) : NaN;
1560
+ if (this._isInvalidSearchTerm(textNumeric, fromTextNumeric, toTextNumeric, comparator)) {
1561
+ console.warn('No filter applied - invalid search terms.');
1562
+ return data;
1563
+ }
1564
+ return data.filter(item => {
1565
+ let propNumeric = parseFloat(item[prop]);
1566
+ if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
1567
+ (comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
1568
+ (comparator === 'lt' && propNumeric < textNumeric) ||
1569
+ (comparator === 'lte' && propNumeric <= textNumeric) ||
1570
+ (comparator === 'gt' && propNumeric > textNumeric) ||
1571
+ (comparator === 'gte' && propNumeric >= textNumeric) ||
1572
+ (comparator === 'eq' && propNumeric === textNumeric) ||
1573
+ (comparator === 'between' && propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric) ||
1574
+ (comparator === 'not-between' && !(propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric))) {
1575
+ return true;
1576
+ }
1577
+ return false;
1578
+ });
1579
+ }
1580
+ filter(data) {
1581
+ return this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.dataFilter(data, this.form.value, undefined)));
1582
+ }
1583
+ filterState() {
1584
+ return {
1585
+ name: this.name,
1586
+ state: {
1587
+ prop: this.prop,
1588
+ formValue: this.form.value
1589
+ }
1590
+ };
1591
+ }
1592
+ applyFilter() {
1593
+ this._updateFilterValue.next();
1594
+ }
1595
+ clearFilter() {
1596
+ this.form.setValue({
1597
+ searchType: 'eq',
1598
+ searchText: null,
1599
+ fromText: null,
1600
+ toText: null
1601
+ });
1602
+ this._updateFilterValue.next();
1603
+ }
1604
+ isDefault() {
1605
+ const formValue = this.form.value;
1606
+ if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
1607
+ return true;
1608
+ }
1609
+ else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
1610
+ return false;
1611
+ }
1612
+ else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
1613
+ return false;
1614
+ }
1615
+ else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
1616
+ return false;
1617
+ }
1618
+ return true;
1619
+ }
1620
+ }
1621
+
1622
+ class SearchTextColumnsDataFilter extends ColumnsDataFilter {
1623
+ constructor(prop, initialValue, column) {
1624
+ super(prop, initialValue, column);
1625
+ this.name = THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
1626
+ this._updateFilterValue = new Subject;
1627
+ this.form = new FormGroup({
1628
+ searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'contains'),
1629
+ searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
1630
+ // caseSensitive: new FormControl<boolean | null>(notNullOrUndefined(initialValue) ? initialValue.caseSensitive : null),
1631
+ });
1632
+ this.uid = `${this.name}--${prop}`;
1633
+ this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
1634
+ }
1635
+ dataFilter(data, filterValue, options) {
1636
+ if (isNullOrUndefined(filterValue) || this.isDefault()) {
1637
+ return data;
1638
+ }
1639
+ return this._textSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.searchType || null);
1640
+ }
1641
+ _textSearchDataFilter(prop, data, text, comparator) {
1642
+ if (!data || data.length < 0 || isNullOrUndefined(comparator)) {
1643
+ return data;
1644
+ }
1645
+ return data.filter(item => {
1646
+ let value1 = `${notNullOrUndefined(item[prop]) ? item[prop] : ''}`;
1647
+ let value2 = text || '';
1648
+ // if (!options.caseSensitive) {
1649
+ // value1 = value1.toLowerCase()
1650
+ // value2 = value2.toLowerCase()
1651
+ // }
1652
+ value1 = value1.toLowerCase();
1653
+ value2 = value2.toLowerCase();
1654
+ if ((comparator === 'eq' && value1 === value2) ||
1655
+ (comparator === 'neq' && value1 !== value2) ||
1656
+ (comparator === 'contains' && value1.indexOf(value2) !== -1) ||
1657
+ (comparator === 'ncontains' && value1.indexOf(value2) === -1) ||
1658
+ (comparator === 'blank' && isNullOrUndefinedOrEmpty(value1)) ||
1659
+ (comparator === 'not-blank' && notNullOrUndefinedOrEmpty(value1))) {
1660
+ return true;
1661
+ }
1662
+ return false;
1663
+ });
1664
+ }
1665
+ filter(data) {
1666
+ return this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.dataFilter(data, this.form.value, undefined)));
1667
+ }
1668
+ filterState() {
1669
+ return {
1670
+ name: this.name,
1671
+ state: {
1672
+ prop: this.prop,
1673
+ formValue: this.form.value,
1674
+ }
1675
+ };
1676
+ }
1677
+ applyFilter() {
1678
+ this._updateFilterValue.next();
1679
+ }
1680
+ clearFilter() {
1681
+ this.form.setValue({
1682
+ searchType: 'contains',
1683
+ searchText: null,
1684
+ // caseSensitive: null
1685
+ });
1686
+ this._updateFilterValue.next();
1687
+ }
1688
+ isDefault() {
1689
+ const formValue = this.form.value;
1690
+ if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
1691
+ return true;
1692
+ }
1693
+ else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
1694
+ return false;
1695
+ }
1696
+ else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
1697
+ return false;
1698
+ }
1699
+ return true;
1700
+ }
1701
+ }
1702
+
1703
+ const THESEAM_COLUMNS_DATA_FILTERS_DEFAULT = [
1704
+ { name: THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, class: SearchTextColumnsDataFilter },
1705
+ { name: THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, class: SearchNumericColumnsDataFilter },
1706
+ { name: THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, class: SearchDateColumnsDataFilter },
1707
+ ];
1708
+ const getFormattedDateForComparison = (date, dateType, setToLocalTime = false) => {
1709
+ const dateObj = new Date(notNullOrUndefined(date) ? date : '');
1710
+ if (dateType === 'datetime-local') {
1711
+ // reset seconds and ms, since they can't be specified from the search input
1712
+ dateObj.setSeconds(0);
1713
+ dateObj.setMilliseconds(0);
1714
+ }
1715
+ else if (dateType === 'date') {
1716
+ if (setToLocalTime) {
1717
+ // set date from input type="date" to current timezone, to match expected behavior
1718
+ dateObj.setMinutes(dateObj.getMinutes() + dateObj.getTimezoneOffset());
1719
+ }
1720
+ // reset hours/minutes/seconds/ms, since they can't be specified from the search input
1721
+ dateObj.setHours(0, 0, 0, 0);
1722
+ }
1723
+ return dateObj;
1724
+ };
1725
+
1726
+ class ColumnsFiltersService {
1727
+ constructor(_customColumnsDataFilters) {
1728
+ this._customColumnsDataFilters = _customColumnsDataFilters;
1729
+ this._columnFilterTemplates = new BehaviorSubject([]);
1730
+ this.columnFilterTemplates$ = this._columnFilterTemplates.asObservable();
1731
+ this._columnsFilters = new BehaviorSubject([]);
1732
+ this.columnsFilters$ = this._columnsFilters.asObservable();
1733
+ this.columnActiveFilterProps$ = this.columnsFilters$.pipe(switchMap$1(filters => {
1734
+ if (!filters.length) {
1735
+ return of([]);
1736
+ }
1737
+ return combineLatest(filters.map(f => f.filterStateChanges.pipe(map$1(filterState => !f.isDefault() ? filterState.state.prop : null))));
1738
+ }), map$1(props => props.filter(notNullOrUndefined)));
1739
+ }
1740
+ registerColumnFilters(columns) {
1741
+ this._columnsFilters.next([]);
1742
+ const filters = columns
1743
+ .filter(col => col.filterable)
1744
+ .map(col => this.createColumnDataFilter(col, null));
1745
+ this._columnsFilters.next(filters.filter(notNullOrUndefined));
1746
+ }
1747
+ setFilterTemplates(tpls) {
1748
+ this._columnFilterTemplates.next(tpls);
1749
+ }
1750
+ createColumnDataFilter(column, initialValue) {
1751
+ const prop = this.getColumnFilterProp(column);
1752
+ if (isNullOrUndefined(prop)) {
1753
+ return null;
1754
+ }
1755
+ return this._getColumnsDataFilter(prop, column, initialValue);
1756
+ }
1757
+ _getColumnsDataFilter(prop, column, initialValue) {
1758
+ const filterClass = this._getColumnsDataFilterType(column);
1759
+ let filter;
1760
+ if (notNullOrUndefined(this._customColumnsDataFilters)) {
1761
+ filter = this._customColumnsDataFilters.find(x => x.name === filterClass);
1762
+ }
1763
+ if (isNullOrUndefined(filter)) {
1764
+ filter = THESEAM_COLUMNS_DATA_FILTERS_DEFAULT.find(x => x.name === filterClass);
1765
+ }
1766
+ if (notNullOrUndefined(filter)) {
1767
+ return new filter.class(prop, initialValue, column);
1768
+ }
1769
+ return null;
1770
+ }
1771
+ _getColumnsDataFilterType(column) {
1772
+ if (notNullOrUndefined(column.filterOptions) && notNullOrUndefined(column.filterOptions.filterType)) {
1773
+ return column.filterOptions.filterType;
1774
+ }
1775
+ else if (notNullOrUndefined(column.cellType)) {
1776
+ switch (column.cellType) {
1777
+ case 'string':
1778
+ case 'phone':
1779
+ return THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
1780
+ case 'currency':
1781
+ case 'decimal':
1782
+ case 'integer':
1783
+ return THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME;
1784
+ case 'date':
1785
+ return THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME;
1786
+ }
1787
+ }
1788
+ return THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
1789
+ }
1790
+ getColumnFilterProp(column) {
1791
+ var _a;
1792
+ if (isNullOrUndefined(column)) {
1793
+ return null;
1794
+ }
1795
+ const prop = ((_a = column.filterOptions) === null || _a === void 0 ? void 0 : _a.filterProp) || column.prop || (notNullOrUndefined(column.name) ? camelCase(column.name) : undefined);
1796
+ if (isNullOrUndefined(prop)) {
1797
+ return null;
1798
+ }
1799
+ return `${prop}`;
1800
+ }
1801
+ getColumnFilter(prop) {
1802
+ if (isNullOrUndefined(prop)) {
1803
+ return undefined;
1804
+ }
1805
+ return this._columnsFilters.value.find(f => f.prop === prop);
1806
+ }
1807
+ filters() {
1808
+ return this._columnsFilters.value;
1809
+ }
1810
+ addFilter(filter) {
1811
+ this._columnsFilters.next([...this._columnsFilters.value, filter]);
1812
+ }
1813
+ removeFilter(filter) {
1814
+ this._columnsFilters.next([...this._columnsFilters.value.filter(c => c.name !== filter.name)]);
1815
+ }
1816
+ }
1817
+ ColumnsFiltersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsFiltersService, deps: [{ token: THESEAM_COLUMNS_DATA_FILTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1818
+ ColumnsFiltersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsFiltersService });
1819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ColumnsFiltersService, decorators: [{
1820
+ type: Injectable
1821
+ }], ctorParameters: function () {
1822
+ return [{ type: undefined, decorators: [{
1823
+ type: Optional
1824
+ }, {
1825
+ type: Inject,
1826
+ args: [THESEAM_COLUMNS_DATA_FILTER]
1827
+ }] }];
1828
+ } });
1829
+
1830
+ const THESEAM_DATATABLE_CONFIG = new InjectionToken('TheSeamDatatableConfig');
1831
+
1832
+ class DatatableColumnFilterTplDirective {
1833
+ constructor(template) {
1834
+ this.template = template;
1835
+ }
1836
+ }
1837
+ DatatableColumnFilterTplDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1838
+ DatatableColumnFilterTplDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnFilterTplDirective, selector: "[seamDatatableColumnFilterTpl]", ngImport: i0 });
1839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterTplDirective, decorators: [{
1840
+ type: Directive,
1841
+ args: [{
1842
+ selector: '[seamDatatableColumnFilterTpl]'
1843
+ }]
1844
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
1845
+
1846
+ class TheSeamDatatableColumnFilterDirective {
1847
+ get template() {
1848
+ return this._templateInput || this._templateQuery;
1849
+ }
1850
+ }
1851
+ TheSeamDatatableColumnFilterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1852
+ TheSeamDatatableColumnFilterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamDatatableColumnFilterDirective, 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 });
1853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, decorators: [{
1854
+ type: Directive,
1855
+ args: [{
1856
+ // eslint-disable-next-line @angular-eslint/directive-selector
1857
+ selector: 'seam-datatable-column-filter'
1858
+ }]
1859
+ }], propDecorators: { filterName: [{
1860
+ type: Input
1861
+ }], _templateInput: [{
1862
+ type: Input,
1863
+ args: ['template']
1864
+ }], _templateQuery: [{
1865
+ type: ContentChild,
1866
+ args: [DatatableColumnFilterTplDirective, { read: TemplateRef, static: true }]
1867
+ }] } });
1868
+
1297
1869
  const CURRENT_DATATABLE_PREFERENCES_VERSION = 2;
1298
1870
  const EMPTY_DATATABLE_PREFERENCES = {
1299
1871
  version: 2,
@@ -1388,6 +1960,168 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1388
1960
  }] }];
1389
1961
  } });
1390
1962
 
1963
+ class DatatableColumnFilterSearchTextComponent {
1964
+ constructor() {
1965
+ this.searchTypes = [
1966
+ { label: 'Contains', value: 'contains' },
1967
+ { label: 'Does not contain', value: 'ncontains' },
1968
+ { label: 'Matches exactly', value: 'eq' },
1969
+ { label: 'Does not match exactly', value: 'neq' },
1970
+ { label: 'Is blank', value: 'blank' },
1971
+ { label: 'Is not blank', value: 'not-blank' },
1972
+ ];
1973
+ }
1974
+ ngOnInit() {
1975
+ var _a, _b;
1976
+ this.showTextbox$ = (_a = this.filterForm) === null || _a === void 0 ? void 0 : _a.controls.searchType.valueChanges.pipe(startWith$1((_b = this.filterForm) === null || _b === void 0 ? void 0 : _b.controls.searchType.value), map$1(value => THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(value || '')));
1977
+ }
1978
+ }
1979
+ DatatableColumnFilterSearchTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1980
+ DatatableColumnFilterSearchTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnFilterSearchTextComponent, 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.AutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.NgSelectExtraDirective, selector: "ng-select" }, { 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-checkbox[seamInput] [ngbRadioGroup], 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: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
1981
+ {
1982
+ provide: ControlContainer,
1983
+ useExisting: FormGroupDirective
1984
+ }
1985
+ ] });
1986
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, decorators: [{
1987
+ type: Component,
1988
+ args: [{ selector: 'seam-datatable-column-filter-search-text', viewProviders: [
1989
+ {
1990
+ provide: ControlContainer,
1991
+ useExisting: FormGroupDirective
1992
+ }
1993
+ ], 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" }]
1994
+ }], propDecorators: { filterForm: [{
1995
+ type: Input
1996
+ }] } });
1997
+
1998
+ class DatatableColumnFilterSearchNumericComponent {
1999
+ constructor() {
2000
+ this.searchTypes = [
2001
+ { label: 'Less than (<)', value: 'lt' },
2002
+ { label: 'Less than or equal to (<=)', value: 'lte' },
2003
+ { label: 'Equal to (=)', value: 'eq' },
2004
+ { label: 'Greater than (>)', value: 'gt' },
2005
+ { label: 'Greater than or equal to (>=)', value: 'gte' },
2006
+ { label: 'Between', value: 'between' },
2007
+ { label: 'Not between', value: 'not-between' },
2008
+ { label: 'Blank', value: 'blank' },
2009
+ { label: 'Not blank', value: 'not-blank' },
2010
+ ];
2011
+ }
2012
+ ngOnInit() {
2013
+ var _a, _b, _c, _d;
2014
+ this.showSearchInput$ = (_a = this.filterForm) === null || _a === void 0 ? void 0 : _a.controls.searchType.valueChanges.pipe(startWith$1((_b = this.filterForm) === null || _b === void 0 ? void 0 : _b.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(searchType || '')));
2015
+ this.showRangeInputs$ = (_c = this.filterForm) === null || _c === void 0 ? void 0 : _c.controls.searchType.valueChanges.pipe(startWith$1((_d = this.filterForm) === null || _d === void 0 ? void 0 : _d.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(searchType || '')));
2016
+ }
2017
+ }
2018
+ DatatableColumnFilterSearchNumericComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2019
+ DatatableColumnFilterSearchNumericComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnFilterSearchNumericComponent, 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.AutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.NgSelectExtraDirective, selector: "ng-select" }, { 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-checkbox[seamInput] [ngbRadioGroup], 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: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2020
+ {
2021
+ provide: ControlContainer,
2022
+ useExisting: FormGroupDirective
2023
+ }
2024
+ ] });
2025
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, decorators: [{
2026
+ type: Component,
2027
+ args: [{ selector: 'seam-datatable-column-filter-search-numeric', viewProviders: [
2028
+ {
2029
+ provide: ControlContainer,
2030
+ useExisting: FormGroupDirective
2031
+ }
2032
+ ], 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" }]
2033
+ }], propDecorators: { filterForm: [{
2034
+ type: Input
2035
+ }] } });
2036
+
2037
+ class DatatableColumnFilterSearchDateComponent {
2038
+ constructor() {
2039
+ this.searchTypes = [
2040
+ { label: 'Before', value: 'lt' },
2041
+ { label: 'Before or on', value: 'lte' },
2042
+ { label: 'On', value: 'eq' },
2043
+ { label: 'After', value: 'gt' },
2044
+ { label: 'After or on', value: 'gte' },
2045
+ { label: 'Between', value: 'between' },
2046
+ { label: 'Not between', value: 'not-between' },
2047
+ { label: 'Blank', value: 'blank' },
2048
+ { label: 'Not blank', value: 'not-blank' },
2049
+ ];
2050
+ }
2051
+ ngOnInit() {
2052
+ var _a, _b, _c, _d, _e, _f;
2053
+ if (notNullOrUndefined((_a = this.options) === null || _a === void 0 ? void 0 : _a.dateType)) {
2054
+ this.dateFormat = (_b = this.options) === null || _b === void 0 ? void 0 : _b.dateType;
2055
+ }
2056
+ this.showSearchInput$ = (_c = this.filterForm) === null || _c === void 0 ? void 0 : _c.controls.searchType.valueChanges.pipe(startWith$1((_d = this.filterForm) === null || _d === void 0 ? void 0 : _d.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(searchType || '')));
2057
+ this.showRangeInputs$ = (_e = this.filterForm) === null || _e === void 0 ? void 0 : _e.controls.searchType.valueChanges.pipe(startWith$1((_f = this.filterForm) === null || _f === void 0 ? void 0 : _f.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(searchType || '')));
2058
+ }
2059
+ }
2060
+ DatatableColumnFilterSearchDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2061
+ DatatableColumnFilterSearchDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnFilterSearchDateComponent, 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.AutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.NgSelectExtraDirective, selector: "ng-select" }, { 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-checkbox[seamInput] [ngbRadioGroup], 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: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
2062
+ {
2063
+ provide: ControlContainer,
2064
+ useExisting: FormGroupDirective
2065
+ }
2066
+ ] });
2067
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, decorators: [{
2068
+ type: Component,
2069
+ args: [{ selector: 'seam-datatable-column-filter-search-date', viewProviders: [
2070
+ {
2071
+ provide: ControlContainer,
2072
+ useExisting: FormGroupDirective
2073
+ }
2074
+ ], 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" }]
2075
+ }], propDecorators: { options: [{
2076
+ type: Input
2077
+ }], filterForm: [{
2078
+ type: Input
2079
+ }] } });
2080
+
2081
+ class DatatableColumnFilterMenuComponent {
2082
+ constructor(_columnsFilters) {
2083
+ this._columnsFilters = _columnsFilters;
2084
+ this.closePopover = new EventEmitter();
2085
+ }
2086
+ ngOnInit() {
2087
+ this.columnFilterProp = this._columnsFilters.getColumnFilterProp(this.column);
2088
+ this.columnFilter = this._columnsFilters.getColumnFilter(this.columnFilterProp);
2089
+ if (notNullOrUndefined(this.columnFilter)) {
2090
+ this._filterForm = this.columnFilter.form;
2091
+ }
2092
+ this.customFilterTemplate$ = this._columnsFilters.columnFilterTemplates$.pipe(map$1(templates => templates.find(t => { var _a; return t.filterName === ((_a = this.columnFilter) === null || _a === void 0 ? void 0 : _a.name); })));
2093
+ if (this.updateMethod === 'valueChanges' && notNullOrUndefined(this._filterForm)) {
2094
+ this._filterForm.valueChanges.pipe(debounceTime(this.debounce || 0), tap$1(() => { var _a; return (_a = this.columnFilter) === null || _a === void 0 ? void 0 : _a.applyFilter(); })).subscribe();
2095
+ }
2096
+ }
2097
+ submit() {
2098
+ var _a;
2099
+ (_a = this.columnFilter) === null || _a === void 0 ? void 0 : _a.applyFilter();
2100
+ this.closePopover.emit();
2101
+ }
2102
+ clearFilter() {
2103
+ var _a;
2104
+ (_a = this.columnFilter) === null || _a === void 0 ? void 0 : _a.clearFilter();
2105
+ }
2106
+ }
2107
+ DatatableColumnFilterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterMenuComponent, deps: [{ token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Component });
2108
+ DatatableColumnFilterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnFilterMenuComponent, 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" }] });
2109
+ __decorate([
2110
+ InputNumber()
2111
+ ], DatatableColumnFilterMenuComponent.prototype, "debounce", void 0);
2112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnFilterMenuComponent, decorators: [{
2113
+ type: Component,
2114
+ args: [{ selector: 'seam-datatable-column-filter-menu', 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" }]
2115
+ }], ctorParameters: function () { return [{ type: ColumnsFiltersService }]; }, propDecorators: { column: [{
2116
+ type: Input
2117
+ }], updateMethod: [{
2118
+ type: Input
2119
+ }], debounce: [{
2120
+ type: Input
2121
+ }], closePopover: [{
2122
+ type: Output
2123
+ }] } });
2124
+
1391
2125
  /**
1392
2126
  * Intended for internal classes declared by the `TheSeamDatatableModule`.
1393
2127
  */
@@ -1403,11 +2137,17 @@ const _THESEAM_DATATABLE_ACCESSOR = {
1403
2137
  useExisting: forwardRef(() => DatatableComponent)
1404
2138
  };
1405
2139
  class DatatableComponent {
1406
- get filters() { return this._filtersSubject.value; }
2140
+ get filters() {
2141
+ return [
2142
+ ...this._menuBarsFiltersSubject.value,
2143
+ ...this._columnsFilters.filters()
2144
+ ];
2145
+ }
1407
2146
  get preferencesKey() { return this._preferencesKey.value; }
1408
2147
  set preferencesKey(value) { this._preferencesKey.next(value || undefined); }
1409
2148
  set columns(value) {
1410
2149
  this._columnsManager.setInputColumns(Array.isArray(value) ? value : []);
2150
+ this._columnsFilters.registerColumnFilters(Array.isArray(value) ? value : []);
1411
2151
  }
1412
2152
  get rows() { return this._rows.value; }
1413
2153
  set rows(value) {
@@ -1432,12 +2172,144 @@ class DatatableComponent {
1432
2172
  set sorts(value) {
1433
2173
  this._sorts = notNullOrUndefined(value) ? coerceArray(value) : [];
1434
2174
  }
2175
+ get cssClasses() {
2176
+ return this._cssClasses;
2177
+ }
2178
+ set cssClasses(value) {
2179
+ var _a, _b;
2180
+ if (notNullOrUndefined(value)) {
2181
+ this._cssClasses = value;
2182
+ }
2183
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.cssClasses)) {
2184
+ this._cssClasses = (_b = this._config) === null || _b === void 0 ? void 0 : _b.cssClasses;
2185
+ }
2186
+ else {
2187
+ this._cssClasses = this._cssClassesDefault;
2188
+ }
2189
+ }
2190
+ get messages() {
2191
+ return this._messages;
2192
+ }
2193
+ set messages(value) {
2194
+ var _a, _b;
2195
+ if (notNullOrUndefined(value)) {
2196
+ this._messages = value;
2197
+ }
2198
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.messages)) {
2199
+ this._messages = Object.assign(Object.assign({}, this._messagesDefault), (_b = this._config) === null || _b === void 0 ? void 0 : _b.messages);
2200
+ }
2201
+ else {
2202
+ this._messages = this._messagesDefault;
2203
+ }
2204
+ }
2205
+ get headerHeight() {
2206
+ return this._headerHeight;
2207
+ }
2208
+ set headerHeight(value) {
2209
+ var _a, _b;
2210
+ if (notNullOrUndefined(value)) {
2211
+ this._headerHeight = value;
2212
+ }
2213
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.headerHeight)) {
2214
+ this._headerHeight = (_b = this._config) === null || _b === void 0 ? void 0 : _b.headerHeight;
2215
+ }
2216
+ else {
2217
+ this._headerHeight = this._headerHeightDefault;
2218
+ }
2219
+ }
2220
+ get rowHeight() {
2221
+ return this._rowHeight;
2222
+ }
2223
+ set rowHeight(value) {
2224
+ var _a, _b;
2225
+ if (notNullOrUndefined(value)) {
2226
+ this._rowHeight = value;
2227
+ }
2228
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.rowHeight)) {
2229
+ this._rowHeight = (_b = this._config) === null || _b === void 0 ? void 0 : _b.rowHeight;
2230
+ }
2231
+ else {
2232
+ this._rowHeight = this._rowHeightDefault;
2233
+ }
2234
+ }
2235
+ get footerHeight() {
2236
+ return this._footerHeight;
2237
+ }
2238
+ set footerHeight(value) {
2239
+ var _a, _b;
2240
+ if (notNullOrUndefined(value)) {
2241
+ this._footerHeight = value;
2242
+ }
2243
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.footerHeight)) {
2244
+ this._footerHeight = (_b = this._config) === null || _b === void 0 ? void 0 : _b.footerHeight;
2245
+ }
2246
+ else {
2247
+ this._footerHeight = this._footerHeightDefault;
2248
+ }
2249
+ }
1435
2250
  set dataSource(value) {
1436
2251
  if (value instanceof DatatableDataSource) {
1437
2252
  value.setDatatableAccessor(this);
1438
2253
  }
1439
2254
  this._dataSourceSubject.next(value || undefined);
1440
2255
  }
2256
+ /**
2257
+ * Sets position behavior for optional Action Menu Button column.
2258
+ *
2259
+ * Defaults to `frozenRight`.
2260
+ */
2261
+ get actionItemColumnPosition() { return this._actionItemColumnPosition; }
2262
+ set actionItemColumnPosition(value) {
2263
+ if (value && isActionItemColumnPosition(value)) {
2264
+ this._actionItemColumnPosition = value;
2265
+ }
2266
+ this._columnsManager.setActionItemColumnPosition(this._actionItemColumnPosition);
2267
+ }
2268
+ get columnFilterIcon() {
2269
+ return this._columnFilterIcon;
2270
+ }
2271
+ set columnFilterIcon(value) {
2272
+ var _a, _b;
2273
+ if (notNullOrUndefined(value)) {
2274
+ this._columnFilterIcon = value;
2275
+ }
2276
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.columnFilterIcon)) {
2277
+ this._columnFilterIcon = (_b = this._config) === null || _b === void 0 ? void 0 : _b.columnFilterIcon;
2278
+ }
2279
+ else {
2280
+ this._columnFilterIcon = this._columnFilterIconDefault;
2281
+ }
2282
+ }
2283
+ get columnFilterUpdateMethod() {
2284
+ return this._columnFilterUpdateMethod;
2285
+ }
2286
+ set columnFilterUpdateMethod(value) {
2287
+ var _a, _b;
2288
+ if (notNullOrUndefined(value)) {
2289
+ this._columnFilterUpdateMethod = value;
2290
+ }
2291
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.columnFilterUpdateMethod)) {
2292
+ this._columnFilterUpdateMethod = (_b = this._config) === null || _b === void 0 ? void 0 : _b.columnFilterUpdateMethod;
2293
+ }
2294
+ else {
2295
+ this._columnFilterUpdateMethod = this._columnFilterUpdateMethodDefault;
2296
+ }
2297
+ }
2298
+ get columnFilterUpdateDebounce() {
2299
+ return this._columnFilterUpdateDebounce;
2300
+ }
2301
+ set columnFilterUpdateDebounce(value) {
2302
+ var _a, _b;
2303
+ if (notNullOrUndefined(value)) {
2304
+ this._columnFilterUpdateDebounce = value;
2305
+ }
2306
+ else if (notNullOrUndefined((_a = this._config) === null || _a === void 0 ? void 0 : _a.columnFilterUpdateDebounce)) {
2307
+ this._columnFilterUpdateDebounce = (_b = this._config) === null || _b === void 0 ? void 0 : _b.columnFilterUpdateDebounce;
2308
+ }
2309
+ else {
2310
+ this._columnFilterUpdateDebounce = this._columnFilterUpdateDebounceDefault;
2311
+ }
2312
+ }
1441
2313
  set columnComponents(value) {
1442
2314
  var _a;
1443
2315
  this._columnsManager.setTemplateColumns(translateTemplateColumns((_a = value === null || value === void 0 ? void 0 : value.toArray()) !== null && _a !== void 0 ? _a : []));
@@ -1459,6 +2331,10 @@ class DatatableComponent {
1459
2331
  this._menuBarSub = (_a = this._menuBarComponent) === null || _a === void 0 ? void 0 : _a.filtersChanged.subscribe(v => { this._setMenuBarFilters(value.filters()); });
1460
2332
  }
1461
2333
  }
2334
+ set columnFilterTemplates(value) {
2335
+ var _a;
2336
+ this._columnsFilters.setFilterTemplates((_a = value === null || value === void 0 ? void 0 : value.toArray()) !== null && _a !== void 0 ? _a : []);
2337
+ }
1462
2338
  get actionMenuCellTpl() { return this._actionMenuCellTpl; }
1463
2339
  set actionMenuCellTpl(value) {
1464
2340
  this._actionMenuCellTpl = value;
@@ -1507,15 +2383,17 @@ class DatatableComponent {
1507
2383
  }
1508
2384
  }
1509
2385
  }
1510
- constructor(_preferences, _columnsManager, _columnsAlterationsManager) {
2386
+ constructor(_preferences, _columnsManager, _columnsAlterationsManager, _columnsFilters, _config) {
1511
2387
  this._preferences = _preferences;
1512
2388
  this._columnsManager = _columnsManager;
1513
2389
  this._columnsAlterationsManager = _columnsAlterationsManager;
2390
+ this._columnsFilters = _columnsFilters;
2391
+ this._config = _config;
1514
2392
  this._faChevronDown = faChevronDown;
1515
2393
  this._faChevronRight = faChevronRight;
1516
2394
  this._faSpinner = faSpinner;
1517
2395
  this._ngUnsubscribe = new Subject();
1518
- this._filtersSubject = new BehaviorSubject([]);
2396
+ this._menuBarsFiltersSubject = new BehaviorSubject([]);
1519
2397
  this._dataSourceSubject = new BehaviorSubject(undefined);
1520
2398
  this._resizing = {};
1521
2399
  this._preferencesKey = new BehaviorSubject(undefined);
@@ -1532,7 +2410,7 @@ class DatatableComponent {
1532
2410
  this.swapColumns = false;
1533
2411
  this._sortType = SortType.single;
1534
2412
  this._sorts = [];
1535
- this.cssClasses = {
2413
+ this._cssClassesDefault = {
1536
2414
  sortAscending: 'datatable-icon-up',
1537
2415
  sortDescending: 'datatable-icon-down',
1538
2416
  pagerLeftArrow: 'datatable-icon-left',
@@ -1540,7 +2418,7 @@ class DatatableComponent {
1540
2418
  pagerPrevious: 'datatable-icon-prev',
1541
2419
  pagerNext: 'datatable-icon-skip'
1542
2420
  };
1543
- this.messages = {
2421
+ this._messagesDefault = {
1544
2422
  // Message to show when array is presented
1545
2423
  // but contains no values
1546
2424
  emptyMessage: 'No records found',
@@ -1556,11 +2434,15 @@ class DatatableComponent {
1556
2434
  this.summaryHeight = 30;
1557
2435
  this.summaryPosition = 'top';
1558
2436
  this.virtualization = true;
1559
- this.headerHeight = 50;
1560
- this.rowHeight = 50;
1561
- this.footerHeight = 40;
2437
+ this._headerHeightDefault = 50;
2438
+ this._rowHeightDefault = 50;
2439
+ this._footerHeightDefault = 40;
1562
2440
  this.scrollbarV = true;
1563
2441
  this.scrollbarH = true;
2442
+ this._actionItemColumnPosition = 'frozenRight';
2443
+ this._columnFilterIconDefault = faFilter;
2444
+ this._columnFilterUpdateMethodDefault = 'valueChanges';
2445
+ this._columnFilterUpdateDebounceDefault = 400;
1564
2446
  // eslint-disable-next-line @angular-eslint/no-output-native
1565
2447
  this.scroll = new EventEmitter();
1566
2448
  this.activate = new EventEmitter();
@@ -1613,10 +2495,10 @@ class DatatableComponent {
1613
2495
  this._columnsAlterationsManager.add(alterations);
1614
2496
  }));
1615
2497
  }), takeUntil(this._ngUnsubscribe)).subscribe();
1616
- this.columns$ = this._columnsManager.columns$;
2498
+ this.columns$ = combineLatest([this._columnsManager.columns$, this._columnsFilters.columnActiveFilterProps$]).pipe(map(([columns, columnActiveFilterProps]) => columns.map(col => (Object.assign(Object.assign({}, col), { filterActive: columnActiveFilterProps.includes(this._columnsFilters.getColumnFilterProp(col) || '') })))));
1617
2499
  this.displayColumns$ = this.columns$.pipe(switchMap(cols => applyPrefs(cols)), map(cols => cols.filter(c => !c.hidden)), tap(v => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)));
1618
- this.filters$ = this._filtersSubject.asObservable();
1619
- this.filterStates = this._filtersSubject.asObservable().pipe(switchMap(filters => composeDataFilterStates(filters)));
2500
+ this.filters$ = combineLatest([this._menuBarsFiltersSubject.asObservable(), this._columnsFilters.columnsFilters$]).pipe(map(([menuFilters, columnsFilters]) => [...menuFilters, ...columnsFilters]));
2501
+ this.filterStates = this.filters$.pipe(switchMap(filters => composeDataFilterStates(filters)));
1620
2502
  this.rows$ = this._dataSourceSubject.pipe(switchMap(dataSource => {
1621
2503
  // console.log('dataSource', dataSource)
1622
2504
  let dataStream;
@@ -1639,7 +2521,7 @@ class DatatableComponent {
1639
2521
  }
1640
2522
  if (!this.externalFiltering) {
1641
2523
  // console.log('not using externalFiltering')
1642
- dataStream = dataStream.pipe(switchMap(rows => this._filtersSubject.pipe(
2524
+ dataStream = dataStream.pipe(switchMap(rows => this.filters$.pipe(
1643
2525
  // tap(v => console.log('filters', v)),
1644
2526
  concatMap(filters => of(rows).pipe(composeDataFilters(filters))))));
1645
2527
  // dataStream = this._filtersSubject.pipe(
@@ -1663,12 +2545,40 @@ class DatatableComponent {
1663
2545
  }
1664
2546
  });
1665
2547
  }
2548
+ this._setDatatableConfigOrDefault();
2549
+ }
2550
+ /** Sets missing inputs from config */
2551
+ _setDatatableConfigOrDefault() {
2552
+ if (isNullOrUndefined(this.messages)) {
2553
+ this.messages = undefined;
2554
+ }
2555
+ if (isNullOrUndefined(this.headerHeight)) {
2556
+ this.headerHeight = undefined;
2557
+ }
2558
+ if (isNullOrUndefined(this.rowHeight)) {
2559
+ this.rowHeight = undefined;
2560
+ }
2561
+ if (isNullOrUndefined(this.footerHeight)) {
2562
+ this.footerHeight = undefined;
2563
+ }
2564
+ if (isNullOrUndefined(this.cssClasses)) {
2565
+ this.cssClasses = undefined;
2566
+ }
2567
+ if (isNullOrUndefined(this.columnFilterIcon)) {
2568
+ this.columnFilterIcon = undefined;
2569
+ }
2570
+ if (isNullOrUndefined(this.columnFilterUpdateMethod)) {
2571
+ this.columnFilterUpdateMethod = undefined;
2572
+ }
2573
+ if (isNullOrUndefined(this.columnFilterUpdateDebounce)) {
2574
+ this.columnFilterUpdateDebounce = undefined;
2575
+ }
1666
2576
  }
1667
2577
  ngOnDestroy() {
1668
2578
  this._rowDetailToggleSubscription.unsubscribe();
1669
2579
  }
1670
2580
  _setMenuBarFilters(filters) {
1671
- this._filtersSubject.next(filters || []);
2581
+ this._menuBarsFiltersSubject.next(filters || []);
1672
2582
  }
1673
2583
  getColumnComponent(propName) {
1674
2584
  if (!this.columnComponents || this.columnComponents.length === 0) {
@@ -1773,14 +2683,15 @@ class DatatableComponent {
1773
2683
  };
1774
2684
  }
1775
2685
  }
1776
- DatatableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableComponent, deps: [{ token: DatatablePreferencesService }, { token: ColumnsManagerService }, { token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
1777
- DatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableComponent, 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" }, 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: [
2686
+ DatatableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableComponent, deps: [{ token: DatatablePreferencesService }, { token: ColumnsManagerService }, { token: ColumnsAlterationsManagerService }, { token: ColumnsFiltersService }, { token: THESEAM_DATATABLE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2687
+ DatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableComponent, 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: [
1778
2688
  _THESEAM_DATATABLE,
1779
2689
  DatatableColumnChangesService,
1780
2690
  _THESEAM_DATATABLE_ACCESSOR,
1781
2691
  ColumnsManagerService,
1782
2692
  ColumnsAlterationsManagerService,
1783
- ], 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 }], 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]=\"cssClasses\"\n [messages]=\"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 #headerTpl ngx-datatable-header-template\n let-column=\"column\" let-sortFn=\"sortFn\">\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <strong *ngIf=\"column.sortable\" class=\"datatable-sort-target draggable\" (click)=\"sortFn()\">{{column.name}}</strong>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\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]=\"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}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$1.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "displayPageCount", "displayPager", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i5$1.DatatableRowDetailDirective, selector: "ngx-datatable-row-detail", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i5$1.DatatableGroupHeaderDirective, selector: "ngx-datatable-group-header", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i5$1.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i5$1.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i5$1.DataTableColumnCellTreeToggle, selector: "[ngx-datatable-tree-toggle]" }, { kind: "directive", type: i5$1.DatatableFooterDirective, selector: "ngx-datatable-footer", inputs: ["footerHeight", "totalMessage", "selectedMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "template"] }, { kind: "directive", type: i5$1.DatatableGroupHeaderTemplateDirective, selector: "[ngx-datatable-group-header-template]" }, { kind: "component", type: i6.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: i7.ElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"] }, { kind: "component", type: i8.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], animations: [
2693
+ ColumnsFiltersService
2694
+ ], 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]=\"cssClasses\"\n [messages]=\"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=\"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\"></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 draggable p-0\"\n (click)=\"sortFn()\"\n title=\"Click to sort\">\n <strong>{{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]=\"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: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "displayPageCount", "displayPager", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { 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", "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: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: i2$2.ElemResizedDirective, selector: "[seamElemResized]", outputs: ["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: [
1784
2695
  trigger('slideDown', [
1785
2696
  transition(':enter', [
1786
2697
  style({ transform: 'translateY(-20%)', opacity: '0' }),
@@ -1836,13 +2747,13 @@ __decorate([
1836
2747
  ], DatatableComponent.prototype, "virtualization", void 0);
1837
2748
  __decorate([
1838
2749
  InputNumber()
1839
- ], DatatableComponent.prototype, "headerHeight", void 0);
2750
+ ], DatatableComponent.prototype, "headerHeight", null);
1840
2751
  __decorate([
1841
2752
  InputNumber()
1842
- ], DatatableComponent.prototype, "rowHeight", void 0);
2753
+ ], DatatableComponent.prototype, "rowHeight", null);
1843
2754
  __decorate([
1844
2755
  InputNumber()
1845
- ], DatatableComponent.prototype, "footerHeight", void 0);
2756
+ ], DatatableComponent.prototype, "footerHeight", null);
1846
2757
  __decorate([
1847
2758
  InputBoolean()
1848
2759
  ], DatatableComponent.prototype, "scrollbarV", void 0);
@@ -1868,8 +2779,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1868
2779
  _THESEAM_DATATABLE_ACCESSOR,
1869
2780
  ColumnsManagerService,
1870
2781
  ColumnsAlterationsManagerService,
1871
- ], 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]=\"cssClasses\"\n [messages]=\"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 #headerTpl ngx-datatable-header-template\n let-column=\"column\" let-sortFn=\"sortFn\">\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <strong *ngIf=\"column.sortable\" class=\"datatable-sort-target draggable\" (click)=\"sortFn()\">{{column.name}}</strong>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\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]=\"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}\n"] }]
1872
- }], ctorParameters: function () { return [{ type: DatatablePreferencesService }, { type: ColumnsManagerService }, { type: ColumnsAlterationsManagerService }]; }, propDecorators: { preferencesKey: [{
2782
+ ColumnsFiltersService
2783
+ ], 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]=\"cssClasses\"\n [messages]=\"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=\"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\"></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 draggable p-0\"\n (click)=\"sortFn()\"\n title=\"Click to sort\">\n <strong>{{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]=\"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"] }]
2784
+ }], ctorParameters: function () {
2785
+ return [{ type: DatatablePreferencesService }, { type: ColumnsManagerService }, { type: ColumnsAlterationsManagerService }, { type: ColumnsFiltersService }, { type: undefined, decorators: [{
2786
+ type: Optional
2787
+ }, {
2788
+ type: Inject,
2789
+ args: [THESEAM_DATATABLE_CONFIG]
2790
+ }] }];
2791
+ }, propDecorators: { preferencesKey: [{
1873
2792
  type: Input
1874
2793
  }], targetMarkerTemplate: [{
1875
2794
  type: Input
@@ -1951,6 +2870,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1951
2870
  type: Input
1952
2871
  }], dataSource: [{
1953
2872
  type: Input
2873
+ }], actionItemColumnPosition: [{
2874
+ type: Input
2875
+ }], columnFilterIcon: [{
2876
+ type: Input
2877
+ }], columnFilterUpdateMethod: [{
2878
+ type: Input
2879
+ }], columnFilterUpdateDebounce: [{
2880
+ type: Input
1954
2881
  }], scroll: [{
1955
2882
  type: Output
1956
2883
  }], activate: [{
@@ -1991,6 +2918,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1991
2918
  }], menuBarComponent: [{
1992
2919
  type: ContentChild,
1993
2920
  args: [DatatableMenuBarComponent]
2921
+ }], columnFilterTemplates: [{
2922
+ type: ContentChildren,
2923
+ args: [TheSeamDatatableColumnFilterDirective]
1994
2924
  }], ngxDatatable: [{
1995
2925
  type: ViewChild,
1996
2926
  args: [DatatableComponent$1]
@@ -2061,7 +2991,7 @@ class DatatableColumnPreferencesComponent {
2061
2991
  }
2062
2992
  }
2063
2993
  DatatableColumnPreferencesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnPreferencesComponent, deps: [{ token: THESEAM_DATATABLE }, { token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
2064
- DatatableColumnPreferencesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnPreferencesComponent, 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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.AutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i1$2.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "component", type: i5$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: i6$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i6$1.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], 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: i7$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: i7$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2994
+ DatatableColumnPreferencesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnPreferencesComponent, 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.AutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i1$2.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "component", type: i5$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-checkbox[seamInput] [ngbRadioGroup], 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 });
2065
2995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnPreferencesComponent, decorators: [{
2066
2996
  type: Component,
2067
2997
  args: [{ selector: 'seam-datatable-column-preferences', changeDetection: ChangeDetectionStrategy.OnPush, 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"] }]
@@ -2109,7 +3039,7 @@ class DatatableColumnPreferencesButtonComponent {
2109
3039
  }
2110
3040
  }
2111
3041
  DatatableColumnPreferencesButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, deps: [{ token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
2112
- DatatableColumnPreferencesButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnPreferencesButtonComponent, 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$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4$1.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: i4$2.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "component", type: DatatableColumnPreferencesComponent, selector: "seam-datatable-column-preferences" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3042
+ DatatableColumnPreferencesButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableColumnPreferencesButtonComponent, 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 });
2113
3043
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, decorators: [{
2114
3044
  type: Component,
2115
3045
  args: [{ selector: 'seam-datatable-column-preferences-button', changeDetection: ChangeDetectionStrategy.OnPush, 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" }]
@@ -2187,8 +3117,8 @@ class DatatableExportButtonComponent {
2187
3117
  return undefined;
2188
3118
  }
2189
3119
  }
2190
- DatatableExportButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableExportButtonComponent, deps: [{ token: THESEAM_DATATABLE }, { token: i1$3.ToastrService }, { token: i2$1.TheSeamLoadingOverlayService }, { token: i3.DynamicValueHelperService }, { token: THESEAM_DYNAMIC_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2191
- DatatableExportButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableExportButtonComponent, 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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4$1.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: i7$2.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3120
+ DatatableExportButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableExportButtonComponent, deps: [{ token: THESEAM_DATATABLE }, { token: i1$3.ToastrService }, { token: i2$3.TheSeamLoadingOverlayService }, { token: i3$2.DynamicValueHelperService }, { token: THESEAM_DYNAMIC_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3121
+ DatatableExportButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DatatableExportButtonComponent, 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 });
2192
3122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
2193
3123
  type: Component,
2194
3124
  args: [{ selector: 'seam-datatable-export-button', changeDetection: ChangeDetectionStrategy.OnPush, 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"] }]
@@ -2196,7 +3126,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2196
3126
  return [{ type: DatatableComponent, decorators: [{
2197
3127
  type: Inject,
2198
3128
  args: [THESEAM_DATATABLE]
2199
- }] }, { type: i1$3.ToastrService }, { type: i2$1.TheSeamLoadingOverlayService }, { type: i3.DynamicValueHelperService }, { type: undefined, decorators: [{
3129
+ }] }, { type: i1$3.ToastrService }, { type: i2$3.TheSeamLoadingOverlayService }, { type: i3$2.DynamicValueHelperService }, { type: undefined, decorators: [{
2200
3130
  type: Optional
2201
3131
  }, {
2202
3132
  type: Inject,
@@ -2282,7 +3212,7 @@ class DatatableActionMenuItemDirective {
2282
3212
  this.click = new EventEmitter();
2283
3213
  }
2284
3214
  }
2285
- DatatableActionMenuItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableActionMenuItemDirective, deps: [{ token: i1$4.Modal }, { token: i2$2.TheSeamDynamicComponentLoader }, { token: i3$1.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3215
+ DatatableActionMenuItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableActionMenuItemDirective, deps: [{ token: i1$4.Modal }, { token: i2$4.TheSeamDynamicComponentLoader }, { token: i3$3.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2286
3216
  DatatableActionMenuItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: DatatableActionMenuItemDirective, 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 });
2287
3217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DatatableActionMenuItemDirective, decorators: [{
2288
3218
  type: Directive,
@@ -2290,7 +3220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2290
3220
  selector: '[seamDatatableActionMenuItem]'
2291
3221
  }]
2292
3222
  }], ctorParameters: function () {
2293
- return [{ type: i1$4.Modal }, { type: i2$2.TheSeamDynamicComponentLoader }, { type: i3$1.HttpClient, decorators: [{
3223
+ return [{ type: i1$4.Modal }, { type: i2$4.TheSeamDynamicComponentLoader }, { type: i3$3.HttpClient, decorators: [{
2294
3224
  type: Optional
2295
3225
  }] }];
2296
3226
  }, propDecorators: { _listGroupItem: [{
@@ -2567,7 +3497,13 @@ TheSeamDatatableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
2567
3497
  DatatableMenuBarColumnLeftComponent,
2568
3498
  DatatableMenuBarColumnCenterComponent,
2569
3499
  DatatableMenuBarColumnRightComponent,
2570
- DatatableMenuBarTextComponent], imports: [CommonModule,
3500
+ DatatableMenuBarTextComponent,
3501
+ DatatableColumnFilterMenuComponent,
3502
+ DatatableColumnFilterSearchTextComponent,
3503
+ DatatableColumnFilterSearchNumericComponent,
3504
+ DatatableColumnFilterSearchDateComponent,
3505
+ DatatableColumnFilterTplDirective,
3506
+ TheSeamDatatableColumnFilterDirective], imports: [CommonModule,
2571
3507
  NgxDatatableModule,
2572
3508
  FontAwesomeModule,
2573
3509
  OverlayModule,
@@ -2585,7 +3521,10 @@ TheSeamDatatableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
2585
3521
  TheSeamCheckboxComponent,
2586
3522
  TheSeamFormFieldModule,
2587
3523
  ReactiveFormsModule,
2588
- TheSeamTableCellTypeModule], exports: [DatatableComponent,
3524
+ TheSeamTableCellTypeModule,
3525
+ TheSeamDataFiltersModule,
3526
+ NgSelectModule,
3527
+ TheSeamToggleGroupModule], exports: [DatatableComponent,
2589
3528
  DatatableCellTplDirective,
2590
3529
  DatatableColumnComponent,
2591
3530
  DatatableActionMenuComponent,
@@ -2605,7 +3544,13 @@ TheSeamDatatableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
2605
3544
  DatatableMenuBarColumnLeftComponent,
2606
3545
  DatatableMenuBarColumnCenterComponent,
2607
3546
  DatatableMenuBarColumnRightComponent,
2608
- DatatableMenuBarTextComponent] });
3547
+ DatatableMenuBarTextComponent,
3548
+ DatatableColumnFilterMenuComponent,
3549
+ DatatableColumnFilterSearchTextComponent,
3550
+ DatatableColumnFilterSearchNumericComponent,
3551
+ DatatableColumnFilterSearchDateComponent,
3552
+ DatatableColumnFilterTplDirective,
3553
+ TheSeamDatatableColumnFilterDirective] });
2609
3554
  TheSeamDatatableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamDatatableModule, providers: [
2610
3555
  { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService }
2611
3556
  ], imports: [CommonModule,
@@ -2626,7 +3571,10 @@ TheSeamDatatableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
2626
3571
  TheSeamCheckboxComponent,
2627
3572
  TheSeamFormFieldModule,
2628
3573
  ReactiveFormsModule,
2629
- TheSeamTableCellTypeModule] });
3574
+ TheSeamTableCellTypeModule,
3575
+ TheSeamDataFiltersModule,
3576
+ NgSelectModule,
3577
+ TheSeamToggleGroupModule] });
2630
3578
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamDatatableModule, decorators: [{
2631
3579
  type: NgModule,
2632
3580
  args: [{
@@ -2653,6 +3601,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2653
3601
  DatatableMenuBarColumnCenterComponent,
2654
3602
  DatatableMenuBarColumnRightComponent,
2655
3603
  DatatableMenuBarTextComponent,
3604
+ DatatableColumnFilterMenuComponent,
3605
+ DatatableColumnFilterSearchTextComponent,
3606
+ DatatableColumnFilterSearchNumericComponent,
3607
+ DatatableColumnFilterSearchDateComponent,
3608
+ DatatableColumnFilterTplDirective,
3609
+ TheSeamDatatableColumnFilterDirective
2656
3610
  ],
2657
3611
  imports: [
2658
3612
  CommonModule,
@@ -2673,7 +3627,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2673
3627
  TheSeamCheckboxComponent,
2674
3628
  TheSeamFormFieldModule,
2675
3629
  ReactiveFormsModule,
2676
- TheSeamTableCellTypeModule
3630
+ TheSeamTableCellTypeModule,
3631
+ TheSeamDataFiltersModule,
3632
+ NgSelectModule,
3633
+ TheSeamToggleGroupModule
2677
3634
  ],
2678
3635
  exports: [
2679
3636
  DatatableComponent,
@@ -2696,7 +3653,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2696
3653
  DatatableMenuBarColumnLeftComponent,
2697
3654
  DatatableMenuBarColumnCenterComponent,
2698
3655
  DatatableMenuBarColumnRightComponent,
2699
- DatatableMenuBarTextComponent
3656
+ DatatableMenuBarTextComponent,
3657
+ DatatableColumnFilterMenuComponent,
3658
+ DatatableColumnFilterSearchTextComponent,
3659
+ DatatableColumnFilterSearchNumericComponent,
3660
+ DatatableColumnFilterSearchDateComponent,
3661
+ DatatableColumnFilterTplDirective,
3662
+ TheSeamDatatableColumnFilterDirective
2700
3663
  ],
2701
3664
  providers: [
2702
3665
  { provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService }
@@ -2708,5 +3671,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2708
3671
  * Generated bundle index. Do not edit.
2709
3672
  */
2710
3673
 
2711
- export { CURRENT_DATATABLE_PREFERENCES_VERSION, DatatableActionMenuComponent, DatatableActionMenuItemComponent, DatatableActionMenuItemDirective, DatatableActionMenuToggleDirective, DatatableCellTplDirective, DatatableColumnChangesService, DatatableColumnComponent, DatatableColumnPreferencesButtonComponent, DatatableColumnPreferencesComponent, DatatableComponent, DatatableDataSource, DatatableExportButtonComponent, DatatableFilterDirective, DatatableFooterTplDirective, DatatableGqlDataSource, DatatableMenuBarColumnCenterComponent, DatatableMenuBarColumnLeftComponent, DatatableMenuBarColumnRightComponent, DatatableMenuBarComponent, DatatableMenuBarRowComponent, DatatableMenuBarTextComponent, DatatablePreferencesService, DatatableRowActionItemDirective, DatatableRowDetailTplDirective, EMPTY_DATATABLE_PREFERENCES, THESEAM_DATATABLE, THESEAM_DATATABLE_PREFERENCES_ACCESSOR, THESEAM_MENUBAR_ITEM_DATA, TheSeamDatatableFooterDirective, TheSeamDatatableModule, TheSeamDatatableRowDetailDirective, TheSeamDatatableScrollbarHelperService, _THESEAM_DATATABLE, _THESEAM_DATATABLE_ACCESSOR, _THESEAM_DATA_FILTER_CONTAINER, withStoredColumnInfo };
3674
+ export { CURRENT_DATATABLE_PREFERENCES_VERSION, 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, withStoredColumnInfo };
2712
3675
  //# sourceMappingURL=theseam-ui-common-datatable.mjs.map