@one-paragon/angular-utilities 0.3.11-beta.1 → 0.4.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 (395) hide show
  1. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +12 -0
  2. package/action-state/action-state-ui/action-state-ui.module.d.ts +7 -0
  3. package/{src/action-state/index.ts → action-state/index.d.ts} +4 -8
  4. package/action-state/ngrx-ext/ngrx-ext.module.d.ts +8 -0
  5. package/action-state/ngrx.d.ts +31 -0
  6. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +24 -0
  7. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +20 -0
  8. package/esm2022/action-state/index.mjs +8 -0
  9. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +23 -0
  10. package/esm2022/action-state/ngrx.mjs +42 -0
  11. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +27 -0
  12. package/esm2022/http-request-state/HttpRequestStateStore.mjs +98 -0
  13. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +34 -0
  14. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +29 -0
  15. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +29 -0
  16. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +29 -0
  17. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +34 -0
  18. package/esm2022/http-request-state/directives/index.mjs +6 -0
  19. package/esm2022/http-request-state/directives/request-state-directive.mjs +60 -0
  20. package/esm2022/http-request-state/helpers.mjs +22 -0
  21. package/esm2022/http-request-state/http-request-state.mjs +39 -0
  22. package/esm2022/http-request-state/http-state-module.mjs +40 -0
  23. package/esm2022/http-request-state/index.mjs +7 -0
  24. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +4 -0
  25. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +3 -0
  26. package/esm2022/http-request-state/rxjs/index.mjs +5 -0
  27. package/esm2022/http-request-state/rxjs/tapError.mjs +12 -0
  28. package/esm2022/http-request-state/rxjs/tapSuccess.mjs +12 -0
  29. package/esm2022/http-request-state/types.mjs +16 -0
  30. package/esm2022/ngrx/actionable-selector.mjs +73 -0
  31. package/esm2022/ngrx/index.mjs +2 -0
  32. package/esm2022/one-paragon-angular-utilities.mjs +5 -0
  33. package/esm2022/public-api.mjs +20 -0
  34. package/esm2022/rxjs/defaultShareReplay.mjs +7 -0
  35. package/esm2022/rxjs/index.mjs +5 -0
  36. package/esm2022/rxjs/mapError.mjs +8 -0
  37. package/esm2022/rxjs/rxjs-operators.mjs +92 -0
  38. package/esm2022/rxjs/subjectifier.mjs +15 -0
  39. package/esm2022/table-builder/classes/DefaultSettings.mjs +6 -0
  40. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +21 -0
  41. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +18 -0
  42. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +49 -0
  43. package/esm2022/table-builder/classes/TableState.mjs +44 -0
  44. package/esm2022/table-builder/classes/display-col.mjs +2 -0
  45. package/esm2022/table-builder/classes/filter-info.mjs +73 -0
  46. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +86 -0
  47. package/esm2022/table-builder/classes/table-builder.mjs +41 -0
  48. package/esm2022/table-builder/classes/table-store.mjs +320 -0
  49. package/esm2022/table-builder/components/array-column.component.mjs +57 -0
  50. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +106 -0
  51. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +26 -0
  52. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +29 -0
  53. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +24 -0
  54. package/esm2022/table-builder/components/filter/filter.component.mjs +67 -0
  55. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +101 -0
  56. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +52 -0
  57. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +192 -0
  58. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +80 -0
  59. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +23 -0
  60. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +100 -0
  61. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +64 -0
  62. package/esm2022/table-builder/components/index.mjs +10 -0
  63. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +40 -0
  64. package/esm2022/table-builder/components/link-column.component.mjs +78 -0
  65. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +29 -0
  66. package/esm2022/table-builder/components/scroll-strategy.mjs +63 -0
  67. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +43 -0
  68. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +81 -0
  69. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +26 -0
  70. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +135 -0
  71. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +83 -0
  72. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +56 -0
  73. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +36 -0
  74. package/esm2022/table-builder/components/table-container/table-container.mjs +291 -0
  75. package/esm2022/table-builder/components/table-container/tableProps.mjs +7 -0
  76. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +105 -0
  77. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +47 -0
  78. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +36 -0
  79. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +25 -0
  80. package/esm2022/table-builder/directives/custom-cell-directive.mjs +60 -0
  81. package/esm2022/table-builder/directives/index.mjs +6 -0
  82. package/esm2022/table-builder/directives/multi-sort.directive.mjs +50 -0
  83. package/esm2022/table-builder/directives/resize-column.directive.mjs +88 -0
  84. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +20 -0
  85. package/esm2022/table-builder/directives/tb-filter.directive.mjs +410 -0
  86. package/esm2022/table-builder/enums/filterTypes.mjs +72 -0
  87. package/esm2022/table-builder/functions/boolean-filter-function.mjs +10 -0
  88. package/esm2022/table-builder/functions/date-filter-function.mjs +58 -0
  89. package/esm2022/table-builder/functions/download-data.mjs +12 -0
  90. package/esm2022/table-builder/functions/null-filter-function.mjs +8 -0
  91. package/esm2022/table-builder/functions/number-filter-function.mjs +32 -0
  92. package/esm2022/table-builder/functions/sort-data-function.mjs +17 -0
  93. package/esm2022/table-builder/functions/string-filter-function.mjs +41 -0
  94. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +2 -0
  95. package/esm2022/table-builder/interfaces/dictionary.mjs +2 -0
  96. package/esm2022/table-builder/interfaces/report-def.mjs +45 -0
  97. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +115 -0
  98. package/esm2022/table-builder/pipes/column-total.pipe.mjs +22 -0
  99. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +18 -0
  100. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +45 -0
  101. package/esm2022/table-builder/pipes/key-display.mjs +20 -0
  102. package/esm2022/table-builder/services/export-to-csv.service.mjs +88 -0
  103. package/esm2022/table-builder/services/link-creator.service.mjs +51 -0
  104. package/esm2022/table-builder/services/table-template-service.mjs +55 -0
  105. package/esm2022/table-builder/services/transform-creator.mjs +100 -0
  106. package/esm2022/table-builder/table-builder.module.mjs +124 -0
  107. package/esm2022/utilities/array-helpers.mjs +14 -0
  108. package/esm2022/utilities/directives/auto-focus.directive.mjs +27 -0
  109. package/esm2022/utilities/directives/clickEmitterDirective.mjs +22 -0
  110. package/esm2022/utilities/directives/clickSubject.mjs +28 -0
  111. package/esm2022/utilities/directives/conditional-classes.directive.mjs +36 -0
  112. package/esm2022/utilities/directives/dialog-service.mjs +23 -0
  113. package/esm2022/utilities/directives/dialog.mjs +139 -0
  114. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +60 -0
  115. package/esm2022/utilities/directives/prevent-enter.directive.mjs +20 -0
  116. package/esm2022/utilities/directives/stop-propagation.directive.mjs +26 -0
  117. package/esm2022/utilities/directives/styler.mjs +42 -0
  118. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +30 -0
  119. package/esm2022/utilities/index.mjs +16 -0
  120. package/esm2022/utilities/module.mjs +90 -0
  121. package/esm2022/utilities/pipes/function.pipe.mjs +22 -0
  122. package/esm2022/utilities/pipes/phone.pipe.mjs +20 -0
  123. package/esm2022/utilities/pipes/space-case.pipes.mjs +28 -0
  124. package/fesm2022/one-paragon-angular-utilities.mjs +5180 -0
  125. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -0
  126. package/http-request-state/HttpRequestStateFactory.d.ts +15 -0
  127. package/http-request-state/HttpRequestStateStore.d.ts +49 -0
  128. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +16 -0
  129. package/http-request-state/directives/http-error-state-directive.d.ts +12 -0
  130. package/http-request-state/directives/http-inProgress-state-directive.d.ts +12 -0
  131. package/http-request-state/directives/http-notStarted-state-directive.d.ts +12 -0
  132. package/http-request-state/directives/http-success-state-directive.d.ts +21 -0
  133. package/http-request-state/directives/request-state-directive.d.ts +35 -0
  134. package/http-request-state/helpers.d.ts +9 -0
  135. package/http-request-state/http-request-state.d.ts +12 -0
  136. package/http-request-state/http-state-module.d.ts +11 -0
  137. package/{src/http-request-state/index.ts → http-request-state/index.d.ts} +1 -1
  138. package/http-request-state/rxjs/getRequestorBody.d.ts +3 -0
  139. package/http-request-state/rxjs/getRequestorState.d.ts +3 -0
  140. package/http-request-state/rxjs/tapError.d.ts +3 -0
  141. package/http-request-state/rxjs/tapSuccess.d.ts +3 -0
  142. package/http-request-state/types.d.ts +36 -0
  143. package/index.d.ts +5 -0
  144. package/ngrx/actionable-selector.d.ts +17 -0
  145. package/ngrx/index.d.ts +1 -0
  146. package/package.json +30 -16
  147. package/{src/public-api.ts → public-api.d.ts} +16 -35
  148. package/rxjs/defaultShareReplay.d.ts +2 -0
  149. package/{src/rxjs/index.ts → rxjs/index.d.ts} +4 -4
  150. package/rxjs/mapError.d.ts +2 -0
  151. package/rxjs/rxjs-operators.d.ts +13 -0
  152. package/rxjs/subjectifier.d.ts +9 -0
  153. package/table-builder/classes/DefaultSettings.d.ts +9 -0
  154. package/table-builder/classes/MatTableObservableDataSource.d.ts +9 -0
  155. package/table-builder/classes/TableBuilderConfig.d.ts +21 -0
  156. package/table-builder/classes/TableBuilderDataSource.d.ts +11 -0
  157. package/table-builder/classes/TableState.d.ts +52 -0
  158. package/table-builder/classes/filter-info.d.ts +127 -0
  159. package/table-builder/classes/table-builder-general-settings.d.ts +55 -0
  160. package/table-builder/classes/table-builder.d.ts +12 -0
  161. package/table-builder/classes/table-store.d.ts +127 -0
  162. package/table-builder/components/array-column.component.d.ts +15 -0
  163. package/table-builder/components/column-builder/column-builder.component.d.ts +47 -0
  164. package/table-builder/components/column-builder/column-helpers.d.ts +28 -0
  165. package/table-builder/components/date-filter/date-filter.component.d.ts +10 -0
  166. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +10 -0
  167. package/table-builder/components/filter/filter.component.d.ts +112 -0
  168. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +27 -0
  169. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +16 -0
  170. package/table-builder/components/generic-table/generic-table.component.d.ts +62 -0
  171. package/table-builder/components/generic-table/paginator.component.d.ts +26 -0
  172. package/table-builder/components/group-by-list/group-by-list.component.d.ts +7 -0
  173. package/table-builder/components/header-menu/header-menu.component.d.ts +25 -0
  174. package/table-builder/components/in-filter/in-filter.component.d.ts +21 -0
  175. package/{src/table-builder/components/index.ts → table-builder/components/index.d.ts} +9 -9
  176. package/table-builder/components/initialization-component/initialization-component.d.ts +13 -0
  177. package/table-builder/components/link-column.component.d.ts +25 -0
  178. package/table-builder/components/number-filter/number-filter.component.d.ts +12 -0
  179. package/table-builder/components/scroll-strategy.d.ts +23 -0
  180. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +24 -0
  181. package/table-builder/components/sort-menu/sort-menu.component.d.ts +25 -0
  182. package/{src/table-builder/components/table-container/table-container-imports.ts → table-builder/components/table-container/table-container-imports.d.ts} +14 -30
  183. package/table-builder/components/table-container/table-container.d.ts +70 -0
  184. package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +6 -0
  185. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +17 -0
  186. package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +15 -0
  187. package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +8 -0
  188. package/table-builder/components/table-container/tableProps.d.ts +11 -0
  189. package/table-builder/components/table-container/virtual-scroll-container.d.ts +19 -0
  190. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +16 -0
  191. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +14 -0
  192. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +14 -0
  193. package/table-builder/directives/custom-cell-directive.d.ts +19 -0
  194. package/{src/table-builder/directives/index.ts → table-builder/directives/index.d.ts} +5 -6
  195. package/table-builder/directives/multi-sort.directive.d.ts +11 -0
  196. package/table-builder/directives/resize-column.directive.d.ts +44 -0
  197. package/table-builder/directives/table-wrapper.directive.d.ts +8 -0
  198. package/table-builder/directives/tb-filter.directive.d.ts +120 -0
  199. package/table-builder/enums/filterTypes.d.ts +77 -0
  200. package/table-builder/functions/boolean-filter-function.d.ts +3 -0
  201. package/table-builder/functions/date-filter-function.d.ts +4 -0
  202. package/table-builder/functions/download-data.d.ts +1 -0
  203. package/table-builder/functions/null-filter-function.d.ts +2 -0
  204. package/table-builder/functions/number-filter-function.d.ts +4 -0
  205. package/table-builder/functions/sort-data-function.d.ts +6 -0
  206. package/table-builder/functions/string-filter-function.d.ts +7 -0
  207. package/{src/table-builder/interfaces/ColumnInfo.ts → table-builder/interfaces/ColumnInfo.d.ts} +2 -3
  208. package/{src/table-builder/interfaces/dictionary.ts → table-builder/interfaces/dictionary.d.ts} +3 -3
  209. package/table-builder/interfaces/report-def.d.ts +148 -0
  210. package/table-builder/ngrx/tableBuilderStateStore.d.ts +62 -0
  211. package/table-builder/pipes/column-total.pipe.d.ts +8 -0
  212. package/table-builder/pipes/format-filter-type.pipe.d.ts +8 -0
  213. package/table-builder/pipes/format-filter-value.pipe.d.ts +14 -0
  214. package/table-builder/pipes/key-display.d.ts +11 -0
  215. package/table-builder/services/export-to-csv.service.d.ts +22 -0
  216. package/table-builder/services/link-creator.service.d.ts +16 -0
  217. package/table-builder/services/table-template-service.d.ts +15 -0
  218. package/table-builder/services/transform-creator.d.ts +21 -0
  219. package/table-builder/table-builder.module.d.ts +21 -0
  220. package/utilities/array-helpers.d.ts +1 -0
  221. package/utilities/directives/auto-focus.directive.d.ts +10 -0
  222. package/utilities/directives/clickEmitterDirective.d.ts +7 -0
  223. package/utilities/directives/clickSubject.d.ts +9 -0
  224. package/utilities/directives/conditional-classes.directive.d.ts +14 -0
  225. package/utilities/directives/dialog-service.d.ts +10 -0
  226. package/utilities/directives/dialog.d.ts +46 -0
  227. package/utilities/directives/mat-toggle-group-directive.d.ts +21 -0
  228. package/utilities/directives/prevent-enter.directive.d.ts +6 -0
  229. package/utilities/directives/stop-propagation.directive.d.ts +7 -0
  230. package/utilities/directives/styler.d.ts +17 -0
  231. package/utilities/directives/trim-whitespace.directive.d.ts +9 -0
  232. package/{src/utilities/index.ts → utilities/index.d.ts} +15 -22
  233. package/utilities/module.d.ts +19 -0
  234. package/utilities/pipes/function.pipe.d.ts +7 -0
  235. package/utilities/pipes/phone.pipe.d.ts +7 -0
  236. package/utilities/pipes/space-case.pipes.d.ts +17 -0
  237. package/karma.conf.js +0 -44
  238. package/ng-package.json +0 -7
  239. package/src/action-state/action-state-spinner/action-state-spinner.component.css +0 -16
  240. package/src/action-state/action-state-spinner/action-state-spinner.component.html +0 -6
  241. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +0 -25
  242. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +0 -26
  243. package/src/action-state/action-state-ui/action-state-ui.module.ts +0 -13
  244. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +0 -15
  245. package/src/action-state/ngrx.ts +0 -69
  246. package/src/http-request-state/HttpRequestStateFactory.ts +0 -29
  247. package/src/http-request-state/HttpRequestStateStore.ts +0 -147
  248. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +0 -38
  249. package/src/http-request-state/directives/http-error-state-directive.ts +0 -32
  250. package/src/http-request-state/directives/http-inProgress-state-directive.ts +0 -32
  251. package/src/http-request-state/directives/http-notStarted-state-directive.ts +0 -31
  252. package/src/http-request-state/directives/http-success-state-directive.ts +0 -40
  253. package/src/http-request-state/directives/request-state-directive.spec.ts +0 -72
  254. package/src/http-request-state/directives/request-state-directive.ts +0 -79
  255. package/src/http-request-state/helpers.ts +0 -30
  256. package/src/http-request-state/http-request-state.ts +0 -69
  257. package/src/http-request-state/http-state-module.ts +0 -23
  258. package/src/http-request-state/observable.spec.ts +0 -43
  259. package/src/http-request-state/rxjs/getRequestorBody.ts +0 -10
  260. package/src/http-request-state/rxjs/getRequestorState.ts +0 -8
  261. package/src/http-request-state/rxjs/tapError.ts +0 -16
  262. package/src/http-request-state/rxjs/tapSuccess.ts +0 -16
  263. package/src/http-request-state/strategies.spec.ts +0 -42
  264. package/src/http-request-state/types.ts +0 -50
  265. package/src/ngrx/actionable-selector.ts +0 -95
  266. package/src/ngrx/index.ts +0 -1
  267. package/src/rxjs/defaultShareReplay.ts +0 -8
  268. package/src/rxjs/mapError.ts +0 -8
  269. package/src/rxjs/rxjs-operators.ts +0 -132
  270. package/src/rxjs/subjectifier.ts +0 -15
  271. package/src/specs/clickSubject.spec.ts +0 -95
  272. package/src/specs/dialog.spec.ts +0 -101
  273. package/src/specs/toggleGroupDirective.spec.ts +0 -229
  274. package/src/table-builder/classes/DefaultSettings.ts +0 -11
  275. package/src/table-builder/classes/MatTableObservableDataSource.ts +0 -23
  276. package/src/table-builder/classes/TableBuilderConfig.ts +0 -35
  277. package/src/table-builder/classes/TableBuilderDataSource.ts +0 -57
  278. package/src/table-builder/classes/TableState.ts +0 -83
  279. package/src/table-builder/classes/filter-info.ts +0 -131
  280. package/src/table-builder/classes/table-builder-general-settings.ts +0 -90
  281. package/src/table-builder/classes/table-builder.ts +0 -52
  282. package/src/table-builder/classes/table-store.ts +0 -394
  283. package/src/table-builder/components/array-column.component.ts +0 -36
  284. package/src/table-builder/components/column-builder/column-builder.component.html +0 -58
  285. package/src/table-builder/components/column-builder/column-builder.component.scss +0 -43
  286. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +0 -49
  287. package/src/table-builder/components/column-builder/column-builder.component.ts +0 -117
  288. package/src/table-builder/components/column-builder/column-helpers.ts +0 -38
  289. package/src/table-builder/components/date-filter/date-filter.component.html +0 -23
  290. package/src/table-builder/components/date-filter/date-filter.component.ts +0 -24
  291. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +0 -9
  292. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +0 -22
  293. package/src/table-builder/components/filter/filter.component.html +0 -88
  294. package/src/table-builder/components/filter/filter.component.scss +0 -64
  295. package/src/table-builder/components/filter/filter.component.spec.ts +0 -87
  296. package/src/table-builder/components/filter/filter.component.ts +0 -55
  297. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +0 -92
  298. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +0 -55
  299. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +0 -57
  300. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +0 -55
  301. package/src/table-builder/components/generic-table/generic-table.component.html +0 -71
  302. package/src/table-builder/components/generic-table/generic-table.component.scss +0 -51
  303. package/src/table-builder/components/generic-table/generic-table.component.ts +0 -220
  304. package/src/table-builder/components/generic-table/paginator.component.ts +0 -94
  305. package/src/table-builder/components/group-by-list/group-by-list.component.css +0 -8
  306. package/src/table-builder/components/group-by-list/group-by-list.component.html +0 -12
  307. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +0 -23
  308. package/src/table-builder/components/group-by-list/group-by-list.component.ts +0 -21
  309. package/src/table-builder/components/header-menu/header-menu.component.html +0 -98
  310. package/src/table-builder/components/header-menu/header-menu.component.scss +0 -96
  311. package/src/table-builder/components/header-menu/header-menu.component.ts +0 -98
  312. package/src/table-builder/components/in-filter/in-filter.component.css +0 -3
  313. package/src/table-builder/components/in-filter/in-filter.component.html +0 -20
  314. package/src/table-builder/components/in-filter/in-filter.component.ts +0 -64
  315. package/src/table-builder/components/initialization-component/initialization-component.html +0 -29
  316. package/src/table-builder/components/initialization-component/initialization-component.ts +0 -24
  317. package/src/table-builder/components/link-column.component.ts +0 -47
  318. package/src/table-builder/components/number-filter/number-filter.component.css +0 -10
  319. package/src/table-builder/components/number-filter/number-filter.component.html +0 -19
  320. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +0 -30
  321. package/src/table-builder/components/number-filter/number-filter.component.ts +0 -25
  322. package/src/table-builder/components/scroll-strategy.ts +0 -82
  323. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +0 -62
  324. package/src/table-builder/components/sort-menu/sort-menu.component.html +0 -111
  325. package/src/table-builder/components/sort-menu/sort-menu.component.scss +0 -119
  326. package/src/table-builder/components/sort-menu/sort-menu.component.ts +0 -95
  327. package/src/table-builder/components/table-container/table-container.css +0 -45
  328. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +0 -141
  329. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +0 -106
  330. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +0 -69
  331. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +0 -45
  332. package/src/table-builder/components/table-container/table-container.html +0 -117
  333. package/src/table-builder/components/table-container/table-container.spec.ts +0 -154
  334. package/src/table-builder/components/table-container/table-container.ts +0 -325
  335. package/src/table-builder/components/table-container/tableProps.ts +0 -18
  336. package/src/table-builder/components/table-container/virtual-scroll-container.ts +0 -126
  337. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +0 -31
  338. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +0 -52
  339. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +0 -42
  340. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +0 -10
  341. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +0 -86
  342. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +0 -38
  343. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +0 -23
  344. package/src/table-builder/directives/custom-cell-directive.ts +0 -46
  345. package/src/table-builder/directives/multi-sort.directive.spec.ts +0 -124
  346. package/src/table-builder/directives/multi-sort.directive.ts +0 -49
  347. package/src/table-builder/directives/resize-column.directive.ts +0 -105
  348. package/src/table-builder/directives/table-wrapper.directive.ts +0 -14
  349. package/src/table-builder/directives/tb-filter.directive.ts +0 -370
  350. package/src/table-builder/enums/filterTypes.ts +0 -79
  351. package/src/table-builder/functions/boolean-filter-function.ts +0 -13
  352. package/src/table-builder/functions/date-filter-function.ts +0 -69
  353. package/src/table-builder/functions/download-data.ts +0 -11
  354. package/src/table-builder/functions/null-filter-function.ts +0 -9
  355. package/src/table-builder/functions/number-filter-function.ts +0 -42
  356. package/src/table-builder/functions/sort-data-function.ts +0 -23
  357. package/src/table-builder/functions/string-filter-function.ts +0 -52
  358. package/src/table-builder/interfaces/column-template.ts +0 -9
  359. package/src/table-builder/interfaces/report-def.ts +0 -153
  360. package/src/table-builder/ngrx/tableBuilderStateStore.ts +0 -143
  361. package/src/table-builder/pipes/column-total.pipe.ts +0 -17
  362. package/src/table-builder/pipes/format-filter-type.pipe.ts +0 -12
  363. package/src/table-builder/pipes/format-filter-value.pipe.ts +0 -41
  364. package/src/table-builder/pipes/key-display.ts +0 -16
  365. package/src/table-builder/services/export-to-csv.service.ts +0 -96
  366. package/src/table-builder/services/link-creator.service.ts +0 -68
  367. package/src/table-builder/services/table-template-service.ts +0 -55
  368. package/src/table-builder/services/transform-creator.ts +0 -92
  369. package/src/table-builder/specs/table-custom-filters.spec.ts +0 -262
  370. package/src/table-builder/styles/collapser.styles.scss +0 -15
  371. package/src/table-builder/table-builder.module.ts +0 -73
  372. package/src/test.ts +0 -17
  373. package/src/utilities/array-helpers.ts +0 -13
  374. package/src/utilities/directives/auto-focus.directive.ts +0 -20
  375. package/src/utilities/directives/clickEmitterDirective.ts +0 -16
  376. package/src/utilities/directives/clickSubject.ts +0 -20
  377. package/src/utilities/directives/conditional-classes.directive.ts +0 -36
  378. package/src/utilities/directives/dialog-service.ts +0 -19
  379. package/src/utilities/directives/dialog.ts +0 -142
  380. package/src/utilities/directives/mat-toggle-group-directive.ts +0 -61
  381. package/src/utilities/directives/prevent-enter.directive.ts +0 -13
  382. package/src/utilities/directives/stop-propagation.directive.ts +0 -20
  383. package/src/utilities/directives/styler.ts +0 -39
  384. package/src/utilities/directives/trim-whitespace.directive.ts +0 -21
  385. package/src/utilities/module.ts +0 -55
  386. package/src/utilities/pipes/function.pipe.ts +0 -16
  387. package/src/utilities/pipes/phone.pipe.ts +0 -15
  388. package/src/utilities/pipes/space-case.pipes.spec.ts +0 -47
  389. package/src/utilities/pipes/space-case.pipes.ts +0 -23
  390. package/tsconfig.lib.json +0 -19
  391. package/tsconfig.lib.prod.json +0 -10
  392. package/tsconfig.spec.json +0 -17
  393. /package/{src/http-request-state/directives/index.ts → http-request-state/directives/index.d.ts} +0 -0
  394. /package/{src/http-request-state/rxjs/index.ts → http-request-state/rxjs/index.d.ts} +0 -0
  395. /package/{src/table-builder/classes/display-col.ts → table-builder/classes/display-col.d.ts} +0 -0
