@one-paragon/angular-utilities 1.2.11 → 1.2.12

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/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +16 -30
  4. package/src/action-state/action-state-spinner/action-state-spinner.component.css +16 -0
  5. package/src/action-state/action-state-spinner/action-state-spinner.component.html +6 -0
  6. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +25 -0
  7. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +26 -0
  8. package/src/action-state/action-state-ui/action-state-ui.module.ts +13 -0
  9. package/{action-state/index.d.ts → src/action-state/index.ts} +8 -4
  10. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +15 -0
  11. package/src/action-state/ngrx.ts +69 -0
  12. package/src/http-request-state/HttpRequestStateFactory.ts +66 -0
  13. package/src/http-request-state/HttpRequestStateStore.ts +173 -0
  14. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +29 -0
  15. package/src/http-request-state/directives/http-error-state-directive.ts +21 -0
  16. package/src/http-request-state/directives/http-inProgress-state-directive.ts +19 -0
  17. package/src/http-request-state/directives/http-notStarted-state-directive.ts +19 -0
  18. package/src/http-request-state/directives/http-success-state-directive.ts +29 -0
  19. package/{http-request-state/directives/index.d.ts → src/http-request-state/directives/index.ts} +5 -5
  20. package/src/http-request-state/directives/request-state-directive.spec.ts +72 -0
  21. package/src/http-request-state/directives/request-state-directive.ts +78 -0
  22. package/src/http-request-state/helpers.ts +30 -0
  23. package/src/http-request-state/http-request-state.ts +69 -0
  24. package/src/http-request-state/http-state-module.ts +23 -0
  25. package/{http-request-state/index.d.ts → src/http-request-state/index.ts} +6 -6
  26. package/src/http-request-state/observable.spec.ts +43 -0
  27. package/src/http-request-state/rxjs/getRequestorBody.ts +10 -0
  28. package/src/http-request-state/rxjs/getRequestorState.ts +8 -0
  29. package/{http-request-state/rxjs/index.d.ts → src/http-request-state/rxjs/index.ts} +4 -4
  30. package/src/http-request-state/rxjs/tapError.ts +16 -0
  31. package/src/http-request-state/rxjs/tapSuccess.ts +16 -0
  32. package/src/http-request-state/strategies.spec.ts +42 -0
  33. package/src/http-request-state/types.ts +55 -0
  34. package/src/ngrx/actionable-selector.ts +95 -0
  35. package/src/ngrx/index.ts +1 -0
  36. package/{public-api.d.ts → src/public-api.ts} +35 -16
  37. package/src/rxjs/defaultShareReplay.ts +8 -0
  38. package/{rxjs/index.d.ts → src/rxjs/index.ts} +5 -5
  39. package/src/rxjs/mapError.ts +8 -0
  40. package/src/rxjs/rxjs-operators.ts +132 -0
  41. package/src/rxjs/subjectifier.ts +17 -0
  42. package/src/rxjs/subscriber.directive.ts +57 -0
  43. package/src/specs/clickSubject.spec.ts +95 -0
  44. package/src/specs/dialog.spec.ts +101 -0
  45. package/src/specs/toggleGroupDirective.spec.ts +229 -0
  46. package/src/table-builder/classes/DefaultSettings.ts +11 -0
  47. package/src/table-builder/classes/MatTableObservableDataSource.ts +23 -0
  48. package/src/table-builder/classes/TableBuilderConfig.ts +35 -0
  49. package/src/table-builder/classes/TableBuilderDataSource.ts +80 -0
  50. package/src/table-builder/classes/TableState.ts +96 -0
  51. package/src/table-builder/classes/data-store.ts +10 -0
  52. package/{table-builder/classes/display-col.d.ts → src/table-builder/classes/display-col.ts} +5 -5
  53. package/src/table-builder/classes/filter-info.ts +108 -0
  54. package/src/table-builder/classes/table-builder-general-settings.ts +129 -0
  55. package/src/table-builder/classes/table-builder.ts +94 -0
  56. package/src/table-builder/classes/table-store.ts +471 -0
  57. package/src/table-builder/components/array-column.component.ts +36 -0
  58. package/src/table-builder/components/column-builder/column-builder.component.html +61 -0
  59. package/src/table-builder/components/column-builder/column-builder.component.scss +43 -0
  60. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +49 -0
  61. package/src/table-builder/components/column-builder/column-builder.component.ts +135 -0
  62. package/src/table-builder/components/column-builder/column-helpers.ts +53 -0
  63. package/src/table-builder/components/date-filter/date-filter.component.html +23 -0
  64. package/src/table-builder/components/date-filter/date-filter.component.ts +24 -0
  65. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +9 -0
  66. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +22 -0
  67. package/src/table-builder/components/filter/filter.component.html +91 -0
  68. package/src/table-builder/components/filter/filter.component.scss +64 -0
  69. package/src/table-builder/components/filter/filter.component.spec.ts +87 -0
  70. package/src/table-builder/components/filter/filter.component.ts +60 -0
  71. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +93 -0
  72. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +55 -0
  73. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +57 -0
  74. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +59 -0
  75. package/src/table-builder/components/generic-table/generic-table.component.html +78 -0
  76. package/src/table-builder/components/generic-table/generic-table.component.scss +42 -0
  77. package/src/table-builder/components/generic-table/generic-table.component.ts +299 -0
  78. package/src/table-builder/components/generic-table/paginator.component.ts +99 -0
  79. package/src/table-builder/components/group-by-list/group-by-list.component.css +8 -0
  80. package/src/table-builder/components/group-by-list/group-by-list.component.html +12 -0
  81. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +23 -0
  82. package/src/table-builder/components/group-by-list/group-by-list.component.ts +21 -0
  83. package/src/table-builder/components/header-menu/header-menu.component.html +104 -0
  84. package/src/table-builder/components/header-menu/header-menu.component.scss +96 -0
  85. package/src/table-builder/components/header-menu/header-menu.component.ts +99 -0
  86. package/src/table-builder/components/in-filter/in-filter.component.css +3 -0
  87. package/src/table-builder/components/in-filter/in-filter.component.html +20 -0
  88. package/src/table-builder/components/in-filter/in-filter.component.ts +66 -0
  89. package/{table-builder/components/index.d.ts → src/table-builder/components/index.ts} +9 -9
  90. package/src/table-builder/components/initialization-component/initialization-component.html +29 -0
  91. package/src/table-builder/components/initialization-component/initialization-component.ts +24 -0
  92. package/src/table-builder/components/link-column.component.ts +47 -0
  93. package/src/table-builder/components/number-filter/number-filter.component.css +10 -0
  94. package/src/table-builder/components/number-filter/number-filter.component.html +19 -0
  95. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +30 -0
  96. package/src/table-builder/components/number-filter/number-filter.component.ts +25 -0
  97. package/src/table-builder/components/profiles-menu/profiles-menu.component.html +74 -0
  98. package/src/table-builder/components/profiles-menu/profiles-menu.component.scss +98 -0
  99. package/src/table-builder/components/profiles-menu/profiles-menu.component.spec.ts +23 -0
  100. package/src/table-builder/components/profiles-menu/profiles-menu.component.ts +65 -0
  101. package/src/table-builder/components/scroll-strategy.ts +76 -0
  102. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +66 -0
  103. package/src/table-builder/components/sort-menu/sort-menu.component.html +111 -0
  104. package/src/table-builder/components/sort-menu/sort-menu.component.scss +119 -0
  105. package/src/table-builder/components/sort-menu/sort-menu.component.ts +98 -0
  106. package/{table-builder/components/table-container/table-container-imports.d.ts → src/table-builder/components/table-container/table-container-imports.ts} +32 -14
  107. package/src/table-builder/components/table-container/table-container.css +54 -0
  108. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +141 -0
  109. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +106 -0
  110. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +86 -0
  111. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +45 -0
  112. package/src/table-builder/components/table-container/table-container.html +95 -0
  113. package/src/table-builder/components/table-container/table-container.spec.ts +154 -0
  114. package/src/table-builder/components/table-container/table-container.ts +356 -0
  115. package/src/table-builder/components/table-container/tableProps.ts +20 -0
  116. package/src/table-builder/components/table-container/virtual-scroll-container.ts +145 -0
  117. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +31 -0
  118. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +46 -0
  119. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +42 -0
  120. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +10 -0
  121. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +86 -0
  122. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +34 -0
  123. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +23 -0
  124. package/src/table-builder/directives/custom-cell-directive.ts +58 -0
  125. package/{table-builder/directives/index.d.ts → src/table-builder/directives/index.ts} +6 -5
  126. package/src/table-builder/directives/multi-sort.directive.spec.ts +124 -0
  127. package/src/table-builder/directives/multi-sort.directive.ts +51 -0
  128. package/src/table-builder/directives/resize-column.directive.ts +108 -0
  129. package/src/table-builder/directives/table-wrapper.directive.ts +14 -0
  130. package/src/table-builder/directives/tb-filter.directive.ts +396 -0
  131. package/src/table-builder/enums/filterTypes.ts +40 -0
  132. package/src/table-builder/functions/boolean-filter-function.ts +12 -0
  133. package/src/table-builder/functions/date-filter-function.ts +68 -0
  134. package/src/table-builder/functions/download-data.ts +11 -0
  135. package/src/table-builder/functions/null-filter-function.ts +9 -0
  136. package/src/table-builder/functions/number-filter-function.ts +41 -0
  137. package/src/table-builder/functions/sort-data-function.ts +23 -0
  138. package/src/table-builder/functions/string-filter-function.ts +51 -0
  139. package/{table-builder/interfaces/ColumnInfo.d.ts → src/table-builder/interfaces/ColumnInfo.ts} +7 -6
  140. package/src/table-builder/interfaces/column-template.ts +9 -0
  141. package/{table-builder/interfaces/dictionary.d.ts → src/table-builder/interfaces/dictionary.ts} +3 -3
  142. package/src/table-builder/interfaces/report-def.ts +155 -0
  143. package/src/table-builder/ngrx/tableBuilderStateStore.ts +199 -0
  144. package/src/table-builder/pipes/column-total.pipe.ts +17 -0
  145. package/src/table-builder/pipes/format-filter-type.pipe.ts +12 -0
  146. package/src/table-builder/pipes/format-filter-value.pipe.ts +42 -0
  147. package/src/table-builder/pipes/key-display.ts +16 -0
  148. package/src/table-builder/services/export-to-csv.service.ts +97 -0
  149. package/src/table-builder/services/link-creator.service.ts +67 -0
  150. package/src/table-builder/services/table-template-service.ts +59 -0
  151. package/src/table-builder/services/transform-creator.ts +95 -0
  152. package/src/table-builder/specs/table-custom-filters.spec.ts +262 -0
  153. package/src/table-builder/styles/collapser.styles.scss +16 -0
  154. package/src/table-builder/table-builder.module.ts +73 -0
  155. package/src/test.ts +17 -0
  156. package/src/utilities/array-helpers.ts +13 -0
  157. package/src/utilities/directives/auto-focus.directive.ts +21 -0
  158. package/src/utilities/directives/clickEmitterDirective.ts +16 -0
  159. package/src/utilities/directives/clickSubject.ts +20 -0
  160. package/src/utilities/directives/conditional-classes.directive.ts +36 -0
  161. package/src/utilities/directives/dialog-service.ts +19 -0
  162. package/src/utilities/directives/dialog.ts +144 -0
  163. package/src/utilities/directives/mat-toggle-group-directive.ts +61 -0
  164. package/src/utilities/directives/prevent-enter.directive.ts +13 -0
  165. package/src/utilities/directives/stop-propagation.directive.ts +20 -0
  166. package/src/utilities/directives/styler.ts +40 -0
  167. package/src/utilities/directives/trim-whitespace.directive.ts +21 -0
  168. package/{utilities/index.d.ts → src/utilities/index.ts} +22 -15
  169. package/src/utilities/module.ts +55 -0
  170. package/src/utilities/pipes/function.pipe.ts +16 -0
  171. package/src/utilities/pipes/phone.pipe.ts +15 -0
  172. package/src/utilities/pipes/space-case.pipes.spec.ts +47 -0
  173. package/src/utilities/pipes/space-case.pipes.ts +23 -0
  174. package/tsconfig.lib.json +19 -0
  175. package/tsconfig.lib.prod.json +10 -0
  176. package/tsconfig.spec.json +17 -0
  177. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +0 -12
  178. package/action-state/action-state-ui/action-state-ui.module.d.ts +0 -7
  179. package/action-state/ngrx-ext/ngrx-ext.module.d.ts +0 -8
  180. package/action-state/ngrx.d.ts +0 -31
  181. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +0 -24
  182. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +0 -20
  183. package/esm2022/action-state/index.mjs +0 -8
  184. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +0 -23
  185. package/esm2022/action-state/ngrx.mjs +0 -47
  186. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +0 -51
  187. package/esm2022/http-request-state/HttpRequestStateStore.mjs +0 -121
  188. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +0 -30
  189. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +0 -23
  190. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +0 -23
  191. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +0 -23
  192. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +0 -29
  193. package/esm2022/http-request-state/directives/index.mjs +0 -6
  194. package/esm2022/http-request-state/directives/request-state-directive.mjs +0 -61
  195. package/esm2022/http-request-state/helpers.mjs +0 -22
  196. package/esm2022/http-request-state/http-request-state.mjs +0 -39
  197. package/esm2022/http-request-state/http-state-module.mjs +0 -40
  198. package/esm2022/http-request-state/index.mjs +0 -7
  199. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +0 -4
  200. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +0 -3
  201. package/esm2022/http-request-state/rxjs/index.mjs +0 -5
  202. package/esm2022/http-request-state/rxjs/tapError.mjs +0 -12
  203. package/esm2022/http-request-state/rxjs/tapSuccess.mjs +0 -12
  204. package/esm2022/http-request-state/types.mjs +0 -16
  205. package/esm2022/ngrx/actionable-selector.mjs +0 -71
  206. package/esm2022/ngrx/index.mjs +0 -2
  207. package/esm2022/one-paragon-angular-utilities.mjs +0 -5
  208. package/esm2022/public-api.mjs +0 -20
  209. package/esm2022/rxjs/defaultShareReplay.mjs +0 -7
  210. package/esm2022/rxjs/index.mjs +0 -6
  211. package/esm2022/rxjs/mapError.mjs +0 -8
  212. package/esm2022/rxjs/rxjs-operators.mjs +0 -92
  213. package/esm2022/rxjs/subjectifier.mjs +0 -15
  214. package/esm2022/rxjs/subscriber.directive.mjs +0 -50
  215. package/esm2022/table-builder/classes/DefaultSettings.mjs +0 -6
  216. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +0 -23
  217. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +0 -18
  218. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +0 -54
  219. package/esm2022/table-builder/classes/TableState.mjs +0 -49
  220. package/esm2022/table-builder/classes/data-store.mjs +0 -15
  221. package/esm2022/table-builder/classes/display-col.mjs +0 -2
  222. package/esm2022/table-builder/classes/filter-info.mjs +0 -61
  223. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +0 -112
  224. package/esm2022/table-builder/classes/table-builder.mjs +0 -77
  225. package/esm2022/table-builder/classes/table-store.mjs +0 -387
  226. package/esm2022/table-builder/components/array-column.component.mjs +0 -53
  227. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +0 -134
  228. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +0 -47
  229. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +0 -29
  230. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +0 -24
  231. package/esm2022/table-builder/components/filter/filter.component.mjs +0 -64
  232. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +0 -102
  233. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +0 -53
  234. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +0 -300
  235. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +0 -98
  236. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +0 -21
  237. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +0 -103
  238. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +0 -65
  239. package/esm2022/table-builder/components/index.mjs +0 -10
  240. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +0 -47
  241. package/esm2022/table-builder/components/link-column.component.mjs +0 -74
  242. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +0 -29
  243. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +0 -64
  244. package/esm2022/table-builder/components/scroll-strategy.mjs +0 -60
  245. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +0 -46
  246. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +0 -82
  247. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +0 -26
  248. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +0 -135
  249. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +0 -83
  250. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +0 -71
  251. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +0 -36
  252. package/esm2022/table-builder/components/table-container/table-container.mjs +0 -323
  253. package/esm2022/table-builder/components/table-container/tableProps.mjs +0 -8
  254. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +0 -128
  255. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +0 -44
  256. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +0 -36
  257. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +0 -25
  258. package/esm2022/table-builder/directives/custom-cell-directive.mjs +0 -73
  259. package/esm2022/table-builder/directives/index.mjs +0 -6
  260. package/esm2022/table-builder/directives/multi-sort.directive.mjs +0 -50
  261. package/esm2022/table-builder/directives/resize-column.directive.mjs +0 -87
  262. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +0 -18
  263. package/esm2022/table-builder/directives/tb-filter.directive.mjs +0 -405
  264. package/esm2022/table-builder/enums/filterTypes.mjs +0 -29
  265. package/esm2022/table-builder/functions/boolean-filter-function.mjs +0 -10
  266. package/esm2022/table-builder/functions/date-filter-function.mjs +0 -58
  267. package/esm2022/table-builder/functions/download-data.mjs +0 -12
  268. package/esm2022/table-builder/functions/null-filter-function.mjs +0 -8
  269. package/esm2022/table-builder/functions/number-filter-function.mjs +0 -32
  270. package/esm2022/table-builder/functions/sort-data-function.mjs +0 -17
  271. package/esm2022/table-builder/functions/string-filter-function.mjs +0 -41
  272. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +0 -2
  273. package/esm2022/table-builder/interfaces/dictionary.mjs +0 -2
  274. package/esm2022/table-builder/interfaces/report-def.mjs +0 -50
  275. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +0 -154
  276. package/esm2022/table-builder/pipes/column-total.pipe.mjs +0 -22
  277. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +0 -18
  278. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +0 -43
  279. package/esm2022/table-builder/pipes/key-display.mjs +0 -18
  280. package/esm2022/table-builder/services/export-to-csv.service.mjs +0 -85
  281. package/esm2022/table-builder/services/link-creator.service.mjs +0 -50
  282. package/esm2022/table-builder/services/table-template-service.mjs +0 -60
  283. package/esm2022/table-builder/services/transform-creator.mjs +0 -100
  284. package/esm2022/table-builder/table-builder.module.mjs +0 -124
  285. package/esm2022/utilities/array-helpers.mjs +0 -14
  286. package/esm2022/utilities/directives/auto-focus.directive.mjs +0 -25
  287. package/esm2022/utilities/directives/clickEmitterDirective.mjs +0 -22
  288. package/esm2022/utilities/directives/clickSubject.mjs +0 -29
  289. package/esm2022/utilities/directives/conditional-classes.directive.mjs +0 -36
  290. package/esm2022/utilities/directives/dialog-service.mjs +0 -21
  291. package/esm2022/utilities/directives/dialog.mjs +0 -145
  292. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +0 -59
  293. package/esm2022/utilities/directives/prevent-enter.directive.mjs +0 -20
  294. package/esm2022/utilities/directives/stop-propagation.directive.mjs +0 -26
  295. package/esm2022/utilities/directives/styler.mjs +0 -41
  296. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +0 -28
  297. package/esm2022/utilities/index.mjs +0 -16
  298. package/esm2022/utilities/module.mjs +0 -90
  299. package/esm2022/utilities/pipes/function.pipe.mjs +0 -22
  300. package/esm2022/utilities/pipes/phone.pipe.mjs +0 -20
  301. package/esm2022/utilities/pipes/space-case.pipes.mjs +0 -28
  302. package/fesm2022/one-paragon-angular-utilities.mjs +0 -5673
  303. package/fesm2022/one-paragon-angular-utilities.mjs.map +0 -1
  304. package/http-request-state/HttpRequestStateFactory.d.ts +0 -17
  305. package/http-request-state/HttpRequestStateStore.d.ts +0 -54
  306. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +0 -14
  307. package/http-request-state/directives/http-error-state-directive.d.ts +0 -9
  308. package/http-request-state/directives/http-inProgress-state-directive.d.ts +0 -9
  309. package/http-request-state/directives/http-notStarted-state-directive.d.ts +0 -9
  310. package/http-request-state/directives/http-success-state-directive.d.ts +0 -16
  311. package/http-request-state/directives/request-state-directive.d.ts +0 -34
  312. package/http-request-state/helpers.d.ts +0 -9
  313. package/http-request-state/http-request-state.d.ts +0 -12
  314. package/http-request-state/http-state-module.d.ts +0 -11
  315. package/http-request-state/rxjs/getRequestorBody.d.ts +0 -3
  316. package/http-request-state/rxjs/getRequestorState.d.ts +0 -3
  317. package/http-request-state/rxjs/tapError.d.ts +0 -3
  318. package/http-request-state/rxjs/tapSuccess.d.ts +0 -3
  319. package/http-request-state/types.d.ts +0 -41
  320. package/index.d.ts +0 -5
  321. package/ngrx/actionable-selector.d.ts +0 -17
  322. package/ngrx/index.d.ts +0 -1
  323. package/rxjs/defaultShareReplay.d.ts +0 -2
  324. package/rxjs/mapError.d.ts +0 -2
  325. package/rxjs/rxjs-operators.d.ts +0 -13
  326. package/rxjs/subjectifier.d.ts +0 -8
  327. package/rxjs/subscriber.directive.d.ts +0 -14
  328. package/table-builder/classes/DefaultSettings.d.ts +0 -9
  329. package/table-builder/classes/MatTableObservableDataSource.d.ts +0 -9
  330. package/table-builder/classes/TableBuilderConfig.d.ts +0 -21
  331. package/table-builder/classes/TableBuilderDataSource.d.ts +0 -12
  332. package/table-builder/classes/TableState.d.ts +0 -67
  333. package/table-builder/classes/data-store.d.ts +0 -8
  334. package/table-builder/classes/filter-info.d.ts +0 -35
  335. package/table-builder/classes/table-builder-general-settings.d.ts +0 -78
  336. package/table-builder/classes/table-builder.d.ts +0 -18
  337. package/table-builder/classes/table-store.d.ts +0 -136
  338. package/table-builder/components/array-column.component.d.ts +0 -15
  339. package/table-builder/components/column-builder/column-builder.component.d.ts +0 -47
  340. package/table-builder/components/column-builder/column-helpers.d.ts +0 -36
  341. package/table-builder/components/date-filter/date-filter.component.d.ts +0 -37
  342. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +0 -37
  343. package/table-builder/components/filter/filter.component.d.ts +0 -46
  344. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -24
  345. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +0 -15
  346. package/table-builder/components/generic-table/generic-table.component.d.ts +0 -81
  347. package/table-builder/components/generic-table/paginator.component.d.ts +0 -29
  348. package/table-builder/components/group-by-list/group-by-list.component.d.ts +0 -7
  349. package/table-builder/components/header-menu/header-menu.component.d.ts +0 -51
  350. package/table-builder/components/in-filter/in-filter.component.d.ts +0 -20
  351. package/table-builder/components/initialization-component/initialization-component.d.ts +0 -13
  352. package/table-builder/components/link-column.component.d.ts +0 -25
  353. package/table-builder/components/number-filter/number-filter.component.d.ts +0 -39
  354. package/table-builder/components/profiles-menu/profiles-menu.component.d.ts +0 -32
  355. package/table-builder/components/scroll-strategy.d.ts +0 -22
  356. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +0 -24
  357. package/table-builder/components/sort-menu/sort-menu.component.d.ts +0 -24
  358. package/table-builder/components/table-container/table-container.d.ts +0 -80
  359. package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +0 -6
  360. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +0 -17
  361. package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +0 -17
  362. package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +0 -8
  363. package/table-builder/components/table-container/tableProps.d.ts +0 -12
  364. package/table-builder/components/table-container/virtual-scroll-container.d.ts +0 -22
  365. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +0 -15
  366. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +0 -12
  367. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +0 -14
  368. package/table-builder/directives/custom-cell-directive.d.ts +0 -33
  369. package/table-builder/directives/multi-sort.directive.d.ts +0 -10
  370. package/table-builder/directives/resize-column.directive.d.ts +0 -43
  371. package/table-builder/directives/table-wrapper.directive.d.ts +0 -8
  372. package/table-builder/directives/tb-filter.directive.d.ts +0 -116
  373. package/table-builder/enums/filterTypes.d.ts +0 -36
  374. package/table-builder/functions/boolean-filter-function.d.ts +0 -3
  375. package/table-builder/functions/date-filter-function.d.ts +0 -4
  376. package/table-builder/functions/download-data.d.ts +0 -1
  377. package/table-builder/functions/null-filter-function.d.ts +0 -2
  378. package/table-builder/functions/number-filter-function.d.ts +0 -4
  379. package/table-builder/functions/sort-data-function.d.ts +0 -6
  380. package/table-builder/functions/string-filter-function.d.ts +0 -5
  381. package/table-builder/interfaces/report-def.d.ts +0 -147
  382. package/table-builder/ngrx/tableBuilderStateStore.d.ts +0 -70
  383. package/table-builder/pipes/column-total.pipe.d.ts +0 -8
  384. package/table-builder/pipes/format-filter-type.pipe.d.ts +0 -8
  385. package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -12
  386. package/table-builder/pipes/key-display.d.ts +0 -10
  387. package/table-builder/services/export-to-csv.service.d.ts +0 -19
  388. package/table-builder/services/link-creator.service.d.ts +0 -16
  389. package/table-builder/services/table-template-service.d.ts +0 -14
  390. package/table-builder/services/transform-creator.d.ts +0 -16
  391. package/table-builder/table-builder.module.d.ts +0 -21
  392. package/utilities/array-helpers.d.ts +0 -1
  393. package/utilities/directives/auto-focus.directive.d.ts +0 -9
  394. package/utilities/directives/clickEmitterDirective.d.ts +0 -7
  395. package/utilities/directives/clickSubject.d.ts +0 -9
  396. package/utilities/directives/conditional-classes.directive.d.ts +0 -13
  397. package/utilities/directives/dialog-service.d.ts +0 -10
  398. package/utilities/directives/dialog.d.ts +0 -44
  399. package/utilities/directives/mat-toggle-group-directive.d.ts +0 -21
  400. package/utilities/directives/prevent-enter.directive.d.ts +0 -6
  401. package/utilities/directives/stop-propagation.directive.d.ts +0 -7
  402. package/utilities/directives/styler.d.ts +0 -15
  403. package/utilities/directives/trim-whitespace.directive.d.ts +0 -7
  404. package/utilities/module.d.ts +0 -19
  405. package/utilities/pipes/function.pipe.d.ts +0 -7
  406. package/utilities/pipes/phone.pipe.d.ts +0 -7
  407. package/utilities/pipes/space-case.pipes.d.ts +0 -17
