@one-paragon/angular-utilities 2.2.6 → 2.2.7

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 (297) 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/fesm2022/one-paragon-angular-utilities.mjs +6565 -0
  7. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -0
  8. package/http-request-state/RequestStateFactory.d.ts +17 -0
  9. package/http-request-state/RequestStateStore.d.ts +101 -0
  10. package/{src/http-request-state/deprecated.ts → http-request-state/deprecated.d.ts} +20 -20
  11. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +14 -0
  12. package/http-request-state/directives/http-error-state-directive.d.ts +10 -0
  13. package/http-request-state/directives/http-inProgress-state-directive.d.ts +10 -0
  14. package/http-request-state/directives/http-notStarted-state-directive.d.ts +10 -0
  15. package/http-request-state/directives/http-success-state-directive.d.ts +17 -0
  16. package/{src/http-request-state/directives/index.ts → http-request-state/directives/index.d.ts} +5 -5
  17. package/http-request-state/directives/request-state-directive.d.ts +34 -0
  18. package/http-request-state/helpers.d.ts +9 -0
  19. package/http-request-state/http-state-module.d.ts +11 -0
  20. package/{src/http-request-state/index.ts → http-request-state/index.d.ts} +7 -7
  21. package/http-request-state/request-state.d.ts +12 -0
  22. package/http-request-state/rxjs/getRequestorBody.d.ts +3 -0
  23. package/http-request-state/rxjs/getRequestorState.d.ts +3 -0
  24. package/{src/http-request-state/rxjs/index.ts → http-request-state/rxjs/index.d.ts} +4 -4
  25. package/http-request-state/rxjs/tapError.d.ts +3 -0
  26. package/http-request-state/rxjs/tapSuccess.d.ts +3 -0
  27. package/http-request-state/types.d.ts +41 -0
  28. package/index.d.ts +5 -0
  29. package/ngrx/actionable-selector.d.ts +32 -0
  30. package/ngrx/index.d.ts +1 -0
  31. package/package.json +27 -15
  32. package/{src/public-api.ts → public-api.d.ts} +16 -35
  33. package/rxjs/defaultShareReplay.d.ts +2 -0
  34. package/{src/rxjs/index.ts → rxjs/index.d.ts} +5 -5
  35. package/rxjs/mapError.d.ts +2 -0
  36. package/rxjs/rxjs-operators.d.ts +13 -0
  37. package/rxjs/subjectifier.d.ts +10 -0
  38. package/rxjs/subscriber.directive.d.ts +14 -0
  39. package/table-builder/classes/DefaultSettings.d.ts +9 -0
  40. package/table-builder/classes/MatTableObservableDataSource.d.ts +9 -0
  41. package/table-builder/classes/TableBuilderConfig.d.ts +31 -0
  42. package/table-builder/classes/TableBuilderDataSource.d.ts +18 -0
  43. package/table-builder/classes/TableState.d.ts +81 -0
  44. package/table-builder/classes/data-store.d.ts +8 -0
  45. package/{src/table-builder/classes/display-col.ts → table-builder/classes/display-col.d.ts} +5 -5
  46. package/table-builder/classes/filter-info.d.ts +39 -0
  47. package/table-builder/classes/table-builder-general-settings.d.ts +122 -0
  48. package/table-builder/classes/table-builder.d.ts +22 -0
  49. package/table-builder/classes/table-store.d.ts +146 -0
  50. package/table-builder/classes/table-store.helpers.d.ts +31 -0
  51. package/table-builder/components/array-column.component.d.ts +15 -0
  52. package/table-builder/components/column-builder/column-builder.component.d.ts +41 -0
  53. package/table-builder/components/column-builder/column-helpers.d.ts +38 -0
  54. package/table-builder/components/column-header-menu/column-header-menu.component.d.ts +50 -0
  55. package/table-builder/components/date-filter/date-filter.component.d.ts +37 -0
  56. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +37 -0
  57. package/table-builder/components/filter/filter.component.d.ts +48 -0
  58. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +22 -0
  59. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +17 -0
  60. package/table-builder/components/generic-table/generic-table.component.d.ts +85 -0
  61. package/table-builder/components/generic-table/paginator.component.d.ts +26 -0
  62. package/table-builder/components/group-by-list/group-by-list.component.d.ts +11 -0
  63. package/table-builder/components/in-filter/in-filter.component.d.ts +20 -0
  64. package/{src/table-builder/components/index.ts → table-builder/components/index.d.ts} +9 -9
  65. package/table-builder/components/initialization-component/initialization.component.d.ts +15 -0
  66. package/table-builder/components/link-column.component.d.ts +23 -0
  67. package/table-builder/components/number-filter/number-filter.component.d.ts +39 -0
  68. package/table-builder/components/profiles-menu/profiles-menu.component.d.ts +33 -0
  69. package/table-builder/components/reset-menu/reset-menu.component.d.ts +25 -0
  70. package/table-builder/components/scroll-strategy.d.ts +45 -0
  71. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +24 -0
  72. package/table-builder/components/sort-menu/sort-menu.component.d.ts +19 -0
  73. package/table-builder/components/table-container/table-container.component.d.ts +104 -0
  74. package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +7 -0
  75. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +19 -0
  76. package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +19 -0
  77. package/table-builder/components/table-container/table-container.helpers/meta-data.helpers.d.ts +2 -0
  78. package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +12 -0
  79. package/table-builder/components/table-container/tableProps.d.ts +10 -0
  80. package/table-builder/components/table-container/virtual-scroll-container.d.ts +40 -0
  81. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +15 -0
  82. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +12 -0
  83. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +14 -0
  84. package/table-builder/components/table-header-menu/table-header-menu.component.d.ts +15 -0
  85. package/table-builder/directives/custom-cell-directive.d.ts +34 -0
  86. package/{src/table-builder/directives/index.ts → table-builder/directives/index.d.ts} +5 -6
  87. package/table-builder/directives/multi-sort.directive.d.ts +10 -0
  88. package/table-builder/directives/resize-column.directive.d.ts +43 -0
  89. package/table-builder/directives/table-wrapper.directive.d.ts +8 -0
  90. package/table-builder/directives/tb-filter.directive.d.ts +116 -0
  91. package/table-builder/enums/filterTypes.d.ts +36 -0
  92. package/table-builder/functions/boolean-filter-function.d.ts +3 -0
  93. package/table-builder/functions/date-filter-function.d.ts +4 -0
  94. package/table-builder/functions/download-data.d.ts +1 -0
  95. package/table-builder/functions/null-filter-function.d.ts +2 -0
  96. package/table-builder/functions/number-filter-function.d.ts +4 -0
  97. package/table-builder/functions/sort-data-function.d.ts +6 -0
  98. package/table-builder/functions/string-filter-function.d.ts +5 -0
  99. package/{src/table-builder/interfaces/ColumnInfo.ts → table-builder/interfaces/ColumnInfo.d.ts} +6 -7
  100. package/{src/table-builder/interfaces/dictionary.ts → table-builder/interfaces/dictionary.d.ts} +3 -3
  101. package/table-builder/interfaces/report-def.d.ts +229 -0
  102. package/table-builder/ngrx/tableBuilderStateStore.d.ts +69 -0
  103. package/table-builder/pipes/column-total.pipe.d.ts +8 -0
  104. package/table-builder/pipes/format-filter-type.pipe.d.ts +8 -0
  105. package/table-builder/pipes/format-filter-value.pipe.d.ts +11 -0
  106. package/table-builder/pipes/key-display.d.ts +9 -0
  107. package/table-builder/services/export-to-csv.service.d.ts +22 -0
  108. package/table-builder/services/link-creator.service.d.ts +16 -0
  109. package/table-builder/services/table-template-service.d.ts +14 -0
  110. package/table-builder/services/transform-creator.d.ts +9 -0
  111. package/table-builder/table-builder.module.d.ts +14 -0
  112. package/utilities/array-helpers.d.ts +1 -0
  113. package/utilities/directives/auto-focus.directive.d.ts +9 -0
  114. package/utilities/directives/clickEmitterDirective.d.ts +7 -0
  115. package/utilities/directives/clickSubject.d.ts +9 -0
  116. package/utilities/directives/conditional-classes.directive.d.ts +12 -0
  117. package/utilities/directives/dialog-service.d.ts +10 -0
  118. package/utilities/directives/dialog.d.ts +45 -0
  119. package/utilities/directives/mat-toggle-group-directive.d.ts +21 -0
  120. package/utilities/directives/prevent-enter.directive.d.ts +6 -0
  121. package/utilities/directives/stop-propagation.directive.d.ts +7 -0
  122. package/utilities/directives/styler.d.ts +16 -0
  123. package/utilities/directives/trim-whitespace.directive.d.ts +7 -0
  124. package/{src/utilities/index.ts → utilities/index.d.ts} +15 -22
  125. package/utilities/module.d.ts +19 -0
  126. package/utilities/pipes/function.pipe.d.ts +11 -0
  127. package/utilities/pipes/phone.pipe.d.ts +8 -0
  128. package/utilities/pipes/space-case.pipes.d.ts +17 -0
  129. package/karma.conf.js +0 -44
  130. package/ng-package.json +0 -7
  131. package/src/action-state/action-state-spinner/action-state-spinner.component.css +0 -16
  132. package/src/action-state/action-state-spinner/action-state-spinner.component.html +0 -7
  133. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +0 -25
  134. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +0 -25
  135. package/src/action-state/action-state-ui/action-state-ui.module.ts +0 -13
  136. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +0 -14
  137. package/src/action-state/ngrx.ts +0 -69
  138. package/src/http-request-state/RequestStateFactory.ts +0 -56
  139. package/src/http-request-state/RequestStateStore.ts +0 -284
  140. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +0 -29
  141. package/src/http-request-state/directives/http-error-state-directive.ts +0 -21
  142. package/src/http-request-state/directives/http-inProgress-state-directive.ts +0 -19
  143. package/src/http-request-state/directives/http-notStarted-state-directive.ts +0 -19
  144. package/src/http-request-state/directives/http-success-state-directive.ts +0 -29
  145. package/src/http-request-state/directives/request-state-directive.spec.ts +0 -73
  146. package/src/http-request-state/directives/request-state-directive.ts +0 -78
  147. package/src/http-request-state/helpers.ts +0 -30
  148. package/src/http-request-state/http-state-module.ts +0 -23
  149. package/src/http-request-state/models/view-context.ts +0 -18
  150. package/src/http-request-state/observable.spec.ts +0 -43
  151. package/src/http-request-state/request-state.ts +0 -66
  152. package/src/http-request-state/rxjs/getRequestorBody.ts +0 -10
  153. package/src/http-request-state/rxjs/getRequestorState.ts +0 -8
  154. package/src/http-request-state/rxjs/tapError.ts +0 -16
  155. package/src/http-request-state/rxjs/tapSuccess.ts +0 -16
  156. package/src/http-request-state/strategies.spec.ts +0 -42
  157. package/src/http-request-state/types.ts +0 -54
  158. package/src/ngrx/actionable-selector.ts +0 -160
  159. package/src/ngrx/index.ts +0 -1
  160. package/src/rxjs/defaultShareReplay.ts +0 -8
  161. package/src/rxjs/mapError.ts +0 -8
  162. package/src/rxjs/rxjs-operators.ts +0 -130
  163. package/src/rxjs/subjectifier.ts +0 -17
  164. package/src/rxjs/subscriber.directive.ts +0 -57
  165. package/src/specs/clickSubject.spec.ts +0 -95
  166. package/src/specs/dialog.spec.ts +0 -101
  167. package/src/specs/toggleGroupDirective.spec.ts +0 -229
  168. package/src/table-builder/classes/DefaultSettings.ts +0 -11
  169. package/src/table-builder/classes/MatTableObservableDataSource.ts +0 -23
  170. package/src/table-builder/classes/TableBuilderConfig.ts +0 -50
  171. package/src/table-builder/classes/TableBuilderDataSource.ts +0 -64
  172. package/src/table-builder/classes/TableState.ts +0 -125
  173. package/src/table-builder/classes/data-store.ts +0 -10
  174. package/src/table-builder/classes/filter-info.ts +0 -125
  175. package/src/table-builder/classes/table-builder-general-settings.ts +0 -205
  176. package/src/table-builder/classes/table-builder.ts +0 -105
  177. package/src/table-builder/classes/table-store.helpers.ts +0 -104
  178. package/src/table-builder/classes/table-store.ts +0 -440
  179. package/src/table-builder/components/array-column.component.ts +0 -34
  180. package/src/table-builder/components/column-builder/column-builder.component.html +0 -87
  181. package/src/table-builder/components/column-builder/column-builder.component.scss +0 -43
  182. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +0 -49
  183. package/src/table-builder/components/column-builder/column-builder.component.ts +0 -129
  184. package/src/table-builder/components/column-builder/column-helpers.ts +0 -54
  185. package/src/table-builder/components/column-header-menu/column-header-menu.component.html +0 -110
  186. package/src/table-builder/components/column-header-menu/column-header-menu.component.scss +0 -97
  187. package/src/table-builder/components/column-header-menu/column-header-menu.component.ts +0 -94
  188. package/src/table-builder/components/date-filter/date-filter.component.html +0 -25
  189. package/src/table-builder/components/date-filter/date-filter.component.ts +0 -22
  190. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +0 -11
  191. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +0 -20
  192. package/src/table-builder/components/filter/filter.component.html +0 -109
  193. package/src/table-builder/components/filter/filter.component.scss +0 -60
  194. package/src/table-builder/components/filter/filter.component.spec.ts +0 -86
  195. package/src/table-builder/components/filter/filter.component.ts +0 -64
  196. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +0 -102
  197. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +0 -60
  198. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +0 -57
  199. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +0 -44
  200. package/src/table-builder/components/generic-table/generic-table.component.html +0 -97
  201. package/src/table-builder/components/generic-table/generic-table.component.scss +0 -38
  202. package/src/table-builder/components/generic-table/generic-table.component.ts +0 -403
  203. package/src/table-builder/components/generic-table/paginator.component.ts +0 -112
  204. package/src/table-builder/components/group-by-list/group-by-list.component.css +0 -17
  205. package/src/table-builder/components/group-by-list/group-by-list.component.html +0 -14
  206. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +0 -23
  207. package/src/table-builder/components/group-by-list/group-by-list.component.ts +0 -25
  208. package/src/table-builder/components/in-filter/in-filter.component.css +0 -3
  209. package/src/table-builder/components/in-filter/in-filter.component.html +0 -23
  210. package/src/table-builder/components/in-filter/in-filter.component.ts +0 -65
  211. package/src/table-builder/components/initialization-component/initialization.component.html +0 -78
  212. package/src/table-builder/components/initialization-component/initialization.component.ts +0 -27
  213. package/src/table-builder/components/link-column.component.ts +0 -42
  214. package/src/table-builder/components/number-filter/number-filter.component.css +0 -10
  215. package/src/table-builder/components/number-filter/number-filter.component.html +0 -25
  216. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +0 -30
  217. package/src/table-builder/components/number-filter/number-filter.component.ts +0 -25
  218. package/src/table-builder/components/profiles-menu/profiles-menu.component.html +0 -77
  219. package/src/table-builder/components/profiles-menu/profiles-menu.component.scss +0 -126
  220. package/src/table-builder/components/profiles-menu/profiles-menu.component.spec.ts +0 -23
  221. package/src/table-builder/components/profiles-menu/profiles-menu.component.ts +0 -63
  222. package/src/table-builder/components/reset-menu/reset-menu.component.css +0 -3
  223. package/src/table-builder/components/reset-menu/reset-menu.component.html +0 -10
  224. package/src/table-builder/components/reset-menu/reset-menu.component.ts +0 -87
  225. package/src/table-builder/components/scroll-strategy.ts +0 -139
  226. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +0 -57
  227. package/src/table-builder/components/sort-menu/sort-menu.component.html +0 -115
  228. package/src/table-builder/components/sort-menu/sort-menu.component.scss +0 -119
  229. package/src/table-builder/components/sort-menu/sort-menu.component.ts +0 -88
  230. package/src/table-builder/components/table-container/table-container.component.html +0 -81
  231. package/src/table-builder/components/table-container/table-container.component.ts +0 -403
  232. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +0 -113
  233. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +0 -125
  234. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +0 -122
  235. package/src/table-builder/components/table-container/table-container.helpers/meta-data.helpers.ts +0 -16
  236. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +0 -47
  237. package/src/table-builder/components/table-container/table-container.scss +0 -47
  238. package/src/table-builder/components/table-container/tableProps.ts +0 -18
  239. package/src/table-builder/components/table-container/virtual-scroll-container.ts +0 -216
  240. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +0 -35
  241. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +0 -44
  242. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +0 -40
  243. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +0 -11
  244. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +0 -85
  245. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +0 -36
  246. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +0 -23
  247. package/src/table-builder/components/table-header-menu/table-header-menu.component.css +0 -21
  248. package/src/table-builder/components/table-header-menu/table-header-menu.component.html +0 -50
  249. package/src/table-builder/components/table-header-menu/table-header-menu.component.ts +0 -35
  250. package/src/table-builder/directives/custom-cell-directive.ts +0 -57
  251. package/src/table-builder/directives/multi-sort.directive.spec.ts +0 -124
  252. package/src/table-builder/directives/multi-sort.directive.ts +0 -50
  253. package/src/table-builder/directives/resize-column.directive.ts +0 -107
  254. package/src/table-builder/directives/table-wrapper.directive.ts +0 -13
  255. package/src/table-builder/directives/tb-filter.directive.ts +0 -376
  256. package/src/table-builder/enums/filterTypes.ts +0 -40
  257. package/src/table-builder/functions/boolean-filter-function.ts +0 -12
  258. package/src/table-builder/functions/date-filter-function.ts +0 -78
  259. package/src/table-builder/functions/download-data.ts +0 -11
  260. package/src/table-builder/functions/null-filter-function.ts +0 -9
  261. package/src/table-builder/functions/number-filter-function.ts +0 -41
  262. package/src/table-builder/functions/sort-data-function.ts +0 -80
  263. package/src/table-builder/functions/string-filter-function.ts +0 -53
  264. package/src/table-builder/interfaces/report-def.ts +0 -254
  265. package/src/table-builder/ngrx/tableBuilderStateStore.ts +0 -197
  266. package/src/table-builder/pipes/column-total.pipe.ts +0 -16
  267. package/src/table-builder/pipes/format-filter-type.pipe.ts +0 -12
  268. package/src/table-builder/pipes/format-filter-value.pipe.ts +0 -67
  269. package/src/table-builder/pipes/key-display.ts +0 -13
  270. package/src/table-builder/services/export-to-csv.service.ts +0 -113
  271. package/src/table-builder/services/link-creator.service.ts +0 -98
  272. package/src/table-builder/services/table-template-service.ts +0 -47
  273. package/src/table-builder/services/transform-creator.ts +0 -96
  274. package/src/table-builder/specs/table-custom-filters.spec.ts +0 -262
  275. package/src/table-builder/styles/collapser.styles.scss +0 -16
  276. package/src/table-builder/table-builder.module.ts +0 -38
  277. package/src/test.ts +0 -17
  278. package/src/utilities/array-helpers.ts +0 -13
  279. package/src/utilities/directives/auto-focus.directive.ts +0 -20
  280. package/src/utilities/directives/clickEmitterDirective.ts +0 -15
  281. package/src/utilities/directives/clickSubject.ts +0 -19
  282. package/src/utilities/directives/conditional-classes.directive.ts +0 -36
  283. package/src/utilities/directives/dialog-service.ts +0 -19
  284. package/src/utilities/directives/dialog.ts +0 -144
  285. package/src/utilities/directives/mat-toggle-group-directive.ts +0 -60
  286. package/src/utilities/directives/prevent-enter.directive.ts +0 -12
  287. package/src/utilities/directives/stop-propagation.directive.ts +0 -19
  288. package/src/utilities/directives/styler.ts +0 -44
  289. package/src/utilities/directives/trim-whitespace.directive.ts +0 -20
  290. package/src/utilities/module.ts +0 -53
  291. package/src/utilities/pipes/function.pipe.ts +0 -21
  292. package/src/utilities/pipes/phone.pipe.ts +0 -20
  293. package/src/utilities/pipes/space-case.pipes.spec.ts +0 -47
  294. package/src/utilities/pipes/space-case.pipes.ts +0 -26
  295. package/tsconfig.lib.json +0 -20
  296. package/tsconfig.lib.prod.json +0 -10
  297. package/tsconfig.spec.json +0 -17