@@ -0,0 +1,52 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { orderViewableMetaData } from '../../classes/table-store';
4
+ import { DragDropModule } from '@angular/cdk/drag-drop';
5
+ import { AsyncPipe } from '@angular/common';
6
+ import { MatTooltipModule } from '@angular/material/tooltip';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatButtonModule } from '@angular/material/button';
9
+ import { MatMenuModule } from '@angular/material/menu';
10
+ import { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../classes/table-store";
13
+ import * as i2 from "@angular/material/tooltip";
14
+ import * as i3 from "@angular/material/icon";
15
+ import * as i4 from "@angular/material/button";
16
+ import * as i5 from "@angular/material/menu";
17
+ import * as i6 from "@angular/cdk/drag-drop";
18
+ export class GenColDisplayerComponent {
19
+ constructor(tableState) {
20
+ this.tableState = tableState;
21
+ this.columns$ = this.tableState.state$.pipe(map(state => orderViewableMetaData(state)
22
+ .map(md => ({
23
+ key: md.key,
24
+ displayName: md.displayName,
25
+ isVisible: !state.hiddenKeys.includes(md.key)
26
+ }))));
27
+ }
28
+ reset(displayCols) {
29
+ displayCols.forEach(c => c.isVisible = true);
30
+ this.emit(displayCols);
31
+ }
32
+ drop(event) {
33
+ this.tableState.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex });
34
+ }
35
+ unset(displayCols) {
36
+ displayCols.forEach(c => c.isVisible = false);
37
+ this.emit(displayCols);
38
+ }
39
+ emit(displayCols) {
40
+ this.tableState.setHiddenColumns(displayCols.map(c => ({ key: c.key, visible: c.isVisible })));
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GenColDisplayerComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: GenColDisplayerComponent, isStandalone: true, selector: "tb-col-displayer", ngImport: i0, template: "@if(columns$ | async; as displayCols){\r\n <span matTooltip=\"Show/hide columns\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}", styles: [".show-hide{margin-right:15px;height:24px;width:24px;padding:4px}.label{color:#6495ed;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left;margin:0;font-size:17px;font-weight:700;display:inline-block;width:66%}.row{margin:0;padding:0}.isHidden{background-color:#d3d3d3;color:#a9a9a9;font-weight:700;font-size:17px;white-space:nowrap}.filter-button{margin-top:10px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mdc-list-item__primary-text{display:inline-block;width:100%}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GenColDisplayerComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'tb-col-displayer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
48
+ AsyncPipe, MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,
49
+ DragDropModule, SpaceCasePipe
50
+ ], template: "@if(columns$ | async; as displayCols){\r\n <span matTooltip=\"Show/hide columns\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}", styles: [".show-hide{margin-right:15px;height:24px;width:24px;padding:4px}.label{color:#6495ed;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left;margin:0;font-size:17px;font-weight:700;display:inline-block;width:66%}.row{margin:0;padding:0}.isHidden{background-color:#d3d3d3;color:#a9a9a9;font-weight:700;font-size:17px;white-space:nowrap}.filter-button{margin-top:10px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mdc-list-item__primary-text{display:inline-block;width:100%}\n"] }]
51
+ }], ctorParameters: () => [{ type: i1.TableStore }] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuLWNvbC1kaXNwbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9nZW4tY29sLWRpc3BsYXllci9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbi1jb2wtZGlzcGxheWVyL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxxQkFBcUIsRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQWE3RSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQXFCLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBRSxLQUFLLENBQUMsRUFBRSxDQUNYLHFCQUFxQixDQUFDLEtBQUssQ0FBQzthQUN6QixHQUFHLENBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1gsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHO1lBQ1gsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXO1lBQzNCLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDOUMsQ0FBQyxDQUFDLENBQ04sQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxXQUF5QjtRQUM3QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBNEI7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDLFFBQVEsRUFBQyxLQUFLLENBQUMsWUFBWSxFQUFDLFFBQVEsRUFBQyxLQUFLLENBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQTtJQUNqRyxDQUFDO0lBQ0QsS0FBSyxDQUFDLFdBQXlCO1FBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQyxXQUF5QjtRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDOzhHQTdCVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw0RUN4QnJDLG9oRUFzREMscXVCRGxDRyxTQUFTLDZDQUFFLGdCQUFnQiw0VEFBRSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsYUFBYSw4dkJBQUUsd0JBQXdCLDhEQUNwRyxjQUFjLHk4QkFBRSxhQUFhOzsyRkFHcEIsd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsd0JBQXdCO3dCQUNwRyxjQUFjLEVBQUUsYUFBYTtxQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlzcGxheUNvbCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGlzcGxheS1jb2wnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgb3JkZXJWaWV3YWJsZU1ldGFEYXRhLCBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7Q2RrRHJhZ0Ryb3AsIERyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgU3BhY2VDYXNlUGlwZSwgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGItY29sLWRpc3BsYXllcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoICxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEFzeW5jUGlwZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSwgU3BhY2VDYXNlUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbkNvbERpc3BsYXllckNvbXBvbmVudCB7XHJcbiAgY29sdW1ucyQ6IE9ic2VydmFibGU8IERpc3BsYXlDb2xbXT47XHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgdGFibGVTdGF0ZTogVGFibGVTdG9yZSApIHtcclxuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLnRhYmxlU3RhdGUuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcCggc3RhdGUgPT5cclxuICAgICAgICBvcmRlclZpZXdhYmxlTWV0YURhdGEoc3RhdGUpXHJcbiAgICAgICAgICAubWFwKCBtZCA9PiAoe1xyXG4gICAgICAgICAgICBrZXk6IG1kLmtleSxcclxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IG1kLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICBpc1Zpc2libGU6ICFzdGF0ZS5oaWRkZW5LZXlzLmluY2x1ZGVzKG1kLmtleSlcclxuICAgICAgICAgIH0pKVxyXG4gICAgICApLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KGRpc3BsYXlDb2xzOiBEaXNwbGF5Q29sW10pIHtcclxuICAgIGRpc3BsYXlDb2xzLmZvckVhY2goYyA9PiBjLmlzVmlzaWJsZSA9IHRydWUpO1xyXG4gICAgdGhpcy5lbWl0KGRpc3BsYXlDb2xzKTtcclxuICB9XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICB0aGlzLnRhYmxlU3RhdGUuc2V0VXNlckRlZmluZWRPcmRlcih7bmV3T3JkZXI6ZXZlbnQuY3VycmVudEluZGV4LG9sZE9yZGVyOmV2ZW50LnByZXZpb3VzSW5kZXh9KVxyXG4gIH1cclxuICB1bnNldChkaXNwbGF5Q29sczogRGlzcGxheUNvbFtdKSB7XHJcbiAgICBkaXNwbGF5Q29scy5mb3JFYWNoKGMgPT4gYy5pc1Zpc2libGUgPSBmYWxzZSk7XHJcbiAgICB0aGlzLmVtaXQoZGlzcGxheUNvbHMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdChkaXNwbGF5Q29sczogRGlzcGxheUNvbFtdKSB7XHJcbiAgICB0aGlzLnRhYmxlU3RhdGUuc2V0SGlkZGVuQ29sdW1ucyhkaXNwbGF5Q29scy5tYXAoIGMgPT4gKHtrZXk6IGMua2V5LCB2aXNpYmxlOiBjLmlzVmlzaWJsZX0pKSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZihjb2x1bW5zJCB8IGFzeW5jOyBhcyBkaXNwbGF5Q29scyl7XHJcbiAgPHNwYW4gbWF0VG9vbHRpcD1cIlNob3cvaGlkZSBjb2x1bW5zXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9zcGFuPlxyXG4gIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm15LW1hdC1tZW51XCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlxyXG4gICAgICA8c3BhbiBtYXRUb29sdGlwPVwiQ2xvc2VcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBzdG9wLXByb3BhZ2F0aW9uPlxyXG4gICAgICA8c3BhbiBtYXRUb29sdGlwPVwiU2hvdyBhbGwgY29sdW1uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldChkaXNwbGF5Q29scylcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5kb25lX2FsbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDxzcGFuIG1hdFRvb2x0aXA9XCJIaWRlIGFsbCBjb2x1bW5zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInVuc2V0KGRpc3BsYXlDb2xzKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIiBzdG9wLXByb3BhZ2F0aW9uIFtjZGtEcm9wTGlzdExvY2tBeGlzXT1cIid5J1wiPlxyXG4gICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHM7IHRyYWNrIGNvbC5rZXkpIHtcclxuICAgICAgICA8YnV0dG9uIFtjbGFzcy5pc0hpZGRlbl09XCIhY29sLmlzVmlzaWJsZVwiIHN0b3AtcHJvcGFnYXRpb24gbWF0LW1lbnUtaXRlbSBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJjb2xcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJjb2wuaXNWaXNpYmxlID0gIWNvbC5pc1Zpc2libGU7IGVtaXQoZGlzcGxheUNvbHMpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgQGlmKGNvbC5pc1Zpc2libGUpe1xyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiSGlkZSBDb2x1bW5cIiBjbGFzcz1cInNob3ctaGlkZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5jaGVja19ib3g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiU2hvdyBDb2x1bW5cIiBjbGFzcz1cInNob3ctaGlkZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmRldGVybWluYXRlX2NoZWNrX2JveDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7Y29sLmRpc3BsYXlOYW1lIHx8IChjb2wua2V5IHwgc3BhY2VDYXNlKSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1tZW51PlxyXG59Il19
@@ -0,0 +1,192 @@
1
+ import { Component, ViewChild, Input, ChangeDetectionStrategy, Output, Injector, } from '@angular/core';
2
+ import { MatTable, MatTableModule } from '@angular/material/table';
3
+ import { combineLatest } from 'rxjs';
4
+ import { SelectionModel } from '@angular/cdk/collections';
5
+ import { map, distinctUntilChanged } from 'rxjs/operators';
6
+ import { ColumnBuilderComponent } from '../column-builder/column-builder.component';
7
+ import { FieldType } from '../../interfaces/report-def';
8
+ import { previousAndCurrent } from '../../../rxjs/rxjs-operators';
9
+ import { CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';
10
+ import { FunctionPipe } from '../../../utilities';
11
+ import { MatCheckboxModule } from '@angular/material/checkbox';
12
+ import { MatButtonModule } from '@angular/material/button';
13
+ import { MatIconModule } from '@angular/material/icon';
14
+ import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
15
+ import { MatTooltipModule } from '@angular/material/tooltip';
16
+ import { LetDirective } from '@ngrx/component';
17
+ import { initIndexSymbol } from '../table-container/table-container.helpers/sort-state.helpers';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "../../classes/table-store";
20
+ import * as i2 from "../../services/transform-creator";
21
+ import * as i3 from "@angular/material/table";
22
+ import * as i4 from "@angular/cdk/drag-drop";
23
+ import * as i5 from "@angular/material/checkbox";
24
+ import * as i6 from "@angular/material/button";
25
+ import * as i7 from "@angular/material/icon";
26
+ export class GenericTableComponent {
27
+ drop(event) {
28
+ this.state.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex });
29
+ }
30
+ set trackBy(trackBy) {
31
+ if (trackBy) {
32
+ this.trackByFunction = (index, item) => item[trackBy];
33
+ }
34
+ }
35
+ constructor(state, viewContainer, transformCreator, injector) {
36
+ this.state = state;
37
+ this.viewContainer = viewContainer;
38
+ this.transformCreator = transformCreator;
39
+ this.keys = [];
40
+ this.rowDefArr = [];
41
+ this.columns = [];
42
+ this.myColumns = {};
43
+ this.offsetIndex = 0;
44
+ this.defaultTrackBy = (index, item) => item[initIndexSymbol];
45
+ this.trackByFunction = this.defaultTrackBy;
46
+ this.initializeRowDefs = (defs) => {
47
+ this.rowDefArr.forEach(r => this.table.removeRowDef(r));
48
+ this.rowDefArr = defs;
49
+ defs.forEach(r => {
50
+ r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));
51
+ if (this.table) {
52
+ this.table.addRowDef(r);
53
+ }
54
+ });
55
+ };
56
+ this.selection = new SelectionModel(true, []);
57
+ this.selection$ = this.selection.changed;
58
+ this.masterToggleChecked$ = this.selection$.pipe(map(() => this.selection.hasValue() && this.isAllSelected()));
59
+ this.masterToggleIndeterminate$ = this.selection$.pipe(map(() => this.selection.hasValue() && !this.isAllSelected()));
60
+ this.tableWidth = this.state.getUserDefinedTableSize$.pipe(previousAndCurrent(0), map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {
61
+ if (currentUserDefinedWidth) {
62
+ return ({ width: `${currentUserDefinedWidth}px` });
63
+ }
64
+ if (wasReset()) {
65
+ return ({ width: 'initial' });
66
+ }
67
+ return ({});
68
+ function wasReset() {
69
+ return (previousUserDefinedWidth ?? 0) >= 0 && currentUserDefinedWidth == null;
70
+ }
71
+ }));
72
+ this.getTransform = (key, val) => {
73
+ if (val == undefined || val === 'null')
74
+ return '';
75
+ try {
76
+ return this.transformCreator.createTransformer(this.myColumns[key].metaData, true)({ [key]: val });
77
+ }
78
+ catch (error) {
79
+ return val;
80
+ }
81
+ };
82
+ this.injector = Injector.create({
83
+ providers: [
84
+ { provide: MatTable, useFactory: () => this.table },
85
+ { provide: CdkDropList, useFactory: () => this.dropList },
86
+ ],
87
+ parent: injector
88
+ });
89
+ this.offset$ = this.state.select(s => s.virtualScrollOffset);
90
+ }
91
+ ngOnChanges(changes) {
92
+ if (changes.rows && this.rows && this.myColumns.length) {
93
+ this.initializeRowDefs([...this.rows]);
94
+ }
95
+ }
96
+ ngOnInit() {
97
+ if (this.state.props().selectionColumn) {
98
+ this.columns.push('select');
99
+ }
100
+ if (this.state.props().indexColumn) {
101
+ this.columns.push('index');
102
+ }
103
+ this.state.on(this.columnInfos, columns => {
104
+ columns.forEach(ci => this.addMetaData(ci));
105
+ });
106
+ this.initializeRowDefs([...this.rows]);
107
+ this.state.on(this.state.displayedColumns$, keys => {
108
+ this.keys = [...this.columns, ...keys];
109
+ this.rowDefArr?.forEach(row => row.columns = this.keys);
110
+ });
111
+ this.showHeader$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeader)));
112
+ this.showFooterRow$ = combineLatest([
113
+ this.displayData$.pipe(map(d => !!d.length), distinctUntilChanged()),
114
+ this.state.metaDataArray$.pipe(map(metaData => metaData.some(md => !!md.additional?.footer)), distinctUntilChanged()),
115
+ this.columnInfos.pipe(map(columnInfos => columnInfos.some(ci => !!ci.customCell?.columnDef?.footerCell)), distinctUntilChanged()),
116
+ ]).pipe(map(([hasData, hasFooterDef, hasCustomFooter]) => {
117
+ const hasSelectionColumn = this.state.props().selectionColumn;
118
+ return hasCustomFooter || (hasData && (hasFooterDef || hasSelectionColumn)) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';
119
+ }));
120
+ if (this.state.tableSettings().usePaginator || this.state.tableSettings().useVirtualScroll) {
121
+ this.state.on(this.state.state$, (state) => {
122
+ this.offsetIndex = state.virtualStart;
123
+ if (this.state.tableSettings().usePaginator) {
124
+ this.offsetIndex += (state.pageSize * state.currentPage);
125
+ }
126
+ });
127
+ }
128
+ }
129
+ isGroupHeader(_, row) {
130
+ return row.isGroupHeader;
131
+ }
132
+ setExpanded(key, groupKey, isExpanded) {
133
+ this.state.updateExpandedGroups({ key, isExpanded, groupKey });
134
+ }
135
+ addMetaData(column) {
136
+ const columnBuilder = this.myColumns[column.metaData.key];
137
+ if (columnBuilder) {
138
+ columnBuilder.metaData = column.metaData;
139
+ }
140
+ else {
141
+ const component = this.viewContainer.createComponent(ColumnBuilderComponent, {
142
+ index: 0,
143
+ injector: this.injector
144
+ });
145
+ component.instance.customCell = column.customCell;
146
+ component.instance.metaData = column.metaData;
147
+ component.instance.data$ = this.data$;
148
+ this.myColumns[column.metaData.key] = component.instance;
149
+ }
150
+ }
151
+ isAllSelected() {
152
+ const numSelected = this.selection.selected.length;
153
+ const numRows = this.state.props().dataSource?.data.length;
154
+ return numSelected === numRows;
155
+ }
156
+ /** Selects all rows if they are not all selected; otherwise clear selection. */
157
+ masterToggle() {
158
+ this.isAllSelected() ?
159
+ this.selection.clear() :
160
+ this.selection.select(...this.state.props().dataSource.data);
161
+ }
162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GenericTableComponent, deps: [{ token: i1.TableStore }, { token: i0.ViewContainerRef }, { token: i2.TransformCreator }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: GenericTableComponent, isStandalone: true, selector: "tb-generic-table", inputs: { trackBy: "trackBy", displayData$: "displayData$", data$: "data$", rows: "rows", columnBuilders: "columnBuilders", columnInfos: "columnInfos" }, outputs: { selection$: "selection$" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n [class]=\"(showFooterRow$ | async)\"\r\n #table\r\n [dataSource]=\"state.props().dataSource!\"\r\n [trackBy]=\"trackByFunction\"\r\n [style]=\"tableWidth | async\"\r\n>\r\n\r\n <!-- select column -->\r\n <ng-container matColumnDef=\"select\">\r\n\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!(masterToggleChecked$ | async)\"\r\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef>\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\">\r\n {{ 1 + i + offsetIndex}}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\r\n </ng-container>\r\n\r\n <!-- Grouping -->\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\" *ngrxLet=\"(state.getIsExpanded | func : row.key : row.groupName ) as expanded\">\r\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded);\">\r\n @if(!expanded){\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{getTransform | func : row.key : row.groupHeaderDisplay}} ({{row.length}})\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"state.props().groupHeaderTemplate!; context: { element: row }\"></ng-container>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n @if(showHeader$ | async){\r\n <mat-header-row *matHeaderRowDef=\"keys; sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\" />\r\n }\r\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\" />\r\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\" />\r\n <mat-footer-row *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []; sticky: state.props().stickyFooter \" [style.bottom.px]=\"state.props().stickyFooter ? (offset$ | async) : undefined\" />\r\n\r\n</mat-table>\r\n", styles: [".mat-mdc-row:nth-child(odd){background-color:#cdeefe}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .mat-mdc-paginator-container{min-height:initial!important}.group-header{display:flex}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:0 0 0 .2rem;line-height:normal}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "pipe", type: FunctionPipe, name: "func" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
164
+ }
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GenericTableComponent, decorators: [{
166
+ type: Component,
167
+ args: [{ selector: 'tb-generic-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
168
+ MatTableModule, DragDropModule, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,
169
+ MatTooltipModule, AsyncPipe, LetDirective, FunctionPipe,
170
+ ], template: "<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n [class]=\"(showFooterRow$ | async)\"\r\n #table\r\n [dataSource]=\"state.props().dataSource!\"\r\n [trackBy]=\"trackByFunction\"\r\n [style]=\"tableWidth | async\"\r\n>\r\n\r\n <!-- select column -->\r\n <ng-container matColumnDef=\"select\">\r\n\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!(masterToggleChecked$ | async)\"\r\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef>\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\">\r\n {{ 1 + i + offsetIndex}}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\r\n </ng-container>\r\n\r\n <!-- Grouping -->\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\" *ngrxLet=\"(state.getIsExpanded | func : row.key : row.groupName ) as expanded\">\r\n <button mat-icon-button (click)=\"setExpanded(row.key, row.groupName, !expanded);\">\r\n @if(!expanded){\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{getTransform | func : row.key : row.groupHeaderDisplay}} ({{row.length}})\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"state.props().groupHeaderTemplate!; context: { element: row }\"></ng-container>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n @if(showHeader$ | async){\r\n <mat-header-row *matHeaderRowDef=\"keys; sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\" />\r\n }\r\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\" />\r\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\" />\r\n <mat-footer-row *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []; sticky: state.props().stickyFooter \" [style.bottom.px]=\"state.props().stickyFooter ? (offset$ | async) : undefined\" />\r\n\r\n</mat-table>\r\n", styles: [".mat-mdc-row:nth-child(odd){background-color:#cdeefe}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .mat-mdc-paginator-container{min-height:initial!important}.group-header{display:flex}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:0 0 0 .2rem;line-height:normal}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n"] }]
171
+ }], ctorParameters: () => [{ type: i1.TableStore }, { type: i0.ViewContainerRef }, { type: i2.TransformCreator }, { type: i0.Injector }], propDecorators: { trackBy: [{
172
+ type: Input
173
+ }], displayData$: [{
174
+ type: Input
175
+ }], data$: [{
176
+ type: Input
177
+ }], rows: [{
178
+ type: Input
179
+ }], columnBuilders: [{
180
+ type: Input
181
+ }], columnInfos: [{
182
+ type: Input
183
+ }], table: [{
184
+ type: ViewChild,
185
+ args: [MatTable, { static: true }]
186
+ }], dropList: [{
187
+ type: ViewChild,
188
+ args: [CdkDropList, { static: true }]
189
+ }], selection$: [{
190
+ type: Output
191
+ }] } });
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFLTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBZSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9E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S0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVpQyxLQUFLO3NCQUEzQyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ssUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9IOUIsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFJvd0RlZiwgTWF0VGFibGUsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBtYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb2x1bW5CdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1uLWJ1aWxkZXIvY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IHByZXZpb3VzQW5kQ3VycmVudCB9IGZyb20gJy4uLy4uLy4uL3J4anMvcnhqcy1vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb2x1bW5JbmZvIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9Db2x1bW5JbmZvJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0LCBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBGdW5jdGlvblBpcGUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IExldERpcmVjdGl2ZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zZm9ybUNyZWF0b3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2Zvcm0tY3JlYXRvcic7XHJcbmltcG9ydCB7IGluaXRJbmRleFN5bWJvbCB9IGZyb20gJy4uL3RhYmxlLWNvbnRhaW5lci90YWJsZS1jb250YWluZXIuaGVscGVycy9zb3J0LXN0YXRlLmhlbHBlcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Yi1nZW5lcmljLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0VGFibGVNb2R1bGUsIERyYWdEcm9wTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSwgQXN5bmNQaXBlLCBMZXREaXJlY3RpdmUsIEZ1bmN0aW9uUGlwZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJpY1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICB0aGlzLnN0YXRlLnNldFVzZXJEZWZpbmVkT3JkZXIoe25ld09yZGVyOmV2ZW50LmN1cnJlbnRJbmRleCxvbGRPcmRlcjpldmVudC5wcmV2aW91c0luZGV4fSlcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IHRyYWNrQnkodHJhY2tCeTogc3RyaW5nKXtcclxuICAgIGlmKHRyYWNrQnkpe1xyXG4gICAgICB0aGlzLnRyYWNrQnlGdW5jdGlvbiA9IChpbmRleDpudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbVt0cmFja0J5XTtcclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KCkgZGlzcGxheURhdGEkITogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSByb3dzITogUXVlcnlMaXN0PE1hdFJvd0RlZjxhbnk+PjtcclxuICBASW5wdXQoKSBjb2x1bW5CdWlsZGVycyE6IENvbHVtbkJ1aWxkZXJDb21wb25lbnRbXTtcclxuICBASW5wdXQoKSBjb2x1bW5JbmZvcyE6IE9ic2VydmFibGU8Q29sdW1uSW5mb1tdPjtcclxuXHJcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGUhOiBNYXRUYWJsZTxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoQ2RrRHJvcExpc3QsIHsgc3RhdGljOiB0cnVlIH0pIGRyb3BMaXN0ITogQ2RrRHJvcExpc3Q7XHJcblxyXG4gIGN1cnJlbnRDb2x1bW5zITogc3RyaW5nW107XHJcbiAga2V5czogc3RyaW5nIFtdID0gW107XHJcbiAgaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gIHJvd0RlZkFyciA6TWF0Um93RGVmPGFueT5bXSA9IFtdO1xyXG4gIGNvbHVtbnM6c3RyaW5nIFtdID0gW107XHJcbiAgbXlDb2x1bW5zOiBEaWN0aW9uYXJ5PENvbHVtbkJ1aWxkZXJDb21wb25lbnQ+ID0ge307XHJcbiAgc2hvd0hlYWRlciQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIG9mZnNldCQhIDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gIG9mZnNldEluZGV4ID0gMDtcclxuICBkYXRhVmlldyE6IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdGF0ZTogVGFibGVTdG9yZSxcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgdHJhbnNmb3JtQ3JlYXRvcjogVHJhbnNmb3JtQ3JlYXRvcixcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICkge1xyXG4gICAgdGhpcy5pbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtwcm92aWRlOiBNYXRUYWJsZSwgdXNlRmFjdG9yeTogKCk9PiB0aGlzLnRhYmxlIH0sXHJcbiAgICAgICAge3Byb3ZpZGU6IENka0Ryb3BMaXN0LCB1c2VGYWN0b3J5OiAoKT0+IHRoaXMuZHJvcExpc3QgfSxcclxuICAgICAgXSxcclxuICAgICAgcGFyZW50OiBpbmplY3RvclxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vZmZzZXQkID0gdGhpcy5zdGF0ZS5zZWxlY3QoIHMgPT4gcy52aXJ0dWFsU2Nyb2xsT2Zmc2V0ICk7XHJcbiAgfVxyXG5cclxuICBkZWZhdWx0VHJhY2tCeSA9IChpbmRleDpudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbVtpbml0SW5kZXhTeW1ib2xdO1xyXG4gIHRyYWNrQnlGdW5jdGlvbiA9IHRoaXMuZGVmYXVsdFRyYWNrQnk7XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMucm93cyAmJiB0aGlzLnJvd3MgJiYgdGhpcy5teUNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVJvd0RlZnMoWy4uLnRoaXMucm93c10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5wcm9wcygpLnNlbGVjdGlvbkNvbHVtbikge1xyXG4gICAgICB0aGlzLmNvbHVtbnMucHVzaCgnc2VsZWN0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhdGUucHJvcHMoKS5pbmRleENvbHVtbikge1xyXG4gICAgIHRoaXMuY29sdW1ucy5wdXNoKCdpbmRleCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGUub24odGhpcy5jb2x1bW5JbmZvcywgY29sdW1ucyA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjaSA9PiB0aGlzLmFkZE1ldGFEYXRhKGNpKSlcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVJvd0RlZnMoWy4uLnRoaXMucm93c10pO1xyXG5cclxuICAgIHRoaXMuc3RhdGUub24odGhpcy5zdGF0ZS5kaXNwbGF5ZWRDb2x1bW5zJCwga2V5cyA9PiB7XHJcbiAgICAgIHRoaXMua2V5cyA9IFsuLi50aGlzLmNvbHVtbnMsIC4uLmtleXNdO1xyXG4gICAgICB0aGlzLnJvd0RlZkFycj8uZm9yRWFjaChyb3cgPT4gcm93LmNvbHVtbnMgPSB0aGlzLmtleXMpXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNob3dIZWFkZXIkID0gdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzJC5waXBlKG1hcChzZXR0aW5ncyA9PiAhKHNldHRpbmdzLmhpZGVDb2x1bW5IZWFkZXIpKSk7XHJcblxyXG4gICAgdGhpcy5zaG93Rm9vdGVyUm93JCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmRpc3BsYXlEYXRhJC5waXBlKG1hcChkID0+ICEhZC5sZW5ndGgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcclxuICAgICAgdGhpcy5zdGF0ZS5tZXRhRGF0YUFycmF5JC5waXBlKG1hcChtZXRhRGF0YSA9PiBtZXRhRGF0YS5zb21lKG1kID0+ICEhbWQuYWRkaXRpb25hbD8uZm9vdGVyKSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxyXG4gICAgICB0aGlzLmNvbHVtbkluZm9zLnBpcGUobWFwKGNvbHVtbkluZm9zID0+IGNvbHVtbkluZm9zLnNvbWUoY2kgPT4gISFjaS5jdXN0b21DZWxsPy5jb2x1bW5EZWY/LmZvb3RlckNlbGwpKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXHJcbiAgICBdKS5waXBlKG1hcCgoW2hhc0RhdGEsIGhhc0Zvb3RlckRlZiwgaGFzQ3VzdG9tRm9vdGVyXSkgPT4ge1xyXG4gICAgICBjb25zdCBoYXNTZWxlY3Rpb25Db2x1bW4gPSB0aGlzLnN0YXRlLnByb3BzKCkuc2VsZWN0aW9uQ29sdW1uO1xyXG4gICAgICByZXR1cm4gaGFzQ3VzdG9tRm9vdGVyIHx8IChoYXNEYXRhICYmIChoYXNGb290ZXJEZWYgfHwgaGFzU2VsZWN0aW9uQ29sdW1uKSkgPyAncmVndWxhci1mb290ZXInIDogaGFzRGF0YSA/ICduby1mb290ZXInIDogJ3NtYWxsLWZvb3Rlcic7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgaWYodGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkudXNlUGFnaW5hdG9yIHx8IHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnVzZVZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgdGhpcy5zdGF0ZS5vbih0aGlzLnN0YXRlLnN0YXRlJCwgKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vZmZzZXRJbmRleCA9IHN0YXRlLnZpcnR1YWxTdGFydDtcclxuICAgICAgICBpZih0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VQYWdpbmF0b3IpIHtcclxuICAgICAgICAgIHRoaXMub2Zmc2V0SW5kZXggKz0gKHN0YXRlLnBhZ2VTaXplICogc3RhdGUuY3VycmVudFBhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNHcm91cEhlYWRlcihfOiBudW1iZXIsIHJvdzogeyBpc0dyb3VwSGVhZGVyOiBib29sZWFuIH0pIHtcclxuICAgIHJldHVybiByb3cuaXNHcm91cEhlYWRlcjtcclxuICB9XHJcblxyXG4gIHNldEV4cGFuZGVkKGtleTogc3RyaW5nLCBncm91cEtleTogc3RyaW5nLCBpc0V4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZUV4cGFuZGVkR3JvdXBzKHsga2V5ICwgaXNFeHBhbmRlZCwgZ3JvdXBLZXkgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRNZXRhRGF0YShjb2x1bW46IENvbHVtbkluZm8pIHtcclxuICAgIGNvbnN0IGNvbHVtbkJ1aWxkZXIgPSB0aGlzLm15Q29sdW1uc1tjb2x1bW4ubWV0YURhdGEua2V5XTtcclxuICAgIGlmKGNvbHVtbkJ1aWxkZXIpIHtcclxuICAgICAgY29sdW1uQnVpbGRlci5tZXRhRGF0YSA9IGNvbHVtbi5tZXRhRGF0YTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoQ29sdW1uQnVpbGRlckNvbXBvbmVudCwge1xyXG4gICAgICAgIGluZGV4OiAwLFxyXG4gICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb21wb25lbnQuaW5zdGFuY2UuY3VzdG9tQ2VsbCA9IGNvbHVtbi5jdXN0b21DZWxsO1xyXG4gICAgICBjb21wb25lbnQuaW5zdGFuY2UubWV0YURhdGEgPSBjb2x1bW4ubWV0YURhdGE7XHJcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5kYXRhJCA9IHRoaXMuZGF0YSQ7XHJcbiAgICAgIHRoaXMubXlDb2x1bW5zW2NvbHVtbi5tZXRhRGF0YS5rZXldID0gY29tcG9uZW50Lmluc3RhbmNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVJvd0RlZnMgPSAoZGVmczpNYXRSb3dEZWY8YW55PltdKT0+e1xyXG4gICAgdGhpcy5yb3dEZWZBcnIuZm9yRWFjaChyPT50aGlzLnRhYmxlLnJlbW92ZVJvd0RlZihyKSk7XHJcbiAgICB0aGlzLnJvd0RlZkFyciA9IGRlZnM7XHJcbiAgICBkZWZzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIHIuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5jb25jYXQoT2JqZWN0LnZhbHVlcyh0aGlzLm15Q29sdW1ucykuZmlsdGVyKGMgPT4gYy5tZXRhRGF0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pLm1hcChjID0+IGMubWV0YURhdGEua2V5KSk7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZS5hZGRSb3dEZWYocik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uIDogU2VsZWN0aW9uTW9kZWw8YW55PiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5zZWxlY3Rpb24uY2hhbmdlZDtcclxuICBtYXN0ZXJUb2dnbGVDaGVja2VkJCA9IHRoaXMuc2VsZWN0aW9uJC5waXBlKG1hcCgoKT0+dGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiB0aGlzLmlzQWxsU2VsZWN0ZWQoKSkpO1xyXG4gIG1hc3RlclRvZ2dsZUluZGV0ZXJtaW5hdGUkID0gdGhpcy5zZWxlY3Rpb24kLnBpcGUobWFwKCgpPT50aGlzLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICF0aGlzLmlzQWxsU2VsZWN0ZWQoKSkpO1xyXG5cclxuICBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5zdGF0ZS5wcm9wcygpLmRhdGFTb3VyY2U/LmRhdGEubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cclxuICBtYXN0ZXJUb2dnbGUoKSB7XHJcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCkgOlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5zdGF0ZS5wcm9wcygpLmRhdGFTb3VyY2UhLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdGFibGVXaWR0aCA9IHRoaXMuc3RhdGUuZ2V0VXNlckRlZmluZWRUYWJsZVNpemUkLnBpcGUoXHJcbiAgICBwcmV2aW91c0FuZEN1cnJlbnQ8bnVtYmVyIHwgdW5kZWZpbmVkPigwKSxcclxuICAgIG1hcCgoW3ByZXZpb3VzVXNlckRlZmluZWRXaWR0aCwgY3VycmVudFVzZXJEZWZpbmVkV2lkdGhdKSA9PiB7XHJcbiAgICAgIGlmKCBjdXJyZW50VXNlckRlZmluZWRXaWR0aCl7XHJcbiAgICAgICAgcmV0dXJuICh7d2lkdGg6YCR7Y3VycmVudFVzZXJEZWZpbmVkV2lkdGh9cHhgfSk7XHJcbiAgICAgIH0gaWYoIHdhc1Jlc2V0KCkgKXtcclxuICAgICAgICByZXR1cm4gKHt3aWR0aDonaW5pdGlhbCd9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKHt9KTtcclxuXHJcbiAgICAgIGZ1bmN0aW9uIHdhc1Jlc2V0KCl7XHJcbiAgICAgICAgcmV0dXJuIChwcmV2aW91c1VzZXJEZWZpbmVkV2lkdGggPz8gMCkgPj0wICYmIGN1cnJlbnRVc2VyRGVmaW5lZFdpZHRoID09IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgKTtcclxuXHJcbiAgc2hvd0Zvb3RlclJvdyQhOiBPYnNlcnZhYmxlPCdyZWd1bGFyLWZvb3RlcicgfCAnbm8tZm9vdGVyJyB8ICdzbWFsbC1mb290ZXInPjtcclxuICBnZXRUcmFuc2Zvcm0gPSAoa2V5OiBzdHJpbmcsIHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICBpZih2YWwgPT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gJ251bGwnKSByZXR1cm4gJyc7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1DcmVhdG9yLmNyZWF0ZVRyYW5zZm9ybWVyKHRoaXMubXlDb2x1bW5zW2tleV0ubWV0YURhdGEsIHRydWUpKHsgW2tleV06IHZhbH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHZhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG1hdC10YWJsZVxyXG4gIGNka0Ryb3BMaXN0XHJcbiAgY2RrRHJvcExpc3RMb2NrQXhpcz0neCdcclxuICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxyXG4gIGNsYXNzPVwidGFibGUtZHJhZy1saXN0XCJcclxuICBbY2xhc3NdPVwiKHNob3dGb290ZXJSb3ckIHwgYXN5bmMpXCJcclxuICAjdGFibGVcclxuICBbZGF0YVNvdXJjZV09XCJzdGF0ZS5wcm9wcygpLmRhdGFTb3VyY2UhXCJcclxuICBbdHJhY2tCeV09XCJ0cmFja0J5RnVuY3Rpb25cIlxyXG4gIFtzdHlsZV09XCJ0YWJsZVdpZHRoIHwgYXN5bmNcIlxyXG4+XHJcblxyXG4gIDwhLS0gc2VsZWN0IGNvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxyXG5cclxuICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJmLW1hdC1oZWFkZXItY2VsbFwiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIhIShtYXN0ZXJUb2dnbGVDaGVja2VkJCB8IGFzeW5jKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwibWFzdGVyVG9nZ2xlSW5kZXRlcm1pbmF0ZSQgfCBhc3luY1wiPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvbWF0LWhlYWRlci1jZWxsPlxyXG5cclxuICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcclxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiLz5cclxuICAgIDwvbWF0LWNlbGw+XHJcblxyXG4gICAgPG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgPC9tYXQtZm9vdGVyLWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gaW5kZXggY29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cclxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImYtbWF0LWhlYWRlci1jZWxsXCIgPiM8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGkgPSBpbmRleDtcIj5cclxuICAgICAgICAge3sgMSArIGkgKyBvZmZzZXRJbmRleH19XHJcbiAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDxtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC9tYXQtZm9vdGVyLWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gR3JvdXBpbmcgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJncm91cEhlYWRlclwiPlxyXG4gICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxyXG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nTGVmdF09XCJyb3cucGFkZGluZyArICdweCAhaW1wb3J0YW50J1wiICpuZ3J4TGV0PVwiKHN0YXRlLmdldElzRXhwYW5kZWQgfCBmdW5jIDogcm93LmtleSA6IHJvdy5ncm91cE5hbWUgKSBhcyBleHBhbmRlZFwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZXRFeHBhbmRlZChyb3cua2V5LCByb3cuZ3JvdXBOYW1lLCAhZXhwYW5kZWQpO1wiPlxyXG4gICAgICAgICAgQGlmKCFleHBhbmRlZCl7XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8bWF0LWljb24+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIHt7Z2V0VHJhbnNmb3JtIHwgZnVuYyA6IHJvdy5rZXkgOiAgcm93Lmdyb3VwSGVhZGVyRGlzcGxheX19ICh7e3Jvdy5sZW5ndGh9fSlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdGUucHJvcHMoKS5ncm91cEhlYWRlclRlbXBsYXRlITsgY29udGV4dDogeyBlbGVtZW50OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNlbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIEBpZihzaG93SGVhZGVyJCB8IGFzeW5jKXtcclxuICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwia2V5czsgc3RpY2t5OiBzdGF0ZS5wcm9wcygpLmlzU3RpY2t5XCIgW3N0eWxlLnRvcC5weF09XCIoKG9mZnNldCQgfCBhc3luYykhICogLTEpXCIgIC8+XHJcbiAgfVxyXG4gIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBrZXlzOyBsZXQgaSA9IGluZGV4XCIgLz5cclxuICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEhlYWRlciddOyB3aGVuOiBpc0dyb3VwSGVhZGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIiAvPlxyXG4gIDxtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiKHNob3dGb290ZXJSb3ckIHwgYXN5bmMpID09PSAncmVndWxhci1mb290ZXInID8ga2V5cyA6IFtdOyBzdGlja3k6IHN0YXRlLnByb3BzKCkuc3RpY2t5Rm9vdGVyIFwiICBbc3R5bGUuYm90dG9tLnB4XT1cInN0YXRlLnByb3BzKCkuc3RpY2t5Rm9vdGVyID8gKG9mZnNldCQgfCBhc3luYykgOiB1bmRlZmluZWRcIiAgLz5cclxuXHJcbjwvbWF0LXRhYmxlPlxyXG4iXX0=
@@ -0,0 +1,80 @@
1
+ import { Component, ChangeDetectionStrategy, ViewChild, Input, } from '@angular/core';
2
+ import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
3
+ import { asyncScheduler, merge } from 'rxjs';
4
+ import { delay, distinctUntilChanged, distinctUntilKeyChanged, map } from 'rxjs/operators';
5
+ import { AsyncPipe, NgClass } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../classes/table-store";
8
+ import * as i2 from "@angular/material/paginator";
9
+ export class PaginatorComponent {
10
+ constructor(state) {
11
+ this.state = state;
12
+ this.ourPageEvent = false;
13
+ }
14
+ ngOnInit() {
15
+ this.ourPageEvent = true;
16
+ this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));
17
+ this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));
18
+ this.state.on(this.paginator.page, (pageEvent) => {
19
+ this.state.updateState({ currentPage: pageEvent.pageIndex });
20
+ });
21
+ this.state.setPageSize(onPaginatorPageSizeChange(this.paginator));
22
+ this.state.on(this.state.select(s => s.dataLen), (len) => this.paginator.length = len);
23
+ }
24
+ ngAfterViewInit() {
25
+ this.currentPageData$ = merge(this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)), this.data$.pipe(distinctUntilKeyChanged("length"), delayToAllowForProperUpdate, map(updateCurrentPageDetailsOnDataLengthChange(this.paginator))));
26
+ }
27
+ paginatorChange() {
28
+ if (!this.ourPageEvent) {
29
+ setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);
30
+ }
31
+ else {
32
+ this.ourPageEvent = false;
33
+ }
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PaginatorComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: PaginatorComponent, isStandalone: true, selector: "tb-paginator", inputs: { data$: "data$", tableElRef: "tableElRef" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], ngImport: i0, template: `
37
+ @if(currentPageData$ | async; as pageData){
38
+ <div [ngClass]="{'hide' : !(collapseFooter$ | async), 'page-amounts':true}">
39
+ {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}
40
+ </div>
41
+ }
42
+ <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons (page)="paginatorChange()"
43
+ [ngClass]="{'hide' : (collapseFooter$ | async)}">
44
+ </mat-paginator>
45
+ `, isInline: true, styles: [".mat-mdc-row:nth-child(odd){background-color:#cdeefe}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .mat-mdc-paginator-container{min-height:initial!important}.group-header{display:flex}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:0 0 0 .2rem;line-height:normal}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PaginatorComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'tb-paginator', standalone: true, imports: [AsyncPipe, MatPaginatorModule, NgClass], template: `
50
+ @if(currentPageData$ | async; as pageData){
51
+ <div [ngClass]="{'hide' : !(collapseFooter$ | async), 'page-amounts':true}">
52
+ {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}
53
+ </div>
54
+ }
55
+ <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons (page)="paginatorChange()"
56
+ [ngClass]="{'hide' : (collapseFooter$ | async)}">
57
+ </mat-paginator>
58
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".mat-mdc-row:nth-child(odd){background-color:#cdeefe}.page-amounts{color:#0000008a;font-family:Roboto,Helvetica Neue,sans-serif;font-size:12px;margin-right:.2rem}:host::ng-deep .mat-mdc-paginator-container{min-height:initial!important}.group-header{display:flex}:host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}:host::ng-deep .mdc-data-table__cell,:host::ng-deep .mdc-data-table__header-cell{padding:0 0 0 .2rem;line-height:normal}::ng-deep .op-date-time-input{line-height:3rem;font-size:.9rem;font-family:Roboto,Helvetica Neue,sans-serif;padding-left:.2rem;width:12rem}.small-footer mat-footer-row{min-height:1rem;height:1rem}.no-footer mat-footer-row{display:none}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"] }]
59
+ }], ctorParameters: () => [{ type: i1.TableStore }], propDecorators: { paginator: [{
60
+ type: ViewChild,
61
+ args: [MatPaginator, { static: true }]
62
+ }], data$: [{
63
+ type: Input
64
+ }], tableElRef: [{
65
+ type: Input,
66
+ args: [{ required: true }]
67
+ }] } });
68
+ const mapPaginationEventToCurrentPageDetails = (pageData) => ({
69
+ currentStart: (pageData.pageIndex * pageData.pageSize) + 1,
70
+ currentEnd: Math.min(pageData.length, ((pageData.pageIndex + 1) * pageData.pageSize)),
71
+ total: pageData.length
72
+ });
73
+ const updateCurrentPageDetailsOnDataLengthChange = (paginator) => () => ({ currentStart: (paginator.pageIndex * paginator.pageSize) + 1,
74
+ currentEnd: Math.min(paginator.length, ((paginator.pageIndex + 1) * paginator.pageSize)),
75
+ total: paginator.length });
76
+ const delayToAllowForProperUpdate = delay(0, asyncScheduler);
77
+ const metaDataPageSizeChange = (state) => state.state$.pipe(map(state => state.userDefined.pageSize || state.pageSize), distinctUntilChanged());
78
+ const setPaginatorPageSize = (paginator) => (pageSize) => paginator._changePageSize(pageSize);
79
+ const onPaginatorPageSizeChange = (paginator) => paginator.page.pipe(map(e => e.pageSize), distinctUntilChanged());
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9wYWdpbmF0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQWtCckQsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUFvQixLQUFrQjtRQUFsQixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBOEJ0QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQTlCbUIsQ0FBQztJQUN6QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxzQkFB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QUFDLE1BQU0sRUFBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekYsS0FBSyxFQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO0FBRTFCLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFRLENBQUMsRUFBQyxjQUFjLENBQUMsQ0FBQztBQVFuRSxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztBQUUzSixNQUFNLG9CQUFvQixHQUFHLENBQUMsU0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDNUUsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUV0QyxNQUFNLHlCQUF5QixHQUFHLENBQUMsU0FBdUIsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBRSxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uSW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIE1hdFBhZ2luYXRvck1vZHVsZSwgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgYXN5bmNTY2hlZHVsZXIsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZGlzdGluY3RVbnRpbEtleUNoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLXBhZ2luYXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBNYXRQYWdpbmF0b3JNb2R1bGUsIE5nQ2xhc3NdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgQGlmKGN1cnJlbnRQYWdlRGF0YSQgfCBhc3luYzsgYXMgcGFnZURhdGEpe1xyXG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hpZGUnIDogIShjb2xsYXBzZUZvb3RlciQgfCBhc3luYyksICdwYWdlLWFtb3VudHMnOnRydWV9XCI+XHJcbiAgICAgIHt7cGFnZURhdGEuY3VycmVudFN0YXJ0fX0gLSB7e3BhZ2VEYXRhLmN1cnJlbnRFbmR9fSBvZiB7e3BhZ2VEYXRhLnRvdGFsfX1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICA8bWF0LXBhZ2luYXRvciBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMF1cIiBzaG93Rmlyc3RMYXN0QnV0dG9ucyAocGFnZSk9XCJwYWdpbmF0b3JDaGFuZ2UoKVwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2hpZGUnIDogKGNvbGxhcHNlRm9vdGVyJCB8IGFzeW5jKX1cIj5cclxuICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJywnLi4vLi4vc3R5bGVzL2NvbGxhcHNlci5zdHlsZXMuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0e1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgY3VycmVudFBhZ2VEYXRhJCE6IE9ic2VydmFibGU8Q3VycmVudFBhZ2VEZXRhaWxzPjtcclxuICBjb2xsYXBzZUZvb3RlciQhOk9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgQElucHV0KCkgZGF0YSQhOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0YWJsZUVsUmVmISA6IEVsZW1lbnRSZWZcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YXRlIDogVGFibGVTdG9yZSl7fVxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICB0aGlzLm91clBhZ2VFdmVudCA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlLm9uKG1ldGFEYXRhUGFnZVNpemVDaGFuZ2UodGhpcy5zdGF0ZSksIHNldFBhZ2luYXRvclBhZ2VTaXplKHRoaXMucGFnaW5hdG9yKSk7XHJcbiAgICB0aGlzLmNvbGxhcHNlRm9vdGVyJCA9IHRoaXMuc3RhdGUuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIpKTtcclxuICAgIHRoaXMuc3RhdGUub24odGhpcy5wYWdpbmF0b3IucGFnZSwgKHBhZ2VFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlKHtjdXJyZW50UGFnZTogcGFnZUV2ZW50LnBhZ2VJbmRleH0gKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdGF0ZS5zZXRQYWdlU2l6ZShvblBhZ2luYXRvclBhZ2VTaXplQ2hhbmdlKHRoaXMucGFnaW5hdG9yKSlcclxuXHJcbiAgICB0aGlzLnN0YXRlLm9uKCB0aGlzLnN0YXRlLnNlbGVjdCggcyA9PiBzLmRhdGFMZW4pLCAobGVuKSA9PiB0aGlzLnBhZ2luYXRvci5sZW5ndGggPSBsZW4pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZURhdGEkID0gbWVyZ2UoXHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2UucGlwZShtYXAobWFwUGFnaW5hdGlvbkV2ZW50VG9DdXJyZW50UGFnZURldGFpbHMpKSxcclxuICAgICAgdGhpcy5kYXRhJC5waXBlKFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkKFwibGVuZ3RoXCIpLFxyXG4gICAgICAgIGRlbGF5VG9BbGxvd0ZvclByb3BlclVwZGF0ZSxcclxuICAgICAgICBtYXAodXBkYXRlQ3VycmVudFBhZ2VEZXRhaWxzT25EYXRhTGVuZ3RoQ2hhbmdlKHRoaXMucGFnaW5hdG9yKSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcGFnaW5hdG9yQ2hhbmdlKCkgOiB2b2lkIHtcclxuICAgIGlmKCF0aGlzLm91clBhZ2VFdmVudCl7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50YWJsZUVsUmVmPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxJbnRvVmlldygpLCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3VyUGFnZUV2ZW50ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG91clBhZ2VFdmVudCA9IGZhbHNlO1xyXG59XHJcblxyXG5jb25zdCBtYXBQYWdpbmF0aW9uRXZlbnRUb0N1cnJlbnRQYWdlRGV0YWlscyA9IChwYWdlRGF0YTogUGFnZUV2ZW50KTpDdXJyZW50UGFnZURldGFpbHMgPT4gKHtcclxuICBjdXJyZW50U3RhcnQgOiAocGFnZURhdGEucGFnZUluZGV4ICogcGFnZURhdGEucGFnZVNpemUpICsgMSxcclxuICBjdXJyZW50RW5kIDogTWF0aC5taW4ocGFnZURhdGEubGVuZ3RoICwgKChwYWdlRGF0YS5wYWdlSW5kZXggKyAxKSAqIHBhZ2VEYXRhLnBhZ2VTaXplKSksXHJcbiAgdG90YWwgOiBwYWdlRGF0YS5sZW5ndGhcclxufSk7XHJcblxyXG5jb25zdCB1cGRhdGVDdXJyZW50UGFnZURldGFpbHNPbkRhdGFMZW5ndGhDaGFuZ2UgPSAocGFnaW5hdG9yOk1hdFBhZ2luYXRvcikgPT4gKCkgPT4gKHtjdXJyZW50U3RhcnQ6KHBhZ2luYXRvci5wYWdlSW5kZXggKiBwYWdpbmF0b3IucGFnZVNpemUpICsgMSxcclxuICBjdXJyZW50RW5kOiBNYXRoLm1pbihwYWdpbmF0b3IubGVuZ3RoICwgKChwYWdpbmF0b3IucGFnZUluZGV4ICsgMSkgKiBwYWdpbmF0b3IucGFnZVNpemUpKSxcclxuICB0b3RhbDpwYWdpbmF0b3IubGVuZ3RofSlcclxuXHJcbmNvbnN0IGRlbGF5VG9BbGxvd0ZvclByb3BlclVwZGF0ZSA9IGRlbGF5PGFueVtdPigwLGFzeW5jU2NoZWR1bGVyKTtcclxuXHJcbmludGVyZmFjZSBDdXJyZW50UGFnZURldGFpbHMge1xyXG4gIGN1cnJlbnRTdGFydDpudW1iZXIsXHJcbiAgY3VycmVudEVuZDpudW1iZXIsXHJcbiAgdG90YWw6bnVtYmVyXHJcbn1cclxuXHJcbmNvbnN0IG1ldGFEYXRhUGFnZVNpemVDaGFuZ2UgPSAoc3RhdGU6VGFibGVTdG9yZSkgPT4gc3RhdGUuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnBhZ2VTaXplIHx8IHN0YXRlLnBhZ2VTaXplKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcblxyXG5jb25zdCBzZXRQYWdpbmF0b3JQYWdlU2l6ZSA9IChwYWdpbmF0b3I6TWF0UGFnaW5hdG9yKSA9PiAocGFnZVNpemU6IG51bWJlcikgPT5cclxuICBwYWdpbmF0b3IuX2NoYW5nZVBhZ2VTaXplKHBhZ2VTaXplKTtcclxuXHJcbmNvbnN0IG9uUGFnaW5hdG9yUGFnZVNpemVDaGFuZ2UgPSAocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpID0+IHBhZ2luYXRvci5wYWdlLnBpcGUobWFwKCBlID0+IGUucGFnZVNpemUgKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7Il19
@@ -0,0 +1,23 @@
1
+ import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
2
+ import { TableStore } from '../../classes/table-store';
3
+ import { MatChipsModule } from '@angular/material/chips';
4
+ import { LetDirective } from '@ngrx/component';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import { SpaceCasePipe } from '../../../utilities';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/chips";
9
+ import * as i2 from "@angular/material/icon";
10
+ export class GroupByListComponent {
11
+ constructor() {
12
+ this.tableStore = inject(TableStore);
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GroupByListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: GroupByListComponent, isStandalone: true, selector: "group-by-list", ngImport: i0, template: "<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span class=\"tb-group-label\">Group By:</span>\r\n @for (groupByKey of groupByKeys; track groupByKey) {\r\n @if($index > 0){\r\n <mat-icon class=\"nested-arrow\">arrow_right</mat-icon>\r\n }\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n</mat-chip-set>\r\n", styles: [".tb-group-label{padding-right:5px}.nested-arrow{margin-right:-8px;margin-left:-8px}\n"], dependencies: [{ kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i1.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i1.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GroupByListComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'group-by-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
20
+ MatChipsModule, LetDirective, MatIconModule, SpaceCasePipe
21
+ ], template: "<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span class=\"tb-group-label\">Group By:</span>\r\n @for (groupByKey of groupByKeys; track groupByKey) {\r\n @if($index > 0){\r\n <mat-icon class=\"nested-arrow\">arrow_right</mat-icon>\r\n }\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n</mat-chip-set>\r\n", styles: [".tb-group-label{padding-right:5px}.nested-arrow{margin-right:-8px;margin-left:-8px}\n"] }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dyb3VwLWJ5LWxpc3QvZ3JvdXAtYnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dyb3VwLWJ5LWxpc3QvZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBWW5ELE1BQU0sT0FBTyxvQkFBb0I7SUFWakM7UUFZRSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ2pDOzhHQUhZLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHlFQ2pCakMscWVBWUEsOElERUksY0FBYyxtaEJBQUUsWUFBWSxnR0FBRSxhQUFhLCtLQUFFLGFBQWE7OzJGQUdqRCxvQkFBb0I7a0JBVmhDLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxjQUFjLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhO3FCQUMzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBMZXREaXJlY3RpdmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFNwYWNlQ2FzZVBpcGUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdncm91cC1ieS1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRDaGlwc01vZHVsZSwgTGV0RGlyZWN0aXZlLCBNYXRJY29uTW9kdWxlLCBTcGFjZUNhc2VQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBCeUxpc3RDb21wb25lbnQge1xyXG4gIFxyXG4gIHRhYmxlU3RvcmUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbn1cclxuIiwiPG1hdC1jaGlwLXNldCAqbmdyeExldD1cInRhYmxlU3RvcmUuZ3JvdXBCeUtleXMkIGFzIGdyb3VwQnlLZXlzXCI+XHJcbiAgPHNwYW4gY2xhc3M9XCJ0Yi1ncm91cC1sYWJlbFwiPkdyb3VwIEJ5Ojwvc3Bhbj5cclxuICBAZm9yIChncm91cEJ5S2V5IG9mIGdyb3VwQnlLZXlzOyB0cmFjayBncm91cEJ5S2V5KSB7XHJcbiAgICBAaWYoJGluZGV4ID4gMCl7XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm5lc3RlZC1hcnJvd1wiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgIH1cclxuICAgIDxtYXQtY2hpcCAocmVtb3ZlZCk9XCJ0YWJsZVN0b3JlLnJlbW92ZUdyb3VwQnlLZXkoZ3JvdXBCeUtleSlcIj5cclxuICAgICAge3tncm91cEJ5S2V5IHwgc3BhY2VDYXNlfX1cclxuICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWNoaXA+XHJcbiAgfVxyXG48L21hdC1jaGlwLXNldD5cclxuIl19