@@ -0,0 +1,8 @@
1
+ import { Observable, of } from 'rxjs';
2
+ import { catchError } from 'rxjs/operators';
3
+
4
+ export function mapError<T, TResult>(projection: (error: any) => TResult) {
5
+ return function (src: Observable<T>): Observable<T | TResult> {
6
+ return src.pipe(catchError(e => of(projection(e))),);
7
+ };
8
+ }
@@ -0,0 +1,132 @@
1
+ import { Predicate } from '@angular/core';
2
+ import { flatten } from 'lodash';
3
+ import {
4
+ filter,
5
+ first,
6
+ map,
7
+ pairwise,
8
+ startWith,
9
+ Observable,
10
+ combineLatest,
11
+ Subscription,
12
+ MonoTypeOperatorFunction,
13
+ OperatorFunction,
14
+ concatMap,
15
+ merge,
16
+ of,
17
+ delay
18
+ } from 'rxjs';
19
+
20
+
21
+ export const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {
22
+ return src.pipe(filter(predicate),first());
23
+ }
24
+
25
+ export const mapArray = <T, U>(mapFunc: (src: T, index?: number) => U ) => (source: Observable<T[]>) =>
26
+ source.pipe( map( src => src.map(mapFunc) ) );
27
+
28
+ export const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>
29
+ source.pipe( map( src => src.filter(filterFunc) ) );
30
+
31
+ export const onWait = startWithIfEmpty;
32
+ export function startWithIfEmpty<T,V extends T>(val: V, wait = 0) : MonoTypeOperatorFunction<T> {
33
+ return (source: Observable<T>) => {
34
+ return new Observable<T>(subscriber => {
35
+ let emitted = false;
36
+ setTimeout(() => {
37
+ if(!emitted) {
38
+ subscriber.next(val);
39
+ }
40
+ }, wait);
41
+ const sub = source.subscribe({
42
+ next(x) { emitted = true; subscriber.next(x) },
43
+ error(err) { emitted = true; subscriber.error(err) },
44
+ complete() { emitted = true; subscriber.complete(); }
45
+ });
46
+ return () => sub.unsubscribe();
47
+ });
48
+ }
49
+
50
+ }
51
+
52
+ export const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {
53
+ return combineLatest(
54
+ sources.map( src => src.pipe(startWithIfEmpty([] as T [])))
55
+ ).pipe(
56
+ map( res => res.flat() )
57
+ );
58
+ };
59
+
60
+ export function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {
61
+ return <T>(source: Observable<T>) : Observable<T> => {
62
+ return new Observable(subsciber => {
63
+ let isOn = defaultState;
64
+ const subscription = new Subscription();
65
+ subscription.add( switchSource.subscribe( on => isOn = on ));
66
+ subscription.add(source.subscribe({
67
+ next(value) {
68
+ if(isOn) {
69
+ subsciber.next(value);
70
+ }
71
+ },
72
+ error: error => subsciber.error(error),
73
+ complete: () => subsciber.complete()
74
+ }));
75
+ return subscription;
76
+ });
77
+ }
78
+ }
79
+
80
+ export function skipOneWhen( skipper: Observable<any> ) {
81
+ return <T>(source: Observable<T>) : Observable<T> => {
82
+ return new Observable(subsriber => {
83
+ const subscription = new Subscription();
84
+ let skipNext = false;
85
+ subscription.add(skipper.subscribe( _ => skipNext = true));
86
+ subscription.add(source.subscribe({
87
+ next(value) {
88
+ if(skipNext) {
89
+ skipNext = false;
90
+ } else {
91
+ subsriber.next(value);
92
+ }
93
+ },
94
+ error: error => subsriber.error(error),
95
+ complete: () => subsriber.complete()
96
+ }));
97
+ return subscription;
98
+ });
99
+ }
100
+ }
101
+
102
+ export function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {
103
+ return (source: Observable<T>) => {
104
+ return source.pipe(startWith(startingValue), pairwise());
105
+ }
106
+ }
107
+
108
+ export function notNull<T>(): OperatorFunction<(T | null | undefined), T> {
109
+ return (source: Observable<T | null | undefined>) => {
110
+ return source.pipe(filter( (o: T | null | undefined): o is T => o != null) )
111
+ }
112
+ }
113
+
114
+ export function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {
115
+ return (src: Observable<T>) => {
116
+ return src.pipe(
117
+ concatMap(r => {
118
+ if (predicate(r)) {
119
+ return merge(
120
+ of({ r }),
121
+ of(null).pipe(delay(delayTime))
122
+ ).pipe(
123
+ notNull(),
124
+ map(d => d.r)
125
+ );
126
+ } else {
127
+ return of(r);
128
+ }
129
+ })
130
+ );
131
+ };
132
+ }
@@ -0,0 +1,17 @@
1
+ import { merge, Observable, Observer, Subject } from 'rxjs';
2
+ type PipeLike<T> = Observable<T>['pipe'];
3
+ export class Subjectifier<T> extends Observable<T>{
4
+ private _subj = new Subject<T>();
5
+ private merged: Observable<T>;
6
+ constructor(_source: Observable<T>){
7
+ super((obs: Observer<T>) => {
8
+ const s = merge( _source, this._subj ).subscribe(obs);
9
+ return s;
10
+ });
11
+
12
+ this.merged = merge(_source, this._subj);
13
+ }
14
+ next: Subject<T>['next'] = this._subj.next.bind(this._subj);
15
+ newSubj = (...operations: Parameters<PipeLike<T>>) =>
16
+ new Subjectifier(this.merged.pipe(...operations));
17
+ }
@@ -0,0 +1,57 @@
1
+ import { DestroyRef, Directive, Injector, OnDestroy, assertInInjectionContext, inject } from "@angular/core";
2
+ import { Observable, Subscription } from "rxjs";
3
+
4
+ @Directive()
5
+ export class Subscriber implements OnDestroy{
6
+ subscriptions: Subscription[] = [];
7
+ handle = (subscription: Subscription) => {
8
+ this.subscriptions.push(subscription);
9
+ }
10
+ on = <T = any>(obs: Observable<T>, action: (t: T) => any) => {
11
+ this.handle(obs.subscribe(action));
12
+ }
13
+
14
+ ngOnDestroy() {
15
+ this.subscriptions.forEach(subscription => {
16
+ subscription.unsubscribe();
17
+ });
18
+ }
19
+ }
20
+
21
+ export function subscriber(injector: Injector): Subscriber
22
+ export function subscriber(subscription?: Subscription, injector?: Injector): Subscriber
23
+ export function subscriber<T = any>(obs: Observable<T>, action: (t: T) => any, injector?: Injector): Subscriber
24
+ export function subscriber<T = any>(obsOrSubOrInjector?: Observable<T> | Subscription | Injector, actionOrInjector?: ((t: T) => any) | Injector, injector?: Injector): Subscriber {
25
+
26
+ const destroyRef = getDestroyRef(obsOrSubOrInjector, actionOrInjector, injector);
27
+
28
+ const subscriber = new Subscriber();
29
+
30
+ if(obsOrSubOrInjector instanceof Subscription){
31
+ subscriber.handle(obsOrSubOrInjector);
32
+ } else if(obsOrSubOrInjector instanceof Observable){
33
+ subscriber.handle(obsOrSubOrInjector.subscribe(actionOrInjector as (t: T) => any));
34
+ }
35
+
36
+ destroyRef.onDestroy(() => subscriber?.ngOnDestroy());
37
+
38
+ return subscriber;
39
+ }
40
+
41
+ function getDestroyRef(obsOrSubOrInjector: any, actionOrInjector?: any, injector?: Injector){
42
+ const providedInjector = obsOrSubOrInjector instanceof Injector ? obsOrSubOrInjector
43
+ : actionOrInjector instanceof Injector ? actionOrInjector
44
+ : injector;
45
+
46
+ if(!providedInjector){
47
+ try {
48
+ assertInInjectionContext(subscriber);
49
+ } catch (error) {
50
+ throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');
51
+ }
52
+ }
53
+
54
+ const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);
55
+
56
+ return destroyRef;
57
+ }
@@ -0,0 +1,95 @@
1
+ import { Component } from "@angular/core";
2
+ import { ComponentFixture, fakeAsync, TestBed, waitForAsync } from "@angular/core/testing";
3
+ import { Subject } from "rxjs";
4
+ import { ClickEmitterDirective, ClickSubjectDirective } from "../utilities";
5
+ import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
6
+ import {HarnessLoader} from '@angular/cdk/testing';
7
+ import { MatButtonModule } from "@angular/material/button";
8
+ import { MatButtonHarness } from "@angular/material/button/testing";
9
+
10
+ @Component({
11
+ template: `
12
+ <a mat-button clickEmitter #subj='clickEmitter' >click me</a>
13
+ <div *ngIf='subj | async'>Hello World!</div>
14
+ `
15
+ }) export class TestComponent {
16
+ subject = new Subject();
17
+ }
18
+
19
+ @Component({
20
+ template: `
21
+ <a mat-button [clickSubject]='{content: "Hello World!" }' #subj='clickSubject' >click me</a>
22
+ <div *ngIf='subj | async as o'>{{o.content}}</div>
23
+ `
24
+ }) export class TestContentComponent {
25
+ subject = new Subject();
26
+ }
27
+
28
+
29
+ let fixture: ComponentFixture<TestComponent>;
30
+ let loader: HarnessLoader;
31
+
32
+ const setupTest = (): void => {
33
+ TestBed.configureTestingModule({
34
+ imports: [MatButtonModule],
35
+ declarations: [
36
+ TestComponent,
37
+ ClickEmitterDirective,
38
+ ],
39
+ providers: [ ]
40
+ });
41
+ fixture = TestBed.createComponent(TestComponent);
42
+ fixture.detectChanges();
43
+ loader = TestbedHarnessEnvironment.documentRootLoader(fixture);
44
+ };
45
+
46
+ const setupContentTest = (): void => {
47
+ TestBed.configureTestingModule({
48
+ imports: [MatButtonModule],
49
+ declarations: [
50
+ TestContentComponent,
51
+ ClickSubjectDirective,
52
+ ],
53
+ providers: [ ]
54
+ });
55
+ fixture = TestBed.createComponent(TestContentComponent);
56
+ fixture.detectChanges();
57
+ loader = TestbedHarnessEnvironment.documentRootLoader(fixture);
58
+ };
59
+
60
+
61
+ describe("ClickSubjectDirective", () => {
62
+ describe("Default Subject", () => {
63
+ beforeEach(waitForAsync(setupTest));
64
+
65
+ it('before button is clicked the text should remain hidden',async () => {
66
+ expect(fixture.nativeElement.textContent).not.toContain('Hello World!');
67
+ });
68
+
69
+ it('when button is clicked the text should display', fakeAsync( async () => {
70
+ const buttonHarness = await loader.getHarness(MatButtonHarness);
71
+ await buttonHarness.click();
72
+ fixture.detectChanges();
73
+ expect(fixture.nativeElement.textContent).toContain('Hello World!');
74
+ }));
75
+
76
+ });
77
+
78
+ describe("Subject with Content", () => {
79
+ beforeEach(waitForAsync(setupContentTest));
80
+
81
+ it('before button is clicked the text should remain hidden',async () => {
82
+ expect(fixture.nativeElement.textContent).not.toContain('Hello World!');
83
+ });
84
+
85
+ it('when button is clicked the text should display', fakeAsync( async () => {
86
+ const buttonHarness = await loader.getHarness(MatButtonHarness);
87
+ await buttonHarness.click();
88
+ fixture.detectChanges();
89
+ expect(fixture.nativeElement.textContent).toContain('Hello World!');
90
+ }));
91
+ })
92
+
93
+ });
94
+
95
+
@@ -0,0 +1,101 @@
1
+ import { Component } from "@angular/core";
2
+ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from "@angular/core/testing";
3
+ import { MatDialogModule } from "@angular/material/dialog";
4
+ import { Subject } from "rxjs";
5
+ import { DialogDirective, DialogWrapper } from "../utilities";
6
+ import { DialogService } from "../utilities/directives/dialog-service";
7
+ import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
8
+ import {MatDialogHarness} from '@angular/material/dialog/testing';
9
+ import { NoopAnimationsModule } from "@angular/platform-browser/animations";
10
+ import {HarnessLoader} from '@angular/cdk/testing';
11
+ import { MatButtonModule } from "@angular/material/button";
12
+ import { MatButtonHarness } from "@angular/material/button/testing";
13
+
14
+ @Component({
15
+ template: `
16
+ <ng-container *opDialog='subject; let text; let close = close'>
17
+ If you see this text, I'm open {{text}}
18
+ <button mat-button (click)='close()' >close</button>
19
+ </ng-container>
20
+ `
21
+ }) export class TestComponent {
22
+ subject = new Subject();
23
+ }
24
+
25
+
26
+ describe("DialogDirective", () => {
27
+
28
+ let fixture: ComponentFixture<TestComponent>;
29
+ let loader: HarnessLoader;
30
+
31
+ beforeEach(
32
+ waitForAsync(async () => {
33
+ await TestBed.configureTestingModule({
34
+ imports: [MatDialogModule, NoopAnimationsModule, MatButtonModule],
35
+ declarations: [
36
+ TestComponent,
37
+ DialogDirective,
38
+ DialogWrapper,
39
+ ],
40
+ providers: [ DialogService ]
41
+ }).compileComponents();
42
+ fixture = TestBed.createComponent(TestComponent);
43
+ fixture.detectChanges();
44
+ loader = TestbedHarnessEnvironment.documentRootLoader(fixture);
45
+ }),
46
+ );
47
+
48
+ it('before observable emits the dialog should remain closed',async () => {
49
+ expect(fixture.nativeElement.textContent).not.toContain('If you see this text, I\'m open');
50
+ });
51
+
52
+ it('when observable emits the dialog should be open', fakeAsync( async () => {
53
+ fixture.componentInstance.subject.next(true);
54
+ fixture.detectChanges();
55
+ const dialogHarness = await loader.getHarness(MatDialogHarness);
56
+ expect(await dialogHarness.getText()).toContain('If you see this text, I\'m open');
57
+ }));
58
+
59
+ it('when observable emits false the dialog should close', fakeAsync( async () => {
60
+ fixture.componentInstance.subject.next(true);
61
+ fixture.detectChanges();
62
+ let dialogHarness = await loader.getAllHarnesses(MatDialogHarness);
63
+ expect(dialogHarness.length).toBe(1);
64
+ fixture.componentInstance.subject.next(false);
65
+ fixture.detectChanges();
66
+ dialogHarness = await loader.getAllHarnesses(MatDialogHarness);
67
+ expect(dialogHarness.length).toBe(0);
68
+ }));
69
+
70
+ it('when close is clicked the dialog should close', fakeAsync( async () => {
71
+ fixture.componentInstance.subject.next(true);
72
+ fixture.detectChanges();
73
+ let dialogHarness = await loader.getAllHarnesses(MatDialogHarness);
74
+ expect(dialogHarness.length).toBe(1);
75
+ let buttonHarness = await dialogHarness[0].getHarness(MatButtonHarness);
76
+ await buttonHarness.click();
77
+ fixture.detectChanges();
78
+ dialogHarness = await loader.getAllHarnesses(MatDialogHarness);
79
+ expect(dialogHarness.length).toBe(0);
80
+ }));
81
+
82
+ it('when observable emits the template should have access to the emitted data', fakeAsync( async () => {
83
+ fixture.componentInstance.subject.next('Text #1');
84
+ fixture.detectChanges();
85
+ const dialogHarness = await loader.getHarness(MatDialogHarness);
86
+ expect(await dialogHarness.getText()).toContain('Text #1');
87
+ }));
88
+
89
+ it('when observable emits a 2nd time the template should have access to the new data', fakeAsync( async () => {
90
+ fixture.componentInstance.subject.next('Text #1');
91
+ fixture.detectChanges();
92
+ const dialogHarness = await loader.getHarness(MatDialogHarness);
93
+ expect(await dialogHarness.getText()).toContain('Text #1');
94
+ fixture.componentInstance.subject.next('Text #2');
95
+ fixture.detectChanges();
96
+ expect(await dialogHarness.getText()).toContain('Text #2');
97
+ }));
98
+
99
+ });
100
+
101
+
@@ -0,0 +1,229 @@
1
+ import { Component, DebugElement } from "@angular/core";
2
+ import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
3
+ import { MatSlideToggle, MatSlideToggleModule } from "@angular/material/slide-toggle";
4
+ import { MatSlideToggleGroupDirective } from "../utilities/directives/mat-toggle-group-directive";
5
+ import { HarnessLoader } from '@angular/cdk/testing';
6
+ import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
7
+ import { MatSlideToggleHarness } from '@angular/material/slide-toggle/testing';
8
+ import { By } from "@angular/platform-browser";
9
+ import { count, firstValueFrom, lastValueFrom, skip, Subject, takeUntil } from "rxjs";
10
+
11
+ abstract class ToggleTestComponent {
12
+
13
+ }
14
+
15
+
16
+ @Component({
17
+ template: `
18
+ <ng-container opMatSlideToggleGroup >
19
+ <mat-slide-toggle name='toggle1' > Slide me! </mat-slide-toggle>
20
+ </ng-container>
21
+ `
22
+ }) export class SingleToggleTestComponent extends ToggleTestComponent {
23
+
24
+ }
25
+
26
+ @Component({
27
+ template: `
28
+ <ng-container opMatSlideToggleGroup [allowMultiple]='true' >
29
+ <mat-slide-toggle name='toggle1' > Slide me! </mat-slide-toggle>
30
+ <mat-slide-toggle name='toggle2' > Slide me! </mat-slide-toggle>
31
+ </ng-container>
32
+ `
33
+ }) export class MultiToggleWithMultipleTestComponent extends ToggleTestComponent {
34
+
35
+ }
36
+
37
+ @Component({
38
+ template: `
39
+ <ng-container opMatSlideToggleGroup >
40
+ <mat-slide-toggle name='toggle1' > Slide me! </mat-slide-toggle>
41
+ <mat-slide-toggle name='toggle2' > Slide me! </mat-slide-toggle>
42
+ </ng-container>
43
+ `
44
+ }) export class MultiToggleTestComponent extends ToggleTestComponent {
45
+
46
+ }
47
+
48
+
49
+ let fixture: ComponentFixture<ToggleTestComponent>;
50
+ let loader: HarnessLoader;
51
+ let toggleHarnesses: MatSlideToggleHarness [];
52
+ let toggleGroupDirective: MatSlideToggleGroupDirective;
53
+
54
+ let toggles: DebugElement[];
55
+
56
+
57
+ const setupTest = (type) => async (): Promise<void> => {
58
+
59
+ TestBed.configureTestingModule({
60
+ imports: [MatSlideToggleModule],
61
+ declarations: [
62
+ type,
63
+ MatSlideToggleGroupDirective,
64
+ ],
65
+ providers: [ ]
66
+ });
67
+ fixture = TestBed.createComponent(type);
68
+ fixture.detectChanges();
69
+
70
+ loader = TestbedHarnessEnvironment.documentRootLoader(fixture);
71
+ toggleHarnesses = await loader.getAllHarnesses(MatSlideToggleHarness);
72
+ toggles = fixture.debugElement.queryAll(By.directive(MatSlideToggle));
73
+ toggleGroupDirective = toggles[0].injector.get(MatSlideToggleGroupDirective);
74
+
75
+
76
+ };
77
+
78
+
79
+ async function toggleAndReturnValues(index: number) {
80
+ const firstVal = firstValueFrom(toggleGroupDirective.valueEmitter.pipe(skip(1)));
81
+ await toggleHarnesses[index].toggle();
82
+ return await firstVal;
83
+ }
84
+
85
+ describe("opMatSlideToggleGroup", () => {
86
+ describe("Single Toggle", () => {
87
+ beforeEach(waitForAsync(setupTest(SingleToggleTestComponent)));
88
+
89
+ it('should create', async () => {
90
+ expect(toggleGroupDirective).toBeDefined();
91
+ })
92
+
93
+ it('starts with an initial value', async () => {
94
+ const firstVal = firstValueFrom(toggleGroupDirective.valueEmitter);
95
+ const val = await firstVal;
96
+ expect(val).toEqual({'toggle1': false});
97
+ });
98
+
99
+ it('when toggling on should emit the latest value as true', async () => {
100
+ const val = await toggleAndReturnValues(0);
101
+ expect(val).toEqual({'toggle1': true});
102
+ });
103
+
104
+ it('can toggle on and then off', async () => {
105
+
106
+ const val = await toggleAndReturnValues(0);
107
+ expect(val).toEqual({'toggle1': true});
108
+ const val2 = await toggleAndReturnValues(0);
109
+ expect(val2).toEqual({'toggle1': false});
110
+ });
111
+ });
112
+
113
+ describe("Multi Toggle", () => {
114
+ beforeEach(waitForAsync(setupTest(MultiToggleWithMultipleTestComponent)));
115
+
116
+ it('starts with an initial value', async () => {
117
+ const firstVal = firstValueFrom(toggleGroupDirective.valueEmitter);
118
+ const val = await firstVal;
119
+ expect(val).toEqual({'toggle1': false,'toggle2': false});
120
+ });
121
+
122
+ it('can toggle first toggle', async () => {
123
+ const val = await toggleAndReturnValues(0);
124
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
125
+ });
126
+
127
+ it('can toggle second toggle', async () => {
128
+ const val = await toggleAndReturnValues(1);
129
+ expect(val).toEqual({'toggle1': false,'toggle2': true});
130
+ });
131
+
132
+ it('can toggle both toggles', async () => {
133
+ const val = await toggleAndReturnValues(0);
134
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
135
+
136
+ const val2 = await toggleAndReturnValues(1);
137
+ expect(val2).toEqual({'toggle1': true,'toggle2': true});
138
+ });
139
+
140
+ it('can toggle both toggles multiple times', async () => {
141
+ let val = await toggleAndReturnValues(0);
142
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
143
+
144
+ val = await toggleAndReturnValues(1);
145
+ expect(val).toEqual({'toggle1': true,'toggle2': true});
146
+
147
+ val = await toggleAndReturnValues(1);
148
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
149
+
150
+ val = await toggleAndReturnValues(1);
151
+ expect(val).toEqual({'toggle1': true,'toggle2': true});
152
+
153
+ val = await toggleAndReturnValues(0);
154
+ expect(val).toEqual({'toggle1': false,'toggle2': true});
155
+ val = await toggleAndReturnValues(1);
156
+ expect(val).toEqual({'toggle1': false,'toggle2': false});
157
+ });
158
+
159
+ });
160
+
161
+ describe("Multi Toggle Only One Allowed", () => {
162
+ beforeEach(waitForAsync(setupTest(MultiToggleTestComponent)));
163
+
164
+ it('starts with an initial value', async () => {
165
+ const firstVal = firstValueFrom(toggleGroupDirective.valueEmitter);
166
+ const val = await firstVal;
167
+ expect(val).toEqual({'toggle1': false,'toggle2': false});
168
+ });
169
+
170
+ it('can toggle first toggle', async () => {
171
+ const val = await toggleAndReturnValues(0);
172
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
173
+ });
174
+
175
+ it('can toggle second toggle', async () => {
176
+ const val = await toggleAndReturnValues(1);
177
+ expect(val).toEqual({'toggle1': false,'toggle2': true});
178
+ });
179
+
180
+ it('when toggle both toggles only the last one remains set', async () => {
181
+ const val = await toggleAndReturnValues(0);
182
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
183
+
184
+ const val2 = await toggleAndReturnValues(1);
185
+ expect(val2).toEqual({'toggle1': false,'toggle2': true});
186
+
187
+ var toggle1Value = await toggleHarnesses[0].isChecked();
188
+
189
+ expect(toggle1Value).toBeFalse();
190
+ });
191
+
192
+ it('can toggle both toggles multiple times and only the last one will be set', async () => {
193
+ let val = await toggleAndReturnValues(0);
194
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
195
+
196
+ val = await toggleAndReturnValues(1);
197
+ expect(val).toEqual({'toggle1': false,'toggle2': true});
198
+
199
+ val = await toggleAndReturnValues(1);
200
+ expect(val).toEqual({'toggle1': false,'toggle2': false});
201
+
202
+ val = await toggleAndReturnValues(1);
203
+ expect(val).toEqual({'toggle1': false,'toggle2': true});
204
+
205
+ val = await toggleAndReturnValues(0);
206
+ expect(val).toEqual({'toggle1': true,'toggle2': false});
207
+ val = await toggleAndReturnValues(1);
208
+ expect(val).toEqual({'toggle1': false,'toggle2': true});
209
+ });
210
+
211
+ it('can toggle 2nd toggle doesnt emit an extra time', async () => {
212
+ const end = new Subject();
213
+ const total = lastValueFrom( toggleGroupDirective.valueEmitter.pipe(
214
+ takeUntil(end),
215
+ count( (a,i) => true ),
216
+ ));
217
+
218
+ await toggleHarnesses[0].toggle();
219
+ await toggleHarnesses[1].toggle();
220
+
221
+ end.next(null);
222
+ const result = await total;
223
+
224
+ expect(result).toEqual(3);
225
+ });
226
+
227
+ });
228
+
229
+ });
@@ -0,0 +1,11 @@
1
+ import { ArrayStyle } from '../interfaces/report-def';
2
+
3
+ export interface DefaultSettings {
4
+ dateFormat?: string;
5
+ dateTimeFormat?: string;
6
+ }
7
+
8
+ export const ArrayDefaults = {
9
+ limit : 3,
10
+ arrayStyle : ArrayStyle.CommaDelimited
11
+ }
@@ -0,0 +1,23 @@
1
+ import { MatTableDataSource } from '@angular/material/table';
2
+ import { Observable, Subscription } from 'rxjs';
3
+
4
+ export class MatTableObservableDataSource<T> extends MatTableDataSource<T> {
5
+ subscription?: Subscription;
6
+ constructor(private dataSrc: Observable<T[]>) {
7
+ super([]);
8
+ }
9
+
10
+ connect() {
11
+ if (!this.subscription) {
12
+ this.subscription = this.dataSrc.subscribe( data => this.data = data );
13
+ }
14
+ return super.connect();
15
+ }
16
+ disconnect() {
17
+ if (this.subscription) {
18
+ this.subscription.unsubscribe();
19
+ this.subscription = undefined;
20
+ }
21
+ super.disconnect();
22
+ }
23
+ }