@@ -1,38 +0,0 @@
1
- :host{
2
- --mat-paginator-container-size: var(tb-paginator-container-size, initial);
3
- }
4
- .select-column {
5
- min-width: var(--tb-min-select-column-width, 42px)
6
- }
7
- .index-column {
8
- min-width: var(--tb-min-index-column-width, 42px)
9
- }
10
- .mat-mdc-row:nth-child(odd) {
11
- background-color: var(--tb-odd-row-background-color, #cdeefe);
12
- }
13
- .page-amounts{
14
- color: rgba(0, 0, 0, 0.54);
15
- font-family: Roboto, "Helvetica Neue", sans-serif;
16
- font-size: 12px;
17
- margin-right: .2rem;
18
- }
19
-
20
- :host::ng-deep .table-drag-list.cdk-drop-list-dragging .drag-header:not(.cdk-drag-placeholder) {
21
- transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
22
- }
23
-
24
- :host::ng-deep{
25
- & .mdc-data-table__cell, .mdc-data-table__header-cell, .mdc-data-table__cell, .mdc-data-table__header-cell{
26
- padding: var(--tb-cell-padding, 0 0 0 .2rem);
27
- line-height: var(--tb-cell-line-height, normal);
28
- }
29
- }
30
-
31
- ::ng-deep .op-date-time-input{
32
- line-height: 3rem;
33
- font-size: .9rem;
34
- font-family: Roboto, "Helvetica Neue", sans-serif;
35
- padding-left: 0.2rem;
36
- width: 12rem;
37
-
38
- }
@@ -1,403 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, ViewContainerRef, Injector, computed, inject, input, viewChild, effect, untracked, signal, output, linkedSignal } from '@angular/core';
2
- import { MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableDataSource, MatTableModule } from '@angular/material/table';
3
- import { SelectionChange, SelectionModel } from '@angular/cdk/collections';
4
- import { TableStore } from '../../classes/table-store';
5
- import { switchMap } from 'rxjs/operators';
6
- import { ColumnBuilderComponent } from '../column-builder/column-builder.component';
7
- import { Dictionary } from '../../interfaces/dictionary';
8
- import { ColumnInfo } from '../../interfaces/ColumnInfo';
9
- import { CdkDragDrop, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';
10
- import { ConditionalClassesDirective, FunctionPipe, StylerDirective } from '../../../utilities';
11
- import { MatCheckboxModule } from '@angular/material/checkbox';
12
- import { MatButtonModule } from '@angular/material/button';
13
- import { MatIconModule } from '@angular/material/icon';
14
- import { formatNumber, NgTemplateOutlet } from '@angular/common';
15
- import { MatTooltipModule } from '@angular/material/tooltip';
16
- import { createTransformer } from '../../services/transform-creator';
17
- import { initIndexSymbol } from '../table-container/table-container.helpers/sort-state.helpers';
18
- import { parseTbSizeToPixels } from '../../classes/table-builder-general-settings';
19
- import { toObservable, toSignal } from '@angular/core/rxjs-interop';
20
- import { DataStore } from '../../classes/data-store';
21
- import { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';
22
- import { Group, isGroupHeader } from '../../classes/TableState';
23
- import { mapGroupHeader } from '../table-container/table-container.helpers/groupBy.helpers';
24
-
25
- @Component({
26
- selector: 'tb-generic-table',
27
- templateUrl: './generic-table.component.html',
28
- styleUrls: ['./generic-table.component.scss'],
29
- changeDetection: ChangeDetectionStrategy.OnPush,
30
- imports: [
31
- MatTableModule, DragDropModule, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,
32
- MatTooltipModule, FunctionPipe, StylerDirective, ConditionalClassesDirective
33
- ],
34
- })
35
- export class GenericTableComponent {
36
- protected state = inject(TableStore);
37
- private dataStore = inject(DataStore);
38
- private viewContainer = inject(ViewContainerRef);
39
- private config = inject(TableBuilderConfigToken);
40
- private _injector = inject(Injector);
41
-
42
- smallFooter = 10
43
-
44
- $headerRow = viewChild(MatHeaderRowDef);
45
- $footerRow = viewChild(MatFooterRowDef);
46
- $table = viewChild(MatTable);
47
- $dropList = viewChild(CdkDropList);
48
-
49
- selection$ = output<SelectionChange<any>>({ alias: 'selection' });
50
-
51
- $displayDataLength = input.required<number>({ alias: 'displayDataLength' });
52
- $data = input.required<any[]>({ alias: 'data' });
53
- $rows = input<MatRowDef<any>[]>([], { alias: 'rows' });
54
- $columnInfos = input.required<ColumnInfo[]>({ alias: 'columnInfos' });
55
- $dataSource = input.required<MatTableDataSource<any>>({ alias: 'dataSource' });
56
-
57
-
58
- $keys = computed(() => {
59
- const displayed = this.state.$orderedVisibleColumns();
60
- const built = this.$columns();
61
- const keys = displayed.filter(d => !!built[d]);
62
- if(this.$hasSelectColumn()){
63
- keys.unshift('select');
64
- }
65
- if(this.$hasIndexColumn()) {
66
- keys.unshift('index');
67
- }
68
- return keys;
69
- });
70
- keys$ = toObservable(this.$keys);
71
-
72
- $trackBy = input<string | undefined>(undefined, { alias: 'trackBy' });
73
- $trackByFunction = computed(() => {
74
- const trackBy = this.$trackBy();
75
- if(!trackBy) return (index:number, item: any) => item[initIndexSymbol];
76
- return ((index:number, item: any) => item[trackBy]);
77
- });
78
-
79
- $hasFooterMeta = computed(() => this.state.$metaDataArray().some(md => !!md.additional?.footer))
80
- $hasCustomFooter = computed(() => this.$columnInfos()?.some(ci => !!ci.customCell?.columnDef?.footerCell));
81
- $footerRowStyle = computed(() => {
82
- const hasData = !!this.$displayDataLength();
83
- const metaFooter = this.$hasFooterMeta();
84
- const customFooter = this.$hasCustomFooter();
85
- const hasSelectionColumn = this.state.$props().selectionColumn;
86
- return customFooter || hasSelectionColumn || (hasData && metaFooter) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';
87
- });
88
- $showFooterRow = computed(() => this.$footerRowStyle() !== 'no-footer');
89
-
90
- injector = Injector.create({
91
- providers: [
92
- { provide: MatTable, useFactory: () => this.$table() },
93
- { provide: CdkDropList, useFactory: () => this.$dropList() },
94
- ],
95
- parent: this._injector
96
- });
97
-
98
- $hasIndexColumn = computed(() => this.state.selectSignal(state => state.props.indexColumn)());
99
- $columns = signal<Dictionary<ColumnBuilderComponent>>({});
100
- $showHeader = computed(() => !this.state.$tableSettings().hideColumnHeader)
101
- $offset = this.dataStore.selectSignal( s => s.virtualScrollOffset );
102
-
103
- drop(event: CdkDragDrop<string[]>) {
104
- this.state.setUserDefinedOrder({ newOrder: event.currentIndex, oldOrder: event.previousIndex })
105
- }
106
-
107
- #buildColumnsEffect = effect(() => {
108
- const columnInfos = this.$columnInfos() || [];
109
- const table = this.$table();
110
- if(!table) return;
111
-
112
- untracked(() => {
113
-
114
- Object.entries(this.$columns()).forEach(([key, value]) => {
115
- const columnInfo = columnInfos.find(ci => ci.metaData.key === key);
116
- if(!columnInfo || columnInfo.customCell !== value.$customCell()) {
117
- delete this.$columns()[key];
118
- table?.removeColumnDef(value.$columnDef()!);
119
- }
120
- });
121
-
122
- columnInfos.forEach(ci => this.buildColumn(ci))
123
- })
124
- });
125
-
126
- #buildRowsEffect = effect(() => {
127
- const table = this.$table();
128
- const rows = this.$rows();
129
- const keys = this.$keys();
130
- if(!table) return;
131
-
132
- untracked(() => {
133
- rows.forEach(row => {
134
- table.removeRowDef(row);
135
- row.columns = keys;
136
- table.addRowDef(row);
137
- });
138
- })
139
- });
140
-
141
- #buildHeaderRowEffect = effect(() => {
142
- const headerRow = this.$headerRow();
143
- const showHeader = this.$showHeader();
144
- const table = this.$table();
145
- untracked(() => {
146
- if(headerRow && showHeader && table) table.addHeaderRowDef(headerRow);
147
- else if(headerRow && table) table.removeHeaderRowDef(headerRow);
148
- })
149
- });
150
-
151
- #buildFooterEffect = effect(() => {
152
- const footerRow = this.$footerRow();
153
- const showFooter = this.$showFooterRow();
154
- const table = this.$table();
155
-
156
- untracked(() => {
157
- if(footerRow && showFooter && table) table.addFooterRowDef(footerRow);
158
- else if(footerRow && table) table.removeFooterRowDef(footerRow);
159
- })
160
- });
161
-
162
- $usePaginator = computed(() => this.state.$tableSettings().usePaginator);
163
- $useVirtualScroll = computed(() => this.state.$viewType().includes('virtual'));
164
- $virtualStart = this.dataStore.selectSignal(d => d.virtualEnds.start);
165
- $offsetIndex = computed(() => {
166
- const virtualStart = this.$virtualStart();
167
- const pageSize = this.state.$pageSize();
168
- const currentPage = this.state.$currentPage();
169
- if(this.$useVirtualScroll()){
170
- return virtualStart;
171
- }
172
- if(this.$usePaginator()){
173
- return pageSize * currentPage;
174
- }
175
- return 0;
176
- });
177
-
178
- rowClicked(t: any, event?: MouseEvent){
179
- const tbs = this.state.$tableSettings();
180
- if(tbs.rowClick) tbs.rowClick(t, event);
181
- }
182
-
183
- isGroupHeader(_: number, row: { isGroupHeader: boolean }) {
184
- return row.isGroupHeader;
185
- }
186
-
187
- setExpanded(key: string, groupKey: string, isExpanded: boolean): void {
188
- this.state.updateExpandedGroups({ key, isExpanded, groupKey });
189
- }
190
-
191
- buildColumn(column: ColumnInfo) {
192
- const alreadyBuiltColumn = this.$columns()[column.metaData.key];
193
- if(alreadyBuiltColumn) {
194
- alreadyBuiltColumn.setMetaData(column.metaData);
195
- } else {
196
- const component = this.viewContainer.createComponent(ColumnBuilderComponent, {
197
- index: 0,
198
- injector: this.injector
199
- });
200
- component.instance.$customCell.set(column.customCell);
201
- component.instance.setMetaData(column.metaData);
202
- component.instance.$data = this.$data;
203
- component.instance.whenViewInited(() => {
204
- this.$columns.update(columnsDict => ({
205
- ...columnsDict,
206
- [column.metaData.key]: component.instance
207
- }));
208
- });
209
- }
210
- }
211
-
212
- $hasSelectColumn = computed(() => this.state.selectSignal(state => state.props.selectionColumn)());
213
- $selection = computed(() => {
214
- const trackBy = this.$trackBy();
215
- if(trackBy){
216
- return new SelectionModel<any>(true, [], true, (a, b) => a[trackBy] === b[trackBy]);
217
- }
218
- return new SelectionModel<any>(true, []);
219
- });
220
- selectionChange$ = toObservable(this.$selection).pipe(switchMap(s => s.changed));
221
- $selectionChange = toSignal(this.selectionChange$);
222
- onSelectionChangeEffect = effect(() => {
223
- const selectionChange = this.$selectionChange();
224
- if(!selectionChange) return ;
225
- untracked(() => this.selection$.emit(selectionChange))
226
- });
227
- $isAllSelected = computed(() => {
228
- this.$selectionChange();
229
- const selected = this.$selection()?.selected;
230
- if(!selected?.length) return false;
231
- return this.$selectableData()?.length === selected.length;
232
- });
233
- $masterToggleChecked = this.$isAllSelected;
234
- $masterToggleIndeterminate = computed(() => {
235
- this.$selectionChange();
236
- return !!this.$selection()?.selected.length && !this.$masterToggleChecked()});
237
-
238
- $paginated = computed(() => this.state.$viewType() === 'virtual paginator' || this.state.$viewType() === 'paginator');
239
- $selectableData = computed(() => {
240
- const isGrouped = !!this.state.$groupByKeys().length;
241
- this.state.$expandGroups();
242
- if(this.$paginated()){
243
- const previousPageRecords = this.state.$currentPage() * this.state.$pageSize();
244
- if(isGrouped){
245
- const onScreen = this.$dataSource().data.slice(previousPageRecords, previousPageRecords + this.state.$pageSize());
246
- const nested = onScreen.flatMap(
247
- (group: Group) => (group.isGroupHeader && !this.state.$getIsExpanded(group.key, group.groupName)()) ? mapGroupHeader(group, true) : []
248
- );
249
- return onScreen.concat(nested).filter(row => !row.isGroupHeader);
250
- }
251
- return this.$data().slice(previousPageRecords, previousPageRecords + this.state.$pageSize());
252
- }
253
- else if(this.state.$viewType() === 'all' || this.state.$viewType() === 'virtual all'){
254
- return this.$data();
255
- }
256
- return [];
257
- });
258
-
259
- $selectAllMessage = computed(() => {
260
- if(this.$isAllSelected()) return `Deselect all ${this.$selection().selected.length} selected`;
261
- const selectable = formatNumber(this.$selectableData().length, 'en-US');
262
- let message = `Select all ${selectable}`;
263
- if(this.$paginated()){
264
- message += ' on this page';
265
- }
266
- return message;
267
- })
268
-
269
- #onSelectableDataChangeEffect = effect(() => {
270
- const selectableData = this.$selectableData();
271
- untracked(() => {
272
- const selected = this.$selection()?.selected;
273
- if(!selected.length) return;
274
- const trackBy = this.$trackBy();
275
- const trackByFunc = trackBy ? (s) => selectableData.every(d => d[trackBy!] !== s[trackBy!]) : s => !selectableData.includes(s);
276
- const removed = selected.filter(trackByFunc);
277
- this.$selection().deselect(...removed)
278
- })
279
- });
280
-
281
- /** Selects all rows if they are not all selected; otherwise clear selection. */
282
- masterToggle() {
283
- if(this.$isAllSelected()){
284
- this.$selection().clear()
285
- } else {
286
- this.$selection().select(...this.$selectableData());
287
- }
288
- }
289
-
290
- $tableWidth = linkedSignal<number | undefined, { width: string }>({
291
- source: this.state.$getUserDefinedTableWidth,
292
- computation: (currentUserDefinedWidth, { source: previousUserDefinedWidth } = { value: null as any, source: 0 as any }) => {
293
- if( currentUserDefinedWidth){
294
- return ({ width: `${currentUserDefinedWidth}px`, minWidth: 'initial' });
295
- } if( wasReset() ){
296
- return ({ width: 'initial' });
297
- }
298
- return ({} as { width: string });
299
-
300
- function wasReset(){
301
- return (previousUserDefinedWidth ?? 0) >= 0 && currentUserDefinedWidth == null;
302
- }
303
- }
304
- });
305
-
306
- getTransform = (key: string, val: string) => computed(() => {
307
- if(val == undefined || val === 'null') return '';
308
- try {
309
- return createTransformer(this.state.$getMetaData(key)(), this.config, true, true)({ [`${key}`]: val }) || val;
310
- } catch (error) {
311
- return signal(val);
312
- }
313
- })
314
-
315
- $rowHeight = computed(() => {
316
- if(this.state.$userDefinedRowHeight()){
317
- return this.state.$userDefinedRowHeight() + 'px';
318
- }
319
- const notPersistedTableSettings = this.state.$notPersistedTableSettings();
320
- if(this.state.$isVirtual() && notPersistedTableSettings.virtualSettings?.enforceRowHeight){
321
- const height = notPersistedTableSettings.virtualSettings!.rowHeight;
322
- return parseTbSizeToPixels(height) + 'px';
323
- }
324
- if(notPersistedTableSettings.rowHeight){
325
- return parseTbSizeToPixels(notPersistedTableSettings.rowHeight) + 'px';
326
- }
327
- return undefined;
328
- });
329
-
330
- $headerHeight = computed(() => {
331
- if(this.state.$userDefinedHeaderHeight()){
332
- return this.state.$userDefinedHeaderHeight() + 'px';
333
- }
334
- const notPersistedTableSettings = this.state.$notPersistedTableSettings();
335
- if(this.state.$isVirtual() && notPersistedTableSettings.virtualSettings?.enforceHeaderHeight){
336
- const height = notPersistedTableSettings.virtualSettings!.headerHeight;
337
- return parseTbSizeToPixels(height) + 'px';
338
- }
339
- if(notPersistedTableSettings.headerHeight){
340
- return parseTbSizeToPixels(notPersistedTableSettings.headerHeight) + 'px';
341
- }
342
- return undefined;
343
- });
344
-
345
- $groupHeaderHeight = computed(() => {
346
- const groupHeaderHeight = this.state.$notPersistedTableSettings().groupHeaderHeight;
347
- if(groupHeaderHeight){
348
- return parseTbSizeToPixels(groupHeaderHeight) + 'px';
349
- }
350
- return this.$rowHeight();
351
- });
352
-
353
- $footerHeight = computed(() => {
354
- const footerStyle = this.$footerRowStyle();
355
- switch (footerStyle) {
356
- case 'regular-footer':
357
- return this.$rowHeight();
358
- case 'small-footer':
359
- return `${this.smallFooter}px`;
360
- default:
361
- return '0px';
362
- }
363
- });
364
-
365
- $stickyFooter = computed(() => this.state.$props().stickyFooter || this.state.$isVirtual());
366
-
367
- $rowStyles = computed(() => this.state.$tableSettings().rowStyles || {});
368
- $rowClasses = computed(() => this.state.$tableSettings().rowClasses || {});
369
-
370
- allOfGroupSelected = (uniqueName: string) => computed(() => {
371
- //make sure signal is marked dirty when selection or over all data changes
372
- this.$selectionChange();
373
- this.$data();
374
- const header = this.$dataSource().data.find(d => isGroupHeader(d) && d.uniqueName === uniqueName);
375
- const children = mapGroupHeader(header, true).filter(i => !isGroupHeader(i));
376
- if(!children.length) return { containsAll: false, containsSome: false, length: 0 };
377
- let containsAll = true;
378
- let containsSome = false;
379
- for(var a of children){
380
- const contains = this.$selection().isSelected(a);
381
- if(contains) containsSome = true;
382
- else containsAll = false;
383
- if(!containsAll && containsSome) break;
384
- }
385
- return { containsAll, containsSome, length: children.length };
386
- });
387
-
388
- toggleGroup = (uniqueName: string, allSelected: boolean) => {
389
- const header = this.$dataSource().data.find(d => isGroupHeader(d) && d.uniqueName === uniqueName);
390
- const children = mapGroupHeader(header, true).filter(i => !isGroupHeader(i));
391
- if(allSelected){
392
- this.$selection().deselect(...children)
393
- } else {
394
- this.$selection().select(...children);
395
- }
396
- }
397
-
398
- toggleGroupMessage = (amountOfItems: number, allSelected: boolean) => {
399
- if(allSelected) return `Deselect all in this group`;
400
- const selectable = formatNumber(amountOfItems, 'en-US');
401
- return `Select all ${selectable} in this group`;
402
- }
403
- }
@@ -1,112 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, computed, inject, viewChild, effect, untracked } from '@angular/core';
2
- import { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';
3
- import { switchMap } from 'rxjs/operators';
4
- import { TableStore } from '../../classes/table-store';
5
- import { MatButtonModule } from '@angular/material/button';
6
- import { DataStore } from '../../classes/data-store';
7
- import { toObservable, toSignal } from '@angular/core/rxjs-interop';
8
- import { notNull } from '../../../rxjs';
9
- import { InitializationState } from '../../classes/TableState';
10
-
11
- @Component({
12
- selector: 'tb-paginator',
13
- imports: [MatPaginatorModule, MatButtonModule],
14
- template: `
15
- <div class="paginator-row">
16
- @if($currentPageData(); as pageData)
17
- {
18
- <div [class]="{ 'hide' : ! $collapseFooter(), 'page-amounts':true}">
19
- @if(!$showAll()){ {{pageData.currentStart}} - {{pageData.currentEnd}} of }{{pageData.total}}
20
- </div>
21
- }
22
- <mat-paginator [pageSizeOptions]="[5, 10, 20, 50, 100, 500]" showFirstLastButtons
23
- [class]="{ 'hide' : $collapseFooter() }">
24
- </mat-paginator>
25
- @if ($showAllOption() && !$collapseFooter())
26
- {
27
- <button mat-button (click)="showAll()">
28
- <span [style.text-decoration]="$showAll() ? 'line-through' : ''" >All</span>
29
- </button>
30
- }
31
- </div>
32
- `,
33
- styleUrls: ['./generic-table.component.scss', '../../styles/collapser.styles.scss'],
34
- changeDetection: ChangeDetectionStrategy.OnPush,
35
- })
36
- export class PaginatorComponent {
37
- private state = inject(TableStore);
38
- private data = inject(DataStore);
39
- $paginator = viewChild(MatPaginator);
40
-
41
- $dataLength = this.data.selectSignal(d => d.sortedFilteredDataLength);
42
- $viewableDataLength = this.data.selectSignal(d => d.sortedFilteredGroupedDataLength);
43
- pageEvent$ = toObservable(this.$paginator).pipe(notNull(), switchMap(p => p.page));
44
- $pageEvent = toSignal(this.pageEvent$);
45
- $pageIndexChangeEvent = computed(() => this.$pageEvent()?.pageIndex);
46
- $pageSizeChangeEvent = computed(() => this.$pageEvent()?.pageSize);
47
- $currentPageData = computed(() => {
48
- const pageEvent = this.$pageEvent();
49
- if(!pageEvent) return;
50
- const paginator = this.$paginator()!;
51
- // Reset because initial page event does not have page length
52
- pageEvent.pageIndex = paginator.pageIndex;
53
- pageEvent.pageSize = paginator.pageSize;
54
- pageEvent.length = paginator.length;
55
- const pageDetails = mapPaginationEventToCurrentPageDetails(pageEvent);
56
- const dataLength = this.$dataLength();
57
- return ({ ...pageDetails, total: dataLength })
58
- })
59
-
60
- #onPageIndexEffect = effect(() => {
61
- const index = this.$pageIndexChangeEvent();
62
- if(index === undefined) return;
63
- untracked(() => this.state.setCurrentPage(index))
64
- });
65
- #onPageSizeEffect = effect(() => {
66
- const size = this.$pageSizeChangeEvent();
67
- const initialized = this.state.$initializationState() >= InitializationState.Ready;
68
- if(!size || !initialized) return;
69
- untracked(() => this.state.setUserDefinedPageSize(size));
70
- });
71
- #onMetaPageSizeEffect = effect(() => {
72
- const paginator = this.$paginator();
73
- if(!paginator) return;
74
- const metaPageSize = this.state.$pageSize();
75
- const initialized = this.state.$initializationState() >= InitializationState.Ready;
76
- untracked(() => initialized && paginator._changePageSize(metaPageSize));
77
- });
78
- onDataLengthEffect = effect(() => {
79
- const paginator = this.$paginator();
80
- const dataLength = this.$viewableDataLength();
81
- untracked(() => {
82
- if(paginator){
83
- paginator.length = dataLength;
84
- const maxIndex = Math.max(0, Math.ceil(dataLength / paginator.pageSize) - 1);
85
- if(paginator.pageIndex > maxIndex){
86
- paginator.pageIndex = maxIndex;
87
- this.state.setCurrentPage(maxIndex);
88
- }
89
- }
90
- })
91
- });
92
- $collapseFooter = computed(() => this.state.selectSignal(state => state.persistedTableSettings.collapseFooter)() || this.$showAll());
93
- $showAllOption = this.state.selectSignal(s => s.notPersistedTableSettings?.paginatorSettings?.includeAllInOptions);
94
- $showAll = this.state.$showAll;
95
- showAll(){
96
- this.state.setUserDefinedShowAll(!this.$showAll());
97
- }
98
- }
99
-
100
- const mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => {
101
- return ({
102
- currentStart: (pageData.pageIndex * pageData.pageSize) + 1,
103
- currentEnd: Math.min(pageData.length, ((pageData.pageIndex + 1) * pageData.pageSize)),
104
- total: pageData.length
105
- })};
106
-
107
-
108
- interface CurrentPageDetails {
109
- currentStart:number,
110
- currentEnd:number,
111
- total:number
112
- }
@@ -1,17 +0,0 @@
1
- .tb-group-label {
2
- font-weight: bolder;
3
- padding-right: 15px;
4
- }
5
- :host{
6
- display: flex;
7
- padding-left: 8px;
8
- align-items: center;
9
- }
10
- :host mat-chip-set mat-chip{
11
- margin: 0;
12
- }
13
- :host mat-chip-set .nested-arrow{
14
- display: flex;
15
- width: 15px;
16
- justify-content: center;
17
- }
@@ -1,14 +0,0 @@
1
- <span class="tb-group-label">Group By:</span>
2
- <mat-chip-set>
3
- @for (groupBy of $groups(); track groupBy.key)
4
- {
5
- @if($index > 0)
6
- {
7
- <mat-icon class="nested-arrow">arrow_right</mat-icon>
8
- }
9
- <mat-chip (removed)="tableStore.removeGroupByKey(groupBy.key)">
10
- {{groupBy.name | spaceCase}}
11
- <mat-icon matChipRemove>cancel</mat-icon>
12
- </mat-chip>
13
- }
14
- </mat-chip-set>
@@ -1,23 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { GroupByListComponent } from './group-by-list.component';
4
-
5
- describe('GroupByListComponent', () => {
6
- let component: GroupByListComponent;
7
- let fixture: ComponentFixture<GroupByListComponent>;
8
-
9
- beforeEach(async () => {
10
- await TestBed.configureTestingModule({
11
- declarations: [GroupByListComponent]
12
- })
13
- .compileComponents();
14
-
15
- fixture = TestBed.createComponent(GroupByListComponent);
16
- component = fixture.componentInstance;
17
- fixture.detectChanges();
18
- });
19
-
20
- it('should create', () => {
21
- expect(component).toBeTruthy();
22
- });
23
- });
@@ -1,25 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
2
- import { TableStore } from '../../classes/table-store';
3
- import { MatChipsModule } from '@angular/material/chips';
4
- import { MatIconModule } from '@angular/material/icon';
5
- import { SpaceCasePipe } from '../../../utilities';
6
-
7
- @Component({
8
- selector: 'group-by-list',
9
- templateUrl: './group-by-list.component.html',
10
- styleUrls: ['./group-by-list.component.css'],
11
- changeDetection: ChangeDetectionStrategy.OnPush,
12
- imports: [
13
- MatChipsModule, MatIconModule, SpaceCasePipe
14
- ]
15
- })
16
- export class GroupByListComponent {
17
- tableStore = inject(TableStore);
18
- $groups = computed(() => {
19
- const dict = this.tableStore.$metaData();
20
- return this.tableStore.$groupByKeys().map(gbk => ({
21
- key: gbk,
22
- name: dict[gbk].displayName || gbk
23
- }))
24
- })
25
- }
@@ -1,3 +0,0 @@
1
- .inline{
2
- display: inline-block;
3
- }
@@ -1,23 +0,0 @@
1
- <div class=inline>
2
- @for (val of value; track $index)
3
- {
4
- <div>
5
- @if($type() === FieldType.Number || $type() === FieldType.Currency)
6
- {
7
- <input type="number" [ngModel]="val"
8
- [readonly]="$index + 1 < value.length" [ngModelOptions]="{standalone:true}" [autoFocus]="$index === value.length - 1" (ngModelChange)="onValueChange($index, $event)"/>
9
- }
10
- @else
11
- {
12
- <input #input type="string"
13
- [ngModel]="val" [readonly]="$index + 1 < value.length" [ngModelOptions]="{standalone:true}"
14
- [autoFocus]="$index === value.length - 1" (ngModelChange)="onValueChange($index ,$event)" />
15
- }
16
- </div>
17
- <button [disabled]="value.length <= 1" (click)="removeInput($index)">-</button>
18
- @if ($index === value.length - 1)
19
- {
20
- <button [disabled]="val == undefined || val === ''" (click)="addInput()">+</button>
21
- }
22
- }
23
- </div>