@one-paragon/angular-utilities 1.2.12 → 1.2.13

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 (407) 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 +47 -0
  11. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +51 -0
  12. package/esm2022/http-request-state/HttpRequestStateStore.mjs +121 -0
  13. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +30 -0
  14. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +23 -0
  15. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +23 -0
  16. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +23 -0
  17. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +29 -0
  18. package/esm2022/http-request-state/directives/index.mjs +6 -0
  19. package/esm2022/http-request-state/directives/request-state-directive.mjs +61 -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 +71 -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 +6 -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/rxjs/subscriber.directive.mjs +50 -0
  40. package/esm2022/table-builder/classes/DefaultSettings.mjs +6 -0
  41. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +23 -0
  42. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +18 -0
  43. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +45 -0
  44. package/esm2022/table-builder/classes/TableState.mjs +49 -0
  45. package/esm2022/table-builder/classes/data-store.mjs +15 -0
  46. package/esm2022/table-builder/classes/display-col.mjs +2 -0
  47. package/esm2022/table-builder/classes/filter-info.mjs +61 -0
  48. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +112 -0
  49. package/esm2022/table-builder/classes/table-builder.mjs +77 -0
  50. package/esm2022/table-builder/classes/table-store.mjs +383 -0
  51. package/esm2022/table-builder/components/array-column.component.mjs +53 -0
  52. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +134 -0
  53. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +45 -0
  54. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +29 -0
  55. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +24 -0
  56. package/esm2022/table-builder/components/filter/filter.component.mjs +64 -0
  57. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +102 -0
  58. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +47 -0
  59. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +301 -0
  60. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +100 -0
  61. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +21 -0
  62. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +103 -0
  63. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +65 -0
  64. package/esm2022/table-builder/components/index.mjs +10 -0
  65. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +47 -0
  66. package/esm2022/table-builder/components/link-column.component.mjs +74 -0
  67. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +29 -0
  68. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +64 -0
  69. package/esm2022/table-builder/components/scroll-strategy.mjs +60 -0
  70. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +46 -0
  71. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +82 -0
  72. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +26 -0
  73. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +135 -0
  74. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +83 -0
  75. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +71 -0
  76. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +36 -0
  77. package/esm2022/table-builder/components/table-container/table-container.mjs +327 -0
  78. package/esm2022/table-builder/components/table-container/tableProps.mjs +8 -0
  79. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +151 -0
  80. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +44 -0
  81. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +36 -0
  82. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +25 -0
  83. package/esm2022/table-builder/directives/custom-cell-directive.mjs +73 -0
  84. package/esm2022/table-builder/directives/index.mjs +6 -0
  85. package/esm2022/table-builder/directives/multi-sort.directive.mjs +50 -0
  86. package/esm2022/table-builder/directives/resize-column.directive.mjs +87 -0
  87. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +18 -0
  88. package/esm2022/table-builder/directives/tb-filter.directive.mjs +396 -0
  89. package/esm2022/table-builder/enums/filterTypes.mjs +29 -0
  90. package/esm2022/table-builder/functions/boolean-filter-function.mjs +10 -0
  91. package/esm2022/table-builder/functions/date-filter-function.mjs +58 -0
  92. package/esm2022/table-builder/functions/download-data.mjs +12 -0
  93. package/esm2022/table-builder/functions/null-filter-function.mjs +8 -0
  94. package/esm2022/table-builder/functions/number-filter-function.mjs +32 -0
  95. package/esm2022/table-builder/functions/sort-data-function.mjs +17 -0
  96. package/esm2022/table-builder/functions/string-filter-function.mjs +41 -0
  97. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +2 -0
  98. package/esm2022/table-builder/interfaces/dictionary.mjs +2 -0
  99. package/esm2022/table-builder/interfaces/report-def.mjs +50 -0
  100. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +154 -0
  101. package/esm2022/table-builder/pipes/column-total.pipe.mjs +22 -0
  102. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +18 -0
  103. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +43 -0
  104. package/esm2022/table-builder/pipes/key-display.mjs +18 -0
  105. package/esm2022/table-builder/services/export-to-csv.service.mjs +75 -0
  106. package/esm2022/table-builder/services/link-creator.service.mjs +50 -0
  107. package/esm2022/table-builder/services/table-template-service.mjs +60 -0
  108. package/esm2022/table-builder/services/transform-creator.mjs +100 -0
  109. package/esm2022/table-builder/table-builder.module.mjs +124 -0
  110. package/esm2022/utilities/array-helpers.mjs +14 -0
  111. package/esm2022/utilities/directives/auto-focus.directive.mjs +25 -0
  112. package/esm2022/utilities/directives/clickEmitterDirective.mjs +22 -0
  113. package/esm2022/utilities/directives/clickSubject.mjs +29 -0
  114. package/esm2022/utilities/directives/conditional-classes.directive.mjs +36 -0
  115. package/esm2022/utilities/directives/dialog-service.mjs +21 -0
  116. package/esm2022/utilities/directives/dialog.mjs +145 -0
  117. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +59 -0
  118. package/esm2022/utilities/directives/prevent-enter.directive.mjs +20 -0
  119. package/esm2022/utilities/directives/stop-propagation.directive.mjs +26 -0
  120. package/esm2022/utilities/directives/styler.mjs +41 -0
  121. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +28 -0
  122. package/esm2022/utilities/index.mjs +16 -0
  123. package/esm2022/utilities/module.mjs +90 -0
  124. package/esm2022/utilities/pipes/function.pipe.mjs +22 -0
  125. package/esm2022/utilities/pipes/phone.pipe.mjs +20 -0
  126. package/esm2022/utilities/pipes/space-case.pipes.mjs +28 -0
  127. package/fesm2022/one-paragon-angular-utilities.mjs +5670 -0
  128. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -0
  129. package/http-request-state/HttpRequestStateFactory.d.ts +17 -0
  130. package/http-request-state/HttpRequestStateStore.d.ts +54 -0
  131. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +14 -0
  132. package/http-request-state/directives/http-error-state-directive.d.ts +9 -0
  133. package/http-request-state/directives/http-inProgress-state-directive.d.ts +9 -0
  134. package/http-request-state/directives/http-notStarted-state-directive.d.ts +9 -0
  135. package/http-request-state/directives/http-success-state-directive.d.ts +16 -0
  136. package/{src/http-request-state/directives/index.ts → http-request-state/directives/index.d.ts} +5 -5
  137. package/http-request-state/directives/request-state-directive.d.ts +34 -0
  138. package/http-request-state/helpers.d.ts +9 -0
  139. package/http-request-state/http-request-state.d.ts +12 -0
  140. package/http-request-state/http-state-module.d.ts +11 -0
  141. package/{src/http-request-state/index.ts → http-request-state/index.d.ts} +6 -6
  142. package/http-request-state/rxjs/getRequestorBody.d.ts +3 -0
  143. package/http-request-state/rxjs/getRequestorState.d.ts +3 -0
  144. package/{src/http-request-state/rxjs/index.ts → http-request-state/rxjs/index.d.ts} +4 -4
  145. package/http-request-state/rxjs/tapError.d.ts +3 -0
  146. package/http-request-state/rxjs/tapSuccess.d.ts +3 -0
  147. package/http-request-state/types.d.ts +41 -0
  148. package/index.d.ts +5 -0
  149. package/ngrx/actionable-selector.d.ts +17 -0
  150. package/ngrx/index.d.ts +1 -0
  151. package/package.json +30 -16
  152. package/{src/public-api.ts → public-api.d.ts} +16 -35
  153. package/rxjs/defaultShareReplay.d.ts +2 -0
  154. package/{src/rxjs/index.ts → rxjs/index.d.ts} +5 -5
  155. package/rxjs/mapError.d.ts +2 -0
  156. package/rxjs/rxjs-operators.d.ts +13 -0
  157. package/rxjs/subjectifier.d.ts +8 -0
  158. package/rxjs/subscriber.directive.d.ts +14 -0
  159. package/table-builder/classes/DefaultSettings.d.ts +9 -0
  160. package/table-builder/classes/MatTableObservableDataSource.d.ts +9 -0
  161. package/table-builder/classes/TableBuilderConfig.d.ts +21 -0
  162. package/table-builder/classes/TableBuilderDataSource.d.ts +12 -0
  163. package/table-builder/classes/TableState.d.ts +67 -0
  164. package/table-builder/classes/data-store.d.ts +8 -0
  165. package/{src/table-builder/classes/display-col.ts → table-builder/classes/display-col.d.ts} +5 -5
  166. package/table-builder/classes/filter-info.d.ts +35 -0
  167. package/table-builder/classes/table-builder-general-settings.d.ts +78 -0
  168. package/table-builder/classes/table-builder.d.ts +18 -0
  169. package/table-builder/classes/table-store.d.ts +138 -0
  170. package/table-builder/components/array-column.component.d.ts +15 -0
  171. package/table-builder/components/column-builder/column-builder.component.d.ts +47 -0
  172. package/table-builder/components/column-builder/column-helpers.d.ts +36 -0
  173. package/table-builder/components/date-filter/date-filter.component.d.ts +37 -0
  174. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +37 -0
  175. package/table-builder/components/filter/filter.component.d.ts +46 -0
  176. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +24 -0
  177. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +17 -0
  178. package/table-builder/components/generic-table/generic-table.component.d.ts +83 -0
  179. package/table-builder/components/generic-table/paginator.component.d.ts +30 -0
  180. package/table-builder/components/group-by-list/group-by-list.component.d.ts +7 -0
  181. package/table-builder/components/header-menu/header-menu.component.d.ts +51 -0
  182. package/table-builder/components/in-filter/in-filter.component.d.ts +20 -0
  183. package/{src/table-builder/components/index.ts → table-builder/components/index.d.ts} +9 -9
  184. package/table-builder/components/initialization-component/initialization-component.d.ts +13 -0
  185. package/table-builder/components/link-column.component.d.ts +25 -0
  186. package/table-builder/components/number-filter/number-filter.component.d.ts +39 -0
  187. package/table-builder/components/profiles-menu/profiles-menu.component.d.ts +32 -0
  188. package/table-builder/components/scroll-strategy.d.ts +22 -0
  189. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +24 -0
  190. package/table-builder/components/sort-menu/sort-menu.component.d.ts +24 -0
  191. package/{src/table-builder/components/table-container/table-container-imports.ts → table-builder/components/table-container/table-container-imports.d.ts} +14 -32
  192. package/table-builder/components/table-container/table-container.d.ts +79 -0
  193. package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +6 -0
  194. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +17 -0
  195. package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +17 -0
  196. package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +8 -0
  197. package/table-builder/components/table-container/tableProps.d.ts +12 -0
  198. package/table-builder/components/table-container/virtual-scroll-container.d.ts +35 -0
  199. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +15 -0
  200. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +12 -0
  201. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +14 -0
  202. package/table-builder/directives/custom-cell-directive.d.ts +33 -0
  203. package/{src/table-builder/directives/index.ts → table-builder/directives/index.d.ts} +5 -6
  204. package/table-builder/directives/multi-sort.directive.d.ts +10 -0
  205. package/table-builder/directives/resize-column.directive.d.ts +43 -0
  206. package/table-builder/directives/table-wrapper.directive.d.ts +8 -0
  207. package/table-builder/directives/tb-filter.directive.d.ts +115 -0
  208. package/table-builder/enums/filterTypes.d.ts +36 -0
  209. package/table-builder/functions/boolean-filter-function.d.ts +3 -0
  210. package/table-builder/functions/date-filter-function.d.ts +4 -0
  211. package/table-builder/functions/download-data.d.ts +1 -0
  212. package/table-builder/functions/null-filter-function.d.ts +2 -0
  213. package/table-builder/functions/number-filter-function.d.ts +4 -0
  214. package/table-builder/functions/sort-data-function.d.ts +6 -0
  215. package/table-builder/functions/string-filter-function.d.ts +5 -0
  216. package/{src/table-builder/interfaces/ColumnInfo.ts → table-builder/interfaces/ColumnInfo.d.ts} +6 -7
  217. package/{src/table-builder/interfaces/dictionary.ts → table-builder/interfaces/dictionary.d.ts} +3 -3
  218. package/table-builder/interfaces/report-def.d.ts +147 -0
  219. package/table-builder/ngrx/tableBuilderStateStore.d.ts +70 -0
  220. package/table-builder/pipes/column-total.pipe.d.ts +8 -0
  221. package/table-builder/pipes/format-filter-type.pipe.d.ts +8 -0
  222. package/table-builder/pipes/format-filter-value.pipe.d.ts +12 -0
  223. package/table-builder/pipes/key-display.d.ts +10 -0
  224. package/table-builder/services/export-to-csv.service.d.ts +14 -0
  225. package/table-builder/services/link-creator.service.d.ts +16 -0
  226. package/table-builder/services/table-template-service.d.ts +14 -0
  227. package/table-builder/services/transform-creator.d.ts +16 -0
  228. package/table-builder/table-builder.module.d.ts +21 -0
  229. package/utilities/array-helpers.d.ts +1 -0
  230. package/utilities/directives/auto-focus.directive.d.ts +9 -0
  231. package/utilities/directives/clickEmitterDirective.d.ts +7 -0
  232. package/utilities/directives/clickSubject.d.ts +9 -0
  233. package/utilities/directives/conditional-classes.directive.d.ts +13 -0
  234. package/utilities/directives/dialog-service.d.ts +10 -0
  235. package/utilities/directives/dialog.d.ts +44 -0
  236. package/utilities/directives/mat-toggle-group-directive.d.ts +21 -0
  237. package/utilities/directives/prevent-enter.directive.d.ts +6 -0
  238. package/utilities/directives/stop-propagation.directive.d.ts +7 -0
  239. package/utilities/directives/styler.d.ts +15 -0
  240. package/utilities/directives/trim-whitespace.directive.d.ts +7 -0
  241. package/{src/utilities/index.ts → utilities/index.d.ts} +15 -22
  242. package/utilities/module.d.ts +19 -0
  243. package/utilities/pipes/function.pipe.d.ts +7 -0
  244. package/utilities/pipes/phone.pipe.d.ts +7 -0
  245. package/utilities/pipes/space-case.pipes.d.ts +17 -0
  246. package/karma.conf.js +0 -44
  247. package/ng-package.json +0 -7
  248. package/src/action-state/action-state-spinner/action-state-spinner.component.css +0 -16
  249. package/src/action-state/action-state-spinner/action-state-spinner.component.html +0 -6
  250. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +0 -25
  251. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +0 -26
  252. package/src/action-state/action-state-ui/action-state-ui.module.ts +0 -13
  253. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +0 -15
  254. package/src/action-state/ngrx.ts +0 -69
  255. package/src/http-request-state/HttpRequestStateFactory.ts +0 -66
  256. package/src/http-request-state/HttpRequestStateStore.ts +0 -173
  257. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +0 -29
  258. package/src/http-request-state/directives/http-error-state-directive.ts +0 -21
  259. package/src/http-request-state/directives/http-inProgress-state-directive.ts +0 -19
  260. package/src/http-request-state/directives/http-notStarted-state-directive.ts +0 -19
  261. package/src/http-request-state/directives/http-success-state-directive.ts +0 -29
  262. package/src/http-request-state/directives/request-state-directive.spec.ts +0 -72
  263. package/src/http-request-state/directives/request-state-directive.ts +0 -78
  264. package/src/http-request-state/helpers.ts +0 -30
  265. package/src/http-request-state/http-request-state.ts +0 -69
  266. package/src/http-request-state/http-state-module.ts +0 -23
  267. package/src/http-request-state/observable.spec.ts +0 -43
  268. package/src/http-request-state/rxjs/getRequestorBody.ts +0 -10
  269. package/src/http-request-state/rxjs/getRequestorState.ts +0 -8
  270. package/src/http-request-state/rxjs/tapError.ts +0 -16
  271. package/src/http-request-state/rxjs/tapSuccess.ts +0 -16
  272. package/src/http-request-state/strategies.spec.ts +0 -42
  273. package/src/http-request-state/types.ts +0 -55
  274. package/src/ngrx/actionable-selector.ts +0 -95
  275. package/src/ngrx/index.ts +0 -1
  276. package/src/rxjs/defaultShareReplay.ts +0 -8
  277. package/src/rxjs/mapError.ts +0 -8
  278. package/src/rxjs/rxjs-operators.ts +0 -132
  279. package/src/rxjs/subjectifier.ts +0 -17
  280. package/src/rxjs/subscriber.directive.ts +0 -57
  281. package/src/specs/clickSubject.spec.ts +0 -95
  282. package/src/specs/dialog.spec.ts +0 -101
  283. package/src/specs/toggleGroupDirective.spec.ts +0 -229
  284. package/src/table-builder/classes/DefaultSettings.ts +0 -11
  285. package/src/table-builder/classes/MatTableObservableDataSource.ts +0 -23
  286. package/src/table-builder/classes/TableBuilderConfig.ts +0 -35
  287. package/src/table-builder/classes/TableBuilderDataSource.ts +0 -80
  288. package/src/table-builder/classes/TableState.ts +0 -96
  289. package/src/table-builder/classes/data-store.ts +0 -10
  290. package/src/table-builder/classes/filter-info.ts +0 -108
  291. package/src/table-builder/classes/table-builder-general-settings.ts +0 -129
  292. package/src/table-builder/classes/table-builder.ts +0 -94
  293. package/src/table-builder/classes/table-store.ts +0 -471
  294. package/src/table-builder/components/array-column.component.ts +0 -36
  295. package/src/table-builder/components/column-builder/column-builder.component.html +0 -61
  296. package/src/table-builder/components/column-builder/column-builder.component.scss +0 -43
  297. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +0 -49
  298. package/src/table-builder/components/column-builder/column-builder.component.ts +0 -135
  299. package/src/table-builder/components/column-builder/column-helpers.ts +0 -53
  300. package/src/table-builder/components/date-filter/date-filter.component.html +0 -23
  301. package/src/table-builder/components/date-filter/date-filter.component.ts +0 -24
  302. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +0 -9
  303. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +0 -22
  304. package/src/table-builder/components/filter/filter.component.html +0 -91
  305. package/src/table-builder/components/filter/filter.component.scss +0 -64
  306. package/src/table-builder/components/filter/filter.component.spec.ts +0 -87
  307. package/src/table-builder/components/filter/filter.component.ts +0 -60
  308. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +0 -93
  309. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +0 -55
  310. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +0 -57
  311. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +0 -59
  312. package/src/table-builder/components/generic-table/generic-table.component.html +0 -78
  313. package/src/table-builder/components/generic-table/generic-table.component.scss +0 -42
  314. package/src/table-builder/components/generic-table/generic-table.component.ts +0 -299
  315. package/src/table-builder/components/generic-table/paginator.component.ts +0 -99
  316. package/src/table-builder/components/group-by-list/group-by-list.component.css +0 -8
  317. package/src/table-builder/components/group-by-list/group-by-list.component.html +0 -12
  318. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +0 -23
  319. package/src/table-builder/components/group-by-list/group-by-list.component.ts +0 -21
  320. package/src/table-builder/components/header-menu/header-menu.component.html +0 -104
  321. package/src/table-builder/components/header-menu/header-menu.component.scss +0 -96
  322. package/src/table-builder/components/header-menu/header-menu.component.ts +0 -99
  323. package/src/table-builder/components/in-filter/in-filter.component.css +0 -3
  324. package/src/table-builder/components/in-filter/in-filter.component.html +0 -20
  325. package/src/table-builder/components/in-filter/in-filter.component.ts +0 -66
  326. package/src/table-builder/components/initialization-component/initialization-component.html +0 -29
  327. package/src/table-builder/components/initialization-component/initialization-component.ts +0 -24
  328. package/src/table-builder/components/link-column.component.ts +0 -47
  329. package/src/table-builder/components/number-filter/number-filter.component.css +0 -10
  330. package/src/table-builder/components/number-filter/number-filter.component.html +0 -19
  331. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +0 -30
  332. package/src/table-builder/components/number-filter/number-filter.component.ts +0 -25
  333. package/src/table-builder/components/profiles-menu/profiles-menu.component.html +0 -74
  334. package/src/table-builder/components/profiles-menu/profiles-menu.component.scss +0 -98
  335. package/src/table-builder/components/profiles-menu/profiles-menu.component.spec.ts +0 -23
  336. package/src/table-builder/components/profiles-menu/profiles-menu.component.ts +0 -65
  337. package/src/table-builder/components/scroll-strategy.ts +0 -76
  338. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +0 -66
  339. package/src/table-builder/components/sort-menu/sort-menu.component.html +0 -111
  340. package/src/table-builder/components/sort-menu/sort-menu.component.scss +0 -119
  341. package/src/table-builder/components/sort-menu/sort-menu.component.ts +0 -98
  342. package/src/table-builder/components/table-container/table-container.css +0 -54
  343. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +0 -141
  344. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +0 -106
  345. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +0 -86
  346. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +0 -45
  347. package/src/table-builder/components/table-container/table-container.html +0 -95
  348. package/src/table-builder/components/table-container/table-container.spec.ts +0 -154
  349. package/src/table-builder/components/table-container/table-container.ts +0 -356
  350. package/src/table-builder/components/table-container/tableProps.ts +0 -20
  351. package/src/table-builder/components/table-container/virtual-scroll-container.ts +0 -145
  352. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +0 -31
  353. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +0 -46
  354. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +0 -42
  355. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +0 -10
  356. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +0 -86
  357. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +0 -34
  358. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +0 -23
  359. package/src/table-builder/directives/custom-cell-directive.ts +0 -58
  360. package/src/table-builder/directives/multi-sort.directive.spec.ts +0 -124
  361. package/src/table-builder/directives/multi-sort.directive.ts +0 -51
  362. package/src/table-builder/directives/resize-column.directive.ts +0 -108
  363. package/src/table-builder/directives/table-wrapper.directive.ts +0 -14
  364. package/src/table-builder/directives/tb-filter.directive.ts +0 -396
  365. package/src/table-builder/enums/filterTypes.ts +0 -40
  366. package/src/table-builder/functions/boolean-filter-function.ts +0 -12
  367. package/src/table-builder/functions/date-filter-function.ts +0 -68
  368. package/src/table-builder/functions/download-data.ts +0 -11
  369. package/src/table-builder/functions/null-filter-function.ts +0 -9
  370. package/src/table-builder/functions/number-filter-function.ts +0 -41
  371. package/src/table-builder/functions/sort-data-function.ts +0 -23
  372. package/src/table-builder/functions/string-filter-function.ts +0 -51
  373. package/src/table-builder/interfaces/column-template.ts +0 -9
  374. package/src/table-builder/interfaces/report-def.ts +0 -155
  375. package/src/table-builder/ngrx/tableBuilderStateStore.ts +0 -199
  376. package/src/table-builder/pipes/column-total.pipe.ts +0 -17
  377. package/src/table-builder/pipes/format-filter-type.pipe.ts +0 -12
  378. package/src/table-builder/pipes/format-filter-value.pipe.ts +0 -42
  379. package/src/table-builder/pipes/key-display.ts +0 -16
  380. package/src/table-builder/services/export-to-csv.service.ts +0 -97
  381. package/src/table-builder/services/link-creator.service.ts +0 -67
  382. package/src/table-builder/services/table-template-service.ts +0 -59
  383. package/src/table-builder/services/transform-creator.ts +0 -95
  384. package/src/table-builder/specs/table-custom-filters.spec.ts +0 -262
  385. package/src/table-builder/styles/collapser.styles.scss +0 -16
  386. package/src/table-builder/table-builder.module.ts +0 -73
  387. package/src/test.ts +0 -17
  388. package/src/utilities/array-helpers.ts +0 -13
  389. package/src/utilities/directives/auto-focus.directive.ts +0 -21
  390. package/src/utilities/directives/clickEmitterDirective.ts +0 -16
  391. package/src/utilities/directives/clickSubject.ts +0 -20
  392. package/src/utilities/directives/conditional-classes.directive.ts +0 -36
  393. package/src/utilities/directives/dialog-service.ts +0 -19
  394. package/src/utilities/directives/dialog.ts +0 -144
  395. package/src/utilities/directives/mat-toggle-group-directive.ts +0 -61
  396. package/src/utilities/directives/prevent-enter.directive.ts +0 -13
  397. package/src/utilities/directives/stop-propagation.directive.ts +0 -20
  398. package/src/utilities/directives/styler.ts +0 -40
  399. package/src/utilities/directives/trim-whitespace.directive.ts +0 -21
  400. package/src/utilities/module.ts +0 -55
  401. package/src/utilities/pipes/function.pipe.ts +0 -16
  402. package/src/utilities/pipes/phone.pipe.ts +0 -15
  403. package/src/utilities/pipes/space-case.pipes.spec.ts +0 -47
  404. package/src/utilities/pipes/space-case.pipes.ts +0 -23
  405. package/tsconfig.lib.json +0 -19
  406. package/tsconfig.lib.prod.json +0 -10
  407. package/tsconfig.spec.json +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-paragon-angular-utilities.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/http-request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/rxjs/subscriber.directive.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateFactory.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/utilities/array-helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.html","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-helpers.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/classes/data-store.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/ngrx/tableBuilderStateStore.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/components/scroll-strategy.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/virtual-scroll-container.ts","../../../projects/angular-utilities/src/table-builder/components/profiles-menu/profiles-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/profiles-menu/profiles-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container-imports.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/tableProps.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.html","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/one-paragon-angular-utilities.ts"],"sourcesContent":["import { Injector } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nexport enum HttpRequestStatus {\r\n notStarted,\r\n inProgress,\r\n success,\r\n fail,\r\n cancelled,\r\n }\r\n\r\n export type HttpRequestStateCancelled = {\r\n status: HttpRequestStatus.cancelled\r\n }\r\n\r\n export type HttpRequestStateNotStarted = {\r\n status: HttpRequestStatus.notStarted\r\n }\r\n\r\n export type HttpRequestStateInProgress = {\r\n status: HttpRequestStatus.inProgress\r\n }\r\n\r\n export type HttpRequestStateSuccess<T> = {\r\n status: HttpRequestStatus.success;\r\n body: T;\r\n }\r\n\r\n export type HttpRequestStateError = {\r\n status: HttpRequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\n export type HttpRequestState<T = any> =\r\n HttpRequestStateCancelled |\r\n HttpRequestStateNotStarted |\r\n HttpRequestStateInProgress |\r\n HttpRequestStateSuccess<T> |\r\n HttpRequestStateError ;\r\n\r\nexport enum HttpRequestStrategy {\r\n concurrent = 1,\r\n singleUse = 2,\r\n cancelPrevious = 3,\r\n sequential = 4,\r\n}\r\nexport interface RequestStateOptions<TParam extends any[] = any> {\r\n strategy?: HttpRequestStrategy;\r\n autoRequestWith?: [...TParam];\r\n injector?: Injector;\r\n}\r\n\r\nexport interface RequestCreatorOptions<TParam extends any[] = any> extends RequestStateOptions<TParam> {}\r\n\r\nexport type HttpRequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { HttpRequestState, HttpRequestStateError, HttpRequestStateInProgress, HttpRequestStateNotStarted, HttpRequestStateSuccess, HttpRequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: HttpRequestState<T>): state is HttpRequestStateError {\r\n return state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: HttpRequestState<T>): state is HttpRequestStateSuccess<T> {\r\n return state.status === HttpRequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: HttpRequestState<T>): state is (HttpRequestStateSuccess<T> | HttpRequestStateError) {\r\n return state.status === HttpRequestStatus.success || state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): HttpRequestStateSuccess<T> {\r\n return { status: HttpRequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): HttpRequestStateError {\r\n return { status: HttpRequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: HttpRequestStateNotStarted = { status: HttpRequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: HttpRequestStateInProgress = { status: HttpRequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: HttpRequestStatus) {\r\n return [HttpRequestStatus.success, HttpRequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\n\r\nexport function defaultShareReplay<T>() {\r\n return function (src: Observable<T>): Observable<T> {\r\n return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\r\n };\r\n}","import { Directive, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n $implicit?: HttpRequestStateAny<T>;\r\n state?: HttpRequestStateAny<T>;\r\n status: {\r\n inProgress: boolean;\r\n notStarted: boolean;\r\n success: boolean;\r\n error: boolean;\r\n };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]', standalone: true })\r\nexport class HttpRequestStateDirective<TParam extends any[], V, R, T = R extends null ? V : R> {\r\n private viewContainer: ViewContainerRef;\r\n\r\n readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n $implicit: undefined,\r\n state: undefined,\r\n status: {\r\n inProgress: false,\r\n notStarted: true,\r\n success: false,\r\n error: false,\r\n }\r\n };\r\n\r\n\r\n subject = new Subject<Observable<HttpRequestState<T>>>();\r\n state = this.subject.pipe(switchAll(), defaultShareReplay());\r\n subscription: Unsubscribable;\r\n hooks: ((state: HttpRequestState<T>) => void)[] = [];\r\n\r\n @Input('httpRequestState') set stateStore(store: HttpRequestStateStore<TParam, V, R, T> | Observable<HttpRequestState<T>>) {\r\n if (isObservable(store)) {\r\n this.subject.next(store);\r\n } else {\r\n this.subject.next(store.state$.pipe(map(state => state.response)));\r\n }\r\n\r\n }\r\n constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef) {\r\n this.viewContainer = viewContainer;\r\n this.viewContainer.createEmbeddedView(templateRef, this.ViewContext);\r\n this.subscription = this.state.subscribe(state => {\r\n this.ViewContext.$implicit = state;\r\n this.ViewContext.state = state;\r\n this.ViewContext.status.inProgress = state.status === HttpRequestStatus.inProgress;\r\n this.ViewContext.status.notStarted = state.status === HttpRequestStatus.notStarted;\r\n this.ViewContext.status.success = state.status === HttpRequestStatus.success;\r\n this.ViewContext.status.error = state.status === HttpRequestStatus.fail;\r\n this.hooks.forEach(hook => hook(state));\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.viewContainer.clear();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpRequestStateDirective<any, V, R>, ctx: any): ctx is HttpRequestStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport type HttpRequestStateAny<T> = {\r\n status: HttpRequestStatus;\r\n body?: T;\r\n error?: any;\r\n}\r\n","import { Directive, inject, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase<V, R = null> {\r\n hasView = false;\r\n private injector = inject(Injector);\r\n protected templateRef = inject(TemplateRef<{ $implicit: R extends null ? V : R }>);\r\n protected viewContainer = inject(ViewContainerRef);\r\n ngOnInit() {\r\n const parent = this.injector.get(HttpRequestStateDirective);\r\n if (parent == null) {\r\n throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n }\r\n parent.hooks.push(this.baseRender);\r\n this.baseRender(parent.ViewContext.state);\r\n }\r\n\r\n private baseRender = (state: HttpRequestState): void => {\r\n if (this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n this.hasView = this.render(state);\r\n }\r\n\r\n abstract render: (state: HttpRequestState) => boolean;\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]', standalone: true })\r\nexport class HttpErrorStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> {\r\n\r\n\r\n render = (state: HttpRequestState<any>) => {\r\n if (isErrorState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}","import { Directive } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]', standalone: true })\r\nexport class HttpInProgressStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.inProgress){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]', standalone: true })\r\nexport class HttpNotStartedStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.notStarted){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpSuccessStateViewContext<T> {\r\n $implicit: T;\r\n}\r\n@Directive({ selector: '[httpSuccessState]', standalone: true })\r\nexport class HttpSuccessStateDirective<V, R = null> extends HttpStateDirectiveBase<V, R> {\r\n @Input() httpSuccessStateTypeSafety?: HttpRequestStateStore<any, V, R> | Observable<HttpRequestState<V>>;\r\n render = (state: HttpRequestState<R extends null ? V : R>) => {\r\n if (isSuccessState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpSuccessStateDirective<V, R>, ctx: any): ctx is HttpSuccessStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n}\r\n","import { isSuccessState } from '../helpers';\r\nimport { HttpRequestState } from '../types';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nexport const getRequestorBody = <T>(source: Observable<HttpRequestState<T>>) =>\r\n source.pipe(\r\n filter(isSuccessState),\r\n map( res => res.body)\r\n );","import { HttpRequestState } from '../types';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const getRequestorStatus = <T>(source: Observable<HttpRequestState<T>>) =>\r\n source.pipe(\r\n map( res => res.status)\r\n );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n return function (src: Observable<HttpRequestState>): Observable<HttpRequestState> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isErrorState(result)) {\r\n onError(result.error);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n return function (src: Observable<HttpRequestState<T>>): Observable<HttpRequestState<T>> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isSuccessState(result)) {\r\n onSuccess(result.body);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\r\n return function (src: Observable<T>): Observable<T | TResult> {\r\n return src.pipe(catchError(e => of(projection(e))),);\r\n };\r\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { HttpRequestFactory, HttpRequestState, HttpRequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<HttpRequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n httpState$: Observable<HttpRequestState<Res>>;\r\n status$: Observable<HttpRequestStatus>;\r\n body$: Observable<Res>;\r\n request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n return req.pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n defaultShareReplay()\r\n );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: HttpRequestFactory<TParam,T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<HttpRequestState<T>>> {\r\n const request$ = new ReplaySubject<[...TParam]>(1);\r\n const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n startWith(notStarted),\r\n defaultShareReplay(),\r\n );\r\n const request = (...params: [...TParam]) => {\r\n request$.next(params);\r\n return httpState$;\r\n };\r\n return ({\r\n request,\r\n httpState$,\r\n body$: httpState$.pipe(getRequestorBody),\r\n status$: httpState$.pipe(getRequestorStatus)\r\n });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n httpState$: Observable<HttpRequestState<T>>,\r\n request:HttpRequestFactory<TParam,TT>,\r\n requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n ): Observable<HttpRequestState<TT>> {\r\n return httpState$.pipe(\r\n switchMap( res => {\r\n if(res.status === HttpRequestStatus.success) {\r\n const secondReq = httpRequestor<[...TParam], TT>(request);\r\n const param = requestParams(res.body);\r\n secondReq.request(...param );\r\n return secondReq.httpState$;\r\n } else {\r\n return of(res);\r\n }\r\n }),\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\r\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\r\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\r\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\r\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ],\r\n exports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ]\r\n}) export class HttpRequestModule { }","import { Predicate } from '@angular/core';\r\nimport { flatten } from 'lodash';\r\nimport {\r\n filter,\r\n first,\r\n map,\r\n pairwise,\r\n startWith,\r\n Observable,\r\n combineLatest,\r\n Subscription,\r\n MonoTypeOperatorFunction,\r\n OperatorFunction,\r\n concatMap,\r\n merge,\r\n of,\r\n delay\r\n} from 'rxjs';\r\n\r\n\r\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\r\n return src.pipe(filter(predicate),first());\r\n}\r\n\r\nexport const mapArray = <T, U>(mapFunc: (src: T, index?: number) => U ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.map(mapFunc) ) );\r\n\r\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.filter(filterFunc) ) );\r\n\r\nexport const onWait = startWithIfEmpty;\r\nexport function startWithIfEmpty<T,V extends T>(val: V, wait = 0) : MonoTypeOperatorFunction<T> {\r\n return (source: Observable<T>) => {\r\n return new Observable<T>(subscriber => {\r\n let emitted = false;\r\n setTimeout(() => {\r\n if(!emitted) {\r\n subscriber.next(val);\r\n }\r\n }, wait);\r\n const sub = source.subscribe({\r\n next(x) { emitted = true; subscriber.next(x) },\r\n error(err) { emitted = true; subscriber.error(err) },\r\n complete() { emitted = true; subscriber.complete(); }\r\n });\r\n return () => sub.unsubscribe();\r\n });\r\n }\r\n\r\n}\r\n\r\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\r\n return combineLatest(\r\n sources.map( src => src.pipe(startWithIfEmpty([] as T [])))\r\n ).pipe(\r\n map( res => res.flat() )\r\n );\r\n};\r\n\r\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsciber => {\r\n let isOn = defaultState;\r\n const subscription = new Subscription();\r\n subscription.add( switchSource.subscribe( on => isOn = on ));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(isOn) {\r\n subsciber.next(value);\r\n }\r\n },\r\n error: error => subsciber.error(error),\r\n complete: () => subsciber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function skipOneWhen( skipper: Observable<any> ) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsriber => {\r\n const subscription = new Subscription();\r\n let skipNext = false;\r\n subscription.add(skipper.subscribe( _ => skipNext = true));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(skipNext) {\r\n skipNext = false;\r\n } else {\r\n subsriber.next(value);\r\n }\r\n },\r\n error: error => subsriber.error(error),\r\n complete: () => subsriber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\r\n return (source: Observable<T>) => {\r\n return source.pipe(startWith(startingValue), pairwise());\r\n }\r\n}\r\n\r\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\r\n return (source: Observable<T | null | undefined>) => {\r\n return source.pipe(filter( (o: T | null | undefined): o is T => o != null) )\r\n }\r\n}\r\n\r\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\r\n return (src: Observable<T>) => {\r\n return src.pipe(\r\n concatMap(r => {\r\n if (predicate(r)) {\r\n return merge(\r\n of({ r }),\r\n of(null).pipe(delay(delayTime))\r\n ).pipe(\r\n notNull(),\r\n map(d => d.r)\r\n );\r\n } else {\r\n return of(r);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\r\ntype PipeLike<T> = Observable<T>['pipe'];\r\nexport class Subjectifier<T> extends Observable<T>{\r\n private _subj = new Subject<T>();\r\n private merged: Observable<T>;\r\n constructor(_source: Observable<T>){\r\n super((obs: Observer<T>) => {\r\n const s = merge( _source, this._subj ).subscribe(obs);\r\n return s;\r\n });\r\n\r\n this.merged = merge(_source, this._subj);\r\n }\r\n next: Subject<T>['next'] = this._subj.next.bind(this._subj);\r\n newSubj = (...operations: Parameters<PipeLike<T>>) =>\r\n new Subjectifier(this.merged.pipe(...operations));\r\n}","import { DestroyRef, Directive, Injector, OnDestroy, assertInInjectionContext, inject } from \"@angular/core\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\n\r\n@Directive()\r\nexport class Subscriber implements OnDestroy{\r\n subscriptions: Subscription[] = [];\r\n handle = (subscription: Subscription) => {\r\n this.subscriptions.push(subscription);\r\n }\r\n on = <T = any>(obs: Observable<T>, action: (t: T) => any) => {\r\n this.handle(obs.subscribe(action));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => {\r\n subscription.unsubscribe();\r\n });\r\n }\r\n}\r\n\r\nexport function subscriber(injector: Injector): Subscriber\r\nexport function subscriber(subscription?: Subscription, injector?: Injector): Subscriber\r\nexport function subscriber<T = any>(obs: Observable<T>, action: (t: T) => any, injector?: Injector): Subscriber\r\nexport function subscriber<T = any>(obsOrSubOrInjector?: Observable<T> | Subscription | Injector, actionOrInjector?: ((t: T) => any) | Injector, injector?: Injector): Subscriber {\r\n\r\n const destroyRef = getDestroyRef(obsOrSubOrInjector, actionOrInjector, injector);\r\n\r\n const subscriber = new Subscriber();\r\n\r\n if(obsOrSubOrInjector instanceof Subscription){\r\n subscriber.handle(obsOrSubOrInjector);\r\n } else if(obsOrSubOrInjector instanceof Observable){\r\n subscriber.handle(obsOrSubOrInjector.subscribe(actionOrInjector as (t: T) => any));\r\n }\r\n\r\n destroyRef.onDestroy(() => subscriber?.ngOnDestroy());\r\n\r\n return subscriber;\r\n}\r\n\r\nfunction getDestroyRef(obsOrSubOrInjector: any, actionOrInjector?: any, injector?: Injector){\r\n const providedInjector = obsOrSubOrInjector instanceof Injector ? obsOrSubOrInjector\r\n : actionOrInjector instanceof Injector ? actionOrInjector\r\n : injector;\r\n\r\n if(!providedInjector){\r\n try {\r\n assertInInjectionContext(subscriber);\r\n } catch (error) {\r\n throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');\r\n }\r\n }\r\n\r\n const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);\r\n\r\n return destroyRef;\r\n}","import { Observable, of, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions, HttpRequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { computed, Directive, Injector, isSignal, Signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { notNull } from '../rxjs';\r\n\r\nexport interface RequestResponse<TParam extends any[], T> {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n}\r\n\r\n@Directive()\r\nexport class HttpRequestStateStore<TParam extends any[], V, R = null, T = R extends null ? V : R> extends ComponentStore<RequestResponse<TParam, T>> {\r\n private options?: RequestStateOptions;\r\n private project?: (v: V) => R;\r\n private req: HttpRequestFactory<TParam, V>;\r\n private injector?: Injector;\r\n constructor(req: HttpRequestFactory<TParam, V> ,options?: RequestStateOptions<TParam>, project?: (v: V) => R) {\r\n super({ requestParams: null as any, response: notStarted });\r\n this.project = project;\r\n this.options = options;\r\n this.injector = options?.injector;\r\n this.req = req;\r\n this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;\r\n\r\n if(options?.autoRequestWith){\r\n this.request(...options.autoRequestWith);\r\n }\r\n }\r\n\r\n reset() {\r\n this.setState({ requestParams:null as any, response: notStarted });\r\n }\r\n\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy === HttpRequestStrategy.concurrent)\r\n return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n if(this.options?.strategy === HttpRequestStrategy.sequential)\r\n return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } as HttpRequestStateCancelled } ) : this.createRequest(...params) );\r\n }\r\n\r\n private requestEffect: (value: [...TParam] ) => Subscription = this.effect((obs: Observable<[...TParam]>) => {\r\n return (obs).pipe(\r\n this.flatteningStrategy(),\r\n tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n );\r\n });\r\n\r\n private flattenedRequest = (...value: [...TParam]) => {\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n private singleUseRequest = (...value: [...TParam]) => {\r\n if (this.get().response.status !== HttpRequestStatus.notStarted) {\r\n throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n }\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n\r\n selectHttpState$ = this.state$.pipe(map(a => a.response));\r\n\r\n selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));\r\n\r\n selectError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isErrorState),\r\n map( state => state.error)\r\n );\r\n\r\n selectResponse$: Observable<T> = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessState),\r\n map( state => state.body)\r\n );\r\n selectSuccessOrError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessOrErrorState),\r\n map( () => null)\r\n );\r\n\r\n errorHandled = false;\r\n onError( cb: (error: HttpErrorResponse) => void) {\r\n this.errorHandled = true;\r\n this.on(this.selectError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccess( cb: (body?: T) => void) {\r\n this.on(this.selectResponse$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessOrError(cb: () => void){\r\n this.on(this.selectSuccessOrError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessWithRequest(func: (state: {\r\n requestParams: [...TParam];\r\n body: T;\r\n }) => void) {\r\n this.onUpdate(({ requestParams, response }) => {\r\n if(isSuccessState(response)){\r\n func({requestParams,body: response.body});\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n onErrorWithRequest(func: (state: {\r\n error: HttpErrorResponse;\r\n requestParams: [...TParam];\r\n }) => void) {\r\n this.onUpdate( ({ requestParams, response }) => {\r\n if(isErrorState(response)){\r\n func({ requestParams, error: response.error });\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam, T>> {\r\n return this.req(...params).pipe(\r\n map(re => createSuccess((this.project ? this.project(re) : re) as T)),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n map( state => ({ requestParams: params, response: state })),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n onUpdate(func: (state: {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n }) => void) {\r\n this.on(this.state$, func);\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n return this.effect((src: Observable<V>) => {\r\n return src.pipe(tap(func));\r\n })(srcObservable) as Subscription;\r\n }\r\n\r\n request: (...value: [...TParam] ) => Subscription;\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n requestWith = (params: Observable<[...TParam]> | Signal<[...TParam]>) => {\r\n if(isSignal(params)){\r\n params = toObservable(params, { injector: this.injector }).pipe(notNull());\r\n }\r\n params.pipe(takeUntil(this.destroy$)).subscribe((p) => this.request(...p));\r\n return this;\r\n }\r\n }\r\n export class CancellationToken {}\r\n export function wrapInArr<T>(sig: Signal<T>) : Signal<[T]>;\r\n export function wrapInArr<T>(obs: Observable<T>): Observable<[T]>;\r\n export function wrapInArr<T>(sigOrObs: Signal<T> | Observable<T>){\r\n return isSignal(sigOrObs) ?\r\n computed(() => [sigOrObs()])\r\n : sigOrObs.pipe(map(a => [a]));\r\n }\r\n","import { DestroyRef, Injectable, OnDestroy, assertInInjectionContext, inject } from \"@angular/core\";\r\nimport { HttpRequestFactory, RequestStateOptions, RequestCreatorOptions } from \"./types\";\r\nimport { HttpRequestStateStore } from './HttpRequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class HttpRequestStateFactory implements OnDestroy {\r\n\r\n constructor() {}\r\n ngOnDestroy(): void {\r\n this.requestors.forEach( request => request.ngOnDestroy());\r\n }\r\n private requestors: OnDestroy[] = [];\r\n\r\n create<TParam extends any[], V>( req: HttpRequestFactory<TParam, V>, options?: RequestStateOptions<TParam>) : HttpRequestStateStore<TParam, V>\r\n create<TParam extends any[], V, R, T = R>( req: HttpRequestFactory<TParam, V>, project: (v: V) => R , options?: RequestStateOptions<TParam>) : HttpRequestStateStore<TParam, V, T>\r\n create<TParam extends any[], V, R = null, T = R extends null ? V : R>( req: HttpRequestFactory<TParam, V>, optionsOrProject?: RequestStateOptions<TParam> | ((v: V) => R), options?: RequestStateOptions<TParam> ) : HttpRequestStateStore<TParam, V, R, T> {\r\n const requestor = (typeof(optionsOrProject) === 'function' ? new HttpRequestStateStore<TParam, V, R, T>(req, options, optionsOrProject) : new HttpRequestStateStore<TParam, V, R, T>(req, options));\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n createHttpClient<T>( r: (o: Observable<T> ) => Observable<T> , options?: RequestStateOptions<any> ) {\r\n const requestor = new HttpRequestStateStore(r, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n}\r\n\r\nexport function createRequestor<TParam extends any[], V>( req: HttpRequestFactory<TParam, V>, options?: RequestCreatorOptions<TParam>) : HttpRequestStateStore<TParam, V>\r\nexport function createRequestor<TParam extends any[], V, R, T = R>( req: HttpRequestFactory<TParam, V>, project: (v: V) => R , options?: RequestCreatorOptions<TParam>) : HttpRequestStateStore<TParam, V, T>\r\nexport function createRequestor<TParam extends any[], V, R = null, T = R extends null ? V : R>( req: HttpRequestFactory<TParam, V>, optionsOrProject?: RequestCreatorOptions<TParam> | ((v: V) => R), options?: RequestCreatorOptions<TParam> ) : HttpRequestStateStore<TParam, V, R, T>{\r\n\r\n const ops = isFunction(optionsOrProject) ? options : optionsOrProject;\r\n\r\n const destroyRef = getDestroyRef(ops);\r\n\r\n const requestStore = typeof(optionsOrProject) === 'function' ? \r\n new HttpRequestStateStore<TParam, V, R, T>(req, options, optionsOrProject)\r\n : new HttpRequestStateStore<TParam, V, R, T>(req, optionsOrProject);\r\n\r\n destroyRef.onDestroy(() => requestStore?.ngOnDestroy());\r\n\r\n return requestStore;\r\n}\r\n\r\nfunction isFunction(value: any): value is Function {\r\n return typeof value === 'function';\r\n}\r\n\r\nfunction getDestroyRef(options?: RequestCreatorOptions<any>){\r\n const providedInjector = options?.injector;\r\n\r\n if(!providedInjector){\r\n try {\r\n assertInInjectionContext(createRequestor);\r\n } catch (error) {\r\n throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');\r\n }\r\n }\r\n\r\n const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);\r\n\r\n return destroyRef;\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'spaceCase', standalone: true})\r\nexport class SpaceCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n return spaceCase(value);\r\n }\r\n}\r\n\r\n/**\r\n * Adds a space before uppercase letters that either\r\n * 1. follows a lowercase letter or digit\r\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\r\n * \r\n * Uppercases the first digit\r\n * \r\n * Turns underscores into spaces\r\n */\r\nexport function spaceCase(value: string){\r\n const phrase = value?.replace(/([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, '$1$3 $2$4')\r\n // uppercase the first character of every word\r\n return phrase?.replace(/(^| )(\\w)/g, x => x.toUpperCase());\r\n}\r\n","import { Dictionary } from './dictionary';\r\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\r\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\r\nimport { QueryParamsHandling } from '@angular/router';\r\n\r\n\r\nexport enum FieldType {\r\n Unknown = 0,\r\n Date = 1,\r\n Link = 2,\r\n ImageUrl = 3,\r\n Currency = 4,\r\n Array = 5,\r\n Hidden = 6,\r\n Number = 7,\r\n String = 8,\r\n Boolean = 9,\r\n PhoneNumber = 10,\r\n /**\r\n * @deprecated For mapped properties use proper type (for sorting and filtering) with `map`.\r\n * For unmapped properties use `FieldType.NotMapped` with map.\r\n */\r\n Expression = 11,\r\n Enum = 12,\r\n DateTime = 13,\r\n NotMapped = 14,\r\n}\r\n\r\nexport enum SortDirection {\r\n asc= 'asc',\r\n desc= 'desc'\r\n}\r\n\r\nexport enum Target {\r\n Blank = '_blank',\r\n Self = '_self',\r\n Parent = '_parent',\r\n Top = '_top'\r\n}\r\n\r\ninterface BaseMeta <T = any> {\r\n displayName?: string;\r\n additional?: Additional<T>;\r\n order?: number;\r\n preSort?: SortDef;\r\n width?: string;\r\n noExport?: boolean;\r\n noFilter?: boolean;\r\n noSort?: boolean;\r\n customCell?: boolean;\r\n /**\r\n * @deprecated Please use map instead\r\n */\r\n transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\r\n click?: (element: T, key: string ) => void;\r\n template?: TemplateRef<any>;\r\n classes?: Dictionary<Predicate<T>>;\r\n toolTip?: string | ((t:T) => string);\r\n useIcon?: boolean;\r\n map? : (t:T) => any;\r\n}\r\n\r\ninterface MappedMetaData<T = any, AdditionalFields extends string[] = []> extends BaseMeta<T> {\r\n key: (keyof T | AdditionalFields[number]) & string;\r\n fieldType: Exclude<typeof FieldType[keyof typeof FieldType], FieldType.NotMapped | FieldType.Expression>;\r\n}\r\n\r\nexport type MetaData<T = any, AdditionalFields extends string[] = []> = MappedMetaData<T, AdditionalFields> | NotMappedMetaData<T>;\r\n\r\nexport interface NotMappedMetaData<T = any> extends BaseMeta<T> {\r\n key: string;\r\n fieldType: FieldType.NotMapped | FieldType.Expression;\r\n}\r\nexport interface ReportDef<DataType = any> {\r\n data: DataType[];\r\n metaData: MetaData [];\r\n totalRecords?: number;\r\n count: number;\r\n}\r\n\r\nexport interface SortDef {\r\n direction: SortDirection;\r\n precedence?: number;\r\n}\r\n\r\nexport interface FilterOptions {\r\n filterableValues : string[]\r\n}\r\nexport interface DateTimeOptions {\r\n format?: string;\r\n includeSeconds?: boolean;\r\n includeMilliseconds: boolean;\r\n}\r\ntype interpolatedRoute = string;\r\nexport interface Additional<T = any> {\r\n link? : {\r\n base?: string;\r\n urlKey?: string;\r\n target?: Target;\r\n useRouterLink?: boolean;\r\n /**\r\n * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\r\n * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\r\n */\r\n interpolatedRoute?: interpolatedRoute;\r\n routerLinkOptions?:{\r\n queryParams?: [string, interpolatedRoute][];\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n }\r\n footer?: { type: 'sum' };\r\n export?: TableBuilderExport;\r\n dateFormat?: string;\r\n dateTimeOptions?: DateTimeOptions;\r\n filterOptions?: FilterOptions;\r\n styles?: Dictionary<string | {condition: (t:T) => boolean | true, value: (t:T) => string | string}>;\r\n columnPartStyles?: {\r\n header?: Dictionary<string>,\r\n body?: Dictionary<string | {condition: (t: T) => boolean | true, value: (t: T) => string | string}>,\r\n footer?: Dictionary<string>,\r\n }\r\n columnPartClasses?: {\r\n header?: Dictionary<Predicate<T>>,\r\n footer?: Dictionary<Predicate<T>>,\r\n }\r\n enumMap?: {[key:number]:string};\r\n boolean? : {\r\n showForFalse? : true | { icon : string },\r\n forTrue? : { icon : string }\r\n }\r\n}\r\n\r\nexport enum ArrayStyle {\r\n CommaDelimited,\r\n NewLine\r\n}\r\n\r\nexport interface ArrayAdditional extends Additional {\r\n limit?: number;\r\n arrayStyle?: ArrayStyle;\r\n}\r\n\r\n\r\n\r\nexport function metaDataArrToDict<T = MetaData>(arr: MetaData[], transform?: (m : MetaData) => T): Dictionary<T>{\r\n const dict = {};\r\n if(transform){\r\n arr.forEach(e => dict[e.key] = transform(e));\r\n } else {\r\n arr.forEach(e => dict[e.key] = e);\r\n }\r\n return dict;\r\n}\r\n","import { Injector } from \"@angular/core\";\r\nimport { merge } from \"lodash\";\r\n\r\nexport class GeneralTableSettings {\r\n constructor(settings? : TableBuilderSettings){\r\n if(settings){\r\n merge(this.headerSettings, settings.headerSettings);\r\n merge(this.footerSettings, settings.footerSettings);\r\n merge(this.columnHeaderSettings, settings.columnHeaderSettings);\r\n merge(this.tableSettings, settings.tableSettings);\r\n if(settings.tableSettings?.useVirtualScroll){\r\n const currVirt = settings.tableSettings.useVirtualScroll === true ? new VirtualScrollOptions() : settings.tableSettings.useVirtualScroll;\r\n if(!currVirt.headerHeight || settings.tableSettings.useVirtualScroll === true){\r\n currVirt.headerHeight = (typeof settings.headerSettings?.headerHeight === 'number' ? settings.headerSettings?.headerHeight : DefaultVirtualScrollOptions.headerHeight);\r\n }\r\n if(!currVirt.rowHeight || settings.tableSettings.useVirtualScroll === true){\r\n currVirt.rowHeight = (typeof settings.tableSettings?.rowHeight === 'number' ? settings.tableSettings?.rowHeight : DefaultVirtualScrollOptions.rowHeight);\r\n }\r\n this.tableSettings.useVirtualScroll = { ...new VirtualScrollOptions(), ...currVirt }\r\n }\r\n }\r\n this.injector = settings?.injector;\r\n }\r\n headerSettings = new TableWrapperHeaderSettings();\r\n footerSettings = new TableWrapperFooterSettings();\r\n columnHeaderSettings = new TableColumnHeaderSettings();\r\n tableSettings = new TableSettings();\r\n injector? : Injector;\r\n}\r\n\r\nexport interface TableBuilderSettings {\r\n headerSettings? : Partial<TableWrapperHeaderSettings>;\r\n footerSettings? : Partial<TableWrapperFooterSettings>;\r\n columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\r\n tableSettings? : Partial<TableSettings>;\r\n injector? : Injector;\r\n}\r\n\r\nexport class TableWrapperHeaderSettings {\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideHeader = false\r\n hideSort = false\r\n collapse = false\r\n showTitleWhenCollapsed = true;\r\n headerHeight: string | number | undefined = undefined;\r\n}\r\n\r\nexport class TableWrapperFooterSettings {\r\n collapse = false\r\n}\r\n\r\nexport class TableColumnHeaderSettings {\r\n noFilters = false;\r\n noHeader = false;\r\n}\r\n\r\nexport class TableSettings {\r\n usePaginator = true;\r\n useVirtualScroll: true | Partial<VirtualScrollOptions> | null = null;\r\n includeAllInPaginatorOptions = false;\r\n rowHeight: string | number | undefined = undefined;\r\n groupHeaderHeight?: number = undefined;\r\n}\r\n\r\nexport class PersistedTableSettings {\r\n constructor(tableSettings? :GeneralTableSettings | PersistedTableSettings){\r\n if (tableSettings){\r\n this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PersistedTableSettings).collapseHeader;\r\n this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PersistedTableSettings).collapseFooter;\r\n }\r\n }\r\n collapseHeader = false;\r\n collapseFooter = false;\r\n}\r\n\r\nexport class NotPersistedTableSettings {\r\n constructor(tableSettings? :GeneralTableSettings){\r\n if(tableSettings){\r\n this.hideExport = tableSettings.headerSettings.hideExport;\r\n this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\r\n this.hideFilter = tableSettings.headerSettings.hideFilter;\r\n this.hideSort = tableSettings.headerSettings.hideSort;\r\n this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\r\n this.hideHeader = tableSettings.headerSettings.hideHeader;\r\n this.hideColumnHeaderFilters = tableSettings.columnHeaderSettings.noFilters;\r\n this.hideColumnHeader = tableSettings.columnHeaderSettings.noHeader;\r\n this.usePaginator = tableSettings.tableSettings.usePaginator;\r\n this.useVirtualScroll = tableSettings.tableSettings.useVirtualScroll;\r\n this.includeAllInPaginatorOptions = tableSettings.tableSettings.includeAllInPaginatorOptions;\r\n this.rowHeight = tableSettings.tableSettings.rowHeight;\r\n this.headerHeight = tableSettings.headerSettings.headerHeight;\r\n this.groupHeaderHeight = tableSettings.tableSettings.groupHeaderHeight;\r\n }\r\n }\r\n hideExport = true\r\n hideFilter = true\r\n hideColumnSettings = true\r\n hideSort = true\r\n showTitleWhenHeaderCollapsed = true;\r\n hideHeader = true\r\n hideColumnHeaderFilters = true;\r\n hideColumnHeader = true;\r\n usePaginator = true;\r\n useVirtualScroll: true | Partial<VirtualScrollOptions> | null = null;\r\n includeAllInPaginatorOptions = false;\r\n groupHeaderHeight?: number = undefined;\r\n rowHeight?: string | number | undefined;\r\n headerHeight?: string | number = undefined;\r\n}\r\n\r\nexport class VirtualScrollOptions {\r\n virtualAsDefault = true;\r\n rowHeight = 48;\r\n enforceRowHeight = true;\r\n headerHeight = 56;\r\n enforceHeaderHeight = true;\r\n amountOfVisibleItems = 10;\r\n /**\r\n * This will win over `amountOfVisibleItems`\r\n */\r\n maxViewPortHeight: number | undefined = undefined;\r\n}\r\n\r\nexport const DefaultVirtualScrollOptions = {\r\n rowHeight : 48,\r\n headerHeight : 56,\r\n};","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData, Target } from '../interfaces/report-def';\r\nimport { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\nimport { LinkInfo } from '../services/link-creator.service';\r\nimport { TableProps } from '../components/table-container/tableProps';\r\n\r\nexport interface Group {\r\n key: string;\r\n groupName: string;\r\n children: any[];\r\n isGroupHeader: true;\r\n}\r\n\r\nexport interface GroupedData {\r\n key: string,\r\n expandedHeaders: string[]\r\n}\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n filters: Dictionary<FilterInfo | CustomFilter>;\r\n sorted : Sort [];\r\n userDefined : { order:Dictionary<number>, widths:Dictionary<number>, table:{ width?:number }, pageSize?: number };\r\n persistedTableSettings : PersistedTableSettings;\r\n groupBy: GroupedData[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n initializationState: InitializationState;\r\n metaData: Dictionary<MetaData>;\r\n notPersistedTableSettings : NotPersistedTableSettings;\r\n pageSize: number;\r\n currentPage: number;\r\n linkMaps: Dictionary<LinkInfo>;\r\n props: TableProps;\r\n showAll: boolean;\r\n minColumnWidth: number | undefined;\r\n\r\n}\r\nexport interface DataState {\r\n virtualScrollOffset: number;\r\n virtualEnds: {start: number, end: number};\r\n dataLen: number;\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n initializationState = null;\r\n metaData = null;\r\n notPersistedTableSettings = null;\r\n linkMaps = null;\r\n pageSize = null;\r\n currentPage = null;\r\n virtualScrollOffset = null;\r\n dataLen = null;\r\n virtualEnds = null;\r\n virtualEnd = null;\r\n props = null;\r\n showAll = null;\r\n minColumnWidth = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n Created,\r\n MetaDataLoaded,\r\n LoadedFromStore,\r\n Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n initializationState: InitializationState.Created,\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined:{ order: {}, widths: {}, table: {}},\r\n persistedTableSettings : new PersistedTableSettings(),\r\n notPersistedTableSettings : new NotPersistedTableSettings(),\r\n pageSize: 10,\r\n linkMaps: {},\r\n groupBy: [],\r\n minColumnWidth: undefined,\r\n currentPage: 0,\r\n\r\n props: {} as TableProps,\r\n showAll: false,\r\n};\r\nexport const defaultDataState = {\r\n virtualScrollOffset: 0,\r\n dataLen: 0,\r\n virtualEnds: {\r\n start: 0, end: 20\r\n },\r\n} \r\n","import { Directive, TemplateRef, Input, inject, OnInit } from '@angular/core';\r\nimport { CdkColumnDef } from '@angular/cdk/table';\r\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\r\nimport { TableBuilder } from '../classes/table-builder';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\ninterface CustomCellContext<T> {\r\n $implicit: T,\r\n element: T,\r\n}\r\n// here is how to use it\r\n// <generic-table [report]=\"report\">\r\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\r\n// <p *customCell=\"'column2'\">I am custom cell two </p>\r\n// </generic-table>\r\n@Directive({\r\n selector: '[customCell]',\r\n standalone: true\r\n})\r\nexport class CustomCellDirective<T = any> implements OnInit {\r\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true });\r\n public columnDef = inject(CdkColumnDef, { optional: true });\r\n @Input() customCell!: string;\r\n @Input() displayName?: string;\r\n @Input() preSort?: SortDef;\r\n @Input() TemplateRef!: TemplateRef<any>;\r\n @Input() customCellOrder?: number;\r\n @Input() customCellWidth?: string;\r\n @Input() customCellTableRef?: TableBuilder<T>;\r\n /**\r\n * true if column not mapped to a property in the data source. Default is false.\r\n */\r\n @Input() customCellNotMapped = false;\r\n constructor() {\r\n if(this.templateRef !== null)\r\n this.TemplateRef = this.templateRef;\r\n }\r\n ngOnInit() {\r\n this.$metaData.next(this.getMetaData())\r\n }\r\n $metaData = new ReplaySubject<MetaData>();\r\n getMetaData = (): MetaData => {\r\n return {\r\n key: this.customCell,\r\n displayName: this.displayName,\r\n preSort: this.preSort,\r\n fieldType: this.customCellNotMapped ? FieldType.NotMapped : FieldType.Unknown,\r\n order: this.customCellOrder,\r\n width: this.customCellWidth,\r\n customCell: true,\r\n };\r\n }\r\n \r\n\r\n static ngTemplateContextGuard<T>(dir: CustomCellDirective<T>, ctx: any): ctx is CustomCellContext<T> {\r\n return true;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2, Input, ElementRef, booleanAttribute, inject } from \"@angular/core\";\r\nimport { fromEvent } from \"rxjs\";\r\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { defaultShareReplay } from \"../../rxjs\";\r\nimport { TableStore } from \"../classes/table-store\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n standalone: true\r\n})\r\nexport class ResizeColumnDirective implements OnInit{\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n store = inject(TableStore);\r\n\r\n @Input({ alias : 'resizeColumn', transform: booleanAttribute }) resizable: boolean | string = false;\r\n\r\n @Input() key!: string;\r\n\r\n ngOnInit(){\r\n if (this.resizable){\r\n const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\r\n const resizer = this.createResizerSpanInColumnHead(columnHead);\r\n\r\n const aggregateMouseEventsMapped$ = this.mouseDownThroughMouseUpEventMapper(resizer,columnHead,table)\r\n\r\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\r\n filter(({mouseMove})=>!!mouseMove.buttons),\r\n map( ({mouseDownData,mouseMove}) => {\r\n const {newTableWidth,newColumnWidth} = this.calculateNewWidths(mouseDownData,mouseMove)\r\n return ({\r\n key:this.key,\r\n widthInPixel:newColumnWidth,\r\n tableSize:newTableWidth,\r\n })\r\n }),\r\n defaultShareReplay()\r\n );\r\n\r\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\r\n map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\r\n ));\r\n\r\n this.store.setTableWidth(resizeColsData$.pipe(\r\n map(resizeData => resizeData.tableSize )));\r\n }\r\n\r\n }\r\n\r\n createResizerSpanInColumnHead(columnHead:HTMLElement){\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n resizer.style['cursor']='col-resize';\r\n resizer.style['user-select']='none';\r\n resizer.style['width']='10px';\r\n resizer.style['height']='100%';\r\n resizer.style['position']='absolute';\r\n resizer.style['right']='0';\r\n resizer.style['top']='0';\r\n resizer.style['z-index']='1';\r\n this.renderer.appendChild(columnHead, resizer);\r\n return resizer;\r\n }\r\n\r\n getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\r\n const columnHead: HTMLElement = this.el.nativeElement;\r\n const row = this.renderer.parentNode(columnHead);\r\n const table = this.renderer.parentNode(row);\r\n return ({table,columnHead})\r\n }\r\n\r\n mouseDownThroughMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return this.resizerMouseDownEventMapper(resizer,columnHead,table)\r\n .pipe(\r\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\r\n map( mouseMove => ({mouseDownData, mouseMove})),\r\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\r\n ) ),\r\n )\r\n }\r\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\r\n map(event => ({\r\n startPageX: event.pageX,\r\n startColumnWidth: this.getElementWidth(columnHead),\r\n startTableWidth: this.getElementWidth(table),\r\n }))\r\n );\r\n }\r\n\r\n calculateNewWidths(mouseDownData: MouseDownData, mouseMove: MouseEvent):{newTableWidth:number,newColumnWidth:number}{\r\n const change = (mouseMove.pageX - mouseDownData.startPageX );\r\n let newColumnWidth = mouseDownData.startColumnWidth + change;\r\n if(newColumnWidth < 1){\r\n newColumnWidth = 1;\r\n }\r\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\r\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\r\n return ({newTableWidth,newColumnWidth})\r\n }\r\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\r\n\r\n}\r\ninterface MouseDownData{\r\n startPageX:number,\r\n startColumnWidth:number,\r\n startTableWidth:number,\r\n}\r\n","import { Directive, signal } from \"@angular/core\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\r\n\r\n@Directive({\r\n selector: '[tbWrapper]',\r\n standalone: true,\r\n})\r\nexport class TableWrapperDirective {\r\n $registrations = signal([] as (TableCustomFilterDirective | TableFilterDirective)[]);\r\n\r\n register(filter: TableCustomFilterDirective | TableFilterDirective) {\r\n this.$registrations.update( registrations => [...registrations,filter] );\r\n }\r\n}\r\n","\r\nexport const FilterTypes = {\r\n NumberEquals: 'Equals',\r\n NumberNotEqual: 'Does Not Equal',\r\n NumberGreaterThan: 'Greater Than',\r\n NumberLessThan: 'Less Than',\r\n NumberBetween: 'Between',\r\n StringEquals: 'Equals',\r\n StringContains: 'Contains',\r\n StringDoesNotContain: 'Does Not Contain',\r\n StringStartWith: 'Start With',\r\n StringEndsWith: 'Ends With',\r\n DateIsOn: 'Is on',\r\n DateIsNotOn: 'Is Not On',\r\n DateOnOrAfter: 'On or After',\r\n DateOnOrBefore: 'On or Before',\r\n DateBetween: 'Between',\r\n DateTimeIsAt: 'Is At',\r\n DateTimeIsNotAt: 'Is Not At',\r\n DateTimeAtOrAfter: 'At or After',\r\n DateTimeAtOrBefore: 'At or Before',\r\n DateTimeBetween: 'Between',\r\n BooleanEquals: 'Is',\r\n IsNull: 'Is Blank',\r\n Or: 'Or',\r\n And: 'And',\r\n In: 'In',\r\n Custom: 'Custom',\r\n} as const;\r\n\r\nexport type FilterType = typeof FilterTypes[keyof typeof FilterTypes];\r\n\r\nexport type SubFilterTypes<T extends typeof FilterTypes[keyof typeof FilterTypes]> = T;\r\n\r\nexport type StringFilterTypes = SubFilterTypes<'Equals' | 'Contains' | 'Does Not Contain' | 'Start With' | 'Ends With' | 'Is Blank' | 'In'>;\r\nexport type NumberFilterTypes = SubFilterTypes<'Equals' | 'Does Not Equal' | 'Greater Than' | 'Less Than' | 'Between' | 'Is Blank' | 'In'>;\r\nexport type DateFilterTypes = SubFilterTypes<'Is on' | 'Is Not On' | 'On or After' | 'On or Before' | 'Between' | 'Is Blank'>;\r\nexport type DateTimeFilterTypes = SubFilterTypes<'Is At' | 'Is Not At' | 'At or After' | 'At or Before' | 'Between' | DateFilterTypes>;\r\nexport type BooleanFilterTypes = SubFilterTypes<'Is' | 'Is Blank'>;\r\nexport type EnumFilterTypes = SubFilterTypes<'In' | 'Is Blank'>;","import { Directive, Input, Predicate, SimpleChanges, inject } from \"@angular/core\";\r\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, takeUntil, tap } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FilterType, FilterTypes } from \"../enums/filterTypes\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { MatRadioButton } from \"@angular/material/radio\";\r\nimport { MatButtonToggle } from '@angular/material/button-toggle';\r\nimport { MatCheckbox } from \"@angular/material/checkbox\";\r\nimport { FieldType } from \"../interfaces/report-def\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\r\nimport { MatOption } from \"@angular/material/core\";\r\nimport { subscriber } from \"../../rxjs\";\r\n\r\n\r\nconst inputs = [\r\n 'predicate: tbCustomFilter',\r\n 'filterId: filterId',\r\n];\r\n\r\n\r\n@Directive({\r\n selector: ' '\r\n})\r\nexport abstract class TableCustomFilterDirective<T = any> {\r\n abstract filter$ : Observable<CustomFilter>;\r\n filterId!: string;\r\n savable = false;\r\n used = false;\r\n abstract active: boolean;\r\n abstract reset(): void;\r\n}\r\n\r\n\r\n\r\n\r\n@Directive({\r\n selector: \"[tbFilter]\",\r\n standalone: true,\r\n}) export class TableFilterDirective {\r\n protected model = inject(NgControl, { optional: true });\r\n private wrapper = inject(TableWrapperDirective, { optional: true });\r\n constructor() {\r\n if(this.wrapper) {\r\n this.wrapper.register(this);\r\n }\r\n if(this.model) {\r\n subscriber(this.model!.valueChanges!, val => {\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n }\r\n }\r\n reset() {\r\n this.filterValue = undefined;\r\n }\r\n filter$ = new Subject<FilterInfo>;\r\n\r\n @Input() filterType!: FilterType;\r\n @Input() key!: string;\r\n @Input() fieldType!: FieldType;\r\n @Input() filterId!: string;\r\n @Input() active = true;\r\n @Input() filterValue: any = null;\r\n\r\n setFilterValue(value: any) {\r\n if(this.model) {\r\n setTimeout(() => {\r\n this.model!.reset(value);\r\n }, 0);\r\n } else {\r\n this.filterValue = value;\r\n }\r\n }\r\n\r\n used = false;\r\n savable = false;\r\n ready = false;\r\n\r\n _userActive = true;\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.update();\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = uuid();\r\n } else {\r\n this.savable = true;\r\n }\r\n this.ready = true;\r\n this.update();\r\n }\r\n\r\n protected setFilter(filter: FilterInfo ) {\r\n this.filter$.next(filter);\r\n }\r\n\r\n update() {\r\n if (this.ready) {\r\n this.setFilter(\r\n {\r\n filterId: this.filterId,\r\n key: this.key,\r\n filterType: this.filterType,\r\n fieldType: this.fieldType,\r\n filterValue: this.filterValue,\r\n active: this.active && this.filterValue !== undefined,\r\n _isExternallyManaged: true,\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[tbFilterStringContains]',\r\n providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\r\n inputs: [\r\n 'key:tbFilterStringContains',\r\n 'filterValue:filterValue',\r\n 'filterId: filterId',\r\n 'active: active',\r\n ],\r\n standalone: true,\r\n}) export class TableFilterStringContainsDirective extends TableFilterDirective {\r\n constructor() {\r\n super();\r\n this.filterType = FilterTypes.StringContains;\r\n this.fieldType = FieldType.String;\r\n }\r\n\r\n override reset() {\r\n if(this.model) {\r\n this.model.reset();\r\n }\r\n super.reset();\r\n }\r\n\r\n override setFilter(filter: FilterInfo) {\r\n filter.active = filter.filterValue && this._userActive;\r\n super.setFilter(filter);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes['active']) {\r\n this._userActive = changes['active'].currentValue;\r\n }\r\n super.ngOnChanges(changes);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[tbCustomFilter]\",\r\n})\r\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective<T> {\r\n\r\n filter$! : Subject<CustomFilter>;\r\n filter!: CustomFilter;\r\n\r\n _predicate!: Predicate<T>;\r\n @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\r\n this._predicate = val;\r\n this.update({predicate:val});\r\n }\r\n\r\n _active: boolean = false;\r\n ready = false;\r\n\r\n update(val: Partial<CustomFilter> ) {\r\n if(this.ready) {\r\n this.filter = {...this.filter,...val};\r\n this.filter$.next(this.filter);\r\n }\r\n }\r\n\r\n @Input() set active(val: boolean) {\r\n if(this._active !== val) {\r\n this._active = val;\r\n this.update({active:val});\r\n }\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = uuid();\r\n } else {\r\n this.savable = true;\r\n }\r\n\r\n this.filter = {\r\n filterType: FilterTypes.Custom,\r\n filterId: this.filterId,\r\n active: this._active,\r\n predicate: this._predicate,\r\n };\r\n this.ready = true;\r\n this.filter$ = new BehaviorSubject(this.filter);\r\n }\r\n}\r\n\r\n@Directive()\r\nexport abstract class TbSelectedFilterDirective<T = any> extends TableCustomFilterDirectiveBase<T> {\r\n\r\n protected wrapper = inject(TableWrapperDirective, { optional: true });\r\n protected constructor(private change: Observable<any>, private isActive: () => boolean) {\r\n super();\r\n if(this.wrapper) {\r\n this.wrapper.register(this);\r\n }\r\n }\r\n\r\n reset() {\r\n this.active = false;\r\n }\r\n\r\n destroySubject$ = new ReplaySubject<void>(1);\r\n ngOnDestroy() {\r\n this.destroySubject$.next();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._active = this.isActive();\r\n super.ngOnInit();\r\n this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\r\n this.active = this.isActive();\r\n });\r\n }\r\n}\r\n\r\n// Checkbox\r\n@Directive({\r\n selector: 'mat-checkbox[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\r\n private matCheckbox = inject(MatCheckbox);\r\n\r\n\r\n override set active(val: boolean) {\r\n this.matCheckbox.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matCheckbox = inject(MatCheckbox);\r\n super(matCheckbox.change, () => matCheckbox.checked);\r\n this.matCheckbox = matCheckbox;\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'mat-slide-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatSlideToggleTbFilterDirective<T = any> extends TbSelectedFilterDirective<T> {\r\n private matSlideToggle: MatSlideToggle;\r\n\r\n override set active(val: boolean) {\r\n this.matSlideToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matSlideToggle = inject(MatSlideToggle);\r\n\r\n super(matSlideToggle.change, () => matSlideToggle.checked);\r\n this.matSlideToggle = matSlideToggle;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Radio button\r\n@Directive({\r\n selector: 'mat-radio-button[tbCustomFilter]',\r\n inputs: ['predicate: tbCustomFilter'],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective {\r\n private matRadioButton: MatRadioButton;\r\n\r\n\r\n override set active(val: boolean) {\r\n this.matRadioButton.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matRadioButton = inject(MatRadioButton);\r\n\r\n super(matRadioButton.change, () => matRadioButton.checked);\r\n this.matRadioButton = matRadioButton;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Option (select)\r\n@Directive({\r\n selector: 'mat-option[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective {\r\n private matOption: MatOption;\r\n\r\n\r\n override set active(val: boolean) {\r\n if(val) {\r\n this.matOption.select();\r\n } else {\r\n this.matOption.deselect();\r\n }\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matOption = inject(MatOption);\r\n\r\n super( matOption.onSelectionChange.pipe(tap( d => {\r\n if(!matOption.value) {\r\n matOption.value = uuid();\r\n }\r\n }\r\n\r\n )), () => matOption.selected);\r\n this.matOption = matOption;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Button toggle\r\n@Directive({\r\n selector: 'mat-button-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective {\r\n private matButtonToggle: MatButtonToggle;\r\n\r\n override set active(val: boolean) {\r\n this.matButtonToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor() {\r\n const matButtonToggle = inject(MatButtonToggle);\r\n\r\n super(matButtonToggle.change, () => matButtonToggle.checked);\r\n this.matButtonToggle = matButtonToggle;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'phone', standalone: true})\r\nexport class PhoneNumberPipe implements PipeTransform {\r\n\r\n transform(phoneNum: string): any {\r\n if (phoneNum) {\r\n phoneNum = phoneNum.replace(/\\D/g,'');\r\n if(phoneNum[0] === '1') {\r\n phoneNum = phoneNum.substring(1);\r\n }\r\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\r\n }\r\n }\r\n}\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport { TableState, defaultTableState } from './TableState';\r\nimport { DefaultSettings } from './DefaultSettings';\r\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\r\nimport { MultiSortDirective } from '../directives';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../../utilities/pipes/space-case.pipes';\r\nexport interface TableBuilderConfig {\r\n defaultTableState: Partial<TableState>;\r\n export?: TableBuilderExport;\r\n defaultSettings?: DefaultSettings;\r\n arrayInfo?: ArrayAdditional;\r\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\r\n}\r\n\r\nexport interface TableBuilderExport {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n onSave?: (event?: any) => void;\r\n prepend? : string;\r\n}\r\n\r\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\r\n\r\nexport function provideTableBuilder(config?: TableBuilderConfig) : EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n MultiSortDirective,\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n { provide : TableBuilderConfigToken , useValue: config || defaultTableState}\r\n ])\r\n}\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\r\n\r\nexport const isNull:FilterFunc<boolean,any> = (filterInfo:FilterInfo) => {\r\n const func = filterInfo.filterValue ?\r\n (val: any) => val == null || val === ''\r\n :\r\n (val: any) => val != null && val !== '';\r\n return func;\r\n}\r\n","import { FilterFunc, FilterFuncs, FilterInfo } from '../classes/filter-info';\r\nimport { EnumFilterTypes, FilterTypes, StringFilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst stringEqualFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const equelsVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val)=>prepareForStringCompare(val) === equelsVal );\r\n}\r\n\r\nconst stringContainsFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const containsVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val)=>prepareForStringCompare(val).includes(containsVal));\r\n}\r\n\r\nconst stringDoesNotContainFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const doesNotContainVal = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val)=>!prepareForStringCompare(val)?.includes(doesNotContainVal));\r\n}\r\n\r\nconst stringStartsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val)=>prepareForStringCompare(val).startsWith(startsWith));\r\n}\r\n\r\nconst stringEndsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\r\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\r\n return ((val)=>prepareForStringCompare(val).endsWith(startsWith));\r\n}\r\n\r\nconst multipleStringValuesEqualsFunc:FilterFunc<string[],string> = (filterInfo:FilterInfo) => {\r\n const filterVals = filterInfo.filterValue.map( (v: string) => prepareForStringCompare(v));\r\n return ((val)=> filterVals.some((s:string) => prepareForStringCompare(val) === s));\r\n}\r\n\r\nexport const StringFilterFuncs: FilterFuncs<StringFilterTypes> = {\r\n [FilterTypes.StringEquals]: stringEqualFunc,\r\n [FilterTypes.StringContains]: stringContainsFunc,\r\n [FilterTypes.StringDoesNotContain]: stringDoesNotContainFunc,\r\n [FilterTypes.StringStartWith]: stringStartsWithFunc,\r\n [FilterTypes.StringEndsWith]: stringEndsWithFunc,\r\n [FilterTypes.IsNull]: isNull,\r\n [FilterTypes.In]: multipleStringValuesEqualsFunc,\r\n};\r\n\r\nexport const EnumFilterFuncs: FilterFuncs<EnumFilterTypes> = {\r\n [FilterTypes.IsNull]: isNull,\r\n [FilterTypes.In] : multipleStringValuesEqualsFunc,\r\n};\r\n\r\nexport const prepareForStringCompare = (val : any):string => val?.toString().trim().toLowerCase();\r\n","import { Range, FilterFunc, FilterInfo, FilterFuncs } from '../classes/filter-info';\r\nimport { FilterTypes, NumberFilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\ntype NumberFilterFunc = FilterFunc<number>\r\n\r\nconst numberEqalsFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\r\n return val === filterInfo.filterValue;\r\n}\r\n\r\nconst numberNotEqualFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\r\n return val !== filterInfo.filterValue;\r\n}\r\n\r\nconst numberGreaterThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val > filterInfo.filterValue;\r\n}\r\n\r\nconst numberLessThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\r\n return val < filterInfo.filterValue;\r\n}\r\n\r\nconst numberBetweenFunc:FilterFunc<Range<number>,number> = (filterInfo : FilterInfo) => {\r\n const startVal = Number(filterInfo.filterValue.Start);\r\n const endVal = Number(filterInfo.filterValue.End);\r\n return ((val)=>(val > startVal) && (val < endVal));\r\n}\r\n\r\nexport const multipleNumberValuesEqualsFunc:FilterFunc<number[],number> = (filterInfo:FilterInfo) => {\r\n return ((val)=>filterInfo.filterValue.some((value: any) => val === value));\r\n}\r\n\r\nexport const NumberFilterFuncs: FilterFuncs<NumberFilterTypes> = {\r\n [FilterTypes.NumberEquals]: numberEqalsFunc,\r\n [FilterTypes.NumberNotEqual]: numberNotEqualFunc,\r\n [FilterTypes.NumberGreaterThan]: numberGreaterThanFunc,\r\n [FilterTypes.NumberLessThan]: numberLessThanFunc,\r\n [FilterTypes.NumberBetween]: numberBetweenFunc,\r\n [FilterTypes.IsNull]: isNull,\r\n [FilterTypes.In]: multipleNumberValuesEqualsFunc,\r\n};\r\n","import { FilterFunc, FilterFuncs, FilterInfo, Range } from '../classes/filter-info';\r\nimport { DateFilterTypes, DateTimeFilterTypes, FilterTypes } from '../enums/filterTypes';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() === isOnVal);\r\n}\r\n\r\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() !== isNotOnVal);\r\n}\r\n\r\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const afterVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() >= afterVal);\r\n}\r\n\r\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const beforeVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() <= beforeVal);\r\n}\r\n\r\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\r\n const startVal = new Date(filterInfo.filterValue.Start);\r\n const endVal = new Date(filterInfo.filterValue.End);\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return (\r\n (val)=> {\r\n const cleanedVal = clean(filterInfo, val);\r\n return cleanedVal>=startVal && cleanedVal <= endVal;\r\n });\r\n}\r\n\r\nconst cleanDateTime = (filterInfo:FilterInfo, val: Date) => {\r\n if(!!DateFilterFuncs[filterInfo.filterType]){\r\n const d = new Date(val);\r\n d.setHours(0,0,0,0);\r\n return d;\r\n }\r\n return val;\r\n}\r\n\r\nexport const DateFilterFuncs: FilterFuncs<DateFilterTypes> = {\r\n [FilterTypes.DateIsOn]: dateIsOnFunc,\r\n [FilterTypes.DateIsNotOn]: dateIsNotOnFunc,\r\n [FilterTypes.DateOnOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterTypes.DateOnOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterTypes.DateBetween]: dateBetweenFunc,\r\n [FilterTypes.IsNull]: isNull,\r\n};\r\n\r\nexport const DateTimeFilterFuncs: FilterFuncs<DateTimeFilterTypes> = {\r\n ...DateFilterFuncs,\r\n [FilterTypes.DateTimeIsAt]: dateIsOnFunc,\r\n [FilterTypes.DateTimeIsNotAt]: dateIsNotOnFunc,\r\n [FilterTypes.DateTimeAtOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterTypes.DateTimeAtOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterTypes.DateTimeBetween]: dateBetweenFunc,\r\n [FilterTypes.IsNull]: isNull,\r\n};\r\n","import { FilterFunc, FilterFuncs, FilterInfo } from '../classes/filter-info';\r\nimport { BooleanFilterTypes, FilterTypes } from '../enums/filterTypes';\r\nimport { isNull } from './null-filter-function';\r\n\r\nconst booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean => {\r\n return filterInfo.filterValue === val;\r\n}\r\n\r\nexport const BooleanFilterFuncs: FilterFuncs<BooleanFilterTypes> = {\r\n [FilterTypes.BooleanEquals]: booleanEqualsFunc,\r\n [FilterTypes.IsNull]: isNull,\r\n};\r\n","import { FilterTypes, FilterType } from '../enums/filterTypes';\r\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\r\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\r\nimport { DateFilterFuncs, DateTimeFilterFuncs } from '../functions/date-filter-function';\r\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Predicate } from '@angular/core';\r\nimport { get } from 'lodash';\r\n\r\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\r\n [FilterTypes.And] : (filter: FilterInfo ): ((obj: any) => boolean) => {\r\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\r\n return (obj: any) : boolean => filters.every( f => f(obj));\r\n },\r\n [FilterTypes.In] : (filter: FilterInfo ): (obj: any) => boolean => {\r\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\r\n return (obj: any) : boolean => filters.some( f => f(obj));\r\n },\r\n};\r\n\r\nconst filterTypeFuncMap : Record<FieldType, FilterFuncs<any>> = {\r\n [FieldType.Array] : StringFilterFuncs,\r\n [FieldType.Boolean] : BooleanFilterFuncs,\r\n [FieldType.Currency] : NumberFilterFuncs,\r\n [FieldType.Date] : DateFilterFuncs,\r\n [FieldType.DateTime] : DateTimeFilterFuncs,\r\n [FieldType.Enum] : EnumFilterFuncs ,\r\n [FieldType.Link] : StringFilterFuncs,\r\n [FieldType.Number] : NumberFilterFuncs,\r\n [FieldType.PhoneNumber] : StringFilterFuncs,\r\n [FieldType.String] : StringFilterFuncs,\r\n [FieldType.Unknown] : StringFilterFuncs,\r\n} as Record<FieldType, FilterFuncs<any>>;\r\n\r\nexport const filterTypeMap = Object.entries(filterTypeFuncMap).reduce(\r\n (acc, [key, value]) => ({ ...acc, [key]: Object.keys(value) }), {} as Record<FieldType, FilterType[]>\r\n)\r\n\r\nexport interface FilterState {\r\n filterId: string;\r\n filterType: FilterType;\r\n filterValue?: any;\r\n active?: boolean;\r\n\r\n}\r\n\r\nexport interface FilterInfo<T extends FieldType = any, U = any> extends FilterState {\r\n key: string & keyof U;\r\n fieldType: T;\r\n _isExternallyManaged?: boolean;\r\n}\r\n\r\nexport interface PartialFilter {\r\n filterId?: string;\r\n key: string;\r\n fieldType: FieldType;\r\n filterType?: FilterType;\r\n filterValue?: any;\r\n}\r\n\r\n\r\n\r\nexport interface CustomFilter<T extends FieldType = any> extends FilterState {\r\n predicate: Predicate<T>;\r\n filterType: typeof FilterTypes.Custom;\r\n}\r\n\r\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) : filter is CustomFilter {\r\n return filter && filter.filterType === FilterTypes.Custom;\r\n}\r\n\r\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) : filter is FilterInfo {\r\n return filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterTypes.Custom;\r\n}\r\n\r\nconst defaultPredicate: Predicate<any> = () => true;\r\n\r\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any> {\r\n if(isCustomFilter(filter)) {\r\n return filter.active ? filter.predicate : defaultPredicate;\r\n }\r\n if (filter.filterValue === undefined) {\r\n return defaultPredicate;\r\n }\r\n\r\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\r\n if(!func) {\r\n if(filterFactoryMap[filter.filterType]){\r\n return filterFactoryMap[filter.filterType!](filter);\r\n }\r\n }\r\n\r\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\r\n return (rowObj) => {\r\n const value = get(rowObj, filter.key);\r\n return ((value == undefined) && cannotBeTrueForNull)\r\n ? false\r\n : func( value);\r\n };\r\n}\r\n\r\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\r\nexport type Range<T> = { Start:T, End:T };\r\n\r\nconst FalseyValueCanBeIncludedFilterTypes = [FilterTypes.IsNull,FilterTypes.NumberNotEqual,FilterTypes.DateIsNotOn,FilterTypes.StringDoesNotContain] as FilterType[];\r\n\r\nexport type FilterFuncs<T extends FilterType > = Partial<Record<T, FilterFunc<any,any>>>;\r\n","export const replaceInArrayWithClone = <T = any>(arr: T[], findMeth: (t: T) => boolean, actionOnClone: (t: T) => any = ((t: T) => {})): T[] => {\r\n const index = arr.findIndex(findMeth);\r\n const clonedArray = [...arr];\r\n const t = clonedArray[index];\r\n clonedArray[index] =\r\n t != null && typeof t === 'object' ?\r\n Array.isArray(t) ?\r\n [...t] as any\r\n : { ...t }\r\n : t;\r\n actionOnClone(clonedArray[index]);\r\n return clonedArray;\r\n}","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { Observable } from 'rxjs';\r\nimport { defaultTableState, GroupedData, InitializationState, keysToDelete, PersistedTableState, TableState } from './TableState';\r\nimport { Injectable, Predicate, computed, inject } from '@angular/core';\r\nimport { TableBuilderConfigToken } from './TableBuilderConfig';\r\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\r\nimport { Sort, SortDirection } from '@angular/material/sort' ;\r\nimport { ComponentStore } from '@ngrx/component-store' ;\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { debounce, debounceTime, distinctUntilChanged, filter, last, map, tap } from 'rxjs/operators'\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { notNull, onceWhen } from '../../rxjs/rxjs-operators';\r\nimport { GeneralTableSettings, NotPersistedTableSettings, PersistedTableSettings, VirtualScrollOptions } from './table-builder-general-settings';\r\nimport { replaceInArrayWithClone } from '../../utilities/array-helpers';\r\nimport { isDifferent } from '../directives';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\nexport function stateIs(initializationState: InitializationState) {\r\n return (state: TableState) => state.initializationState === initializationState;\r\n}\r\n\r\n@Injectable()\r\nexport class TableStore extends ComponentStore<TableState> {\r\n\r\n constructor() {\r\n const config = inject(TableBuilderConfigToken);\r\n\r\n super( { ...defaultTableState, ...config.defaultTableState});\r\n }\r\n selectStateReady = this.select(state => state.initializationState).pipe(filter(i => i === InitializationState.Ready));\r\n getSavableState() : Observable<PersistedTableState> {\r\n return this.state$.pipe(\r\n debounceTime(300),\r\n map( s => {\r\n return this.mapSaveableState(s);\r\n }),\r\n );\r\n }\r\n\r\n getSavableStateSignal = computed(() => {\r\n const state = this.state();\r\n return this.mapSaveableState(state);\r\n });\r\n\r\n private mapSaveableState = (s: PersistedTableState) => {\r\n const savableState = {...s} as Partial<TableState>;\r\n keysToDelete.forEach(key => delete savableState[key]);\r\n return savableState as PersistedTableState;\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\r\n this.effect(() => srcObservable.pipe(\r\n tap(func)\r\n ));\r\n return this;\r\n }\r\n\r\n readonly metaData$ = this.select( state => state.metaData);\r\n $metaData = this.selectSignal( state => state.metaData);\r\n $userDefinedOrder = this.selectSignal( state => state.userDefined.order);\r\n $hiddenKeys = this.selectSignal( state => state.hiddenKeys);\r\n $metaDataArray = this.selectSignal(\r\n this.$metaData,\r\n this.$userDefinedOrder,\r\n orderMetaData\r\n );\r\n\r\n getMetaData$ = (key: string) : Observable<MetaData> => {\r\n return this.select( state => state.metaData[key] ).pipe(\r\n tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\r\n notNull())\r\n }\r\n\r\n $getUserDefinedWidth = (key:string) => this.selectSignal(state => state.userDefined.widths[key]);\r\n $getUserDefinedWidths = this.selectSignal(state => state.userDefined.widths);\r\n tableSettingsMinWidth = this.selectSignal(state => state.minColumnWidth);\r\n\r\n readonly resetState = this.updater((state) => {\r\n const sorted = this.createPreSort(state.metaData);\r\n return ({...state, hiddenKeys: [], sorted, filters: {} , groupBy: [], userDefined: { widths: {}, order: {}, table: {} } });\r\n });\r\n\r\n readonly showColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\r\n }));\r\n\r\n readonly hideColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\r\n }));\r\n\r\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\r\n return ({...state, hiddenKeys: displayCols.filter(d => !d.visible).map(d => d.key)})\r\n });\r\n\r\n\r\n setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\r\n const userDefinedWidths = {...state.userDefined.widths};\r\n colWidths.forEach(cw => {\r\n userDefinedWidths[cw.key] = cw.widthInPixel;\r\n });\r\n return {...state, userDefined: {...state.userDefined, widths:userDefinedWidths}};\r\n });\r\n\r\n setUserDefinedOrder = this.updater((state,moved: { newOrder: number, oldOrder: number })=>{\r\n const { newOrder, oldOrder } = moved;\r\n const mdsArr = orderedStateVisibleMetaData(state);\r\n moveItemInArray(mdsArr, oldOrder, newOrder);\r\n\r\n const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\r\n aggregate[current.key] = index;\r\n return aggregate\r\n },{});\r\n return({ ...state, userDefined: { ...state.userDefined, order: userDefinedOrder } })\r\n })\r\n\r\n $filters = this.selectSignal(state => state.filters);\r\n readonly filters$ = this.select(state => state.filters );\r\n\r\n readonly getFilter$ = (filterId: string) : Observable<FilterInfo | CustomFilter | undefined> => {\r\n return this.select( state => state.filters[filterId] );\r\n }\r\n readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\r\n return this.addFiltersToState(state, [filter]);\r\n });\r\n\r\n readonly addFilters = this.updater((state,filters:(FilterInfo | CustomFilter )[])=>{\r\n return this.addFiltersToState(state, filters);\r\n })\r\n\r\n\r\n private addFiltersToState = (state:TableState, filters:(FilterInfo | CustomFilter)[]) : TableState => {\r\n\r\n var customFilters = filters.filter( isCustomFilter );\r\n\r\n var filterInfos = filters.filter(isFilterInfo);\r\n\r\n const filtersObj = filterInfos\r\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\r\n .reduce((filtersObj: {[k: string]: any},filter)=>{\r\n if (!filter.filterId) {\r\n filter.filterId = uuid();\r\n }\r\n filtersObj[filter.filterId] = filter;\r\n return filtersObj;\r\n },{});\r\n\r\n customFilters.forEach( fltr => {\r\n if(!fltr.filterId) {\r\n fltr.filterId = uuid();\r\n }\r\n filtersObj[fltr.filterId] = fltr;\r\n })\r\n return {\r\n ...state,\r\n filters : {...state.filters, ...filtersObj }\r\n };\r\n }\r\n\r\n readonly removeFilter = this.updater( (state, filterId: string) => {\r\n const filtersCopy = { ...state.filters };\r\n delete filtersCopy[filterId];\r\n return ({...state, filters: filtersCopy });\r\n });\r\n\r\n readonly removeFilters = this.updater( (state, filterIds: string[]) => {\r\n const filtersCopy = { ...state.filters };\r\n filterIds.forEach(id => { delete filtersCopy[id] })\r\n return ({...state, filters: filtersCopy });\r\n });\r\n\r\n readonly clearFilters = this.updater((state)=>\r\n ({...state,filters:{}}))\r\n\r\n\r\n selectSorted = this.select(state => state.sorted).pipe(distinctUntilChanged((f,s) => !isDifferent(f,s)));\r\n readonly sort$ = this.select(this.selectStateReady, this.selectSorted, (_,s) => s );\r\n \r\n createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\r\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\r\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\r\n .map(( {key, preSort: { direction }} ) => ({ active: key, direction }))\r\n }\r\n\r\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\r\n const sortArray = state.sorted.filter( s => s.active !== key );\r\n if(direction) {\r\n sortArray.unshift({active: key, direction});\r\n }\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\r\n const metaData = state.metaData;\r\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\r\n : state.initializationState === InitializationState.Created ? this.createPreSort(metaData) : state.sorted;\r\n return {...state, ...incomingTableState, metaData , sorted};\r\n }\r\n\r\n readonly setPageSize = this.updater( (state, pageSize: number)=> ({ ...state, pageSize, userDefined: { ...state.userDefined, pageSize } }));\r\n getPageSize = this.select(state => state.userDefined.pageSize || state.pageSize);\r\n \r\n readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\r\n\r\n\r\n\r\n readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\r\n const incomingTableState: Partial<TableState> = cleanPersistedState(state,persistedState);\r\n const newState = this.updateStateFunc(state,incomingTableState);\r\n newState.initializationState = state.initializationState === InitializationState.MetaDataLoaded ? InitializationState.LoadedFromStore : state.initializationState;\r\n return newState;\r\n });\r\n\r\n getUserDefinedTableSize = this.selectSignal(state => state.userDefined.table.width);\r\n getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\r\n setTableWidth = this.updater((state, widthInPixels:number) => ({...state, userDefined: { ...state.userDefined, table: { width: widthInPixels } } })) ;\r\n\r\n mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\r\n return {\r\n key: orig.key,\r\n displayName: merge.displayName ?? orig.displayName,\r\n fieldType: merge.fieldType || orig.fieldType,\r\n additional: {...orig.additional, ...merge.additional},\r\n order: merge.order ?? orig.order,\r\n preSort: merge.preSort ?? orig.preSort,\r\n width: merge.width ?? orig.width,\r\n noExport: merge.noExport || orig.noExport,\r\n noFilter: merge.noFilter || orig.noFilter,\r\n customCell: merge.customCell ?? orig.customCell,\r\n transform: merge.transform ?? orig.transform,\r\n map: merge.map ?? orig.map,\r\n click: merge.click ?? orig.click,\r\n classes: merge.classes ?? orig.classes,\r\n noSort: merge.noSort ?? orig.noSort,\r\n template: merge.template ?? orig.template,\r\n toolTip: merge.toolTip ?? orig.toolTip,\r\n useIcon: merge.useIcon ?? orig.useIcon,\r\n };\r\n }\r\n\r\n readonly setInitializationState = this.updater( (state, initializationState: InitializationState) => {\r\n return {...state, initializationState};\r\n });\r\n\r\n runOnceWhen(predicate: Predicate<TableState>, func: (state:TableState) => void) {\r\n const obs = this.state$.pipe(onceWhen(predicate));\r\n this.on(obs, (state) => {\r\n func(state);\r\n });\r\n }\r\n\r\n onReady( func: (state: TableState) => void ) {\r\n this.runOnceWhen(stateIs(InitializationState.Ready),func);\r\n }\r\n\r\n readonly setMetaData = this.updater((state, md: MetaData[]) => {\r\n const metaData = md\r\n .reduce((prev: Dictionary<MetaData>,curr) => {\r\n if(prev[curr.key]) {\r\n prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\r\n } else {\r\n prev[curr.key] = curr;\r\n }\r\n return prev;\r\n } ,{});\r\n let sorted = state.sorted;\r\n if(sorted.length === 0) {\r\n sorted = this.createPreSort(metaData);\r\n }\r\n const order = this.initializeOrder(state, metaData);\r\n const initializationState = state.initializationState == InitializationState.Created ? InitializationState.MetaDataLoaded : state.initializationState;\r\n return { ...state, initializationState, metaData, sorted, userDefined: { ...state.userDefined, order: order} };\r\n });\r\n\r\n private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\r\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\r\n let userDefinedOrder = state.userDefined.order;\r\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\r\n return {}\r\n }\r\n return userDefinedOrder;\r\n }\r\n\r\n toggleCollapseHeader = this.updater((state)=>{\r\n const tableSettings = {...state.persistedTableSettings};\r\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\r\n return ({...state,persistedTableSettings : new PersistedTableSettings(tableSettings)});\r\n })\r\n\r\n toggleCollapseFooter = this.updater((state)=>{\r\n const tableSettings = {...state.persistedTableSettings};\r\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\r\n return ({...state,persistedTableSettings : new PersistedTableSettings(tableSettings)});\r\n });\r\n\r\n $collapseFooter = this.selectSignal(state => state.persistedTableSettings.collapseFooter);\r\n $collapseHeader = this.selectSignal(state => state.persistedTableSettings.collapseHeader);\r\n\r\n addGroupByKey = this.updater((state, metaDataKey: string) => ({\r\n ...state,\r\n groupBy: [...state.groupBy, { key: metaDataKey, expandedHeaders: [] }]\r\n }));\r\n\r\n removeGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupBy: state.groupBy.filter(key => groupByKey !== key.key)\r\n }));\r\n\r\n updateExpandedGroups = this.updater((state, data: {key: string, groupKey: string, isExpanded: boolean}) => {\r\n const gbk = replaceInArrayWithClone(state.groupBy, k => k.key === data.key, gk => {\r\n gk.expandedHeaders = data.isExpanded ? [...gk.expandedHeaders, data.groupKey] : gk.expandedHeaders.filter(g => g !== data.groupKey);\r\n });\r\n return ({\r\n ...state,\r\n groupBy: gbk\r\n })}\r\n );\r\n\r\n expandAllOfGroup = this.updater((state, data: { groupHeadersByKey: Dictionary<{ groupName: string }[]> }) => {\r\n const newGroupedData = state.groupBy.map(gb => ({\r\n key: gb.key,\r\n expandedHeaders: data.groupHeadersByKey[gb.key]?.map(g => g.groupName) ?? gb.expandedHeaders\r\n } as GroupedData));\r\n return ({ ...state, groupBy: newGroupedData });\r\n });\r\n\r\n collapseAll = this.updater((state) => ({\r\n ...state,\r\n groupBy: state.groupBy.map(gb => ({ key: gb.key, expandedHeaders: [] }))\r\n }));\r\n\r\n collapseAllOfKey = this.updater((state, data: { keys: string[] }) => ({\r\n ...state,\r\n groupBy: state.groupBy.map(gb => ({\r\n key: gb.key,\r\n expandedHeaders: data.keys.includes(gb.key) ? [] : gb.expandedHeaders\r\n }))\r\n }));\r\n\r\n groupByKeys$ = this.select(state => state.groupBy.map(gbk => gbk.key))\r\n .pipe(distinctUntilChanged<string[]>((prev, curr) => prev.length === curr.length && curr.every((k,i) => prev[i] === k)));\r\n\r\n expandedGroups$ = this.select(state => state.groupBy).pipe(distinctUntilChanged((a, b) => {\r\n const aa = a.flatMap(g => g.expandedHeaders);\r\n const bb = b.flatMap(g => g.expandedHeaders);\r\n return aa.length === bb.length && aa.every((k) => bb.includes(k));\r\n }));\r\n \r\n setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\r\n const s:TableState = {\r\n ...state,\r\n persistedTableSettings : new PersistedTableSettings(settings),\r\n notPersistedTableSettings : new NotPersistedTableSettings(settings)\r\n };\r\n return s;\r\n });\r\n\r\n tableSettings = this.selectSignal(state => {\r\n const ts : PersistedTableSettings & NotPersistedTableSettings =\r\n {...state.persistedTableSettings, ...state.notPersistedTableSettings};\r\n return ts;\r\n });\r\n\r\n tableSettings$ = this.select(state => {\r\n const ts : PersistedTableSettings & NotPersistedTableSettings =\r\n {...state.persistedTableSettings,...state.notPersistedTableSettings};\r\n return ts;\r\n })\r\n\r\n props = this.selectSignal(s => s.props);\r\n\r\n setLinkMaps = this.updater((state,maps: any)=>{\r\n return {...state,linkMaps:maps};\r\n });\r\n\r\n getLinkInfo = (md:MetaData) => this.selectSignal(state => state.linkMaps[md.key]);\r\n\r\n getIsExpanded = (columnKey: string, groupHeaderKey: string) => {\r\n return this.selectSignal(state => !!state.groupBy.filter(g => g.key === columnKey && g.expandedHeaders.includes(groupHeaderKey)).length);\r\n }\r\n $isVirtual = this.selectSignal(state => state.notPersistedTableSettings.useVirtualScroll === true || (state.notPersistedTableSettings.useVirtualScroll as VirtualScrollOptions)?.virtualAsDefault || state.showAll);\r\n $viewType = this.selectSignal<ViewType>(state => {\r\n const usePaginator = state.notPersistedTableSettings.usePaginator;\r\n if(state.showAll || (this.$isVirtual() && !usePaginator)){\r\n return 'virtual all';\r\n } else if(this.$isVirtual() && usePaginator) {\r\n return 'virtual paginator';\r\n } else if(usePaginator) {\r\n return 'paginator';\r\n } else {\r\n return 'all';\r\n }\r\n });\r\n\r\n $orderedCodeVisibleMetaDatas = this.selectSignal(\r\n this.$metaDataArray, (mds) => mds.filter(m => m.fieldType !== FieldType.Hidden),\r\n {equal: (a: MetaData[],b) => b.length === a.length && b.every((s,i) => a[i].key === s.key)}\r\n )\r\n\r\n $orderedVisibleColumns = this.selectSignal(this.$orderedCodeVisibleMetaDatas, this.$hiddenKeys,\r\n (cs, hiddenKeys) => cs.filter(m => !hiddenKeys.includes(m.key)).map(m => m.key));\r\n\r\n $currentPage = this.selectSignal(state => state.currentPage);\r\n $pageSize = this.selectSignal(s => s.userDefined?.pageSize || s.pageSize);\r\n\r\n}\r\n\r\nexport const orderedStateVisibleMetaData = (state: TableState) => {\r\n const ordered = orderStateMetaData(state);\r\n const orderedVisible = ordered\r\n .filter(metaData => !state.hiddenKeys.includes(metaData.key) && state.metaData[metaData.key].fieldType !== FieldType.Hidden);\r\n return orderedVisible;\r\n}\r\n\r\nexport const orderedCodeVisibleMetaData = (state: TableState) =>\r\n orderStateMetaData(state).filter(md => md.fieldType !== FieldType.Hidden);\r\n\r\nexport const orderStateMetaData = (state:TableState) => {\r\n return orderMetaData(state.metaData, state.userDefined.order);\r\n}\r\n\r\nexport const orderMetaData = (metaData: Dictionary<MetaData>, userDefined: Dictionary<number>) => {\r\n const userOrderArr = Object.entries(userDefined);\r\n return userOrderArr.length ?\r\n Object.values(metaData).sort((a,b)=> {\r\n const orderA = userDefined[a.key];\r\n const orderB = userDefined[b.key];\r\n return order(orderA, orderB);\r\n })\r\n :\r\n Object.values(metaData).sort((a,b)=> {\r\n const orderA = a.order;\r\n const orderB = b.order;\r\n return order(orderA, orderB);\r\n })\r\n}\r\n\r\nfunction order(orderA: number | undefined, orderB: number | undefined){\r\n if(orderA == null && orderB == null) {\r\n return 0;\r\n }\r\n if(orderA == null) {\r\n return 1;\r\n }\r\n if(orderB == null) {\r\n return -1;\r\n }\r\n return orderA - orderB;\r\n}\r\n\r\nfunction cleanPersistedState(state: TableState,pState: PersistedTableState) {\r\n const metas = Object.values(state.metaData);\r\n const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\r\n obj[filter.filterId!] = pState.filters[filter.filterId!];\r\n return obj;\r\n }, {});\r\n const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\r\n return ({...pState,filters,sorted})\r\n}\r\n\r\nexport type ViewType = 'virtual paginator' | 'paginator' | 'virtual all' | 'all';\r\n","import { Directive, OnInit, OnDestroy, inject } from '@angular/core';\r\nimport { MatSort, Sort, SortDirection } from '@angular/material/sort';\r\nimport { distinctUntilChanged, distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../classes/table-store';\r\n\r\n@Directive({\r\n selector: '[multiSort]',\r\n exportAs: 'multiSort',\r\n inputs: ['disabled: matSortDisabled'],\r\n providers: [\r\n { provide: MatSort, useExisting: MultiSortDirective }\r\n ],\r\n standalone: true\r\n})\r\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\r\n private state = inject(TableStore);\r\n\r\n\r\n constructor() {\r\n super();\r\n this.state.setSort(this.sortChange.pipe(\r\n distinctUntilChanged((f,s) => f.active === s.active && f.direction === s.direction),\r\n map(sc => ({ key: sc.active, direction: sc.direction }))));\r\n this.state.on(\r\n this.state.sort$,\r\n (rules) => {\r\n const topRule = { active: rules[0]?.active || '', direction: rules[0]?.direction || '' as SortDirection};\r\n const topActiveChanged = topRule.active !== this.active || '';\r\n const topDirectionChanged = topRule.direction !== this.direction || '';\r\n if(topActiveChanged || topDirectionChanged){\r\n this.active = topRule.active;\r\n this.direction = topRule.direction;\r\n this.sortChange.emit(topRule);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n\r\nexport function isDifferent(a: Sort[], b: Sort[]) {\r\n if (a.length !== b.length) {\r\n return true;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i].active !== b[i].active || a[i].direction !== b[i].direction) {\r\n return true;\r\n } \r\n }\r\n return false;\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'preventEnter',\r\n standalone: true\r\n})\r\nexport class PreventEnterDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown() {\r\n return false\r\n }\r\n}\r\n","import {Directive, HostListener} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[stop-propagation]\",\r\n standalone: true\r\n})\r\nexport class StopPropagationDirective\r\n{\r\n @HostListener(\"click\", [\"$event\"])\r\n public onClick(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener(\"mousedown\", [\"$event\"])\r\n public onMousedown(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Directive, ElementRef, AfterViewInit, Input, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[autoFocus]',\r\n standalone: true,\r\n})\r\nexport class AutoFocusDirective implements AfterViewInit {\r\n private elementRef = inject(ElementRef);\r\n\r\n\r\n @Input() autoFocus = true;\r\n\r\n ngAfterViewInit() {\r\n if(this.autoFocus){\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[clickSubject]',\r\n exportAs: 'clickSubject',\r\n host: {\r\n '(click)': 'next(this._val)'\r\n },\r\n standalone: true,\r\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\r\n constructor( ) {\r\n super();\r\n }\r\n _val!: T;\r\n\r\n @Input('clickSubject') set clickSubject( val: T) {\r\n this._val = val;\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Directive({\r\n selector: '[clickEmitter]',\r\n exportAs: 'clickEmitter',\r\n host: {\r\n '(click)': 'next(true)'\r\n },\r\n standalone: true,\r\n}) export class ClickEmitterDirective extends Subject<boolean> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n allOpenOpDialogs: MatDialogRef<any>[] = [];\r\n\r\n addDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs.push(ref);\r\n }\r\n\r\n removeDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs = this.allOpenOpDialogs.filter(rf => ref.id !== rf.id);\r\n }\r\n\r\n closeAllOpDialogs() {\r\n this.allOpenOpDialogs.forEach(ref => ref.close());\r\n }\r\n}\r\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver, ChangeDetectionStrategy, input, inject, effect, untracked, Signal, isSignal, signal } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Observable, Subscription, Subject, isObservable } from 'rxjs';\r\nimport { switchAll } from 'rxjs/operators';\r\nimport { DialogService } from './dialog-service';\r\nimport { subscriber } from '../../rxjs';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\ninterface DialogViewContext<T> {\r\n $implicit: T,\r\n opDialog: T,\r\n close: () => void,\r\n}\r\n\r\n@Component({\r\n selector: 'dialog-wrapper',\r\n template: ``,\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DialogWrapper<T = any> {\r\n private vcr = inject(ViewContainerRef);\r\n\r\n viewEmbedded = false;\r\n viewContext = {\r\n close: () => {},\r\n } as DialogViewContext<T>;\r\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\r\n if (this.viewEmbedded) {\r\n this.vcr.clear();\r\n }\r\n this.viewEmbedded = true;\r\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\r\n }\r\n\r\n set close(closeMethod: () => void ) {\r\n this.viewContext.close = closeMethod;\r\n }\r\n\r\n set data(value: T) {\r\n this.viewContext.$implicit = value;\r\n this.viewContext.opDialog = value;\r\n }\r\n\r\n}\r\n\r\n\r\nconst defaultDialogConfig: MatDialogConfig = {\r\n maxHeight: '95vh',\r\n}\r\n\r\n\r\n@Directive(\r\n { selector: '[opDialog]', standalone: true }\r\n) export class DialogDirective<T> {\r\n private templateRef = inject<TemplateRef<DialogViewContext<T>>>(TemplateRef);\r\n private dialog = inject(MatDialog);\r\n private service = inject(DialogService);\r\n\r\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\r\n _dialogConfig: MatDialogConfig<T> = defaultDialogConfig;\r\n @Input() opDialogAddDialogClass = true;\r\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\r\n \r\n this._dialogConfig = { ...defaultDialogConfig, ...config };\r\n }\r\n\r\n get opDialogConfig() : MatDialogConfig<T> {\r\n return this._dialogConfig;\r\n }\r\n injector = inject(Injector);\r\n subscriber = subscriber(this.injector);\r\n @Input('opDialog') set setControl(i: Observable<T> | Signal<T>){\r\n let o: Observable<T>;\r\n if(isSignal(i)){\r\n o = toObservable<T>(i, { injector: this.injector })\r\n } else {\r\n o = i;\r\n }\r\n untracked(() => {\r\n this.subscriber.on(o, this.setDataAndState);\r\n });\r\n } \r\n\r\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\r\n dialogRef?: MatDialogRef<any, boolean>;\r\n componentWrapper?: DialogWrapper<T>;\r\n\r\n _data = new Subject<Observable<T>>();\r\n\r\n close() {\r\n this.dialogRef?.close();\r\n }\r\n\r\n initDialog() {\r\n if(this.nativeElement){\r\n const rect = this.nativeElement.getBoundingClientRect();\r\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\r\n this.opDialogConfig = {...this.opDialogConfig , position};\r\n }\r\n if (this.opDialogAddDialogClass) {\r\n this.opDialogConfig.panelClass = [...(Array.isArray(this.opDialogConfig.panelClass) ? this.opDialogConfig.panelClass : this.opDialogConfig.panelClass ? [this.opDialogConfig.panelClass] : []), 'opDialog'];\r\n }\r\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\r\n this.componentWrapper = this.dialogRef.componentInstance;\r\n this.componentWrapper!.close = () => this.dialogRef?.close();\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n this.componentWrapper!.template = this.templateRef;\r\n if (!this.opDialogConfig.disableClose) {\r\n this.service.addDialogRef(this.dialogRef);\r\n }\r\n const sub = this.dialogRef.afterClosed().subscribe(() => {\r\n this.opDialogClosed.emit(true);\r\n this.service.removeDialogRef(this.dialogRef!);\r\n this.dialogRef = undefined;\r\n sub.unsubscribe();\r\n });\r\n }\r\n setDataAndState = (data: T) => {\r\n if (data){\r\n this.opDialogConfig.data = data;\r\n this.setDialogState(true);\r\n } else {\r\n this.setDialogState(false);\r\n }\r\n }\r\n\r\n setDialogState(open: boolean) {\r\n if (open) {\r\n if (!this.dialogRef) {\r\n this.initDialog();\r\n } else {\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n }\r\n } else if (!open && this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false | 0 | '' | null | undefined>> {\r\n return true;\r\n }\r\n\r\n}\r\n","import { Directive, Input, ElementRef, Renderer2, inject } from '@angular/core';\r\nimport { Dictionary } from '@ngrx/entity';\r\n\r\n\r\n@Directive({\r\n selector: '[styler]',\r\n standalone: true\r\n}) export class StylerDirective {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\r\n stylesApplied : Dictionary<string> = {};\r\n @Input() element?: any;\r\n @Input() set styler(styles: StylerStyle){\r\n const toApply = Object.entries(styles ?? {}).reduce((acc, [key, val]) => {\r\n if(typeof(val) === 'string'){\r\n acc[key] = val;\r\n this.el.nativeElement.style[key] = val;\r\n } else if(val?.condition === true || val?.condition(this.element)){\r\n const value = typeof(val.value) === 'string' ? val.value : val?.value(this.element);\r\n acc[key] = value;\r\n this.el.nativeElement.style[key] = value;\r\n }\r\n return acc;\r\n }, {} as Dictionary<string>);\r\n\r\n Object.keys(this.stylesApplied).filter(key => !Object.keys(toApply).includes(key)).forEach(key => {\r\n this.renderer.removeStyle(this.el.nativeElement, key);\r\n });\r\n this.stylesApplied = toApply;\r\n };\r\n}\r\n\r\nexport type StylerStyle = Dictionary<\r\n string\r\n |\r\n { \r\n condition: ((t:any) => boolean) | true,\r\n value: ((t:any) => string) | string\r\n }>\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\r\n\r\n\r\n@Directive(\r\n { selector: '[opMatSlideToggleGroup]',\r\n standalone: true\r\n}\r\n) export class MatSlideToggleGroupDirective {\r\n @Input() allowMultiple = false;\r\n\r\n _toggles!: QueryList<MatSlideToggle>;\r\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\r\n this._toggles = val;\r\n this._ready.next(true);\r\n }\r\n\r\n private _ready = new ReplaySubject<boolean>(1);\r\n\r\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\r\n return this._ready.pipe( switchMap( _ => this.getObs()));\r\n }\r\n\r\n\r\n getInitValue() {\r\n const startValue = this._toggles.reduce( (prev,cur) => {\r\n if(!cur.name) {\r\n throw new Error('toggle must have the name attribute set');\r\n }\r\n prev[cur.name] = cur.checked\r\n return prev;\r\n }, {} as {[k:string]: boolean});\r\n return startValue;\r\n }\r\n\r\n getObs() {\r\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\r\n\r\n const startValue = this.getInitValue();\r\n\r\n return toggleChanges.pipe(\r\n scan( (prev,cur) => {\r\n const toggleName = cur.source.name!;\r\n const newVal = {...prev,[toggleName]:cur.checked};\r\n if(cur.checked && !this.allowMultiple) {\r\n Object.keys(prev)\r\n .filter( key => key !== toggleName && prev[key])\r\n .forEach( key => {\r\n newVal[key] = false;\r\n this._toggles.find( toggle => toggle.name === key)!.toggle();\r\n });\r\n }\r\n return newVal;\r\n },startValue),\r\n startWith(startValue),\r\n );\r\n\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input[trimWhitespace]',\r\n standalone: true\r\n})\r\nexport class TrimWhitespaceDirective {\r\n private elem = inject(ElementRef);\r\n\r\n\r\n @HostListener('blur') onBlur() {\r\n const inputString = this.elem.nativeElement.value;\r\n if(inputString) {\r\n const newValue = inputString.trim().replace(/\\t/g, '');\r\n if(inputString !== newValue) {\r\n this.elem.nativeElement.value = newValue;\r\n this.elem.nativeElement.dispatchEvent(new Event('input', {bubbles:true}));\r\n }\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'func',\r\n standalone: true\r\n})\r\nexport class FunctionPipe implements PipeTransform {\r\n transform<T, TParam extends any[]>(func: ( (...args: [...TParam])=> T ) | string, ...args: [...TParam]): T {\r\n if(typeof func === 'string') {\r\n const [instance, ...tail] = args;\r\n const method = instance[func].bind(instance);\r\n return method(...tail);\r\n }\r\n return func(...args);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, inject } from '@angular/core';\r\nimport { Dictionary, Predicate } from '@ngrx/entity';\r\n\r\n@Directive({\r\n selector: '[conditionalClasses]',\r\n standalone: true\r\n})\r\nexport class ConditionalClassesDirective {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n\r\n @Input() element?: any;\r\n @Input('conditionalClasses') classes?: Dictionary<Predicate<any>>;\r\n\r\n classesApplied: string[] = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let toApply: string [] = [];\r\n if(this.classes) {\r\n toApply = Object.keys(this.classes)\r\n .filter( key => this.classes![key]!(this.element) );\r\n }\r\n\r\n var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\r\n var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\r\n\r\n classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\r\n\r\n classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement , c ) );\r\n\r\n this.classesApplied = toApply;\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\r\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\r\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\r\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\r\nimport { DialogDirective } from \"./directives/dialog\";\r\nimport { DialogService } from \"./directives/dialog-service\";\r\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\r\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\r\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\r\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\r\nimport { StylerDirective } from \"./directives/styler\";\r\nimport { FunctionPipe } from \"./pipes/function.pipe\";\r\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\r\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\r\n\r\n@NgModule({\r\n exports: [\r\n StopPropagationDirective,\r\n PreventEnterDirective,\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n imports: [\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n TrimWhitespaceDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n providers: [\r\n DialogService\r\n ]\r\n})\r\nexport class UtilitiesModule {\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType, FilterTypes } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { PreventEnterDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-date-filter',\r\n templateUrl: './date-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n MatInputModule, FormsModule, MatDatepickerModule, PreventEnterDirective\r\n ]\r\n})\r\nexport class DateFilterComponent {\r\n FilterType = FilterTypes;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if (CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull) {\r\n <mat-form-field>\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\r\n <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix [for]=\"cal\" preventEnter />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.DateBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter />\r\n <mat-datepicker #fromVal></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter />\r\n <mat-datepicker #toVal />\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef, inject } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { AutoFocusDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-in-filter',\r\n templateUrl: './in-filter.component.html',\r\n styleUrls: ['./in-filter.component.css'],\r\n changeDetection:ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InFilterComponent,\r\n multi: true\r\n }],\r\n standalone: true,\r\n imports: [\r\n FormsModule, AutoFocusDirective\r\n ]\r\n})\r\nexport class InFilterComponent implements ControlValueAccessor {\r\n private ref = inject(ChangeDetectorRef);\r\n\r\n FieldType = FieldType;\r\n @Input() type! : FieldType;\r\n value: (string | number | undefined)[] = [undefined];\r\n\r\n constructor() {\r\n this.value = [undefined];\r\n }\r\n writeValue(obj: any[]): void {\r\n if(!obj?.length) obj = [undefined];\r\n this.value = obj;\r\n this.ref.markForCheck();\r\n }\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n addInput(){\r\n this.value = [...this.value, undefined];\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n removeInput(index: number){\r\n this.value = [...this.value];\r\n this.value.splice(index,1);\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n onValueChange(i:number,value: number | string){\r\n this.value = [...this.value];\r\n this.value[i] = value;\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","<div class=inline>\r\n @for (val of value; track $index) {\r\n <div>\r\n @if(type === FieldType.Number || type === FieldType.Currency){\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index, $event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\"/>\r\n }\r\n @else {\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index ,$event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\r\n #input [autoFocus]=\"$index === value.length - 1\" />\r\n }\r\n </div>\r\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput($index)\">-</button>\r\n @if ($index === value.length - 1) {\r\n <button [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\r\n }\r\n \r\n }\r\n</div>\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FilterType, FilterTypes } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\n\r\n\r\n@Component({\r\n selector: 'tb-number-filter',\r\n templateUrl: './number-filter.component.html',\r\n styleUrls: ['./number-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n MatInputModule, FormsModule, InFilterComponent\r\n ]\r\n})\r\nexport class NumberFilterComponent {\r\n FilterType = FilterTypes; FieldType = FieldType;\r\n @Input() CurrentFilterType!: FilterType;\r\n @Input() info!:PartialFilter;\r\n}\r\n","@if(CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In){\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween){\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In) {\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType, FilterTypes } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PreventEnterDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-date-time-filter',\r\n templateUrl: './date-time-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n FormsModule, PreventEnterDirective\r\n ]\r\n})\r\nexport class DateTimeFilterComponent {\r\n FilterType = FilterTypes;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if(CurrentFilterType !== FilterType.DateTimeBetween && CurrentFilterType !== FilterType.IsNull){\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue\" preventEnter name=\"filterValue\" class=\"op-date-time-input\"/>\r\n}\r\n@if(CurrentFilterType === FilterType.DateTimeBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.Start\" preventEnter name=\"Start\" class=\"op-date-time-input\"/>\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.End\" preventEnter name=\"End\" class=\"op-date-time-input\"/>\r\n </ng-container>\r\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef, inject } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { Dictionary } from '../../../interfaces/dictionary';\r\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\r\nimport { AsyncPipe, KeyValuePipe } from '@angular/common';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\n\r\n\r\n@Component({\r\n selector: 'tb-in-list-filter , [tb-in-list-filter]',\r\n template: `\r\n @for (item of keyValues$ | async| keyvalue; track item.key) {\r\n <div>\r\n <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\r\n {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InListFilterComponent,\r\n multi: true\r\n }],\r\n standalone: true,\r\n imports: [\r\n AsyncPipe, KeyValuePipe, MatCheckboxModule, StopPropagationDirective, SpaceCasePipe\r\n ]\r\n})\r\nexport class InListFilterComponent implements ControlValueAccessor {\r\n private ref = inject(ChangeDetectorRef);\r\n private tableState = inject(TableStore);\r\n\r\n value: string[] = [];\r\n FieldType = FieldType;\r\n writeValue(obj: string[]): void {\r\n this.value = obj;\r\n\r\n if(this.value) {\r\n this.selectedKeys = this.value.map( f => f );\r\n }\r\n this.ref.markForCheck();\r\n }\r\n\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n @Input() key!: string;\r\n\r\n keyValues$! : Observable<Dictionary<string>>;\r\n selectedKeys : string[] = [];\r\n metaData!: MetaData;\r\n\r\n ngOnInit() {\r\n this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\r\n tap(metaData => this.metaData = metaData),\r\n map( metaData => {\r\n if(metaData.additional?.filterOptions?.filterableValues ) {\r\n return metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\r\n } else {\r\n if(metaData.fieldType === FieldType.Enum ) {\r\n return metaData.additional!.enumMap;\r\n }\r\n }\r\n return {};\r\n })\r\n );\r\n }\r\n\r\n selectFilterChanged($event, val) {\r\n if($event.checked) {\r\n this.selectedKeys = [...this.selectedKeys, val];\r\n } else {\r\n this.selectedKeys = this.selectedKeys.filter( item => item !== val);\r\n }\r\n\r\n this.value = this.selectedKeys;\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, input, computed, output, signal } from '@angular/core';\r\nimport { filterTypeMap, FilterInfo, PartialFilter } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FilterType, FilterTypes } from '../../enums/filterTypes';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { KeyValuePipe, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PreventEnterDirective, SpaceCasePipe } from '../../../utilities';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NumberFilterComponent } from '../number-filter/number-filter.component';\r\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\r\nimport { DateTimeFilterComponent } from '../date-time-filter/date-time-filter.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\nimport { InListFilterComponent } from './in-list/in-list-filter.component';\r\n\r\n@Component({\r\n selector: 'tb-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatCardModule, FormsModule, SpaceCasePipe, MatButtonModule, MatTooltipModule, MatIconModule,\r\n MatInputModule, MatSelectModule, KeyValuePipe, NumberFilterComponent,\r\n DateFilterComponent, DateTimeFilterComponent, MatRadioModule, InFilterComponent, InListFilterComponent,\r\n PreventEnterDirective, NgTemplateOutlet\r\n ]\r\n})\r\nexport class FilterComponent<T extends FieldType> {\r\n protected state = inject(TableStore);\r\n\r\n filterTypes = filterTypeMap;\r\n FilterType = FilterTypes;\r\n FieldType = FieldType;\r\n\r\n $filter = input.required<PartialFilter, PartialFilter>({ \r\n alias: 'filter',\r\n transform: (f) => ({ ...f })\r\n });\r\n\r\n close = output();\r\n\r\n $enteredFilterType = signal<FilterType | undefined>(undefined);\r\n $currentFilterType = computed(() => this.$enteredFilterType() || this.$filter()?.filterType);\r\n $availableFilterTypes = computed(() => this.filterTypes[this.$filter()?.fieldType]);\r\n\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if (filter.filterValue != null && filter.filterType) {\r\n this.state.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","@let filter = $filter();\r\n@let currentFilterType = $currentFilterType();\r\n\r\n@if (filter) {\r\n<mat-card appearance=\"outlined\" class=\"filter-card\">\r\n <mat-card-content>\r\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\r\n <div class=\"head-row\" >\r\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\r\n <button class=\"cancel-button small-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\r\n matTooltip=\"Close\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"filter-row\">\r\n <div class=\"inline\">\r\n <mat-form-field class=\"my-filter\" >\r\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [ngModel]=\"$currentFilterType()\" (ngModelChange)=\"$enteredFilterType.set($event)\" [panelWidth]=\"null\">\r\n @for (kvp of filterTypes[filter.fieldType]; track kvp) {\r\n <mat-option [value]=\"kvp\">\r\n {{ kvp }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n @if(filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\r\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber) {\r\n <ng-container *ngTemplateOutlet=\"String\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency){\r\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Boolean){\r\n <ng-container *ngTemplateOutlet=\"Boolean\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Date){\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.DateTime){\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Enum){\r\n <ng-container *ngTemplateOutlet=\"Enum\" />\r\n }\r\n\r\n @if(currentFilterType === FilterType.IsNull){\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\">\r\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n }\r\n </div>\r\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\r\n Apply\r\n </button>\r\n \r\n \r\n <ng-template #String>\r\n @if(currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In){\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n } @else if(currentFilterType === FilterType.In) {\r\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" />\r\n }\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n @if(currentFilterType === FilterType.BooleanEquals){\r\n <div class=\"switch\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n </ng-template>\r\n <ng-template #Enum>\r\n @if(currentFilterType === FilterType.In){\r\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\r\n\r\n }\r\n </ng-template>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\r\nimport { DisplayCol } from '../../classes/display-col';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport {CdkDragDrop, DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-col-displayer',\r\n templateUrl: './gen-col-displayer.component.html',\r\n styleUrls: ['./gen-col-displayer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush ,\r\n standalone: true,\r\n imports: [\r\n AsyncPipe, MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,\r\n DragDropModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenColDisplayerComponent {\r\n private tableState = inject(TableStore);\r\n $columns = computed(() => this.tableState.$orderedCodeVisibleMetaDatas().map( md => ({\r\n key: md.key,\r\n displayName: md.displayName,\r\n isVisible: !this.tableState.$hiddenKeys().includes(md.key)\r\n })));\r\n\r\n reset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = true);\r\n this.emit(displayCols);\r\n }\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.tableState.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder:event.previousIndex })\r\n }\r\n unset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = false);\r\n this.emit(displayCols);\r\n }\r\n\r\n emit(displayCols: DisplayCol[]) {\r\n this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\r\n }\r\n}\r\n","@if($columns(); 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}","import { Injectable } from \"@angular/core\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { PartialFilter } from \"../../classes/filter-info\";\r\n@Injectable()\r\nexport class WrapperFilterStore extends ComponentStore<{filterInfo:PartialFilter[]}>{\r\n constructor(){\r\n super({filterInfo:[]});\r\n }\r\n\r\n clearAll = this.updater(()=>({filterInfo:[]}));\r\n deleteByIndex = this.updater((state,index:number)=>{\r\n const arr = [...state.filterInfo];\r\n arr.splice(index, 1);\r\n return {filterInfo:arr};\r\n });\r\n\r\n currentFilters$ = this.state$.pipe(map(state => state.filterInfo));\r\n\r\n addFilter = this.updater((state,filter:PartialFilter)=>{\r\n return ({...state,filterInfo:[...state.filterInfo,filter]});\r\n })\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';\r\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tb-filter-displayer',\r\n templateUrl: './gen-filter-displayer.component.html',\r\n styleUrls: ['./gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatButtonModule, MatMenuModule, MatTooltipModule, StopPropagationDirective, MatIconModule,\r\n AsyncPipe, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenFilterDisplayerComponent {\r\n protected tableState = inject(TableStore);\r\n protected filterStore = inject(WrapperFilterStore);\r\n $filterCols = computed(() => {\r\n const mds = this.tableState.$metaDataArray();\r\n return mds.filter(m => m.fieldType !== FieldType.Hidden && m.fieldType !== FieldType.NotMapped && !m.noFilter)\r\n });\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\r\n }\r\n}\r\n","<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n @for (md of $filterCols(); track md.key) {\r\n <button (click)=\"addFilter(md)\" mat-menu-item>\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({name: 'keyDisplay', standalone: true})\r\nexport class KeyDisplayPipe implements PipeTransform {\n tableState = inject(TableStore);\n\r\n transform(key: string): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( metaData => metaData.displayName || spaceCase(key))\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FilterType, FilterTypes } from '../enums/filterTypes';\r\n\r\n@Pipe({name: 'formatFilterType', standalone: true})\r\nexport class FormatFilterTypePipe implements PipeTransform {\r\n transform(filterType: FilterType, value: any){\r\n if(filterType === FilterTypes.IsNull){\r\n return value ? filterType : 'Is Not Blank'\r\n }\r\n return filterType;\r\n }\r\n}","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FilterType, FilterTypes } from '../enums/filterTypes';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { DateTimeFilterFuncs } from '../functions/date-filter-function';\r\n\r\n\r\n@Pipe({name: 'formatFilterValue', standalone: true})\r\nexport class FormatFilterValuePipe implements PipeTransform {\r\n tableState = inject(TableStore);\r\n private datePipe = inject(DatePipe);\r\n\r\n transform(value: any, key: string, filterType: FilterType): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( md => {\r\n if(filterType === FilterTypes.IsNull) {\r\n return '';\r\n }\r\n if(value && (filterType === FilterTypes.In )){\r\n if(md.fieldType === FieldType.Enum) {\r\n return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\r\n }\r\n return value.join(', ') ?? value;\r\n }\r\n if(filterType === FilterTypes.NumberBetween){\r\n return value.Start + ' - ' + value.End;\r\n }\r\n if(md.fieldType === FieldType.Date){\r\n return this.datePipe.transform(value, 'MM/dd/yy');\r\n }\r\n if(md.fieldType === FieldType.DateTime){\r\n return !!DateTimeFilterFuncs[filterType] ? this.datePipe.transform(value, 'short') : this.datePipe.transform(value, 'MM/dd/yy');\r\n }\r\n return value\r\n })\r\n );\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FilterInfo, isFilterInfo } from '../../../classes/filter-info';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FilterComponent } from '../../filter/filter.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { KeyDisplayPipe } from '../../../pipes/key-display';\r\nimport { FormatFilterTypePipe } from '../../../pipes/format-filter-type.pipe';\r\nimport { FormatFilterValuePipe } from '../../../pipes/format-filter-value.pipe';\r\n\r\n@Component({\r\n selector: 'lib-filter-list',\r\n templateUrl: './filter-list.component.html',\r\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n LetDirective, MatButtonModule, MatTooltipModule, MatIconModule, FilterComponent,\r\n MatChipsModule, AsyncPipe, KeyDisplayPipe, FormatFilterTypePipe, FormatFilterValuePipe\r\n ]\r\n})\r\nexport class FilterChipsComponent {\r\n\r\n tableState = inject(TableStore);\r\n filterStore = inject(WrapperFilterStore);\r\n\r\n $filters = computed(() => Object.values(this.tableState.$filters()).filter(f => isFilterInfo(f) && !f._isExternallyManaged) as FilterInfo[])\r\n deleteByIndex(index: number) {\r\n this.filterStore.deleteByIndex(index);\r\n }\r\n\r\n addFilter(filter:FilterInfo<any>){\r\n this.filterStore.addFilter(filter);\r\n }\r\n\r\n clearAll() {\r\n this.filterStore.clearAll();\r\n }\r\n\r\n currentFilters$ = this.filterStore.currentFilters$;\r\n}\r\n","<div class=\"d-w\" *ngrxLet=\"currentFilters$ as currentFilters\" >\r\n\r\n @if (currentFilters.length) {\r\n <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all Filters Cards\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n <div class=\"float\">\r\n @for (filter of currentFilters; track filter.key) {\r\n <div class=\"filter\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex($index)\" />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-chip-set>\r\n @for (filter of $filters(); track filter.key) {\r\n <mat-chip (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n @if ($filters().length > 1) {\r\n <mat-chip (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n\r\n</div>\r\n","import { PipeTransform, Injectable, inject } from '@angular/core';\r\nimport { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { TableBuilderConfigToken } from '../classes/TableBuilderConfig';\r\nimport { SpaceCasePipe } from '../../utilities';\r\nimport { get } from 'lodash';\r\nexport function isPipe(o : any ): o is PipeTransform {\r\n return typeof ((o as PipeTransform).transform ) === 'function';\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TransformCreator {\r\n private datePipe = inject(DatePipe);\r\n private currencyPipe = inject(CurrencyPipe);\r\n private phonePipe = inject(PhoneNumberPipe);\r\n private casePipe = inject(SpaceCasePipe);\r\n private config = inject(TableBuilderConfigToken);\r\n\r\n createTransformer(metaData: MetaData<any, any>, noIcons = false): ((value: any, ...args: any[]) => any) {\r\n const nested = metaData.key.includes('.');\r\n const defaultFunc = nested ? (value: any) => get( value, metaData.key) : (value: any) => value[metaData.key];\r\n if(metaData.map){\r\n return (value: any) => { \r\n return metaData.map!(value)};\r\n }\r\n if( metaData.transform) {\r\n if(isPipe(metaData.transform)){\r\n return (value: any) => (metaData!.transform as PipeTransform).transform(defaultFunc(value));\r\n }\r\n return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any,b:any)=>any)(defaultFunc(value),value);\r\n }\r\n if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\r\n var transformer = this.config.transformers![metaData.fieldType]!;\r\n return (value: any) => transformer(defaultFunc(value));\r\n }\r\n const defaultDateFormat = this.config.defaultSettings?.dateFormat ?? 'shortDate';\r\n const defaultDateTimeFormat = this.config.defaultSettings?.dateTimeFormat ?? 'short';\r\n switch(metaData.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = metaData.additional?.dateFormat ?? defaultDateFormat;\r\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateFormat);\r\n case FieldType.DateTime:\r\n const dateTimeFormat = metaData.additional?.dateTimeOptions?.format ?? defaultDateTimeFormat;\r\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateTimeFormat);\r\n case FieldType.Currency:\r\n return (value: any) => this.currencyPipe.transform(defaultFunc(value));\r\n case FieldType.PhoneNumber:\r\n return (value: any) => this.phonePipe.transform(defaultFunc(value));\r\n case FieldType.Enum:\r\n return (value: any) => this.casePipe.transform(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\r\n case FieldType.Boolean:\r\n if(noIcons) {\r\n return defaultFunc\r\n }\r\n let forTrue = 'check'\r\n let forFalse = '';\r\n if(metaData.additional?.boolean?.forTrue) {\r\n forTrue = metaData?.additional.boolean.forTrue.icon;\r\n }\r\n if(metaData.additional?.boolean?.showForFalse === true) {\r\n forFalse = 'clear';\r\n } else if (metaData.additional?.boolean?.showForFalse?.icon) {\r\n forFalse = metaData.additional?.boolean?.showForFalse?.icon;\r\n }\r\n return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\r\n }\r\n return defaultFunc;\r\n }\r\n\r\n createItemTransformer = <T = any, AdditionalFields extends string[] = []>(metaData: MetaData<T ,AdditionalFields>, noIcons = false, mutate = false) => {\r\n const transform = this.createTransformer(metaData, noIcons);\r\n return (t: T) => {\r\n if(!mutate){\r\n t = { ...t }\r\n }\r\n t[metaData.key as string] = transform(t)\r\n }\r\n }\r\n\r\n createItemTransformers = <T = any, AdditionalFields extends string[] = []>(metaDatas: MetaData<T, AdditionalFields>[], noIcons = false, mutate = false) => {\r\n const transformers = metaDatas.map(meta => this.createItemTransformer(meta ,noIcons, true));\r\n return (t: T) => {\r\n if(!t) return t;\r\n if(!mutate){\r\n t = { ... t}\r\n }\r\n transformers.forEach(m => m(t));\r\n return t;\r\n }\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { LinkInfo } from \"../services/link-creator.service\";\r\n\r\n@Component({\r\n selector: \"tb-router-link-column\",\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterModule\r\n ],\r\n template: `\r\n <a target=\"{{additional().target}}\"\r\n [routerLink]=\" [link()]\"\r\n [queryParams]=\"queryParams()\"\r\n [fragment]=\"routerLinkOptions().fragment\"\r\n [preserveFragment]=\"routerLinkOptions().preserveFragment\"\r\n [queryParamsHandling]=\"routerLinkOptions().queryParamsHandling\"\r\n >\r\n {{value()}}\r\n </a>\r\n `\r\n})export class RouterLinkColumnComponent {\r\n additional = input.required<LinkInfo>();\r\n element = input.required<any>();\r\n value = input.required<string>();\r\n link = computed(() => this.additional().link(this.element()));\r\n queryParams = computed(() => this.additional().routerLinkOptions!.queryParams(this.element()));\r\n routerLinkOptions = computed(() => this.additional().routerLinkOptions!);\r\n}\r\n\r\n@Component({\r\n selector: \"tb-link-column\",\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <a target=\"{{additional().target}}\"\r\n href=\"{{link()}}\">\r\n {{value()}}\r\n </a>\r\n `\r\n})export class LinkColumnComponent {\r\n value = input.required<string>();\r\n element = input.required<any>();\r\n additional = input.required<LinkInfo>();\r\n link = computed(() => this.additional().link(this.element()));\r\n}","import { ChangeDetectionStrategy, Component, input, computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tb-comma-array-column',\r\n standalone: true,\r\n template: `\r\n @for(val of displayArray(); track $index){\r\n {{val + (!$last ? ',' : '')}}\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayCommaColumnComponent {\r\n\r\n value = input.required<(string | number)[]>();\r\n additional = input(3);\r\n displayArray = computed(() => (this.value() || []).slice(0, this.additional()))\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'tb-new-line-array-column',\r\n standalone: true,\r\n template: `\r\n @for(val of displayArray(); track $index){\r\n {{val}}\r\n @if(!$last){ <br/> }\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayNewLineColumnComponent {\r\n value = input.required<(string | number)[]>();\r\n additional = input(3);\r\n displayArray = computed(() => (this.value() || []).slice(0, this.additional()));\r\n}\r\n","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { LinkColumnComponent, RouterLinkColumnComponent } from \"../link-column.component\";\r\nimport { ArrayCommaColumnComponent, ArrayNewLineColumnComponent } from \"../array-column.component\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { FunctionPipe } from \"../../../utilities\";\r\n\r\n@Component({\r\n selector: 'initialization',\r\n templateUrl: './initialization-component.html',\r\n standalone: true,\r\n imports: [\r\n LinkColumnComponent, ArrayCommaColumnComponent, MatIconModule, FunctionPipe,\r\n RouterLinkColumnComponent, ArrayNewLineColumnComponent\r\n ]\r\n})\r\nexport class InitializationComponent {\r\n @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\r\n @ViewChild('routerLink', {static: true}) routerLinkTemplate! : TemplateRef<any>;\r\n @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\r\n @ViewChild('arrayNewLine', {static: true}) arrayNewLineTemplate! : TemplateRef<any>;\r\n @ViewChild('arrayComma', {static: true}) arrayCommaTemplate! : TemplateRef<any>;\r\n @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\r\n @ViewChild('defaultWithIcon', {static: true}) defaultWithIcon! : TemplateRef<any>;\r\n}\r\n","<ng-template #link let-value='value' let-element='element' let-additional=\"additional\">\r\n <tb-link-column [element]=\"element\" [value]=\"value\" [additional]=\"additional\" />\r\n</ng-template>\r\n\r\n<ng-template #routerLink let-value='value' let-element='element' let-additional=\"additional\">\r\n <tb-router-link-column [element]=\"element\" [value]=\"value\" [additional]=\"additional\"/>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-value='value'>\r\n <span>\r\n <img src=\"{{value}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #arrayNewLine let-value='value' let-element='element' let-additional=\"additional\">\r\n <tb-new-line-array-column [value]='value' [additional]='additional'/>\r\n</ng-template>\r\n\r\n<ng-template #arrayComma let-value='value' let-element='element' let-additional=\"additional\">\r\n <tb-comma-array-column [value]='value' [additional]='additional'/>\r\n</ng-template>\r\n\r\n<ng-template #default let-value='value'>\r\n <span>{{ value }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-value='value'>\r\n <mat-icon>{{ value}}</mat-icon>\r\n</ng-template>\r\n","import { EnvironmentInjector, Injector, createComponent, inject } from \"@angular/core\";\r\nimport { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\r\nimport { TableBuilderConfigToken } from \"../classes/TableBuilderConfig\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class TableTemplateService {\r\n instance!: InitializationComponent;\r\n templates;\r\n\r\n initTemplates() {\r\n this.templates = { };\r\n this.templates[FieldType.Array] = this.instance.arrayNewLineTemplate;\r\n this.templates[FieldType.Array + .5] = this.instance.arrayCommaTemplate;\r\n this.templates[FieldType.Boolean] = this.instance.defaultWithIcon;\r\n this.templates[FieldType.Currency] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Date] = this.instance.defaultTemplate;\r\n this.templates[FieldType.DateTime] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Expression] = this.instance.defaultTemplate;\r\n this.templates[FieldType.NotMapped] = this.instance.defaultTemplate;\r\n this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\r\n this.templates[FieldType.Link] = this.instance.linkTemplate;\r\n this.templates[FieldType.Link + .5] = this.instance.routerLinkTemplate;\r\n this.templates[FieldType.Number] = this.instance.defaultTemplate;\r\n this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\r\n this.templates[FieldType.String] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Enum] = this.instance.defaultTemplate;\r\n }\r\n getTemplate(metaData: MetaData) : TemplateRef<any> {\r\n\r\n let tmp = metaData.fieldType === FieldType.Link && metaData.additional?.link?.useRouterLink\r\n ? this.templates[FieldType.Link + .5] \r\n : \r\n metaData.fieldType === FieldType.Array && ((metaData.additional as ArrayAdditional)?.arrayStyle === ArrayStyle.CommaDelimited || this.tableConfig?.arrayInfo?.arrayStyle === ArrayStyle.CommaDelimited)\r\n ? this.templates[FieldType.Array + .5] \r\n :\r\n this.templates[metaData.fieldType];\r\n if(metaData.useIcon) {\r\n if(tmp === this.instance.defaultTemplate) {\r\n tmp = this.instance.defaultWithIcon;\r\n }\r\n }\r\n return tmp;\r\n }\r\n\r\n constructor() {\r\n const ei = inject(EnvironmentInjector);\r\n\r\n const c = createComponent(InitializationComponent, {\r\n environmentInjector: ei,\r\n });\r\n this.instance = c.instance;\r\n this.initTemplates();\r\n }\r\n\r\n tableConfig = inject(TableBuilderConfigToken);\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, ViewChild, inject } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType, FilterTypes } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { InListFilterComponent } from '../filter/in-list/in-list-filter.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-header-menu',\r\n templateUrl: './header-menu.component.html',\r\n styleUrls: ['./header-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatMenuModule, MatIconModule, MatButtonModule, FormsModule, InListFilterComponent,\r\n MatInputModule, MatTooltipModule, NgClass, StopPropagationDirective, MatRadioModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class HeaderMenuComponent {\r\n protected tableState = inject(TableStore);\r\n\r\n FieldType = FieldType;\r\n FilterType = FilterTypes;\r\n myFilterType!: FilterType;\r\n myFilterValue: any;\r\n\r\n filter!: Partial<FilterInfo>;\r\n\r\n @Input() metaData!: MetaData;\r\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\r\n\r\n hideField(key: string) {\r\n this.tableState.hideColumn(key);\r\n }\r\n\r\n ngOnInit() {\r\n this.filter = { key: this.metaData.key, fieldType: this.metaData.fieldType };\r\n this.resetFilterType();\r\n }\r\n\r\n resetFilterType() {\r\n if(this.metaData.additional?.filterOptions?.filterableValues) {\r\n this.myFilterType = FilterTypes.In;\r\n return;\r\n }\r\n switch (this.metaData.fieldType) {\r\n case FieldType.String:\r\n case FieldType.Link:\r\n case FieldType.PhoneNumber:\r\n case FieldType.Array:\r\n case FieldType.Unknown:\r\n this.myFilterType = FilterTypes.StringContains;\r\n break;\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n this.myFilterType = FilterTypes.NumberEquals;\r\n break;\r\n case FieldType.Boolean:\r\n this.myFilterType = FilterTypes.BooleanEquals;\r\n break;\r\n case FieldType.Date:\r\n case FieldType.DateTime:\r\n this.myFilterType = FilterTypes.DateIsOn;\r\n break;\r\n case FieldType.Enum:\r\n this.myFilterType = FilterTypes.In;\r\n break;\r\n }\r\n }\r\n\r\n setStringFilterType() {\r\n this.myFilterType = this.myFilterType === FilterTypes.StringContains ? FilterTypes.StringDoesNotContain : FilterTypes.StringContains;\r\n }\r\n\r\n setFilterType(filterType: FilterType) {\r\n if (filterType === this.myFilterType) {\r\n this.resetFilterType();\r\n } else {\r\n this.myFilterType = filterType;\r\n }\r\n }\r\n\r\n onEnter(filter: FilterInfo) {\r\n if (filter.filterValue != undefined && filter.filterType) {\r\n this.tableState.addFilter(filter);\r\n this.trigger.closeMenu();\r\n }\r\n }\r\n}\r\n","<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n @if (!(metaData.fieldType === FieldType.NotMapped))\r\n {\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n }\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n @if (!(metaData.fieldType === FieldType.NotMapped))\r\n {\r\n <ng-form #myForm=\"ngForm\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n \r\n @if(myFilterType === FilterType.Or || myFilterType === FilterType.In){\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n }\r\n @else if(metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber) {\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency) {\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\">=</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Boolean) {\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime) {\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n }\r\n \r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n }\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport {sumBy} from 'lodash';\r\n\r\n@Pipe({\r\n name: 'columnTotal',\r\n standalone: true\r\n })\r\nexport class ColumnTotalPipe implements PipeTransform {\r\n transform(data: any[], metaData: MetaData) {\r\n const dataToCalculate = data.filter(d => !d.isGroupHeader)\r\n switch (metaData.additional!.footer!.type) {\r\n case 'sum':\r\n return sumBy(dataToCalculate, metaData.key);\r\n }\r\n }\r\n}\r\n","import {Dictionary} from \"@ngrx/entity\";\r\nimport {MetaData, metaDataArrToDict} from \"../../interfaces/report-def\";\r\nimport {StylerStyle} from \"../../../utilities/directives/styler\";\r\n\r\nexport const calculateWidths = (metaData: MetaData, userDefinedWidth: number | undefined) => {\r\n const definedWidth = (userDefinedWidth && `${userDefinedWidth}px`) || metaData.width;\r\n return definedWidth;\r\n}\r\n\r\nexport function calculateUserDefinedWidth(userDefinedWidth: number | undefined){\r\n if(userDefinedWidth) return {flex: `0 0 ${userDefinedWidth}px`, maxWidth: 'none' };\r\n return undefined;\r\n}\r\n\r\nexport function calculateTableDefinedWidth(metaData: MetaData, tableSettingsMinWidth: number | undefined){\r\n if(metaData.width) return ({flex: `0 0 ${metaData.width}`, maxWidth: 'none'});\r\n const style = { flex: `${1}`};\r\n if(tableSettingsMinWidth) style['minWidth'] = `${tableSettingsMinWidth}px`;\r\n return style;\r\n}\r\n\r\nexport const calculateFlexWidth = (metaData: MetaData, userDefinedWidth: number | undefined, tableSettingsMinWidth: number | undefined) => {\r\n const definedWidth = calculateWidths(metaData, userDefinedWidth);\r\n if(definedWidth) return ({flex: `0 0 ${definedWidth}`, maxWidth: 'none' });\r\n const style = { flex: `${1}`};\r\n if(tableSettingsMinWidth) style['minWidth'] = `${tableSettingsMinWidth}px`;\r\n return style;\r\n}\r\n\r\nexport const columnStyles = (metaData: MetaData, userDefinedWidth: number | undefined, tableSettingsMinWidth?: number | undefined) => {\r\n const fullMetaStyles = metaData.additional?.styles ?? {};\r\n const userWidth = calculateUserDefinedWidth(userDefinedWidth) ?? {};\r\n const tableWidth = userDefinedWidth ? {} : calculateTableDefinedWidth(metaData, tableSettingsMinWidth);\r\n const styles: {\r\n header: Dictionary<string>;\r\n body: StylerStyle;\r\n footer: Dictionary<string>;\r\n } = {\r\n header: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.header, ...userWidth},\r\n footer: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.footer, ...userWidth},\r\n body: { ...tableWidth, ...fullMetaStyles, ...metaData.additional?.columnPartStyles?.body, ...userWidth},\r\n };\r\n return styles;\r\n}\r\n\r\nexport const calculateFlexWidths = (metaDatas: MetaData[], userDefinedWidths: Dictionary<number>, tableSettingsMinWidth: number | undefined) => {\r\n return metaDataArrToDict(metaDatas, md => calculateFlexWidth(md, userDefinedWidths[md.key], tableSettingsMinWidth));\r\n}\r\n\r\nexport const columnsStyles = (metaDatas: MetaData[], userDefinedWidths: Dictionary<number>) => {\r\n return metaDataArrToDict(metaDatas, md => columnStyles(md, userDefinedWidths[md.key]));\r\n}\r\n","import { Component, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, Predicate, Injector, computed, inject } from '@angular/core';\r\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { MatColumnDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { Observable } from 'rxjs';\r\nimport { CustomCellDirective, ResizeColumnDirective } from '../../directives';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TransformCreator } from '../../services/transform-creator';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { map } from 'rxjs/operators';\r\nimport { TableTemplateService } from '../../services/table-template-service';\r\nimport { CdkDropList, CDK_DROP_LIST, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { AsyncPipe, CurrencyPipe, DecimalPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { ConditionalClassesDirective, FunctionPipe, SpaceCasePipe } from '../../../utilities';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { HeaderMenuComponent } from '../header-menu/header-menu.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { ColumnTotalPipe } from '../../pipes/column-total.pipe';\r\nimport { StylerDirective } from '../../../utilities/directives/styler';\r\nimport { columnStyles } from './column-helpers';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\nimport { LinkInfo } from '../../services/link-creator.service';\r\n\r\n\r\n@Component({\r\n templateUrl: './column-builder.component.html',\r\n styleUrls: ['./column-builder.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\r\n ],\r\n standalone: true,\r\n imports: [\r\n MatTableModule, NgTemplateOutlet, ResizeColumnDirective, FunctionPipe, StylerDirective,\r\n ConditionalClassesDirective, DragDropModule, MatSortModule, SpaceCasePipe, HeaderMenuComponent,\r\n AsyncPipe, MatTooltipModule, LetDirective, ColumnTotalPipe, CurrencyPipe, DecimalPipe\r\n ]\r\n})\r\nexport class ColumnBuilderComponent implements OnInit {\r\n private transformCreator = inject(TransformCreator);\r\n private table = inject<MatTable<any>>(MatTable);\r\n private state = inject(TableStore);\r\n private templateService = inject(TableTemplateService);\r\n protected injector = inject(Injector);\r\n\r\n @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\r\n @ViewChild('body') bodyTemplate!: TemplateRef<any>;\r\n tableConfig = inject(TableBuilderConfigToken);\r\n FieldType = FieldType;\r\n filter!: Partial<FilterInfo>;\r\n _metaData!: MetaData;\r\n get metaData(){\r\n return this._metaData;\r\n }\r\n set metaData(md: MetaData){\r\n if(this.metaData && this.metaData.fieldType !== md.fieldType){\r\n this._metaData = md;\r\n this.initialSetUp();\r\n this.furtherSetUp();\r\n } else {\r\n this._metaData = md;\r\n }\r\n }\r\n customCell?: CustomCellDirective = undefined;\r\n data$!: Observable<any[]>;\r\n\r\n outerTemplate!: TemplateRef<any>;\r\n innerTemplate!: TemplateRef<any>;\r\n transform!: (o: any, ...args: any[])=> any ;\r\n\r\n getInnerTemplate() :TemplateRef<any> {\r\n if(this.metaData.template) return this.metaData.template;\r\n if (this.customCell?.TemplateRef) return this.customCell.TemplateRef;\r\n return this.templateService.getTemplate(this.metaData);\r\n }\r\n showFilters$!: Observable<boolean>;\r\n getOuterTemplate() {\r\n return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\r\n }\r\n classes?: Dictionary<Predicate<any>>;\r\n styles = computed(() => {\r\n return columnStyles(this.metaData, this.state.$getUserDefinedWidth(this.metaData.key)(), this.state.tableSettingsMinWidth());\r\n })\r\n ngOnInit() {\r\n this.initialSetUp();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.furtherSetUp();\r\n this.table.addColumnDef(this.columnDef);\r\n }\r\n\r\n initialSetUp(){\r\n if(this.metaData.fieldType === FieldType.Currency) {\r\n this.classes = {\r\n ['negative-currency']: (element) => element[this.metaData.key] < 0,\r\n ...this.metaData.classes\r\n }\r\n }\r\n else {\r\n this.classes = this.metaData.classes;\r\n }\r\n this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\r\n\r\n this.showFilters$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeaderFilters || this.metaData.noFilter)));\r\n this.additional = this.metaData.fieldType === FieldType.Link\r\n ? this.state.getLinkInfo(this.metaData)()\r\n :\r\n this.metaData.fieldType === FieldType.Array\r\n ? (this.metaData.additional as ArrayAdditional)?.limit || this.tableConfig?.arrayInfo?.arrayStyle\r\n : undefined;\r\n }\r\n\r\n furtherSetUp(){\r\n this.outerTemplate = this.getOuterTemplate();\r\n this.innerTemplate = this.getInnerTemplate();\r\n this.transform = this.transformCreator.createTransformer(this.metaData);\r\n }\r\n\r\n cellClicked(element: any, key: string) {\r\n if(this.metaData.click) {\r\n this.metaData.click(element,key);\r\n }\r\n }\r\n\r\n getTooltip = (element: any) => {\r\n if(typeof this.metaData.toolTip === 'string') {\r\n return this.metaData.toolTip;\r\n }\r\n return this.metaData.toolTip!(element);\r\n }\r\n\r\n additional: LinkInfo | number | undefined;\r\n}\r\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles() as styles\" >\r\n\r\n <!-- header -->\r\n <ng-template matHeaderCellDef #myHeader>\r\n <mat-header-cell cdkDrag [style]='styles.header' resizeColumn [key]=\"metaData.key\" class=\"column-head\"\r\n [class]='metaData.additional?.columnPartClasses?.header'>\r\n <div class=\"header-container\" cdkDragHandle>\r\n @if(!customCell?.columnDef?.headerCell)\r\n {\r\n @if(metaData.fieldType !== FieldType.NotMapped){\r\n <div mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n } @else if(metaData.fieldType === FieldType.NotMapped){\r\n <div style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n }\r\n @if((showFilters$ | async)){\r\n <tb-header-menu #menu [metaData]='metaData' />\r\n }\r\n }\r\n @else\r\n {\r\n <ng-container *ngTemplateOutlet=\"customCell!.columnDef!.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\r\n </ng-container>\r\n }\r\n </div>\r\n </mat-header-cell>\r\n </ng-template>\r\n\r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: { metaData: metaData, element: element , styles: styles.body, $implicit: element }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ? (getTooltip | func : element) : ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context: { value: (transform | func : element), element: element, additional: additional, $implicit: element }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n\r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n @if(customCell?.columnDef?.footerCell){\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell!.columnDef!.footerCell.template; context: {metaData: metaData, data: data$, styles : styles.footer }\"/>\r\n } @else {\r\n <mat-footer-cell [style]='styles.footer' *ngrxLet=\"data$ as data\" [class]='metaData.additional?.columnPartClasses?.footer'>\r\n @if(!!data?.length && metaData.additional?.footer){\r\n <span class=\"bold\">\r\n @switch (metaData.fieldType) {\r\n @case (FieldType.Currency) { {{ data | columnTotal: metaData | currency }} }\r\n @case (FieldType.Number) { {{ data | columnTotal: metaData | number }} }\r\n }\r\n </span>\r\n }\r\n\r\n </mat-footer-cell>\r\n }\r\n </ng-template>\r\n</ng-container>\r\n","import { Sort } from \"@angular/material/sort\";\r\nimport { SortDirection } from \"../../../interfaces/report-def\";\r\nimport { difference } from \"lodash\";\r\n\r\n// If we are only sorting due to a change in the Sorts[] we can 'optimize'. If the sort array was first by column a asc then by column b desc then by column c asc,\r\n// and now it is first by column d asc then by column a desc then by column b desc then by column c asc, we dont need to rerun the tail, i.e. for culumn b and c.\r\n// So we need to calculate the matching tail of the sort array. Then sortsToRun will be the non-matching head.\r\n// But if any sorts were removed the only way to 'unsort' is to start by the original data and run all the existing sorts again, so 'sorts to run' will be all\r\n// the sorts.\r\n// We always pass allSorts to the container because if the table data changes all the sorts will need to be run.\r\nexport function updateSortState(previousSorts: SortState, currentSorts: Sort[]): SortState{\r\n currentSorts = addInitSort(currentSorts);\r\n if(sortsRemoved(previousSorts.allSorts, currentSorts)){\r\n return ({sortsToRun: currentSorts, allSorts: currentSorts});\r\n }\r\n const sameTailLength = getSameTailLength(previousSorts.allSorts, currentSorts);\r\n const sortsToRun = currentSorts.slice(0, currentSorts.length - sameTailLength);\r\n return ({sortsToRun, allSorts: currentSorts});\r\n}\r\n\r\nexport interface SortState { sortsToRun: Sort[], allSorts: Sort[]}\r\n\r\nfunction addInitSort(sorts: Sort[]){\r\n return [...sorts, {active: initIndexSymbol as unknown as string, direction: 'asc' as SortDirection}];\r\n}\r\n\r\nfunction sortsRemoved(previousSorts: Sort[], currentSorts: Sort[]): boolean{\r\n const previousSortedColumns = previousSorts.map(s => s.active);\r\n const currentSortedColumns = currentSorts.map(s => s.active);\r\n const sortsRemoved = !!difference(previousSortedColumns, currentSortedColumns).length;\r\n return sortsRemoved;\r\n}\r\n\r\n\r\nfunction getSameTailLength(previousSorts: Sort[], currentSorts: Sort[]){\r\n previousSorts = [...previousSorts].reverse();\r\n currentSorts = [...currentSorts].reverse();\r\n let indexOfChange = currentSorts.findIndex((s, i) => s.active !== previousSorts[i]?.active || s.direction !== previousSorts[i]?.direction);\r\n if(indexOfChange === -1) return indexOfChange = currentSorts.length;\r\n return indexOfChange;\r\n}\r\n\r\nexport const initIndexSymbol = Symbol('tb_init_index');\r\n\r\nexport const initialSortState: SortState = { sortsToRun: [], allSorts: []};","import { Injectable } from \"@angular/core\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { DataState, defaultDataState } from \"./TableState\";\r\n\r\n@Injectable()\r\nexport class DataStore extends ComponentStore<DataState> {\r\n constructor() {\r\n super({ ...defaultDataState });\r\n }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, Output, SimpleChanges, OnInit, QueryList, ViewContainerRef, Injector, EventEmitter, computed, inject, input, viewChild, effect, untracked, signal } from '@angular/core';\r\nimport { MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { Observable, combineLatest } from 'rxjs';\r\nimport { SelectionChange, SelectionModel } from '@angular/cdk/collections';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { map } from 'rxjs/operators';\r\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { CdkDragDrop, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { FunctionPipe } from '../../../utilities';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { TransformCreator } from '../../services/transform-creator';\r\nimport { initIndexSymbol } from '../table-container/table-container.helpers/sort-state.helpers';\r\nimport { VirtualScrollOptions } from '../../classes/table-builder-general-settings';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { DataStore } from '../../classes/data-store';\r\n\r\n@Component({\r\n selector: 'tb-generic-table',\r\n templateUrl: './generic-table.component.html',\r\n styleUrls: ['./generic-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTableModule, DragDropModule, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,\r\n MatTooltipModule, AsyncPipe, FunctionPipe,\r\n ],\r\n})\r\nexport class GenericTableComponent implements OnInit {\r\n protected state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n private viewContainer = inject(ViewContainerRef);\r\n private transformCreator = inject(TransformCreator);\r\n\r\n $headerRow = viewChild(MatHeaderRowDef);\r\n $footerRow = viewChild(MatFooterRowDef);\r\n $table = viewChild(MatTable);\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.state.setUserDefinedOrder({ newOrder:event.currentIndex, oldOrder:event.previousIndex })\r\n }\r\n _trackBy?: string;\r\n @Input() set trackBy(trackBy: string){\r\n if(trackBy){\r\n this._trackBy = trackBy;\r\n this.trackByFunction = (index:number, item: any) => item[trackBy];\r\n }\r\n this.setUpSelections(trackBy);\r\n }\r\n get trackBy(): string | undefined { return this._trackBy }\r\n $displayData = input.required<any[]>({ alias: 'displayData' });\r\n $displayDataLength = computed(() => this.$displayData()?.length || 0);\r\n $hasFooterMeta = computed(() => this.state.$metaDataArray().some(md => !!md.additional?.footer))\r\n $data = input.required<any[]>({ alias: 'data' })\r\n data$ = toObservable(this.$data);\r\n @Input() rows!: QueryList<MatRowDef<any>>;\r\n @Input() columnBuilders!: ColumnBuilderComponent[];\r\n $columnInfos = input.required<ColumnInfo[]>({ alias: 'columnInfos' });\r\n $hasCustomFooter = computed(() => this.$columnInfos()?.some(ci => !!ci.customCell?.columnDef?.footerCell))\r\n @ViewChild(CdkDropList, { static: true }) dropList!: CdkDropList;\r\n $footerRowStyle = computed(() => {\r\n const hasData = !!this.$displayDataLength();\r\n const metaFooter = this.$hasFooterMeta();\r\n const customFooter = this.$hasCustomFooter();\r\n const hasSelectionColumn = this.state.props().selectionColumn;\r\n return customFooter || (hasData && (metaFooter || hasSelectionColumn)) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';\r\n });\r\n $showFooterRow = computed(() => this.$footerRowStyle() !== 'no-footer');\r\n currentColumns!: string[];\r\n _injector = inject(Injector);\r\n injector = Injector.create({\r\n providers: [\r\n {provide: MatTable, useFactory: ()=> this.$table() },\r\n {provide: CdkDropList, useFactory: ()=> this.dropList },\r\n ],\r\n parent: this._injector\r\n });\r\n rowDefArr :MatRowDef<any>[] = [];\r\n $hasSelectColumn = computed(() => this.state.selectSignal(state => state.props.selectionColumn)());\r\n $hasIndexColumn = computed(() => this.state.selectSignal(state => state.props.indexColumn)());\r\n myColumns = signal<Dictionary<ColumnBuilderComponent>>({});\r\n $showHeader = computed(() => !this.state.tableSettings().hideColumnHeader)\r\n offset$ = this.dataStore.select( s => s.virtualScrollOffset );\r\n dataView!: Observable<any[]>;\r\n\r\n constructor() {\r\n this.setUpSelections();\r\n effect(() => {\r\n const columnInfos = this.$columnInfos() || [];\r\n untracked(() => {\r\n Object.entries(this.myColumns()).forEach(([key, value]) => {\r\n const columnInfo = columnInfos.find(ci => ci.metaData.key === key);\r\n if(!columnInfo || columnInfo.customCell !== value.customCell) {\r\n delete this.myColumns()[key];\r\n this.$table()?.removeColumnDef(value.columnDef);\r\n }\r\n })\r\n columnInfos.forEach(ci => this.addMetaData(ci))\r\n })\r\n });\r\n effect(() => {\r\n const headerRow = this.$headerRow();\r\n const showHeader = this.$showHeader();\r\n const table = this.$table();\r\n untracked(() => {\r\n if(headerRow && showHeader && table) table.addHeaderRowDef(headerRow);\r\n else if(headerRow && table) table.removeHeaderRowDef(headerRow);\r\n })\r\n });\r\n effect(() => {\r\n const footerRow = this.$footerRow();\r\n const showFooter = this.$showFooterRow();\r\n const table = this.$table();\r\n untracked(() => {\r\n if(footerRow && showFooter && table) table.addFooterRowDef(footerRow);\r\n else if(footerRow && table) table.removeFooterRowDef(footerRow);\r\n })\r\n });\r\n }\r\n\r\n defaultTrackBy = (index:number, item: any) => item[initIndexSymbol];\r\n trackByFunction = this.defaultTrackBy;\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rows && this.rows && this.myColumns().length) {\r\n this.initializeRowDefs([...this.rows]);\r\n }\r\n }\r\n $keys = computed(() => {\r\n const displayed = this.state.$orderedVisibleColumns();\r\n const built = this.myColumns();\r\n const keys = displayed.filter(d => !!built[d]);\r\n if(this.$hasSelectColumn()){\r\n keys.unshift('select');\r\n }\r\n if(this.$hasIndexColumn()) {\r\n keys.unshift('index');\r\n }\r\n return keys;\r\n })\r\n keys$ = toObservable(this.$keys);\r\n ngOnInit() {\r\n this.initializeRowDefs([...this.rows]);\r\n\r\n this.state.on(this.keys$, keys => {\r\n this.rowDefArr?.forEach(row => row.columns = keys)\r\n });\r\n\r\n this.state.on(this.selectableData$, (data) => {\r\n if(this.selection.selected.length){\r\n const trackByFunction = this.trackBy ? (s) => data.every(d => d[this.trackBy!] !== s[this.trackBy!]) : s => !data.includes(s);\r\n const removed = this.selection.selected.filter(trackByFunction);\r\n this.selection.deselect(...removed);\r\n }\r\n });\r\n\r\n }\r\n\r\n $usePaginator = computed(() => this.state.tableSettings().usePaginator);\r\n $useVirtualScroll = computed(() => this.state.$viewType().includes('virtual'));\r\n $offsetIndex = computed(() => {\r\n const virtualStart = this.dataStore.selectSignal(d => d.virtualEnds.start)();\r\n const pageSize = this.state.$pageSize();\r\n const currentPage = this.state.$currentPage();\r\n if(this.$useVirtualScroll()){\r\n return virtualStart;\r\n }\r\n if(this.$usePaginator()){\r\n return pageSize * currentPage;\r\n }\r\n return 0;\r\n });\r\n\r\n\r\n isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\r\n return row.isGroupHeader;\r\n }\r\n\r\n setExpanded(key: string, groupKey: string, isExpanded: boolean): void {\r\n this.state.updateExpandedGroups({ key , isExpanded, groupKey });\r\n }\r\n\r\n addMetaData(column: ColumnInfo) {\r\n const columnBuilder = this.myColumns()[column.metaData.key];\r\n if(columnBuilder) {\r\n columnBuilder.metaData = column.metaData;\r\n } else {\r\n const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\r\n index: 0,\r\n injector: this.injector\r\n });\r\n component.instance.customCell = column.customCell;\r\n component.instance.metaData = column.metaData;\r\n component.instance.data$ = this.data$;\r\n this.myColumns.update(mc => ({...mc, [column.metaData.key]: component.instance}));\r\n }\r\n }\r\n\r\n initializeRowDefs = (defs:MatRowDef<any>[])=>{\r\n const table = this.$table();\r\n if(!table) return;\r\n this.rowDefArr.forEach(r=> table.removeRowDef(r));\r\n this.rowDefArr = defs;\r\n defs.forEach(r => {\r\n r.columns = this.$keys().concat(Object.values(this.myColumns()).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\r\n table.addRowDef(r)\r\n });\r\n }\r\n\r\n selection! : SelectionModel<any>;\r\n @Output() selection$ = new EventEmitter<SelectionChange<any>>();\r\n masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\r\n masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\r\n setUpSelections(trackBy?: string){\r\n this.selection = trackBy ? new SelectionModel<any>(true, [], true, (a, b) => a[trackBy] === b[trackBy]) : new SelectionModel<any>(true, []);\r\n this.state.on(this.selection.changed, c => this.selection$.emit(c));\r\n }\r\n $selectableData = computed(() => {\r\n if(this.state.$viewType() === 'virtual paginator' || this.state.$viewType() === 'paginator'){\r\n const previousPageRecords = this.state.$currentPage() * this.state.$pageSize();\r\n return this.$data().slice(previousPageRecords, previousPageRecords + this.state.$pageSize());\r\n }else if(this.state.$viewType() === 'all' || this.state.$viewType() === 'virtual all'){\r\n return this.$data();\r\n }\r\n return [];\r\n });\r\n selectableData$ = toObservable(this.$selectableData);\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.$selectableData()?.length || 0;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n if(this.isAllSelected()){\r\n this.selection.clear()\r\n } else {\r\n this.selection.select(...this.$selectableData());\r\n }\r\n }\r\n\r\n tableWidth = this.state.getUserDefinedTableSize$.pipe(\r\n previousAndCurrent<number | undefined>(0),\r\n map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\r\n if( currentUserDefinedWidth){\r\n return ({width:`${currentUserDefinedWidth}px`});\r\n } if( wasReset() ){\r\n return ({width:'initial'});\r\n }\r\n return ({});\r\n\r\n function wasReset(){\r\n return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\r\n }\r\n })\r\n );\r\n\r\n getTransform = (key: string, val: string) => {\r\n if(val == undefined || val === 'null') return '';\r\n try {\r\n return this.transformCreator.createTransformer(this.myColumns[key].metaData, true)({ [key]: val});\r\n } catch (error) {\r\n return val;\r\n }\r\n }\r\n\r\n $rowHeight = this.state.selectSignal(s => {\r\n if(this.state.$isVirtual() && (s.notPersistedTableSettings.useVirtualScroll as VirtualScrollOptions)?.enforceRowHeight){\r\n const height = (s.notPersistedTableSettings.useVirtualScroll as VirtualScrollOptions)!.rowHeight;\r\n return height + 'px' ;\r\n }\r\n if(typeof s.notPersistedTableSettings.rowHeight === 'number'){\r\n return s.notPersistedTableSettings.rowHeight + 'px';\r\n }\r\n return s.notPersistedTableSettings.rowHeight;\r\n\r\n });\r\n\r\n $headerHeight = this.state.selectSignal(s => {\r\n if(this.state.$isVirtual() && (s.notPersistedTableSettings.useVirtualScroll as VirtualScrollOptions)?.enforceHeaderHeight){\r\n const height = (s.notPersistedTableSettings.useVirtualScroll as VirtualScrollOptions)!.headerHeight;\r\n return height + 'px';\r\n }\r\n if(typeof s.notPersistedTableSettings.headerHeight === 'number'){\r\n return s.notPersistedTableSettings.headerHeight + 'px';\r\n }\r\n return s.notPersistedTableSettings.headerHeight;\r\n });\r\n\r\n $groupHeaderHeight = this.state.selectSignal(s => {\r\n if(s.notPersistedTableSettings.groupHeaderHeight){\r\n return s.notPersistedTableSettings.groupHeaderHeight + 'px';\r\n }\r\n return this.$rowHeight();\r\n });\r\n\r\n $stickyFooter = computed(() => this.state.props().stickyFooter || this.state.$isVirtual());\r\n}\r\n","<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]=\"($footerRowStyle())\"\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=\"select-column\">\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\" class=\"select-column\">\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 class=\"select-column\">\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n\r\n <!-- index column -->\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" class=\"index-column\">#\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\" class=\"index-column\">\r\n {{ 1 + i + $offsetIndex() }}\r\n </mat-cell>\r\n <mat-footer-cell *matFooterCellDef class=\"index-column\"></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 @let expanded = (state.getIsExpanded | func : row.key : row.groupName );\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\">\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 <mat-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matRowDef=\"let row; columns: $keys(); let i = index\"/>\r\n <mat-row [style.height]=\"state.props().groupHeaderHeight ? state.props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"\r\n [style.min-height]=\"state.props().groupHeaderHeight ? state.props().groupHeaderHeight + 'px' : $groupHeaderHeight()\"\r\n *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\"/>\r\n</mat-table>\r\n\r\n<mat-header-row [style.height]=\"$headerHeight()\" [style.min-height]=\"$headerHeight()\"\r\n *matHeaderRowDef=\"$keys(); sticky: state.props().isSticky\" [style.top.px]=\"((offset$ | async)! * -1)\"/>\r\n<mat-footer-row [style.height]=\"$rowHeight()\" [style.min-height]=\"$rowHeight()\"\r\n *matFooterRowDef=\"$keys(); sticky: $stickyFooter() \"\r\n [style.bottom.px]=\"$stickyFooter() ? (offset$ | async) : undefined\"/>","export function downloadData(data: string, filename: string, mimeType: string) {\r\n const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\r\n const downloadLink = document.createElement('a');\r\n downloadLink.download = filename;\r\n downloadLink.href = url;\r\n downloadLink.style.display = 'none';\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n document.body.removeChild(downloadLink);\r\n URL.revokeObjectURL(url);\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { combineLatest} from 'rxjs';\r\nimport { orderStateMetaData, TableStore } from '../classes/table-store';\r\nimport { TableBuilderConfigToken } from '../classes/TableBuilderConfig';\r\nimport { downloadData } from '../functions/download-data';\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\r\nimport { TableState } from '../classes/TableState';\r\nimport { isPipe } from './transform-creator';\r\nimport { get } from 'lodash';\r\n\r\n@Injectable()\r\nexport class ExportToCsvService<T> {\r\n state = inject(TableStore);\r\n private config = inject(TableBuilderConfigToken);\r\n private datePipe = inject(DatePipe);\r\n\r\n\r\n exportToCsv = (data: T[]) => {\r\n const hiddenKeys = this.state.selectSignal(s => s.hiddenKeys)();\r\n const meta = this.state.$metaDataArray().filter(md => !md.noExport && !hiddenKeys.includes(md.key));\r\n const csv = this.csvData(data, meta);\r\n downloadData(csv,'export.csv', 'text/csv') ;\r\n }\r\n\r\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\r\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\r\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\r\n return res.join('\\n');\r\n }\r\n\r\n metaToField = (meta: MetaData<T>, row: T) => {\r\n let val: any = get( row,meta.key);\r\n if (val == null && !meta.transform) return val\r\n if(meta.transform && meta.fieldType !== FieldType.Expression){\r\n const transform = meta.transform as any;\r\n return isPipe(transform) ? transform.transform(val) : transform(val);\r\n }\r\n if(meta.map){\r\n return meta.map(row);\r\n }\r\n switch (meta.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\r\n val = this.transform(val, dateFormat);\r\n break;\r\n case FieldType.DateTime:\r\n const dateTimeFormat = meta.additional?.export?.dateTimeFormat || this.config?.export?.dateTimeFormat || meta.additional?.dateTimeOptions?.format;\r\n val = this.transform(val, dateTimeFormat);\r\n break;\r\n case FieldType.String:\r\n const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\r\n val = prepend + val;\r\n break;\r\n case FieldType.Array:\r\n const additional = meta.additional as ArrayAdditional;\r\n val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\r\n break;\r\n case FieldType.Expression:\r\n val = (meta.transform as any)(row);\r\n break;\r\n }\r\n if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\r\n val = val.replaceAll('\"', '\"\"');\r\n val = '\"' + val + '\"';\r\n }\r\n return val;\r\n }\r\n\r\n private transform(val: any, dateFormat: any) {\r\n if (this.config.transformers && this.config.transformers[FieldType.Date]) {\r\n return this.config.transformers[FieldType.Date]!(val);\r\n }\r\n return this.datePipe.transform(val, dateFormat);\r\n }\r\n}\r\n","import { ArrayStyle } from '../interfaces/report-def';\r\n\r\nexport interface DefaultSettings {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n}\r\n\r\nexport const ArrayDefaults = {\r\n limit : 3,\r\n arrayStyle : ArrayStyle.CommaDelimited\r\n}","import { get } from \"lodash\";\r\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\r\nimport { Dictionary } from \"@ngrx/entity\";\r\nimport { QueryParamsHandling } from \"@angular/router\";\r\n\r\nexport function createLinkCreatorDict<T>(metaDatas: MetaData<T>[]){\r\n return metaDatas.reduce((acc, md) => {\r\n if(md.fieldType === FieldType.Link){ acc[md.key]= createLinkCreator(md)}\r\n return acc;\r\n },{} as Dictionary<LinkInfo>)\r\n}\r\n\r\nexport function createLinkCreator<T>(metaData: MetaData<T>): LinkInfo{\r\n const target = metaData.additional?.link?.target || '_blank';\r\n const useRouterLink = metaData.additional?.link?.useRouterLink || false;\r\n const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\r\n const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = parseInterpolated(value, element);\r\n return map;\r\n }, {}) ?? null,\r\n fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\r\n preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\r\n queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\r\n }\r\n : undefined;\r\n\r\n\r\n if (hasRoute) {\r\n return ({\r\n link: (element: T) => parseInterpolated(metaData.additional!.link!.interpolatedRoute!, element),\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n } else {\r\n const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\r\n const base = metaData.additional!.link?.base;\r\n const getKey = key(metaData);\r\n return ({\r\n link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n }\r\n}\r\n\r\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ? \r\n (element:any) => get(element, (metaData.additional!.link!.urlKey as string))\r\n :\r\n (element:any) => get(element, metaData.key);\r\n\r\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\r\n interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,key));\r\n\r\nexport interface LinkInfo {\r\n link: (element: any) => string;\r\n target: string;\r\n useRouterLink: boolean;\r\n routerLinkOptions?: {\r\n queryParams: (element: any) => any;\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n}\r\n","import { ComponentStore } from \"@ngrx/component-store\";\r\nimport { Injectable, Signal } from \"@angular/core\";\r\nimport { Observable, filter, tap } from \"rxjs\";\r\nimport { concatLatestFrom } from '@ngrx/operators';\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\nimport { PersistedTableState, TableState } from \"../classes/TableState\";\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TableBuilderStateStore extends ComponentStore<GlobalStorageState> {\r\n constructor(){\r\n super(loadGlobalStorageState() || defaultStorageState)\r\n }\r\n\r\n //selectors\r\n $selectLocalTableProfile = (profileKey:string): Signal<Profile | undefined> => this.selectSignal(state => \r\n state.localProfiles[profileKey]);\r\n\r\n $selectLocalTableStateForView = (tableId: string) => this.selectSignal(\r\n this.$selectLocalTableProfile(tableId),\r\n (profile) => {\r\n if(profile?.current) {\r\n return profile.states[profile.current];\r\n }\r\n if(profile?.localSavedState) return profile.localSavedState;\r\n return null;\r\n }\r\n )\r\n\r\n $selectLocalProfileCurrentKey = (key:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(key),\r\n (profile) => profile?.current);\r\n\r\n $selectLocalProfileDefaultKey = (key:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(key),\r\n (profile) => profile?.default);\r\n\r\n $selectLocalProfileKeys = (tableId:string) => this.selectSignal(\r\n this.$selectLocalTableProfile(tableId),\r\n (profile) => Object.keys(profile?.states || {})\r\n );\r\n\r\n\r\n // reducers\r\n \r\n\r\n saveTableSettingsToLocalAndStorage = (tableId: string, stateName: string, tableState: PersistedTableState, asDefault?: boolean) => {\r\n this.saveTableStateToStorage(tableId, stateName, tableState, asDefault);\r\n this.saveTableStateToLocal({ tableId, tableState, stateName, asDefault });\r\n }\r\n \r\n saveTableStateToLocal = this.updater((state, props: { tableId: string, tableState: PersistedTableState, stateName?: string, asDefault?: boolean }) => {\r\n let profile = state.localProfiles[props.tableId];\r\n if(!profile?.states) {\r\n profile = {states:{}};\r\n }\r\n if(!props.stateName){\r\n profile = {...profile, localSavedState: props.tableState };\r\n } else {\r\n profile = {...profile, states: {...profile.states, [props.stateName] : props.tableState} };\r\n }\r\n if(props.asDefault){\r\n profile.default = props.stateName;\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [props.tableId]: profile} }\r\n });\r\n\r\n saveTableStateToStorage = (tableId: string, stateName: string, tableState: PersistedTableState, asDefault = false) => {\r\n const globalSavedState: PersistedGlobalStorageSate = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n globalSavedState.localProfiles[tableId] ??= { states : {}}\r\n globalSavedState.localProfiles[tableId].states[stateName] = tableState;\r\n if(asDefault){\r\n globalSavedState.localProfiles[tableId].default = stateName;\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n\r\n addNewStateToLocalAndStorage = (tableId: string, newStateName: string, tableState: PersistedTableState, asDefault?: boolean) => {\r\n this.saveTableSettingsToLocalAndStorage(tableId, newStateName, tableState, asDefault);\r\n this.setLocalCurrentState({ tableId: tableId, currentStateKey: newStateName});\r\n }\r\n\r\n setLocalCurrentState = this.updater((state, props: { tableId: string, currentStateKey: string }) => {\r\n const profile = state.localProfiles[props.tableId] || { states: {}};\r\n profile.current = props.currentStateKey;\r\n return {...state, localProfiles: {...state.localProfiles, [props.tableId]: {...profile}}};\r\n });\r\n\r\n setDefaultInLocalAndStorage = (tableId: string, newDefault: string) => {\r\n this.setDefaultInLocal({ default: newDefault, key: tableId });\r\n this.setDefaultInStorage(tableId, newDefault);\r\n }\r\n\r\n setDefaultInLocal = this.updater((state, props: { key: string, default: string }) => {\r\n if(state.localProfiles[props.key]?.states[props.default]) {\r\n return ({...state, localProfiles: {...state.localProfiles, [props.key]: {...state.localProfiles[props.key], default: props.default} } });\r\n }\r\n return state;\r\n });\r\n \r\n unsetDefaultFromLocalAndStorage = (tableId: string) => {\r\n this.unsetDefaultFromLocal(tableId);\r\n this.unsetDefaultFromStorage(tableId);\r\n }\r\n\r\n unsetDefaultFromLocal = (tableId: string) => {\r\n this.patchState(tables => {\r\n const profile = { ...tables.localProfiles[tableId] };\r\n if(profile) {\r\n delete profile.default;\r\n }\r\n return { ...tables, localProfiles: { ...tables.localProfiles, [tableId]: profile } };\r\n });\r\n }\r\n\r\n unsetDefaultFromStorage = (tableId: string) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(globalSavedState.localProfiles[tableId]) {\r\n delete globalSavedState.localProfiles[tableId].default;\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n }\r\n\r\n setDefaultInStorage = (tableId: string, stateName: string) => {\r\n const tableProfile = this.$selectLocalTableProfile(tableId)();\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n let savedProfile = globalSavedState.localProfiles[stateName];\r\n if(!savedProfile?.states) {\r\n savedProfile = { default: stateName, states : tableProfile!.states };\r\n } else {\r\n savedProfile.default = stateName;\r\n }\r\n globalSavedState.localProfiles[tableId] = savedProfile;\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }\r\n\r\n deleteLocalProfilesState = this.updater((state, props: { key: string, stateKey: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(profile) {\r\n const current = profile.current === props.stateKey ? profile.default : profile.current;\r\n profile = {...profile,current, states: { ...profile.states}};\r\n delete profile.states[props.stateKey];\r\n if(current === props.stateKey) {\r\n profile.current = undefined;\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile} };\r\n } else {\r\n return state;\r\n }\r\n });\r\n\r\n deleteProfileFromLocalAndStorage = (key: string, stateKey: string) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[key]) {\r\n return;\r\n } else {\r\n delete (globalSavedState.localProfiles[key].states ?? {})[stateKey];\r\n }\r\n if(globalSavedState.localProfiles[key].default === stateKey) {\r\n globalSavedState.localProfiles[key].default = undefined;\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.deleteLocalProfilesState({ key, stateKey })\r\n }\r\n}\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState | void {\r\n const storage = localStorage.getItem('global-state-storage');\r\n \r\n if(storage) {\r\n const s: GlobalStorageState = (JSON.parse(storage) as PersistedGlobalStorageSate);\r\n s.localProfiles ??= {};\r\n for(const key in s.localProfiles){\r\n const profile = s.localProfiles[key];\r\n s.localProfiles[key] = { ...profile, current: profile.default } as Profile\r\n }\r\n return {...defaultStorageState, ...s};\r\n }\r\n}\r\n\r\ninterface PersistedProfile {\r\n states: Dictionary<PersistedTableState>;\r\n default?: string;\r\n}\r\nexport interface Profile extends PersistedProfile {\r\n current?: string;\r\n localSavedState?: PersistedTableState;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n localProfiles: Dictionary<Profile>;\r\n}\r\n\r\ninterface PersistedGlobalStorageSate {\r\n localProfiles: Dictionary<PersistedProfile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n localProfiles: {}\r\n}","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'group-by-list',\r\n templateUrl: './group-by-list.component.html',\r\n styleUrls: ['./group-by-list.component.css'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatChipsModule, LetDirective, MatIconModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GroupByListComponent {\r\n \r\n tableStore = inject(TableStore);\r\n}\r\n","<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","import { Injectable, inject } from '@angular/core';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { combineLatest } from 'rxjs';\r\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { notNull } from '../../../rxjs/rxjs-operators';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Injectable()\r\nexport class SortMenuComponentStore extends ComponentStore<ComponentStoreState> {\r\n private tableState = inject(TableStore);\r\n\r\n constructor(){\r\n super({ notSorted:[], sorted: []})\r\n }\r\n private set = this.updater((state, data: ComponentStoreState)=> ({...data}));\r\n\r\n setSorted = this.updater((state, sorted: SortWithName[])=>({...state, sorted}));\r\n\r\n setNotSorted = this.updater((state, notSorted: SortWithName[])=>({...state, notSorted}));\r\n sorted$ = this.select(state=>state.sorted);\r\n notSorted$ = this.select(state=>state.notSorted);\r\n\r\n setDirection = this.updater((state,sort:SortWithName)=>{\r\n const index = state.sorted.findIndex(s => s.active === sort.active);\r\n const sorted = [...state.sorted];\r\n sorted.splice(index,1,sort);\r\n return ({...state,sorted});\r\n })\r\n metaDataArr$ = toObservable(this.tableState.$metaDataArray);\r\n reset = () => {\r\n const sorted = this.tableState.sort$.pipe(\r\n mergeMap(sort => this.tableState.metaData$.pipe(\r\n notNull(),\r\n map(\r\n meta => sort.map(s => {\r\n return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\r\n )))\r\n );\r\n const notSorted = this.metaDataArr$.pipe(mergeMap(\r\n metas => this.tableState.sort$.pipe(\r\n map(s => metas\r\n .filter(meta => !s.some(s=>s.active=== meta.key) && meta.fieldType !== FieldType.NotMapped && !meta.noSort)\r\n .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\r\n )\r\n ));\r\n this.set(combineLatest([\r\n sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\r\n ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\r\n }\r\n}\r\n\r\nexport interface ComponentStoreState {\r\n sorted : SortWithName[];\r\n notSorted: SortWithName[];\r\n}\r\n\r\nexport interface SortWithName extends Sort{\r\n displayName : string;\r\n}\r\n\r\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\r\n arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\r\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\r\n","import { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, Component, OnInit, inject } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { SortDirection } from '../../interfaces/report-def';\r\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { AsyncPipe, NgClass } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-sort-menu',\r\n templateUrl: './sort-menu.component.html',\r\n styleUrls: ['./sort-menu.component.scss'],\r\n providers:[SortMenuComponentStore],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n LetDirective, MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, StopPropagationDirective, DragDropModule,\r\n SpaceCasePipe, NgClass, AsyncPipe\r\n ]\r\n})\r\nexport class SortMenuComponent implements OnInit{\r\n private tableState = inject(TableStore);\r\n protected store = inject(SortMenuComponentStore);\r\n\r\n\r\n sorted$:Observable<SortWithName[]>;\r\n notSorted$:Observable<SortWithName[]>;\r\n SortDirection = SortDirection;\r\n dirty$ = new BehaviorSubject(false);\r\n constructor() {\r\n this.sorted$ = this.store.sorted$.pipe(map(data=>[...data]));\r\n this.notSorted$ = this.store.notSorted$.pipe(map(data=>[...data]));\r\n }\r\n\r\n reset(){\r\n this.dirty$.next(false);\r\n this.store.reset();\r\n }\r\n\r\n ngOnInit(){\r\n this.store.reset();\r\n }\r\n\r\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\r\n this.dirty$.next(true);\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n this.store.setSorted(event.container.data);\r\n } else {\r\n\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\r\n this.store.setSorted(event.container.data);\r\n this.store.setNotSorted(event.previousContainer.data);\r\n }\r\n }\r\n\r\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\r\n if (event.previousContainer === event.container) {\r\n return;\r\n } else {\r\n this.dirty$.next(true);\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\r\n\r\n this.store.setNotSorted(event.container.data);\r\n this.store.setSorted(event.previousContainer.data);\r\n }\r\n }\r\n\r\n apply = this.store.effect((obs:Observable<null>)=>\r\n obs.pipe(tap(()=>{\r\n this.dirty$.next(false);\r\n this.tableState.setAllSort(this.store.sorted$.pipe(first()))\r\n })));\r\n\r\n setDirection(sort:SortWithName){\r\n this.dirty$.next(true);\r\n this.store.setDirection(sort);\r\n }\r\n\r\n}\r\n\r\n\r\n","<ng-container *ngrxLet=\"dirty$ as dirty\">\r\n @if(sorted$ | async; as sorted){\r\n @if (notSorted$ | async; as notSorted) {\r\n <!-- Menu Trigger -->\r\n <span matTooltip=\"Sort\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">swap_vert</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <!-- Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\r\n <div mat-menu-item class=\"menu-button\">\r\n <div class=\"close-button-wrapper\">\r\n <span matTooltip=\"Close\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n @if(dirty){\r\n <span matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\r\n <mat-icon>undo</mat-icon>\r\n </span>\r\n }\r\n \r\n </div>\r\n </div>\r\n\r\n <!-- Apply Button -->\r\n <div class=\"apply-button-wrapper\">\r\n <button mat-button color=\"primary\" (click)=\"apply(null)\"\r\n stop-propagation [class.apply-border]=\"dirty\"\r\n [disabled]=\"!dirty\">\r\n Apply @if (dirty) { Unsaved Changes }\r\n </button>\r\n </div>\r\n\r\n <!-- Default Sorting Text -->\r\n @if (!sorted.length) {\r\n <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #sortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\r\n [cdkDropListData]=\"sorted\"\r\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\r\n\r\n <!-- Menu Item Wrapper -->\r\n @for (sort of sorted; track sort.active) {\r\n <!-- Menu Item Headers -->\r\n @if (sorted.length > 1) {\r\n <span class=\"description sort-header\">{{$index === 0 ? 'First By' : 'Then By'}}</span>\r\n }\r\n \r\n <!-- Menu Item -->\r\n <div mat-menu-item cdkDrag class=\"menu-item\">\r\n <div class=\"sort-item\">\r\n <span class=\"sorted-name\">\r\n {{sort.displayName || (sort.active | spaceCase)}}\r\n <span class=\"direction-text\">{{sort.direction}}</span>\r\n </span>\r\n \r\n <!-- Sort Direction Buttons -->\r\n <div class=\"up-down-buttons-wrapper\">\r\n <button class=\"up-down-button up-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_upward\r\n </mat-icon>\r\n </button>\r\n \r\n <button class=\"up-down-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_downward\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Default Not Sorted Text -->\r\n @if(!notSorted.length){\r\n <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #notSortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\r\n [cdkDropListData]=\"notSorted\"\r\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\r\n @for (sort of notSorted; track sort.active) {\r\n <div mat-menu-item class=\"menu-item\" cdkDrag>\r\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\r\n </div>\r\n }\r\n </div>\r\n </mat-menu>\r\n }\r\n }\r\n</ng-container>\r\n","import { Component, ChangeDetectionStrategy, ElementRef, computed, inject, viewChild, input, effect, untracked } from '@angular/core';\r\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { NgClass } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { notNull } from '../../../rxjs';\r\n\r\n@Component({\r\n selector: 'tb-paginator',\r\n standalone: true,\r\n imports: [MatPaginatorModule, NgClass, MatButtonModule],\r\n template: `\r\n <div class=\"paginator-row\">\r\n @if($currentPageData(); as pageData){\r\n <div [class]=\"{ 'hide' : ! $collapseFooter(), 'page-amounts':true}\">\r\n @if(!$showAll()){ {{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}\r\n </div>\r\n }\r\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons\r\n [class]=\"{ 'hide' : $collapseFooter() }\">\r\n </mat-paginator>\r\n @if ($showAllOption()) {<button mat-button (click)=\"updatePaginator()\"><span [style.text-decoration]=\"$showAll() ? 'line-through' : ''\" >All</span></button>}\r\n </div>\r\n `,\r\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaginatorComponent {\r\n private state = inject(TableStore);\r\n private data = inject(DataStore);\r\n $paginator = viewChild(MatPaginator);\r\n $tableElRef = input.required<ElementRef<HTMLDivElement>>({alias: 'tableElRef'});\r\n\r\n $dataLength = this.data.selectSignal(d => d.dataLen);\r\n pageEvent$ = toObservable(this.$paginator).pipe(notNull(), switchMap(p => p.page));\r\n $pageEvent = toSignal(this.pageEvent$);\r\n $pageIndexChangeEvent = computed(() => this.$pageEvent()?.pageIndex);\r\n $pageSizeChangeEvent = computed(() => this.$pageEvent()?.pageSize);\r\n $currentPageData = computed(() => {\r\n const pageEvent = this.$pageEvent();\r\n if(!pageEvent) return;\r\n const pageDetails = mapPaginationEventToCurrentPageDetails(pageEvent);\r\n const dataLength = this.$dataLength();\r\n return ({...pageDetails, total: dataLength})\r\n })\r\n\r\n onPageIndexEffect = effect(() => {\r\n const index = this.$pageIndexChangeEvent();\r\n untracked(() => this.state.updateState({currentPage: index}))\r\n });\r\n onPageSizeEffect = effect(() => {\r\n const size = this.$pageSizeChangeEvent();\r\n if(!size) return;\r\n untracked(() => this.state.setPageSize(size));\r\n });\r\n onMetaPageSizeEffect = effect(() => {\r\n const paginator = this.$paginator();\r\n if(!paginator) return;\r\n const metaPageSize = this.state.$pageSize();\r\n untracked(() => paginator._changePageSize(metaPageSize));\r\n });\r\n onDataLengthEffect = effect(() => {\r\n const paginator = this.$paginator();\r\n const dataLength = this.$dataLength();\r\n untracked(() => {\r\n if(paginator){\r\n paginator.length = dataLength;\r\n }\r\n })\r\n });\r\n $collapseFooter = computed(() => this.state.selectSignal(state => state.persistedTableSettings.collapseFooter)() || this.$showAll());\r\n $showAllOption = this.state.selectSignal(s => s.notPersistedTableSettings?.includeAllInPaginatorOptions);\r\n $showAll = this.state.selectSignal(s => s.showAll);\r\n updatePaginator = this.state.updater(state => ({ ...state, showAll: !state.showAll }));\r\n showAll(){\r\n this.updatePaginator();\r\n }\r\n}\r\n\r\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\r\n currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\r\n currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\r\n total : pageData.length\r\n});\r\n\r\n\r\ninterface CurrentPageDetails {\r\n currentStart:number,\r\n currentEnd:number,\r\n total:number\r\n}","import {\r\n CdkVirtualScrollViewport,\r\n VirtualScrollStrategy,\r\n} from '@angular/cdk/scrolling';\r\nimport { animationFrameScheduler, Observable, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, observeOn } from 'rxjs/operators';\r\nimport { subscriber } from '../../rxjs';\r\n\r\nexport class TableVirtualScrollStrategy implements VirtualScrollStrategy {\r\n scrolledIndexChange: Observable<number>;\r\n\r\n private dataLength = 0;\r\n private readonly indexChange = new Subject<number>();\r\n private viewport?: CdkVirtualScrollViewport;\r\n\r\n constructor(private itemHeight: number, private headerHeight: number) {\r\n this.scrolledIndexChange = this.indexChange.pipe(distinctUntilChanged());\r\n }\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this.viewport = viewport;\r\n this.onDataLengthChanged();\r\n }\r\n\r\n contentScrolled$ = new Subject<void>();\r\n\r\n sub = subscriber(this.contentScrolled$.pipe(\r\n observeOn(animationFrameScheduler)\r\n ), () => {\r\n this.updateContent();\r\n })\r\n\r\n onContentScrolled(): void {\r\n this.contentScrolled$.next();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n if (this.viewport) {\r\n this.viewport.setTotalContentSize(this.dataLength * this.itemHeight);\r\n this.updateContent();\r\n }\r\n }\r\n\r\n setDataLength(length: number): void {\r\n this.dataLength = length;\r\n this.onDataLengthChanged();\r\n }\r\n\r\n detach(): void {}\r\n onContentRendered(): void {}\r\n onRenderedOffsetChanged(): void {\r\n }\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n }\r\n\r\n private updateContent(): void {\r\n if (!this.viewport) {\r\n return;\r\n }\r\n\r\n const amountOfRows = Math.ceil((this.viewport.getViewportSize() - this.headerHeight) / this.itemHeight);\r\n const offset = this.viewport.measureScrollOffset();\r\n const buffer = 35;\r\n\r\n const skip = Math.round(offset / this.itemHeight);\r\n // always start at an even index so we don't change the color patterns for odd and even rows.\r\n const index = skip % 2 === 0 ? skip : skip - 1;\r\n const start = Math.max(0, index - buffer);\r\n const end = Math.min(this.dataLength, index + amountOfRows + buffer);\r\n\r\n this.viewport.setRenderedContentOffset(this.itemHeight * start);\r\n this.viewport.setRenderedRange({ start, end });\r\n\r\n this.indexChange.next(index);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, effect, forwardRef, untracked, viewChild, inject, computed } from '@angular/core';\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY,\r\n} from '@angular/cdk/scrolling';\r\nimport { switchMap } from 'rxjs';\r\nimport { notNull, subscriber } from '../../../rxjs';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { TableVirtualScrollStrategy } from '../scroll-strategy';\r\nimport { VirtualScrollOptions } from '../../classes/table-builder-general-settings';\r\nimport { DataStore } from '../../classes/data-store';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'tb-virtual-scroll-container',\r\n template: `\r\n <cdk-virtual-scroll-viewport>\r\n <ng-content/>\r\n </cdk-virtual-scroll-viewport>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [ScrollingModule],\r\n viewProviders: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (c: VirtualScrollContainer) => c.scrollStrategy,\r\n deps: [forwardRef(() => VirtualScrollContainer)],\r\n },\r\n ],\r\n})\r\nexport class VirtualScrollContainer implements OnDestroy {\r\n private state = inject(TableStore);\r\n private dataStore = inject(DataStore); \r\n\r\n viewport = viewChild(CdkVirtualScrollViewport);\r\n\r\n defaultOptions = new VirtualScrollOptions();\r\n scrollStrategy = new TableVirtualScrollStrategy(\r\n this.computedRowHeight(),\r\n this.computedHeaderHeight()\r\n );\r\n\r\n $usePaginator = this.state.selectSignal(s => s.notPersistedTableSettings.usePaginator);\r\n $pageSize = this.state.$pageSize;\r\n $currentPage = this.state.$currentPage;\r\n $showAll = this.state.selectSignal(s => s.showAll);\r\n $stateDataLength = this.dataStore.selectSignal(s => s.dataLen);\r\n $dataLength = computed(() => {\r\n const paginated = this.$usePaginator() && !this.$showAll();\r\n const pageSize = this.$pageSize();\r\n const pageNumber = this.$currentPage();\r\n const dataLen = this.$stateDataLength();\r\n if(paginated) return Math.min(dataLen - (pageNumber * pageSize), pageSize);\r\n return dataLen;\r\n });\r\n constructor() {\r\n addEventListener('resize', this.resizeHandler);\r\n }\r\n setViewportEffect = effect(() => {\r\n const viewport = this.viewport();\r\n untracked(() => {\r\n if(!!viewport){\r\n this.setSize(this.viewport()!.elementRef);\r\n };\r\n })\r\n })\r\n\r\n subscriber = subscriber();\r\n\r\n onRenderedRangeEffect = effect(() => {\r\n const renderedRange = this.$renderedRange();\r\n if(!renderedRange) return;\r\n untracked(() => {\r\n this.dataStore.patchState({\r\n virtualEnds: {\r\n start: renderedRange.start,\r\n end: renderedRange.end + 25,\r\n }});\r\n this.setSize(this.viewport()!.elementRef);\r\n })\r\n })\r\n\r\n onDataLengthEffect = effect(() => {\r\n const dataLength = this.$dataLength();\r\n untracked(() => {\r\n this.scrollStrategy.setDataLength(dataLength);\r\n })\r\n })\r\n\r\n onOffsetEffect = effect(() => {\r\n const offset = this.$offset();\r\n untracked(() => {\r\n this.dataStore.patchState({ virtualScrollOffset: offset });\r\n })\r\n })\r\n viewPort$ = toObservable(this.viewport).pipe(notNull());\r\n $scrolledIndexChange = toSignal(this.viewPort$.pipe(switchMap(v => v.scrolledIndexChange)));\r\n $renderedRange = toSignal(this.viewPort$.pipe(switchMap(v => v.renderedRangeStream)));\r\n\r\n $offset = computed(() => {\r\n const viewport = this.viewport();\r\n const scrolledIndexChange = this.$scrolledIndexChange();\r\n if(!scrolledIndexChange || !viewport) return 0;\r\n return viewport.getOffsetToRenderedContentStart() ?? 0;\r\n })\r\n\r\n ngOnDestroy(): void {\r\n removeEventListener('resize', this.resizeHandler);\r\n }\r\n\r\n setSize(el: ElementRef<HTMLElement>) {\r\n const vsViewport = el.nativeElement;\r\n const virtualScrollOptions = this.state.tableSettings().useVirtualScroll! as VirtualScrollOptions;\r\n const rowHeight = this.computedRowHeight();\r\n let amountOfVisibleItems = virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;\r\n virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;\r\n let height = (rowHeight * amountOfVisibleItems);\r\n if(!this.state.tableSettings().hideHeader){\r\n const headerHeight = this.computedHeaderHeight();\r\n height += headerHeight;\r\n }\r\n if(virtualScrollOptions?.maxViewPortHeight && virtualScrollOptions.maxViewPortHeight < height) height = virtualScrollOptions.maxViewPortHeight;\r\n vsViewport.setAttribute(\r\n 'style',\r\n `height: ${height}px !important;`,\r\n );\r\n this.viewport()?.checkViewportSize();\r\n const virtualScrollOffset = this.viewport()?.getOffsetToRenderedContentStart() ?? 0\r\n this.dataStore.patchState({ virtualScrollOffset });\r\n }\r\n\r\n resizeHandler = () => {\r\n if (this.viewport()) {\r\n this.setSize(this.viewport()!.elementRef);\r\n }\r\n };\r\n\r\n computedRowHeight(){\r\n const virtualScrollOptions = this.state.tableSettings().useVirtualScroll! as VirtualScrollOptions;\r\n const rowHeight = virtualScrollOptions?.rowHeight|| (typeof this.state.tableSettings().rowHeight === 'number' && this.state.tableSettings().rowHeight as number) || this.defaultOptions.rowHeight;\r\n return rowHeight;\r\n }\r\n\r\n computedHeaderHeight(){\r\n const virtualScrollOptions = this.state.tableSettings().useVirtualScroll! as VirtualScrollOptions;\r\n const headerHeight = virtualScrollOptions?.headerHeight|| (typeof this.state.tableSettings().headerHeight === 'number' && this.state.tableSettings().headerHeight as number) || this.defaultOptions.headerHeight;\r\n return headerHeight;\r\n }\r\n}\r\n","import { Component, computed, inject, input, output, signal, viewChild } from '@angular/core';\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { MatButton, MatIconButton } from '@angular/material/button';\r\nimport { ClickEmitterDirective, DialogDirective, FunctionPipe, StopPropagationDirective } from '../../../utilities';\r\nimport { MatInput, MatInputModule } from '@angular/material/input';\r\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { Subject } from 'rxjs';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tb-profiles-menu',\r\n standalone: true,\r\n imports: [MatIcon, MatTooltip, MatIconButton, MatMenuModule, MatButton, MatInput, DialogDirective, ClickEmitterDirective, NgTemplateOutlet,\r\n MatCheckbox, StopPropagationDirective, FunctionPipe, MatInputModule, AsyncPipe, FormsModule\r\n ],\r\n templateUrl: './profiles-menu.component.html',\r\n styleUrl: './profiles-menu.component.scss'\r\n})\r\nexport class ProfilesMenuComponent {\r\n stateService = inject(TableBuilderStateStore);\r\n tableStore = inject(TableStore);\r\n $tableId = input.required<string>();\r\n onSaveState = output<null>();\r\n trigger = viewChild<MatMenuTrigger>('trigger');\r\n allProfilesPanelOpened = signal(false);\r\n newProfilePanelOpened = signal(false);\r\n $currentProfile = computed(() => this.stateService.$selectLocalProfileCurrentKey(this.$tableId())());\r\n $defaultProfile = computed(() => this.stateService.$selectLocalProfileDefaultKey(this.$tableId())());\r\n $keys = computed(() => this.stateService.$selectLocalProfileKeys(this.$tableId())());\r\n saveState(key: string) {\r\n const tableState = this.tableStore.getSavableStateSignal();\r\n this.onSaveState.emit(null);\r\n this.stateService.saveTableSettingsToLocalAndStorage(this.$tableId(), key, tableState);\r\n }\r\n\r\n addState(key: string, asDefault: boolean){\r\n const tableState = this.tableStore.getSavableStateSignal();\r\n this.stateService.addNewStateToLocalAndStorage(this.$tableId(), key, tableState, asDefault);\r\n }\r\n\r\n setDefault(key: string){\r\n this.stateService.setDefaultInLocalAndStorage(this.$tableId(), key);\r\n }\r\n\r\n unsetDefault(){\r\n this.stateService.unsetDefaultFromLocalAndStorage(this.$tableId());\r\n }\r\n\r\n defaultName = 'My Profile';\r\n position$ = new Subject<{ top: string, right: string} | undefined>();\r\n setPosition = (e: HTMLElement) => {\r\n const rect = e.getBoundingClientRect();\r\n if(rect.top === 0) return;\r\n const a = {\r\n right: `${(window.innerWidth - rect.right)}px`,\r\n top: `${rect.top}px`,\r\n }\r\n return a;\r\n }\r\n}\r\n","<button mat-icon-button [matMenuTriggerFor]=\"menu\" #trigger=\"matMenuTrigger\" [matTooltip]=\"'Profiles'\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" (closed)=\"addedKey.value = null; allProfilesPanelOpened.set(false); newProfilePanelOpened.set(false)\">\r\n @if(!!$currentProfile())\r\n {\r\n <div mat-menu-item [matTooltip]=\"'Save Profile'\" mat-stroked-button (click)=\"saveState($currentProfile()!)\">\r\n <mat-icon color=\"primary\">save</mat-icon>\r\n <span>{{$currentProfile()}}</span>\r\n </div>\r\n }\r\n @else\r\n {\r\n <div class=\"profile-line\">\r\n <button class=\"first-in-line first-button\" mat-stroked-button (click)=\"addState(defaultName, m.checked);\">\r\n <mat-icon class=\"save-for-default-icon button-save-icon\" color=\"primary\">save</mat-icon>\r\n <span>Save as <span class=\"current-name\">{{defaultName}}</span> </span>\r\n </button>\r\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox class=\"display-none\" [checked]=\"true\" #m />\r\n </div>\r\n }\r\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\r\n <div [class]=\"{ hide: !$keys().length }\" mat-menu-item stop-propagation (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">All Profiles</div>\r\n <div [class]=\"{ hide: !allProfilesPanelOpened(), panel: true }\">\r\n @for (key of $keys() ; track key) {\r\n <div class=\"profile-line\" [class.current-in-list]=\"key === $currentProfile()\">\r\n <button [matTooltip]=\"'Select Profile'\" class=\"menu-item first-in-line\" mat-stroked-button (click)='stateService.setLocalCurrentState({ tableId: $tableId(), currentStateKey: key})'>\r\n <span>{{key}}</span>\r\n </button>\r\n @if(key !== $defaultProfile())\r\n {\r\n <button [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"setDefault(key)\">\r\n <mat-icon style=\"color: green;\">star_border</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n <button [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"unsetDefault()\">\r\n <mat-icon style=\"color: green;\">star</mat-icon>\r\n </button>\r\n }\r\n <button [matTooltip]=\"'Delete Profile'\" class=\"last-in-line\" stop-propagation mat-icon-button (click)='stateService.deleteProfileFromLocalAndStorage($tableId(), key)'>\r\n <mat-icon color='warn'>delete_forever</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <hr class=\"divider\"/>\r\n </div>\r\n @if (newProfilePanelOpened() && !allProfilesPanelOpened()){<hr class=\"divider\"/>}\r\n <div mat-menu-item stop-propagation (click)=\"newProfilePanelOpened.set(!newProfilePanelOpened()); addedKey.focus()\">Add New Profile</div>\r\n <div [class]=\"{ hide: !newProfilePanelOpened(), panel: true }\" >\r\n <div class=\"profile-line\" stop-propagation>\r\n <div class=\"new-name-input\">\r\n <i class=\"input-hint\">Enter New Name</i>\r\n <input matInput #addedKey=\"matInput\" [name]=\"'key'\" />\r\n </div>\r\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m2.toggle()\" >\r\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\r\n </button>\r\n <mat-checkbox class=\"display-none\" [ngModel]=\"!$defaultProfile()\" #m2 />\r\n </div>\r\n <button class=\"add-button\" color=\"primary\" [matTooltip]=\"'Create New Profile'\" mat-raised-button (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\" [disabled]=\"!addedKey.value\">\r\n Add\r\n </button>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #line let-key>\r\n\r\n\r\n</ng-template>\r\n","import { AsyncPipe, NgTemplateOutlet } from \"@angular/common\";\r\nimport { LetDirective } from \"@ngrx/component\";\r\nimport { MultiSortDirective } from \"../../directives\";\r\nimport { GroupByListComponent } from \"../group-by-list/group-by-list.component\";\r\nimport { FilterChipsComponent } from \"../table-container-filter/filter-list/filter-list.component\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { GenericTableComponent } from \"../generic-table/generic-table.component\";\r\nimport { GenFilterDisplayerComponent } from \"../table-container-filter/gen-filter-displayer/gen-filter-displayer.component\";\r\nimport { GenColDisplayerComponent } from \"../gen-col-displayer/gen-col-displayer.component\";\r\nimport { SortMenuComponent } from \"../sort-menu/sort-menu.component\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { ClickEmitterDirective, DialogDirective, StopPropagationDirective } from \"../../../utilities\";\r\nimport { PaginatorComponent } from \"../generic-table/paginator.component\";\r\nimport { VirtualScrollContainer } from \"./virtual-scroll-container\";\r\nimport { MatCheckbox } from \"@angular/material/checkbox\";\r\nimport { ProfilesMenuComponent } from \"../profiles-menu/profiles-menu.component\";\r\n\r\nexport const containerImports = [\r\n AsyncPipe, NgTemplateOutlet,\r\n PaginatorComponent,\r\n\r\n LetDirective,\r\n\r\n MultiSortDirective, GroupByListComponent, FilterChipsComponent, GenFilterDisplayerComponent, GenColDisplayerComponent,\r\n SortMenuComponent, GenericTableComponent, StopPropagationDirective, ProfilesMenuComponent,\r\n\r\n MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule, VirtualScrollContainer\r\n\r\n]\r\n","import { Timestamp } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo, createFilterFunc } from \"../../../classes/filter-info\";\r\nimport { Dictionary } from \"../../../interfaces/dictionary\";\r\nimport { Predicate } from \"@angular/core\";\r\nimport { difference, intersection } from \"lodash\";\r\n\r\n//The idea of this is that if filters were only added, and none were removed or changed, then we only need to tag more rows to not be shown. We don't need to remove any 'dont show' tags.\r\n// So if filters were only added this method will return the added filters, if filters were removed or changed this method will return undefined.\r\n\r\nexport const updateFilterInfoState = <T>(previousState: FilterInfoState<T>, filterInfos: FilterInfoDict) => {\r\n filterInfos = filterNonActiveFilters(filterInfos);\r\n const currentState: FilterInfoState<T> = {\r\n allFilters: filterInfos,\r\n onlyAddedFilters: filterInfoOnlyAdded(previousState.allFilters, filterInfos)\r\n }\r\n return currentState;\r\n}\r\n\r\nexport const mapFilterInfoStateToPredicateState = <T>(s: FilterInfoState<T>): FilterPredicateState<T> => {\r\n const mappedAddOnly: {[key in keyof T]: Predicate<T>} = s.onlyAddedFilters ? Object.entries(s.onlyAddedFilters).reduce((obj, [key, value]) => {\r\n obj[key] = createFilterFunc(value);\r\n return obj;\r\n }, {} as {[key in keyof T]: Predicate<T>}) : {} as {[key in keyof T]: Predicate<T>};\r\n const mappedAll = Object.entries(s.allFilters).map(([key, value]) => mappedAddOnly[key] || createFilterFunc(value));\r\n return ({\r\n allFilters: mappedAll,\r\n onlyAddedFilters: s.onlyAddedFilters ? Object.values(mappedAddOnly) : undefined\r\n })\r\n}\r\n\r\nexport const updateFilterPredicateState = <T>(previousState: FilterPredicateState<T>, filters: Predicate<any>[]) => {\r\n const currentState: FilterPredicateState<T> = {\r\n allFilters: filters,\r\n onlyAddedFilters: predicatesOnlyAdded(previousState.allFilters, filters)\r\n }\r\n return currentState;\r\n}\r\n\r\nexport const updateFilterState = <T>(filterInfos: Timestamp<FilterInfoState<T>>, predicates: Timestamp<FilterPredicateState<T>>): FilterPredicateState<T> => {\r\n const infos = mapFilterInfoStateToPredicateState(filterInfos.value);\r\n const filtersState: FilterPredicateState<T> = {\r\n allFilters: [...infos.allFilters, ...predicates.value.allFilters]\r\n }\r\n if(filterInfos.timestamp > predicates.timestamp && !!filterInfos.value.onlyAddedFilters){\r\n filtersState.onlyAddedFilters = infos.onlyAddedFilters;\r\n } else {\r\n filtersState.onlyAddedFilters = predicates.value.onlyAddedFilters\r\n }\r\n return filtersState\r\n}\r\n\r\n\r\nconst filterNonActiveFilters = <T>(filtersDict : FilterInfoDict) => Object.entries(filtersDict).reduce((obj ,[key, value]) => { \r\n if(value.active !== false){\r\n obj[key] = value\r\n };\r\n return obj;\r\n}, {} as Dictionary<FilterInfo | CustomFilter>);\r\n\r\n\r\nfunction filterInfoOnlyAdded(previousFilterInfos: FilterInfoDict, currentFilterInfos: FilterInfoDict): FilterInfoDict | undefined{\r\n const previousKeys = Object.keys(previousFilterInfos);\r\n const currentKeys = Object.keys(currentFilterInfos);\r\n const keysInBoth = intersection(previousKeys, currentKeys);\r\n const someRemoved = previousKeys.length > keysInBoth.length;\r\n if(someRemoved || !previousKeys.length){\r\n return undefined;\r\n }\r\n if(filtersInfosUpdated(previousFilterInfos, currentFilterInfos)){\r\n return undefined;\r\n }\r\n const addedFilters = difference(currentKeys, keysInBoth).reduce((dict, key) => {\r\n dict[key] = currentFilterInfos[key];\r\n return dict;\r\n }, {} as FilterInfoDict);\r\n return addedFilters;\r\n}\r\n\r\nfunction predicatesOnlyAdded(previousPredicates: Predicate<any>[], currentPredicates: Predicate<any>[]){\r\n if(!previousPredicates.length){\r\n return undefined;\r\n }\r\n const predicateFiltersRemoved = difference(previousPredicates, currentPredicates).length;\r\n if(predicateFiltersRemoved){\r\n return undefined;\r\n }\r\n return difference(currentPredicates, previousPredicates);\r\n}\r\n\r\nfunction filtersInfosUpdated(previousFilterInfos: FilterInfoDict<any>, currentFilterInfos: FilterInfoDict<any>){\r\n return !Object.entries(previousFilterInfos).every(([key, val]) => {\r\n return currentFilterInfos[key].filterType === val.filterType && currentFilterInfos[key].filterValue === val.filterValue\r\n })\r\n}\r\n\r\nexport interface FilterInfoState<T> {\r\n allFilters: FilterInfoDict<T>, \r\n onlyAddedFilters?: FilterInfoDict<T> | undefined,\r\n}\r\n\r\nexport interface FilterPredicateState<T> {\r\n allFilters: Predicate<T>[], \r\n onlyAddedFilters?: Predicate<T>[] | undefined,\r\n}\r\n\r\nexport type FilterInfoDict<T = any> = Dictionary<FilterInfo<any, T> | CustomFilter<any>>;","import { groupBy } from \"lodash\";\r\nimport { Timestamp } from \"rxjs\";\r\nimport { Group, GroupedData } from \"../../../classes/TableState\";\r\nimport { initIndexSymbol } from \"./sort-state.helpers\";\r\n\r\nfunction getGroupedData(data: any[], groupByKeys: string[]): any[] {\r\n return tbGroupBy(data, groupByKeys);\r\n}\r\n\r\nconst tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\r\n const currentKey = groupByKeys[0];\r\n const res = groupBy(data, currentKey);\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n const finalGroups = !remainingGroupByKeys.length;\r\n if (remainingGroupByKeys.length) {\r\n Object.keys(res).forEach(key => res[key] = tbGroupBy(res[key], remainingGroupByKeys, key))\r\n }\r\n return Object.keys(res).map((groupName, i) => {\r\n const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\r\n const groupHeaders = res[groupName]?.filter(row => row.isGroupHeader) ?? [];\r\n return ({\r\n isGroupHeader: true,\r\n groupHeaderDisplay: groupName,\r\n hasTheData: finalGroups,\r\n children: finalGroups ? res[groupName] : res[groupName].map(d => {d.padding += 20; return d}),\r\n groupName: `tb_group_${uniqName}`,\r\n padding: 1,\r\n key: currentKey,\r\n length : groupHeaders.reduce((acc, curr) => curr.length + acc,0) + ((res[groupName] ?? []).length - groupHeaders.length),\r\n [initIndexSymbol]: uniqName,\r\n } as Group\r\n );\r\n })\r\n}\r\n\r\nexport function updateGroupByState({ groupedData }:GroupByState, [data, groups, expandedGroups] : [Timestamp<any[]>, Timestamp<string[]>, Timestamp<GroupedData[]>], index: number){\r\n if(\r\n index === 0\r\n || dataUpdated(data, groups, expandedGroups)\r\n || groupsUpdated(groups, expandedGroups)\r\n ){\r\n groupedData = groups.value.length ? getGroupedData(data.value, groups.value) : data.value;\r\n }\r\n const newDisplayData = expandedGroups.value.length === 0\r\n ? groupedData\r\n : groupedData.map(group => mapGroupHeader(group, expandedGroups.value)).flat();\r\n return ({displayData: newDisplayData, groupedData});\r\n}\r\n\r\nfunction mapGroupHeader(obj: any, data: GroupedData[]){\r\n const showChildren = data.find(a => a.expandedHeaders.includes(obj.groupName));\r\n const children = !showChildren ? [] : \r\n obj.hasTheData ? obj.children\r\n : obj.children.map(a => mapGroupHeader(a, data))\r\n\r\n return [obj, ...children].flat()\r\n}\r\n\r\nfunction dataUpdated(data: Timestamp<any[]>, groups: Timestamp<string[]>, expandedGroups: Timestamp<GroupedData[]>){\r\n return data.timestamp > groups.timestamp && data.timestamp > expandedGroups.timestamp;\r\n}\r\n\r\nfunction groupsUpdated(groups: Timestamp<string[]>, expandedGroups: Timestamp<GroupedData[]>){\r\n return groups.timestamp > expandedGroups.timestamp;\r\n}\r\n\r\ninterface GroupByState { displayData: any[], groupedData: any[]};\r\n\r\nexport const initialGroupByState = { displayData: [], groupedData: []}\r\n\r\nexport const getAllGroupHeaderNames = (data: any[]) => {\r\n const groups = getGroupHeaders(data, (d:any) => d.isGroupHeader);\r\n return groupBy(groups, 'key')\r\n}\r\n\r\nexport const getAllGroupHeaderNamesByKeys = (data: any[], keys: string[]) => {\r\n const groups = getGroupHeaders(data, (d:any) => d.isGroupHeader && keys.includes(d.key));\r\n return groupBy(groups, 'key')\r\n}\r\n\r\nconst getGroupHeaders = (data: any[], filterFunc: (d:any) => boolean, arr:any[] = []): Group[] => {\r\n const headers = data.filter(filterFunc);\r\n arr.push(...headers);\r\n headers.forEach(h => {if(!!h.children.length) getGroupHeaders(h.children, filterFunc, arr)});\r\n return arr;\r\n}","import { Sort } from \"@angular/material/sort\";\r\nimport { orderBy } from 'lodash';\r\nimport { Predicate } from \"@angular/core\";\r\n\r\nexport type direc = 'asc' | 'desc' | boolean;\r\n\r\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\r\n const ordered = orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction as direc ));\r\n return ordered;\r\n}\r\n\r\nexport function filterData<T>(data: T[], filters: Predicate<T>[], resetAll = false){\r\n for (let index = 0; index < data.length; index++) {\r\n const element = data[index];\r\n const hide = !filters.every(filter => filter(element));\r\n if(hide || resetAll){\r\n element[tbNoShowSymbol] = hide;\r\n }\r\n }\r\n return data;\r\n}\r\n\r\nexport const tbNoShowSymbol = Symbol('tb_no_show');\r\n","import { Observable, combineLatest, map, scan, timestamp } from \"rxjs\";\r\nimport { SortState } from \"./sort-state.helpers\";\r\nimport { FilterPredicateState } from \"./filter-state.helpers\";\r\nimport { filterData, sortData, tbNoShowSymbol } from \"../../../functions/sort-data-function\";\r\nimport { defaultShareReplay } from \"../../../../rxjs/defaultShareReplay\";\r\nimport { FieldType, MetaData } from \"../../../interfaces/report-def\";\r\nimport { get, set } from \"lodash\";\r\n\r\nexport const sortAndFilterData = <T>(data: Observable<T[]>, sortState: Observable<SortState>, filterState: Observable<FilterPredicateState<T>>) => combineLatest([\r\n data.pipe(timestamp()),\r\n sortState.pipe(timestamp()),\r\n filterState.pipe(timestamp())\r\n]).pipe(scan(({ mappedData: resultData }, [data, sort, f], index)=> {\r\n\r\n if(index === 0 || (data.timestamp > sort.timestamp && data.timestamp > f.timestamp)){\r\n return ({ mappedData: filterData(sortData(data.value , sort.value.sortsToRun ), f.value.allFilters)});\r\n }\r\n\r\n if(sort.timestamp > f.timestamp){\r\n return ({ mappedData: sortData(resultData, sort.value.sortsToRun)});\r\n }\r\n return ({ mappedData: filterData(resultData, f.value.onlyAddedFilters || f.value.allFilters, !f.value.onlyAddedFilters)});\r\n }, { mappedData: []} as { mappedData: T[]})\r\n ).pipe(\r\n map(({ mappedData: resultData }) => resultData.filter(item => !item[tbNoShowSymbol])),\r\n defaultShareReplay()\r\n );\r\n\r\nexport const createDataCleaners = <T>(metadatas: MetaData<T>[], mutate = false) => {\r\n const transforms = createCleaners(metadatas);\r\n return (data: T) => {\r\n if(!mutate){\r\n data = { ...data }\r\n }\r\n for(const transform of transforms){\r\n transform(data);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nconst createCleaners = <T>(metadatas: MetaData<T> []) => {\r\n return metadatas.reduce((transforms,metaData) => {\r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key);\r\n const num = Number( val );\r\n set(t as {}, metaData.key, isNaN(num) || val == null ? null : num)\r\n t[metaData.key] = (isNaN(num) || val == null ? null : num) as any});\r\n } else {\r\n transforms.push( (t:T) => {\r\n const val = t[metaData.key];\r\n const num = Number( val );\r\n t[metaData.key] = (isNaN(num) || val == null ? null : num) as any});\r\n }\r\n break;\r\n }\r\n case FieldType.Date:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key) as string;\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n set(t as {}, metaData.key, null as any);\r\n return\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n set(t as {}, metaData.key, d as any);\r\n })\r\n } else {\r\n transforms.push( (t:T) => {\r\n const val = t[metaData.key] as string;\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n t[metaData.key] = null as any;\r\n return\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n t[metaData.key] = d as any;\r\n })\r\n }\r\n break;\r\n }\r\n \r\n case FieldType.DateTime:{\r\n const nested = metaData.key.includes('.');\r\n if(nested){\r\n transforms.push( (t:T) => {\r\n const val = get(t, metaData.key);\r\n const dateTime = Date.parse(val as string);\r\n if(isNaN(dateTime)){\r\n set(t as {}, metaData.key, null as any);\r\n return\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n set(t as {}, metaData.key, dt as any);\r\n return\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n set(t as {}, metaData.key, dt as any);\r\n return\r\n }\r\n dt.setSeconds(0, 0);\r\n set(t as {}, metaData.key, dt as any);\r\n })\r\n } else {\r\n transforms.push((t:T) => {\r\n const val = t[metaData.key] as string;\r\n const dateTime = Date.parse(val);\r\n if(isNaN(dateTime)){\r\n t[metaData.key] = null as any;\r\n return;\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n t[metaData.key] = dt as any;\r\n return;\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n t[metaData.key] = dt as any;\r\n return;\r\n }\r\n dt.setSeconds(0, 0);\r\n t[metaData.key] = dt as any;\r\n })\r\n }\r\n }\r\n }\r\n return transforms;\r\n }, [] as ((t:T) => void)[])\r\n}","import { TemplateRef } from '@angular/core';\r\nimport { TableBuilderDataSource } from '../../classes/TableBuilderDataSource';\r\n\r\nexport interface TableProps {\r\n indexColumn: boolean;\r\n selectionColumn: boolean;\r\n isSticky: boolean;\r\n stickyFooter:boolean;\r\n groupHeaderTemplate?: TemplateRef<any>;\r\n dataSource?: TableBuilderDataSource<any>;\r\n groupHeaderHeight?: number;\r\n}\r\n\r\nexport const defaultProps: TableProps = {\r\n indexColumn: false,\r\n selectionColumn: false,\r\n isSticky: true,\r\n stickyFooter: false,\r\n groupHeaderHeight: undefined,\r\n}\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableStore } from './table-store';\r\nimport { DataStore } from './data-store';\r\nimport { computed, effect, Signal } from '@angular/core';\r\n\r\nexport class TableBuilderDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n constructor(\r\n public dataSrc: Signal<T[]>,\r\n state: TableStore,\r\n data: DataStore,\r\n ) {\r\n super([]);\r\n \r\n\r\n const $currentPage = state.$currentPage;\r\n const $pageSize = state.$pageSize;\r\n const $virtualEnds = data.selectSignal(d => d.virtualEnds);\r\n\r\n const $dataLength = computed(() => dataSrc().length);\r\n\r\n const $dataSize = computed(() => {\r\n const viewType = state.$viewType();\r\n const dataLength = $dataLength();\r\n const currentPage = $currentPage();\r\n const pageSize = $pageSize();\r\n const virtualEnds = $virtualEnds();\r\n const previousPageRecords = currentPage * pageSize;\r\n if(viewType === 'virtual paginator'){\r\n return ({ start:virtualEnds.start + previousPageRecords, end: Math.min(virtualEnds.end, pageSize) + previousPageRecords });\r\n }\r\n if(viewType === 'paginator'){\r\n return ({ start: previousPageRecords, end: previousPageRecords + pageSize });\r\n }\r\n if(viewType === 'all'){\r\n return ({ start: 0, end: dataLength });\r\n }\r\n return ({ start: virtualEnds.start, end: virtualEnds.end });\r\n });\r\n const $dataToShow = computed(() =>\r\n dataSrc().slice($dataSize().start, $dataSize().end));\r\n effect(() => this.data = $dataToShow());\r\n }\r\n\r\n\r\n connect() {\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ContentChildren,\r\n QueryList,\r\n ChangeDetectionStrategy,\r\n Predicate,\r\n ViewChild,\r\n inject,\r\n TemplateRef,\r\n ContentChild,\r\n ElementRef,\r\n OnInit,\r\n OnDestroy,\r\n Injector,\r\n contentChildren,\r\n computed,\r\n effect,\r\n untracked,\r\n runInInjectionContext,\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, of } from 'rxjs';\r\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { map, tap, withLatestFrom, mergeAll, scan, switchAll, startWith, timestamp, mergeMap, filter, switchMap } from 'rxjs/operators';\r\nimport { TableBuilder } from '../../classes/table-builder';\r\nimport { MatRowDef } from '@angular/material/table';\r\nimport { CustomCellDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\r\nimport { stateIs, TableStore } from '../../classes/table-store';\r\nimport { notNull } from '../../../rxjs/rxjs-operators';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\nimport { InitializationState, TableState } from '../../classes/TableState';\r\nimport { sortData } from '../../functions/sort-data-function';\r\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\r\nimport { cloneDeep } from 'lodash';\r\nimport { defaultShareReplay } from '../../../rxjs';\r\nimport { createFilterFunc, isCustomFilter, isFilterInfo } from '../../classes/filter-info';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\r\nimport { createLinkCreatorDict } from '../../services/link-creator.service';\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\nimport { containerImports } from './table-container-imports';\r\nimport { updateFilterInfoState, updateFilterPredicateState, updateFilterState } from './table-container.helpers/filter-state.helpers';\r\nimport { initialSortState, updateSortState } from './table-container.helpers/sort-state.helpers';\r\nimport { getAllGroupHeaderNames, initialGroupByState, updateGroupByState } from './table-container.helpers/groupBy.helpers';\r\nimport { sortAndFilterData } from './table-container.helpers/data-state.helpers';\r\nimport { TableProps, defaultProps } from './tableProps';\r\nimport { PaginatorComponent } from '../generic-table/paginator.component';\r\nimport { TableBuilderDataSource } from '../../classes/TableBuilderDataSource';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { DataStore } from '../../classes/data-store';\r\n\r\n\r\n@Component({\r\n selector: 'tb-table-container',\r\n templateUrl: './table-container.html',\r\n styleUrls: ['./table-container.css', '../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [TableStore, ExportToCsvService, WrapperFilterStore, DataStore],\r\n standalone: true,\r\n imports: containerImports\r\n}) export class TableContainerComponent<T = any> implements OnInit, OnDestroy {\r\n props: TableProps = { ...defaultProps };\r\n @Output() data = new BehaviorSubject<T[]>([]);\r\n\r\n public state = inject(TableStore);\r\n private dataStore = inject(DataStore);\r\n public config = inject(TableBuilderConfigToken);\r\n public exportToCsvService = inject(ExportToCsvService<T>);\r\n public wrapper = inject(TableWrapperDirective, { optional: true });\r\n public stateService = inject(TableBuilderStateStore);\r\n public injector = inject(Injector);\r\n\r\n filterDirectives = contentChildren(TableFilterDirective, {descendants: true});\r\n customFilterDirectives = contentChildren(TableCustomFilterDirective, {descendants: true});\r\n\r\n $allFilterDirectives = computed( () => {\r\n if(this.wrapper) {\r\n return [...this.filterDirectives(), ...this.customFilterDirectives(), ...this.wrapper.$registrations()];\r\n } {\r\n return [...this.filterDirectives(), ...this.customFilterDirectives()];\r\n }\r\n }\r\n );\r\n\r\n $isInitializationState = (state: InitializationState) => computed(() =>\r\n this.state.selectSignal(s => s.initializationState === state)()) ;\r\n\r\n allFilterDirectivesEffect = effect(() => {\r\n const loaded = this.$isInitializationState(InitializationState.LoadedFromStore)();\r\n const stateFilters = this.state.$filters();\r\n const filterDirectives = this.$allFilterDirectives();\r\n untracked(() => {\r\n if(loaded) {\r\n filterDirectives.filter( f => !f.used).forEach( f => {\r\n f.used = true;\r\n if(f.savable) {\r\n var filter = stateFilters[f.filterId];\r\n if(isFilterInfo(filter)) {\r\n const filterDirective: TableFilterDirective = f as TableFilterDirective;\r\n filterDirective.fieldType = filter.fieldType;\r\n filterDirective.filterType = filter.filterType;\r\n filterDirective.setFilterValue(filter.filterValue);\r\n filterDirective.key = filter.key;\r\n filterDirective.update();\r\n }\r\n if(isCustomFilter(filter)) {\r\n f.active = filter.active ?? false;\r\n }\r\n this.state.addFilter((f.filter$ as any));\r\n }\r\n });\r\n }\r\n })\r\n });\r\n\r\n @ViewChild(PaginatorComponent) paginatorComponent?: PaginatorComponent;\r\n @ViewChild(GenericTableComponent) genericTable?: GenericTableComponent;\r\n @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\r\n $customCells = contentChildren(CustomCellDirective);\r\n $myColumns = computed(() => {\r\n return this.state.$metaDataArray().map( metaData => ({metaData, customCell: this.$customCells().find(cc => cc.customCell === metaData.key)}))\r\n })\r\n @ContentChild('table', {read: ElementRef}) tableElRef!: ElementRef;\r\n\r\n @Input({ required: true }) tableBuilder!: TableBuilder;\r\n @Input() tableId!: string;\r\n @Input() set indexColumn(val: boolean) {\r\n this.props.indexColumn = val;\r\n }\r\n @Input() set selectionColumn(val: boolean) {\r\n this.props.selectionColumn = val;\r\n }\r\n @Input() set isSticky(val: boolean) {\r\n this.props.isSticky = val;\r\n }\r\n @Input() set stickyFooter(val: boolean) {\r\n this.props.stickyFooter = val;\r\n }\r\n @Input() set pageSize(value: number) {\r\n this.state.setPageSize(value);\r\n }\r\n @Input() set groupHeaderTemplate( template: TemplateRef<any>) {\r\n this.props.groupHeaderTemplate = template;\r\n }\r\n @Input() set groupHeaderHeight(value: number) {\r\n this.props.groupHeaderHeight = value;\r\n }\r\n @Input() trackBy!: string;\r\n @Input() inputFilters?: Observable<Array<Predicate<T>>>;\r\n\r\n @Output() selection$ = new EventEmitter();\r\n $data = toSignal(this.data, { initialValue: [] });\r\n @Output() onStateReset = new EventEmitter();\r\n @Output() onSaveState = new EventEmitter();\r\n @Output() state$ = this.state.getSavableState().pipe(\r\n map(state => cloneDeep(state)),\r\n defaultShareReplay(),\r\n );\r\n\r\n clearSelections(){\r\n this.genericTable?.selection.clear(true);\r\n }\r\n displayData = new ReplaySubject<T[]>(1);\r\n\r\n $displayData = toSignal(this.displayData, { initialValue: [] });\r\n\r\n $collapseFooter = this.state.$collapseFooter;\r\n $collapseHeader = this.state.$collapseHeader;\r\n\r\n ngOnDestroy(){\r\n if(this.tableId) {\r\n this.stateService.saveTableStateToLocal({ tableId:this.tableId, tableState: this.state.getSavableStateSignal() });\r\n }\r\n }\r\n\r\n firstPage(): void {\r\n this.paginatorComponent?.$paginator()?.firstPage();\r\n }\r\n\r\n lastPage(): void {\r\n this.paginatorComponent?.$paginator()?.lastPage();\r\n }\r\n\r\n resetState() {\r\n this.customFilterDirectives().forEach( cf => cf.reset());\r\n this.filterDirectives().forEach( cf => cf.reset() );\r\n this.state.resetState();\r\n this.onStateReset.next(null)\r\n }\r\n private initializeStateEffect = effect(() => {\r\n const metaLoaded = this.$isInitializationState(InitializationState.MetaDataLoaded)();\r\n untracked(() => {\r\n if(metaLoaded) {\r\n this.state.setTableSettings(this.tableBuilder.settings);\r\n if(this.tableId){\r\n const persistedState = this.stateService.$selectLocalTableStateForView(this.tableId)();\r\n if(persistedState){\r\n this.state.updateStateFromPersistedState(persistedState);\r\n return;\r\n }\r\n }\r\n this.state.setInitializationState(InitializationState.LoadedFromStore);\r\n }\r\n });\r\n });\r\n customFilters$ = new BehaviorSubject<Predicate<T>[]>([]);\r\n initializeData() {\r\n\r\n const predicateFilters$ = combineLatest([this.inputFilters?.pipe(startWith([])) ?? of([] as Predicate<T>[]), this.customFilters$])\r\n .pipe(map(([a, b]) => [...a, ...b]));\r\n\r\n const filters$ = combineLatest([\r\n this.state.filters$.pipe(scan(updateFilterInfoState, { allFilters: {} }), timestamp()),\r\n predicateFilters$.pipe(scan(updateFilterPredicateState, {allFilters: [] as Predicate<T>[]}), timestamp())\r\n ])\r\n .pipe(\r\n map(([filterInfo, pred]) => updateFilterState(filterInfo, pred))\r\n );\r\n\r\n const sortsState$ = this.state.sort$.pipe(scan(updateSortState, initialSortState));\r\n\r\n const sortedAndFilteredData$ = sortAndFilterData(this.tableBuilder.getData$(), sortsState$, filters$);\r\n\r\n const flatGrouped$ = combineLatest([sortedAndFilteredData$.pipe(timestamp()), this.state.groupByKeys$.pipe(timestamp()), this.state.expandedGroups$.pipe(timestamp())]).pipe(\r\n scan(updateGroupByState, initialGroupByState),\r\n map(({displayData}) => displayData),\r\n defaultShareReplay(),\r\n );\r\n\r\n this.state.on(sortedAndFilteredData$, (data) => {\r\n this.data.next(data);\r\n this.dataStore.patchState({dataLen: data.length});\r\n });\r\n\r\n this.state.on(flatGrouped$, (data) => {\r\n this.displayData.next(data);\r\n });\r\n }\r\n ngOnInit() {\r\n const customCells$ = toObservable(this.$customCells, { injector: this.injector });\r\n this.state.setLinkMaps(this.tableBuilder.metaData$!.pipe(\r\n map(createLinkCreatorDict)\r\n ));\r\n const customCellMeta = customCells$.pipe(switchMap(c => c.length ? combineLatest(c.map(c => c.$metaData)) : of([] as MetaData[])));\r\n const metaForState = combineLatest([this.tableBuilder.metaData$, customCellMeta]).pipe(map(([mds, customCells]) => {\r\n mds = mds.map(this.mapArrayFieldsMetaDatas);\r\n return [\r\n ...mds,\r\n ...customCells.map( md => this.mergeMetaData(md, mds.find( item => item.key === md.key ) ))\r\n ]\r\n }));\r\n this.state.setMetaData(metaForState);\r\n runInInjectionContext(this.injector, () => {\r\n const ds = new TableBuilderDataSource<T>(\r\n this.$displayData,\r\n this.state,\r\n this.dataStore\r\n );\r\n this.state.updateState({\r\n props: {\r\n dataSource: ds,\r\n ...this.props\r\n }\r\n })\r\n })\r\n this.initializeData();\r\n }\r\n\r\n mergeMetaData(metaData1: MetaData, metaData2?: MetaData) {\r\n if(!metaData2){\r\n metaData1.noExport = true;\r\n return metaData1\r\n }\r\n if(!metaData1.displayName) metaData1.displayName = metaData2.displayName;\r\n if(!metaData1.preSort) metaData1.preSort = metaData2.preSort;\r\n if(!metaData1.order) metaData1.order = metaData2.order;\r\n if(!metaData1.width) metaData1.width = metaData2.width;\r\n if(metaData2.fieldType) metaData1.fieldType = metaData2.fieldType;\r\n metaData1.noExport = !metaData2;\r\n return metaData1;\r\n }\r\n\r\n exportToCsv(): void {\r\n this.exportToCsvService.exportToCsv(this.$data());\r\n }\r\n\r\n expandAllGroups = () => {\r\n const groupHeaders = getAllGroupHeaderNames(this.$displayData());\r\n this.state.expandAllOfGroup({ groupHeadersByKey: groupHeaders });\r\n }\r\n\r\n collapseAllGroups = () => this.state.collapseAll();\r\n\r\n ngAfterContentInit() {\r\n this.state.runOnceWhen(\r\n stateIs(InitializationState.LoadedFromStore),\r\n state => {\r\n this.addFilterDirectives(state);\r\n this.state.updateState({ initializationState: InitializationState.Ready });\r\n });\r\n }\r\n\r\n\r\n mapArrayFieldsMetaDatas = (meta : MetaData<T>) => {\r\n if(meta.fieldType === FieldType.Array){\r\n const additional = {...meta.additional} as ArrayAdditional;\r\n additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\r\n additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\r\n return {...meta,additional}\r\n }\r\n return meta;\r\n }\r\n\r\n\r\n addFilterDirectives = (state: TableState) => {\r\n const customFilters$ = toObservable(this.$allFilterDirectives, {injector: this.injector}).pipe(\r\n mergeMap( customerFilters => customerFilters\r\n .filter( filter => !filter.savable )\r\n .map(filter => filter.filter$ )\r\n ),\r\n mergeAll(),\r\n scan( (a,b)=> {\r\n if(b.active) {\r\n a[b.filterId] = isCustomFilter(b) ? b.predicate : createFilterFunc(b);\r\n } else {\r\n delete a[b.filterId] ;\r\n }\r\n return a;\r\n }, {} as Dictionary<Predicate<any>>),\r\n map( f => Object.values(f))\r\n );\r\n\r\n this.state.on(customFilters$, (f) => {\r\n this.customFilters$.next(f);\r\n });\r\n }\r\n\r\n $useVirtual = this.state.$isVirtual;\r\n}\r\n","<ng-content select=\"[before]\" />\r\n\r\n<ng-container multiSort *ngrxLet=\"state.tableSettings$ as tableSettings\">\r\n <div class=\"header-wrapper\">\r\n <div class=\"title\">\r\n @if ((!$collapseHeader()) || tableSettings.showTitleWhenHeaderCollapsed) {\r\n <ng-content select=\".tb-header-title\"/>\r\n }\r\n @if((state.groupByKeys$ | async)?.length){\r\n <group-by-list />\r\n }\r\n </div>\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader) {\r\n @if (!$collapseHeader()) {\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #mainMenu='matMenu'>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n @else {\r\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n <mat-icon [matTooltip]=\"$collapseHeader() ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{$collapseHeader() ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n }\r\n\r\n </div>\r\n </div>\r\n <div class=\"table-wrapper\">\r\n @if($useVirtual())\r\n {\r\n <tb-virtual-scroll-container>\r\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData]=\"$displayData()\"\r\n (selection$)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"trackBy\" />\r\n </tb-virtual-scroll-container>\r\n }\r\n @else\r\n {\r\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData]=\"$displayData()\"\r\n (selection$)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"trackBy\" />\r\n }\r\n\r\n </div>\r\n @if(tableSettings.usePaginator)\r\n {\r\n <div class=\"paginator\">\r\n <tb-paginator #tbPaginator [tableElRef]=\"tableElRef\" />\r\n\r\n <mat-icon [matTooltip]=\"$collapseFooter() ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\r\n (click)=\"state.toggleCollapseFooter()\">\r\n {{$collapseFooter() ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n </div>\r\n }\r\n\r\n <ng-template #headerMenu>\r\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\r\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\r\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\r\n @if (!!tableId) {<tb-profiles-menu [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>}\r\n </ng-template>\r\n\r\n <ng-template #headerMenuExtra>\r\n <button mat-menu-item (click)=\"resetState()\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset table</span>\r\n </button>\r\n @if (!tableSettings.hideExport) {\r\n <button mat-menu-item (click)=\"exportToCsv()\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n }\r\n @if (tableId) {\r\n <button stop-propagation mat-menu-item (click)=\"pm.trigger()?.toggleMenu()\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n <span>Profiles</span>\r\n </button>\r\n <tb-profiles-menu class=\"profiles-menu\" #pm [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>\r\n }\r\n </ng-template>\r\n</ng-container>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\r\nimport { MultiSortDirective } from './directives/multi-sort.directive';\r\nimport { ModuleWithProviders } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\r\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FilterComponent, GenericTableComponent, TableContainerComponent } from './components';\r\nimport { CustomCellDirective, MatSlideToggleTbFilterDirective, MatRadioButtonTbFilterDirective, MatOptionTbFilterDirective, MatCheckboxTbFilterDirective, MatButtonToggleFilterDirective, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective, ResizeColumnDirective, TableCustomFilterDirective } from './directives';\r\nimport { UtilitiesModule } from '../utilities';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { TableBuilderStateStore } from './ngrx/tableBuilderStateStore';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatDialogModule,\r\n MatNativeDateModule,\r\n RouterModule,\r\n TableContainerComponent,\r\n GenericTableComponent,\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n FilterComponent,\r\n MatSlideToggleTbFilterDirective,\r\n MatRadioButtonTbFilterDirective,\r\n MatOptionTbFilterDirective,\r\n MatCheckboxTbFilterDirective,\r\n MatButtonToggleFilterDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ResizeColumnDirective,\r\n UtilitiesModule,\r\n ],\r\n exports: [\r\n GenericTableComponent,\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n FilterComponent,\r\n MatSlideToggleTbFilterDirective,\r\n MatRadioButtonTbFilterDirective,\r\n MatOptionTbFilterDirective,\r\n MatCheckboxTbFilterDirective,\r\n MatButtonToggleFilterDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ResizeColumnDirective,\r\n UtilitiesModule,\r\n ],\r\n providers: [\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n MultiSortDirective,\r\n TableBuilderStateStore,\r\n ]\r\n})\r\nexport class TableBuilderModule {\r\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\r\n return {\r\n ngModule: TableBuilderModule,\r\n providers: [\r\n { provide: TableBuilderConfigToken, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n constructor(private dataSrc: Observable<T[]>) {\r\n super([]);\r\n }\r\n\r\n connect() {\r\n if (!this.subscription) {\r\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\r\n }\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { isObservable, Observable, of } from 'rxjs';\r\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\r\nimport { first, map, switchMap } from 'rxjs/operators';\r\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { defaultShareReplay, notNull } from '../../rxjs';\r\nimport { initIndexSymbol } from '../components/table-container/table-container.helpers/sort-state.helpers';\r\nimport { createDataCleaners } from '../components/table-container/table-container.helpers/data-state.helpers';\r\nimport { isSignal, Signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\nexport class TableBuilder<T = any> {\r\n\r\n metaData$: Observable<MetaData<T>[]>;\r\n data$: Observable<T[]>;\r\n settings : Observable<GeneralTableSettings>;\r\n\r\n constructor(\r\n data: TableBuilderArgs<T[]>, \r\n metaData?: TableBuilderArgs<MetaData<T,any>[]>,\r\n settings: TableBuilderArgs<TableBuilderSettings> = new GeneralTableSettings()\r\n ) {\r\n this.settings = this.coerceSettingsToObservable(settings)\r\n .pipe(map(sett => new GeneralTableSettings(sett)), defaultShareReplay());\r\n\r\n this.data$ = this.coerceToObservable(data, this.settings)\r\n .pipe(notNull(), defaultShareReplay());\r\n\r\n this.metaData$ = metaData ?\r\n this.coerceToObservable(metaData, this.settings).pipe(defaultShareReplay()) \r\n :\r\n this.data$.pipe(first(), map( d=> this.createMetaData(d[0]) ), defaultShareReplay());\r\n }\r\n\r\n getData$(): Observable<any[]> {\r\n return this.metaData$.pipe(\r\n map(md => createDataCleaners(md)),\r\n switchMap( cleaner => this.data$.pipe(\r\n map((datas, ii) => {\r\n return datas.map((data, i) => {\r\n const cleaned = cleaner(data);\r\n cleaned[initIndexSymbol] = i * ((ii % 2) + 1)\r\n return cleaned;\r\n })\r\n } ),\r\n )),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n createMetaData(obj: any): MetaData [] {\r\n return Object.keys(obj ?? {})\r\n .map( key => ({\r\n key,\r\n fieldType: FieldType.Unknown,\r\n order: -1\r\n }));\r\n }\r\n\r\n coerceToObservable<T>(arg: TableBuilderArgs<T>, settings: Observable<TableBuilderSettings>){\r\n if(isObservable(arg)){\r\n return arg;\r\n } else if(isSignal(arg)){\r\n return settings.pipe(switchMap(s => {\r\n this.assertInjector(s);\r\n return toObservable(arg, { injector: s.injector })\r\n }))\r\n } else {\r\n return of(arg);\r\n }\r\n }\r\n\r\n coerceSettingsToObservable(settings: TableBuilderArgs<TableBuilderSettings>){\r\n if(isObservable(settings)){\r\n return settings;\r\n } else if(isSignal(settings)){\r\n this.assertInjector(settings());\r\n return toObservable(settings, { injector: settings().injector });\r\n } else {\r\n return of(settings);\r\n }\r\n }\r\n\r\n assertInjector(s: TableBuilderSettings){\r\n if(!s.injector){\r\n throw new Error('Injector must be provided when passing a signal to table builder');\r\n }\r\n }\r\n}\r\n\r\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\r\n reportDef$ = reportDef$.pipe(defaultShareReplay());\r\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\r\n};\r\n\r\ntype TableBuilderArgs<T> = T | Observable<T> | Signal<T>; \r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { get } from 'lodash';\r\n\r\n// State\r\nexport class AppStatusState {\r\n readonly ActionStatusBar!: ActionStatus[];\r\n}\r\n\r\nexport interface StatusState {\r\n ids: string[];\r\n entities: {[id: string]: ActionStatus};\r\n}\r\n\r\nexport class ActionStatus {\r\n id!: string;\r\n displayName?: string;\r\n status!: serverStatusTypes;\r\n responsePayload?: any;\r\n}\r\n\r\nconst InitialState: StatusState = {\r\n ids: [],\r\n entities: {}\r\n};\r\n\r\nexport enum serverStatusTypes {\r\n notStarted = 0,\r\n inProgress = 1,\r\n success = 2,\r\n error = 3\r\n}\r\n\r\n// Entity and Selectors\r\nexport const statusAdapter = createEntityAdapter<ActionStatus>();\r\nexport interface State extends EntityState<ActionStatus> {}\r\nexport const initialState: StatusState = statusAdapter.getInitialState(InitialState);\r\n\r\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = statusAdapter.getSelectors(getStatusState);\r\n\r\nexport const selectEntity = (id: string) => createSelector(\r\n selectEntities,\r\n (entities: any) => entities[id]\r\n);\r\n\r\n// Reducers\r\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\r\n\r\n const actionStatus: ActionStatus = get(action, 'payload.actionStatus' ) as any;\r\n\r\n if ( actionStatus ) {\r\n if ( state.ids.find(id => id === actionStatus.id) ) {\r\n const modifiedObj = {...state.entities[actionStatus.id] };\r\n modifiedObj.status = actionStatus.status;\r\n modifiedObj.responsePayload = actionStatus.responsePayload;\r\n return statusAdapter.upsertOne( modifiedObj, state);\r\n } else {\r\n return statusAdapter.addOne(actionStatus , state);\r\n }\r\n\r\n }\r\n return state;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { actionStatusReducer } from '../ngrx';\r\nimport { StoreModule } from '@ngrx/store';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('ActionStatus', actionStatusReducer),\r\n ]\r\n})\r\nexport class NgrxExtModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\r\nimport { delayOn } from '../../rxjs';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'lib-action-state-spinner',\r\n templateUrl: './action-state-spinner.component.html',\r\n styleUrls: ['./action-state-spinner.component.css'],\r\n standalone: true,\r\n imports: [AsyncPipe, MatProgressSpinnerModule]\r\n})\r\nexport class ActionStateSpinnerComponent implements OnInit {\r\n\r\n @Input() status$!: Observable<ActionStatus>;\r\n serverActionStatus$!: Observable<ActionStatus>;\r\n serverStatusTypes = serverStatusTypes;\r\n\r\n ngOnInit() {\r\n this.serverActionStatus$ = this.status$.pipe(\r\n delayOn( a => a.status === serverStatusTypes.inProgress , 500)\r\n );\r\n }\r\n}\r\n","@if((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress){\r\n <div id=\"blocker\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n </div>\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ActionStateSpinnerComponent,\r\n ],\r\n exports: [\r\n ActionStateSpinnerComponent,\r\n ]\r\n})\r\nexport class ActionStateUiModule { }\r\n","/*\r\n * Public API Surface of action-state\r\n */\r\n\r\nexport * from './ngrx';\r\nexport * from './ngrx-ext/ngrx-ext.module';\r\nexport * from './action-state-ui/action-state-ui.module';\r\nexport * from './action-state-spinner/action-state-spinner.component';\r\n","import { APP_INITIALIZER, makeEnvironmentProviders } from \"@angular/core\";\r\nimport { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\ntype Cache = {\r\n [key: string]: { [key: string]: any }[];\r\n}\r\n\r\nclass AppStoreCache {\r\n cache: Cache = {};\r\n isInCache = (props: any, actionableSelectorId: string): boolean => {\r\n if(typeof props != 'object') props = { props };\r\n\r\n let itemsInCache = this.cache[actionableSelectorId] = this.cache[actionableSelectorId] || [];\r\n\r\n if(itemsInCache.some(itemInCache => shallowEquals(itemInCache, props))){\r\n return true;\r\n }\r\n\r\n itemsInCache.push(props);\r\n return false;\r\n }\r\n}\r\n\r\nlet _store: Store<any>;\r\nlet _cache: AppStoreCache;\r\n\r\nexport const clearActionableSelectorRequestCache = () => _cache.cache = {};\r\n\r\nconst setStore = (store: Store) => {\r\n if(store instanceof Store) _store = store;\r\n};\r\n\r\nexport function setUpStoreFactory(store: Store){\r\n _cache = new AppStoreCache();\r\n return () => new Promise((resolve, reject) => {\r\n setStore(store);\r\n resolve(null);\r\n })\r\n}\r\n\r\n/**\r\n * Creates a selector that can dispatch an action if conditions are met.\r\n * Note: The props of the selector factory must include the props of the action.\r\n * @param selectorFactory A method that returns selector.\r\n * @param action The action that will be dispatched when conditions are met.\r\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\r\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\r\n */\r\nexport const createActionableSelector = <State, Result, Props = any>(\r\n selectorFactory: (props?: Props) => MemoizedSelector<State, Result>,\r\n action: ActionReturner<Props | undefined>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n): (props?: Props) => ActionableMemoizedSelector<State, Result> => {\r\n const id = uuid();\r\n const slctr = (props?: Props) => createSelector(\r\n selectorFactory(props),\r\n (selected: Result) => {\r\n if(dispatchIf(selected) && !_cache.isInCache(props, id)){\r\n queueMicrotask(() => _store.dispatch(action(props)));\r\n }\r\n return selected;\r\n }\r\n ) as ActionableMemoizedSelector<State, Result>;\r\n return slctr;\r\n}\r\n\r\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\r\n\r\nexport type ActionReturner<Props> = (props: Props) => Action;\r\n\r\nexport function defaultFilter(data: any) {\r\n return data == null || data == undefined;\r\n}\r\n\r\nconst shallowEquals = (cachedItem: object, newItem: object): boolean => {\r\n const cachedItemKeys = Object.keys(cachedItem);\r\n const secondKeys = Object.keys(newItem);\r\n if(cachedItemKeys.length !== secondKeys.length) {\r\n return false;\r\n }\r\n for(let index = 0; index < cachedItemKeys.length; index++) {\r\n const currentKey = cachedItemKeys[index];\r\n if(cachedItem[currentKey] !== newItem[currentKey]){\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function provideActionableSelector(){\r\n return makeEnvironmentProviders([\r\n { provide: APP_INITIALIZER, useFactory: setUpStoreFactory, multi: true, deps: [Store] },\r\n ])\r\n}\r\n","/*\r\n * Public API Surface of http-request-state\r\n */\r\n\r\nexport * from './http-request-state/directives';\r\nexport * from './http-request-state/rxjs';\r\nexport * from './http-request-state';\r\n\r\n\r\nexport * from './table-builder/table-builder.module';\r\n\r\nexport * from './table-builder/classes/TableBuilderConfig';\r\n\r\nexport * from './table-builder/interfaces/report-def';\r\n\r\nexport * from './table-builder/classes/MatTableObservableDataSource';\r\n\r\nexport * from './table-builder/classes/table-builder';\r\n\r\nexport * from './table-builder/classes/table-builder-general-settings';\r\n\r\nexport * from './table-builder/components';\r\n\r\nexport * from './table-builder/directives';\r\n\r\nexport * from './table-builder/enums/filterTypes';\r\n\r\n\r\nexport * from './rxjs'\r\n\r\nexport * from './utilities'\r\n\r\nexport * from './action-state';\r\n\r\nexport * from './ngrx';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","getDestroyRef","concatMap","merge","uuid","takeUntil","tap","switchMap","i1","i2","i3","i5","i6","i7","i4","i8","i9","first","scan","timestamp","i2.PaginatorComponent","i4.MultiSortDirective","i5.GroupByListComponent","i6.FilterChipsComponent","i7.GenFilterDisplayerComponent","i8.GenColDisplayerComponent","i9.SortMenuComponent","i10.GenericTableComponent","i11.StopPropagationDirective","i12.ProfilesMenuComponent","i13","i14","i15","i16","i17.VirtualScrollContainer"],"mappings":"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"}