@one-paragon/angular-utilities 0.1.19 → 0.1.21

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 (380) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +16 -36
  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 +3 -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 +22 -0
  8. package/src/action-state/action-state-ui/action-state-ui.module.ts +19 -0
  9. package/{action-state/index.d.ts → src/action-state/index.ts} +4 -0
  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 +26 -0
  13. package/src/http-request-state/HttpRequestStateStore.ts +147 -0
  14. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +38 -0
  15. package/src/http-request-state/directives/http-error-state-directive.ts +32 -0
  16. package/src/http-request-state/directives/http-inProgress-state-directive.ts +32 -0
  17. package/src/http-request-state/directives/http-notStarted-state-directive.ts +31 -0
  18. package/src/http-request-state/directives/http-success-state-directive.ts +31 -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 +70 -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 +26 -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 +50 -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} +21 -3
  37. package/src/rxjs/defaultShareReplay.ts +8 -0
  38. package/{rxjs/index.d.ts → src/rxjs/index.ts} +1 -1
  39. package/src/rxjs/mapError.ts +8 -0
  40. package/src/rxjs/rxjs-operators.ts +130 -0
  41. package/src/rxjs/subjectifier.ts +15 -0
  42. package/src/specs/clickSubject.spec.ts +95 -0
  43. package/src/specs/dialog.spec.ts +101 -0
  44. package/src/specs/toggleGroupDirective.spec.ts +231 -0
  45. package/src/table-builder/classes/DefaultSettings.ts +10 -0
  46. package/src/table-builder/classes/GenericTableDataSource.ts +22 -0
  47. package/src/table-builder/classes/MatTableObservableDataSource.ts +23 -0
  48. package/src/table-builder/classes/TableBuilderConfig.ts +19 -0
  49. package/src/table-builder/classes/TableState.ts +63 -0
  50. package/src/table-builder/classes/data-filter.spec.ts +72 -0
  51. package/src/table-builder/classes/data-filter.ts +32 -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 +132 -0
  54. package/src/table-builder/classes/table-builder-general-settings.ts +73 -0
  55. package/src/table-builder/classes/table-builder.ts +71 -0
  56. package/src/table-builder/classes/table-store.ts +360 -0
  57. package/src/table-builder/components/array-column.component.ts +39 -0
  58. package/src/table-builder/components/column-builder/column-builder.component.html +66 -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 +51 -0
  61. package/src/table-builder/components/column-builder/column-builder.component.ts +126 -0
  62. package/src/table-builder/components/date-filter/date-filter.component.html +24 -0
  63. package/src/table-builder/components/date-filter/date-filter.component.ts +17 -0
  64. package/src/table-builder/components/filter/filter.component.html +78 -0
  65. package/src/table-builder/components/filter/filter.component.scss +64 -0
  66. package/src/table-builder/components/filter/filter.component.spec.ts +89 -0
  67. package/src/table-builder/components/filter/filter.component.ts +35 -0
  68. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +82 -0
  69. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +52 -0
  70. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +57 -0
  71. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +44 -0
  72. package/src/table-builder/components/generic-table/generic-table.component.html +77 -0
  73. package/src/table-builder/components/generic-table/generic-table.component.scss +45 -0
  74. package/src/table-builder/components/generic-table/generic-table.component.ts +221 -0
  75. package/src/table-builder/components/generic-table/paginator.component.ts +89 -0
  76. package/src/table-builder/components/group-by-list/group-by-list.component.css +8 -0
  77. package/src/table-builder/components/group-by-list/group-by-list.component.html +10 -0
  78. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +23 -0
  79. package/src/table-builder/components/group-by-list/group-by-list.component.ts +16 -0
  80. package/src/table-builder/components/header-menu/header-menu.component.html +117 -0
  81. package/src/table-builder/components/header-menu/header-menu.component.scss +92 -0
  82. package/src/table-builder/components/header-menu/header-menu.component.ts +81 -0
  83. package/src/table-builder/components/in-filter/in-filter.component.css +3 -0
  84. package/src/table-builder/components/in-filter/in-filter.component.html +13 -0
  85. package/src/table-builder/components/in-filter/in-filter.component.ts +60 -0
  86. package/{table-builder/components/index.d.ts → src/table-builder/components/index.ts} +0 -0
  87. package/src/table-builder/components/initialization-component/initialization-component.html +21 -0
  88. package/src/table-builder/components/initialization-component/initialization-component.ts +15 -0
  89. package/src/table-builder/components/link-column.component.ts +33 -0
  90. package/src/table-builder/components/number-filter/number-filter.component.css +10 -0
  91. package/src/table-builder/components/number-filter/number-filter.component.html +21 -0
  92. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +30 -0
  93. package/src/table-builder/components/number-filter/number-filter.component.ts +19 -0
  94. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +59 -0
  95. package/src/table-builder/components/sort-menu/sort-menu.component.html +101 -0
  96. package/src/table-builder/components/sort-menu/sort-menu.component.scss +119 -0
  97. package/src/table-builder/components/sort-menu/sort-menu.component.ts +82 -0
  98. package/src/table-builder/components/table-container/table-container.css +26 -0
  99. package/src/table-builder/components/table-container/table-container.html +113 -0
  100. package/src/table-builder/components/table-container/table-container.spec.ts +157 -0
  101. package/src/table-builder/components/table-container/table-container.ts +344 -0
  102. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +26 -0
  103. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +38 -0
  104. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +37 -0
  105. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +8 -0
  106. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +88 -0
  107. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +27 -0
  108. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +23 -0
  109. package/src/table-builder/directives/custom-cell-directive.ts +45 -0
  110. package/{table-builder/directives/index.d.ts → src/table-builder/directives/index.ts} +1 -0
  111. package/src/table-builder/directives/multi-sort.directive.spec.ts +124 -0
  112. package/src/table-builder/directives/multi-sort.directive.ts +41 -0
  113. package/src/table-builder/directives/resize-column.directive.ts +104 -0
  114. package/src/table-builder/directives/table-wrapper.directive.ts +16 -0
  115. package/src/table-builder/directives/tb-filter.directive.ts +363 -0
  116. package/src/table-builder/enums/filterTypes.ts +65 -0
  117. package/src/table-builder/functions/boolean-filter-function.ts +13 -0
  118. package/src/table-builder/functions/date-filter-function.ts +40 -0
  119. package/src/table-builder/functions/download-data.ts +11 -0
  120. package/src/table-builder/functions/null-filter-function.ts +9 -0
  121. package/src/table-builder/functions/number-filter-function.ts +42 -0
  122. package/src/table-builder/functions/sort-data-function.ts +8 -0
  123. package/src/table-builder/functions/string-filter-function.ts +52 -0
  124. package/{table-builder/interfaces/ColumnInfo.d.ts → src/table-builder/interfaces/ColumnInfo.ts} +7 -6
  125. package/src/table-builder/interfaces/column-template.ts +9 -0
  126. package/{table-builder/interfaces/dictionary.d.ts → src/table-builder/interfaces/dictionary.ts} +1 -1
  127. package/src/table-builder/interfaces/report-def.ts +131 -0
  128. package/src/table-builder/material.module.ts +95 -0
  129. package/src/table-builder/ngrx/actions.ts +7 -0
  130. package/src/table-builder/ngrx/effects.ts +54 -0
  131. package/src/table-builder/ngrx/reducer.ts +72 -0
  132. package/src/table-builder/ngrx/selectors.ts +37 -0
  133. package/src/table-builder/pipes/column-total.pipe.ts +15 -0
  134. package/src/table-builder/pipes/format-filter-type.pipe.ts +12 -0
  135. package/src/table-builder/pipes/format-filter-value.pipe.ts +40 -0
  136. package/src/table-builder/pipes/key-display.ts +16 -0
  137. package/src/table-builder/services/export-to-csv.service.ts +92 -0
  138. package/src/table-builder/services/link-creator.service.ts +48 -0
  139. package/src/table-builder/services/table-template-service.ts +44 -0
  140. package/src/table-builder/services/transform-creator.ts +61 -0
  141. package/src/table-builder/specs/table-custom-filters.spec.ts +262 -0
  142. package/src/table-builder/styles/collapser.styles.scss +21 -0
  143. package/src/table-builder/table-builder.module.ts +138 -0
  144. package/src/test.ts +17 -0
  145. package/src/utilities/directives/auto-focus.directive.ts +19 -0
  146. package/src/utilities/directives/clickEmitterDirective.ts +15 -0
  147. package/src/utilities/directives/clickSubject.ts +19 -0
  148. package/src/utilities/directives/conditional-classes.directive.ts +35 -0
  149. package/src/utilities/directives/dialog-service.ts +22 -0
  150. package/src/utilities/directives/dialog.ts +142 -0
  151. package/src/utilities/directives/mat-toggle-group-directive.ts +60 -0
  152. package/src/utilities/directives/prevent-enter.directive.ts +12 -0
  153. package/src/utilities/directives/stop-propagation.directive.ts +19 -0
  154. package/src/utilities/directives/styler.ts +16 -0
  155. package/src/utilities/directives/trim-whitespace.directive.ts +20 -0
  156. package/{utilities/index.d.ts → src/utilities/index.ts} +8 -1
  157. package/src/utilities/module.ts +58 -0
  158. package/src/utilities/pipes/function.pipe.ts +15 -0
  159. package/src/utilities/pipes/phone.pipe.ts +15 -0
  160. package/src/utilities/pipes/space-case.pipes.spec.ts +47 -0
  161. package/src/utilities/pipes/space-case.pipes.ts +23 -0
  162. package/tsconfig.lib.json +19 -0
  163. package/tsconfig.lib.prod.json +10 -0
  164. package/tsconfig.spec.json +17 -0
  165. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +0 -12
  166. package/action-state/action-state-ui/action-state-ui.module.d.ts +0 -9
  167. package/action-state/ngrx-ext/ngrx-ext.module.d.ts +0 -8
  168. package/action-state/ngrx.d.ts +0 -31
  169. package/esm2020/action-state/action-state-spinner/action-state-spinner.component.mjs +0 -23
  170. package/esm2020/action-state/action-state-ui/action-state-ui.module.mjs +0 -28
  171. package/esm2020/action-state/index.mjs +0 -8
  172. package/esm2020/action-state/ngrx-ext/ngrx-ext.module.mjs +0 -23
  173. package/esm2020/action-state/ngrx.mjs +0 -42
  174. package/esm2020/http-request-state/HttpRequestStateFactory.mjs +0 -27
  175. package/esm2020/http-request-state/HttpRequestStateStore.mjs +0 -97
  176. package/esm2020/http-request-state/directives/HttpStateDirectiveBase.mjs +0 -34
  177. package/esm2020/http-request-state/directives/http-error-state-directive.mjs +0 -29
  178. package/esm2020/http-request-state/directives/http-inProgress-state-directive.mjs +0 -29
  179. package/esm2020/http-request-state/directives/http-notStarted-state-directive.mjs +0 -29
  180. package/esm2020/http-request-state/directives/http-success-state-directive.mjs +0 -29
  181. package/esm2020/http-request-state/directives/index.mjs +0 -6
  182. package/esm2020/http-request-state/directives/request-state-directive.mjs +0 -57
  183. package/esm2020/http-request-state/helpers.mjs +0 -22
  184. package/esm2020/http-request-state/http-request-state.mjs +0 -39
  185. package/esm2020/http-request-state/http-state-module.mjs +0 -41
  186. package/esm2020/http-request-state/index.mjs +0 -7
  187. package/esm2020/http-request-state/rxjs/getRequestorBody.mjs +0 -4
  188. package/esm2020/http-request-state/rxjs/getRequestorState.mjs +0 -3
  189. package/esm2020/http-request-state/rxjs/index.mjs +0 -5
  190. package/esm2020/http-request-state/rxjs/tapError.mjs +0 -12
  191. package/esm2020/http-request-state/rxjs/tapSuccess.mjs +0 -12
  192. package/esm2020/http-request-state/types.mjs +0 -16
  193. package/esm2020/ngrx/actionable-selector.mjs +0 -76
  194. package/esm2020/ngrx/index.mjs +0 -2
  195. package/esm2020/one-paragon-angular-utilities.mjs +0 -5
  196. package/esm2020/public-api.mjs +0 -19
  197. package/esm2020/rxjs/defaultShareReplay.mjs +0 -7
  198. package/esm2020/rxjs/index.mjs +0 -5
  199. package/esm2020/rxjs/mapError.mjs +0 -8
  200. package/esm2020/rxjs/rxjs-operators.mjs +0 -91
  201. package/esm2020/rxjs/subjectifier.mjs +0 -15
  202. package/esm2020/table-builder/classes/DefaultSettings.mjs +0 -6
  203. package/esm2020/table-builder/classes/GenericTableDataSource.mjs +0 -13
  204. package/esm2020/table-builder/classes/MatTableObservableDataSource.mjs +0 -21
  205. package/esm2020/table-builder/classes/TableBuilderConfig.mjs +0 -3
  206. package/esm2020/table-builder/classes/TableState.mjs +0 -32
  207. package/esm2020/table-builder/classes/data-filter.mjs +0 -26
  208. package/esm2020/table-builder/classes/display-col.mjs +0 -2
  209. package/esm2020/table-builder/classes/filter-info.mjs +0 -71
  210. package/esm2020/table-builder/classes/table-builder-general-settings.mjs +0 -68
  211. package/esm2020/table-builder/classes/table-builder.mjs +0 -61
  212. package/esm2020/table-builder/classes/table-store.mjs +0 -292
  213. package/esm2020/table-builder/components/array-column.component.mjs +0 -57
  214. package/esm2020/table-builder/components/column-builder/column-builder.component.mjs +0 -111
  215. package/esm2020/table-builder/components/date-filter/date-filter.component.mjs +0 -25
  216. package/esm2020/table-builder/components/filter/filter.component.mjs +0 -53
  217. package/esm2020/table-builder/components/filter/in-list/in-list-filter.component.mjs +0 -91
  218. package/esm2020/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +0 -45
  219. package/esm2020/table-builder/components/generic-table/generic-table.component.mjs +0 -198
  220. package/esm2020/table-builder/components/generic-table/paginator.component.mjs +0 -74
  221. package/esm2020/table-builder/components/group-by-list/group-by-list.component.mjs +0 -21
  222. package/esm2020/table-builder/components/header-menu/header-menu.component.mjs +0 -90
  223. package/esm2020/table-builder/components/in-filter/in-filter.component.mjs +0 -66
  224. package/esm2020/table-builder/components/index.mjs +0 -10
  225. package/esm2020/table-builder/components/initialization-component/initialization-component.mjs +0 -33
  226. package/esm2020/table-builder/components/link-column.component.mjs +0 -66
  227. package/esm2020/table-builder/components/number-filter/number-filter.component.mjs +0 -27
  228. package/esm2020/table-builder/components/sort-menu/sort-menu.component-store.mjs +0 -42
  229. package/esm2020/table-builder/components/sort-menu/sort-menu.component.mjs +0 -75
  230. package/esm2020/table-builder/components/table-container/table-container.mjs +0 -312
  231. package/esm2020/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +0 -42
  232. package/esm2020/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +0 -30
  233. package/esm2020/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +0 -25
  234. package/esm2020/table-builder/directives/custom-cell-directive.mjs +0 -59
  235. package/esm2020/table-builder/directives/index.mjs +0 -6
  236. package/esm2020/table-builder/directives/multi-sort.directive.mjs +0 -42
  237. package/esm2020/table-builder/directives/resize-column.directive.mjs +0 -86
  238. package/esm2020/table-builder/directives/table-wrapper.directive.mjs +0 -26
  239. package/esm2020/table-builder/directives/tb-filter.directive.mjs +0 -403
  240. package/esm2020/table-builder/enums/filterTypes.mjs +0 -59
  241. package/esm2020/table-builder/functions/boolean-filter-function.mjs +0 -10
  242. package/esm2020/table-builder/functions/date-filter-function.mjs +0 -32
  243. package/esm2020/table-builder/functions/download-data.mjs +0 -12
  244. package/esm2020/table-builder/functions/null-filter-function.mjs +0 -8
  245. package/esm2020/table-builder/functions/number-filter-function.mjs +0 -32
  246. package/esm2020/table-builder/functions/sort-data-function.mjs +0 -5
  247. package/esm2020/table-builder/functions/string-filter-function.mjs +0 -41
  248. package/esm2020/table-builder/interfaces/ColumnInfo.mjs +0 -2
  249. package/esm2020/table-builder/interfaces/dictionary.mjs +0 -2
  250. package/esm2020/table-builder/interfaces/report-def.mjs +0 -34
  251. package/esm2020/table-builder/material.module.mjs +0 -221
  252. package/esm2020/table-builder/ngrx/actions.mjs +0 -5
  253. package/esm2020/table-builder/ngrx/effects.mjs +0 -48
  254. package/esm2020/table-builder/ngrx/reducer.mjs +0 -52
  255. package/esm2020/table-builder/ngrx/selectors.mjs +0 -24
  256. package/esm2020/table-builder/pipes/column-total.pipe.mjs +0 -20
  257. package/esm2020/table-builder/pipes/format-filter-type.pipe.mjs +0 -18
  258. package/esm2020/table-builder/pipes/format-filter-value.pipe.mjs +0 -46
  259. package/esm2020/table-builder/pipes/key-display.mjs +0 -20
  260. package/esm2020/table-builder/services/export-to-csv.service.mjs +0 -84
  261. package/esm2020/table-builder/services/link-creator.service.mjs +0 -42
  262. package/esm2020/table-builder/services/table-template-service.mjs +0 -43
  263. package/esm2020/table-builder/services/transform-creator.mjs +0 -70
  264. package/esm2020/table-builder/table-builder.module.mjs +0 -204
  265. package/esm2020/utilities/directives/auto-focus.directive.mjs +0 -26
  266. package/esm2020/utilities/directives/clickEmitterDirective.mjs +0 -21
  267. package/esm2020/utilities/directives/clickSubject.mjs +0 -27
  268. package/esm2020/utilities/directives/conditional-classes.directive.mjs +0 -35
  269. package/esm2020/utilities/directives/dialog-service.mjs +0 -25
  270. package/esm2020/utilities/directives/dialog.mjs +0 -131
  271. package/esm2020/utilities/directives/mat-toggle-group-directive.mjs +0 -58
  272. package/esm2020/utilities/directives/prevent-enter.directive.mjs +0 -19
  273. package/esm2020/utilities/directives/stop-propagation.directive.mjs +0 -25
  274. package/esm2020/utilities/directives/styler.mjs +0 -26
  275. package/esm2020/utilities/directives/trim-whitespace.directive.mjs +0 -29
  276. package/esm2020/utilities/index.mjs +0 -16
  277. package/esm2020/utilities/module.mjs +0 -91
  278. package/esm2020/utilities/pipes/function.pipe.mjs +0 -21
  279. package/esm2020/utilities/pipes/phone.pipe.mjs +0 -20
  280. package/esm2020/utilities/pipes/space-case.pipes.mjs +0 -28
  281. package/fesm2015/one-paragon-angular-utilities.mjs +0 -4696
  282. package/fesm2015/one-paragon-angular-utilities.mjs.map +0 -1
  283. package/fesm2020/one-paragon-angular-utilities.mjs +0 -4664
  284. package/fesm2020/one-paragon-angular-utilities.mjs.map +0 -1
  285. package/http-request-state/HttpRequestStateFactory.d.ts +0 -14
  286. package/http-request-state/HttpRequestStateStore.d.ts +0 -48
  287. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +0 -16
  288. package/http-request-state/directives/http-error-state-directive.d.ts +0 -12
  289. package/http-request-state/directives/http-inProgress-state-directive.d.ts +0 -12
  290. package/http-request-state/directives/http-notStarted-state-directive.d.ts +0 -12
  291. package/http-request-state/directives/http-success-state-directive.d.ts +0 -14
  292. package/http-request-state/directives/request-state-directive.d.ts +0 -29
  293. package/http-request-state/helpers.d.ts +0 -9
  294. package/http-request-state/http-request-state.d.ts +0 -12
  295. package/http-request-state/http-state-module.d.ts +0 -11
  296. package/http-request-state/rxjs/getRequestorBody.d.ts +0 -3
  297. package/http-request-state/rxjs/getRequestorState.d.ts +0 -3
  298. package/http-request-state/rxjs/tapError.d.ts +0 -3
  299. package/http-request-state/rxjs/tapSuccess.d.ts +0 -3
  300. package/http-request-state/types.d.ts +0 -36
  301. package/index.d.ts +0 -5
  302. package/ngrx/actionable-selector.d.ts +0 -15
  303. package/ngrx/index.d.ts +0 -1
  304. package/rxjs/defaultShareReplay.d.ts +0 -2
  305. package/rxjs/mapError.d.ts +0 -2
  306. package/rxjs/rxjs-operators.d.ts +0 -12
  307. package/rxjs/subjectifier.d.ts +0 -9
  308. package/table-builder/classes/DefaultSettings.d.ts +0 -8
  309. package/table-builder/classes/GenericTableDataSource.d.ts +0 -8
  310. package/table-builder/classes/MatTableObservableDataSource.d.ts +0 -9
  311. package/table-builder/classes/TableBuilderConfig.d.ts +0 -19
  312. package/table-builder/classes/TableState.d.ts +0 -46
  313. package/table-builder/classes/data-filter.d.ts +0 -9
  314. package/table-builder/classes/filter-info.d.ts +0 -40
  315. package/table-builder/classes/table-builder-general-settings.d.ts +0 -43
  316. package/table-builder/classes/table-builder.d.ts +0 -14
  317. package/table-builder/classes/table-store.d.ts +0 -114
  318. package/table-builder/components/array-column.component.d.ts +0 -14
  319. package/table-builder/components/column-builder/column-builder.component.d.ts +0 -50
  320. package/table-builder/components/date-filter/date-filter.component.d.ts +0 -10
  321. package/table-builder/components/filter/filter.component.d.ts +0 -294
  322. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -27
  323. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +0 -16
  324. package/table-builder/components/generic-table/generic-table.component.d.ts +0 -71
  325. package/table-builder/components/generic-table/paginator.component.d.ts +0 -28
  326. package/table-builder/components/group-by-list/group-by-list.component.d.ts +0 -10
  327. package/table-builder/components/header-menu/header-menu.component.d.ts +0 -25
  328. package/table-builder/components/in-filter/in-filter.component.d.ts +0 -22
  329. package/table-builder/components/initialization-component/initialization-component.d.ts +0 -12
  330. package/table-builder/components/link-column.component.d.ts +0 -17
  331. package/table-builder/components/number-filter/number-filter.component.d.ts +0 -12
  332. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +0 -24
  333. package/table-builder/components/sort-menu/sort-menu.component.d.ts +0 -25
  334. package/table-builder/components/table-container/table-container.d.ts +0 -65
  335. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +0 -17
  336. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +0 -14
  337. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +0 -14
  338. package/table-builder/directives/custom-cell-directive.d.ts +0 -19
  339. package/table-builder/directives/multi-sort.directive.d.ts +0 -11
  340. package/table-builder/directives/resize-column.directive.d.ts +0 -43
  341. package/table-builder/directives/table-wrapper.directive.d.ts +0 -11
  342. package/table-builder/directives/tb-filter.directive.d.ts +0 -120
  343. package/table-builder/enums/filterTypes.d.ts +0 -31
  344. package/table-builder/functions/boolean-filter-function.d.ts +0 -3
  345. package/table-builder/functions/date-filter-function.d.ts +0 -3
  346. package/table-builder/functions/download-data.d.ts +0 -1
  347. package/table-builder/functions/null-filter-function.d.ts +0 -2
  348. package/table-builder/functions/number-filter-function.d.ts +0 -4
  349. package/table-builder/functions/sort-data-function.d.ts +0 -3
  350. package/table-builder/functions/string-filter-function.d.ts +0 -7
  351. package/table-builder/interfaces/report-def.d.ts +0 -135
  352. package/table-builder/material.module.d.ts +0 -34
  353. package/table-builder/ngrx/actions.d.ts +0 -23
  354. package/table-builder/ngrx/effects.d.ts +0 -19
  355. package/table-builder/ngrx/reducer.d.ts +0 -15
  356. package/table-builder/ngrx/selectors.d.ts +0 -22
  357. package/table-builder/pipes/column-total.pipe.d.ts +0 -8
  358. package/table-builder/pipes/format-filter-type.pipe.d.ts +0 -8
  359. package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -14
  360. package/table-builder/pipes/key-display.d.ts +0 -11
  361. package/table-builder/services/export-to-csv.service.d.ts +0 -22
  362. package/table-builder/services/link-creator.service.d.ts +0 -12
  363. package/table-builder/services/table-template-service.d.ts +0 -14
  364. package/table-builder/services/transform-creator.d.ts +0 -19
  365. package/table-builder/table-builder.module.d.ts +0 -45
  366. package/utilities/directives/auto-focus.directive.d.ts +0 -10
  367. package/utilities/directives/clickEmitterDirective.d.ts +0 -7
  368. package/utilities/directives/clickSubject.d.ts +0 -9
  369. package/utilities/directives/conditional-classes.directive.d.ts +0 -14
  370. package/utilities/directives/dialog-service.d.ts +0 -10
  371. package/utilities/directives/dialog.d.ts +0 -45
  372. package/utilities/directives/mat-toggle-group-directive.d.ts +0 -21
  373. package/utilities/directives/prevent-enter.directive.d.ts +0 -6
  374. package/utilities/directives/stop-propagation.directive.d.ts +0 -7
  375. package/utilities/directives/styler.d.ts +0 -9
  376. package/utilities/directives/trim-whitespace.directive.d.ts +0 -9
  377. package/utilities/module.d.ts +0 -19
  378. package/utilities/pipes/function.pipe.d.ts +0 -7
  379. package/utilities/pipes/phone.pipe.d.ts +0 -7
  380. package/utilities/pipes/space-case.pipes.d.ts +0 -17
package/karma.conf.js ADDED
@@ -0,0 +1,44 @@
1
+ // Karma configuration file, see link for more information
2
+ // https://karma-runner.github.io/1.0/config/configuration-file.html
3
+
4
+ module.exports = function (config) {
5
+ config.set({
6
+ basePath: '',
7
+ frameworks: ['jasmine', '@angular-devkit/build-angular'],
8
+ plugins: [
9
+ require('karma-jasmine'),
10
+ require('karma-chrome-launcher'),
11
+ require('karma-jasmine-html-reporter'),
12
+ require('karma-coverage'),
13
+ require('@angular-devkit/build-angular/plugins/karma')
14
+ ],
15
+ client: {
16
+ jasmine: {
17
+ // you can add configuration options for Jasmine here
18
+ // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
19
+ // for example, you can disable the random execution with `random: false`
20
+ // or set a specific seed with `seed: 4321`
21
+ },
22
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
23
+ },
24
+ jasmineHtmlReporter: {
25
+ suppressAll: true // removes the duplicated traces
26
+ },
27
+ coverageReporter: {
28
+ dir: require('path').join(__dirname, '../../coverage/http-request-state'),
29
+ subdir: '.',
30
+ reporters: [
31
+ { type: 'html' },
32
+ { type: 'text-summary' }
33
+ ]
34
+ },
35
+ reporters: ['progress', 'kjhtml'],
36
+ port: 9876,
37
+ colors: true,
38
+ logLevel: config.LOG_INFO,
39
+ autoWatch: true,
40
+ browsers: ['Chrome'],
41
+ singleRun: false,
42
+ restartOnFileChange: true
43
+ });
44
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/angular-utilities",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ }
7
+ }
package/package.json CHANGED
@@ -1,36 +1,16 @@
1
- {
2
- "name": "@one-paragon/angular-utilities",
3
- "version": "0.1.19",
4
- "peerDependencies": {
5
- "@angular/common": "^14.0.0",
6
- "@angular/core": "^14.0.0",
7
- "@angular/material": "^14.0.0",
8
- "@ngrx/component": "^14.0.0",
9
- "@ngrx/component-store": "^14.0.0",
10
- "@ngrx/effects": "^14.0.0",
11
- "@ngrx/store": "^14.0.0"
12
- },
13
- "dependencies": {
14
- "tslib": "^2.1.0"
15
- },
16
- "module": "fesm2015/one-paragon-angular-utilities.mjs",
17
- "es2020": "fesm2020/one-paragon-angular-utilities.mjs",
18
- "esm2020": "esm2020/one-paragon-angular-utilities.mjs",
19
- "fesm2020": "fesm2020/one-paragon-angular-utilities.mjs",
20
- "fesm2015": "fesm2015/one-paragon-angular-utilities.mjs",
21
- "typings": "index.d.ts",
22
- "exports": {
23
- "./package.json": {
24
- "default": "./package.json"
25
- },
26
- ".": {
27
- "types": "./index.d.ts",
28
- "esm2020": "./esm2020/one-paragon-angular-utilities.mjs",
29
- "es2020": "./fesm2020/one-paragon-angular-utilities.mjs",
30
- "es2015": "./fesm2015/one-paragon-angular-utilities.mjs",
31
- "node": "./fesm2015/one-paragon-angular-utilities.mjs",
32
- "default": "./fesm2020/one-paragon-angular-utilities.mjs"
33
- }
34
- },
35
- "sideEffects": false
36
- }
1
+ {
2
+ "name": "@one-paragon/angular-utilities",
3
+ "version": "0.1.21",
4
+ "peerDependencies": {
5
+ "@angular/common": "^15.0.1",
6
+ "@angular/core": "^15.0.1",
7
+ "@angular/material": "^15.0.0",
8
+ "@ngrx/component": "^14.3.2",
9
+ "@ngrx/component-store": "^14.3.2",
10
+ "@ngrx/effects": "^14.3.2",
11
+ "@ngrx/store": "^14.3.2"
12
+ },
13
+ "dependencies": {
14
+ "tslib": "^2.4.1"
15
+ }
16
+ }
@@ -0,0 +1,16 @@
1
+ #blocker {
2
+ position:fixed;
3
+ top: 0px;
4
+ left: 0px;
5
+ width:100%;
6
+ height:100%;
7
+ background-color:rgba(14, 13, 13, 0.411);
8
+ z-index:999999;
9
+ }
10
+
11
+ .spinner{
12
+ position: absolute;
13
+ top:50%;
14
+ left:40%;
15
+ transform: translate(-50%, -50%);
16
+ }
@@ -0,0 +1,3 @@
1
+ <div id="blocker" *ngIf="(serverActionStatus$ | async)?.status === serverStatusTypes.inProgress">
2
+ <mat-spinner class="spinner" [diameter]="200"></mat-spinner>
3
+ </div>
@@ -0,0 +1,25 @@
1
+ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { ActionStateSpinnerComponent } from './action-state-spinner.component';
4
+
5
+ describe('ActionStateSpinnerComponent', () => {
6
+ let component: ActionStateSpinnerComponent;
7
+ let fixture: ComponentFixture<ActionStateSpinnerComponent>;
8
+
9
+ beforeEach(async(() => {
10
+ TestBed.configureTestingModule({
11
+ declarations: [ ActionStateSpinnerComponent ]
12
+ })
13
+ .compileComponents();
14
+ }));
15
+
16
+ beforeEach(() => {
17
+ fixture = TestBed.createComponent(ActionStateSpinnerComponent);
18
+ component = fixture.componentInstance;
19
+ fixture.detectChanges();
20
+ });
21
+
22
+ it('should create', () => {
23
+ expect(component).toBeTruthy();
24
+ });
25
+ });
@@ -0,0 +1,22 @@
1
+ import { Component, OnInit, Input } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { ActionStatus, serverStatusTypes } from '../ngrx';
4
+ import { delayOn } from '../../rxjs';
5
+
6
+ @Component({
7
+ selector: 'lib-action-state-spinner',
8
+ templateUrl: './action-state-spinner.component.html',
9
+ styleUrls: ['./action-state-spinner.component.css']
10
+ })
11
+ export class ActionStateSpinnerComponent implements OnInit {
12
+
13
+ @Input() status$!: Observable<ActionStatus>;
14
+ serverActionStatus$!: Observable<ActionStatus>;
15
+ serverStatusTypes = serverStatusTypes;
16
+
17
+ ngOnInit() {
18
+ this.serverActionStatus$ = this.status$.pipe(
19
+ delayOn( a => a.status === serverStatusTypes.inProgress , 500)
20
+ );
21
+ }
22
+ }
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';
4
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
5
+
6
+
7
+ @NgModule({
8
+ declarations: [
9
+ ActionStateSpinnerComponent,
10
+ ],
11
+ imports: [
12
+ CommonModule,
13
+ MatProgressSpinnerModule,
14
+ ],
15
+ exports: [
16
+ ActionStateSpinnerComponent,
17
+ ]
18
+ })
19
+ export class ActionStateUiModule { }
@@ -1,3 +1,7 @@
1
+ /*
2
+ * Public API Surface of action-state
3
+ */
4
+
1
5
  export * from './ngrx';
2
6
  export * from './ngrx-ext/ngrx-ext.module';
3
7
  export * from './action-state-ui/action-state-ui.module';
@@ -0,0 +1,15 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { actionStatusReducer } from '../ngrx';
4
+ import { StoreModule } from '@ngrx/store';
5
+
6
+
7
+
8
+ @NgModule({
9
+ declarations: [],
10
+ imports: [
11
+ CommonModule,
12
+ StoreModule.forFeature('ActionStatus', actionStatusReducer),
13
+ ]
14
+ })
15
+ export class NgrxExtModule { }
@@ -0,0 +1,69 @@
1
+ import { Action, createFeatureSelector, createSelector } from '@ngrx/store';
2
+ import { createEntityAdapter, EntityState } from '@ngrx/entity';
3
+ import { get } from 'lodash';
4
+
5
+ // State
6
+ export class AppStatusState {
7
+ readonly ActionStatusBar!: ActionStatus[];
8
+ }
9
+
10
+ export interface StatusState {
11
+ ids: string[];
12
+ entities: {[id: string]: ActionStatus};
13
+ }
14
+
15
+ export class ActionStatus {
16
+ id!: string;
17
+ displayName?: string;
18
+ status!: serverStatusTypes;
19
+ responsePayload?: any;
20
+ }
21
+
22
+ const intitalState: StatusState = {
23
+ ids: [],
24
+ entities: {}
25
+ };
26
+
27
+ export enum serverStatusTypes {
28
+ notStarted = 0,
29
+ inProgress = 1,
30
+ success = 2,
31
+ error = 3
32
+ }
33
+
34
+ // Entity and Selectors
35
+ export const statusAdapter = createEntityAdapter<ActionStatus>(); // { selectId: a => a.id }
36
+ export interface State extends EntityState<ActionStatus> {}
37
+ export const initialState: StatusState = statusAdapter.getInitialState(intitalState);
38
+
39
+ export const getStatusState = createFeatureSelector<State>('ActionStatus');
40
+ export const {
41
+ selectIds,
42
+ selectEntities,
43
+ selectAll,
44
+ selectTotal
45
+ } = statusAdapter.getSelectors(getStatusState);
46
+
47
+ export const selectEntity = (id: string) => createSelector(
48
+ selectEntities,
49
+ (entities: any) => entities[id]
50
+ );
51
+
52
+ // Reducers
53
+ export function actionStatusReducer(state: StatusState = initialState, action: Action) {
54
+
55
+ const actionStatus: ActionStatus = get(action, 'payload.actionStatus' );
56
+
57
+ if ( actionStatus ) {
58
+ if ( state.ids.find(id => id === actionStatus.id) ) {
59
+ const modifiedObj = {...state.entities[actionStatus.id] };
60
+ modifiedObj.status = actionStatus.status;
61
+ modifiedObj.responsePayload = actionStatus.responsePayload;
62
+ return statusAdapter.upsertOne( modifiedObj, state);
63
+ } else {
64
+ return statusAdapter.addOne(actionStatus , state);
65
+ }
66
+
67
+ }
68
+ return state;
69
+ }
@@ -0,0 +1,26 @@
1
+ import { Injectable, OnDestroy } from "@angular/core";
2
+ import { HttpRequestFactory, RequestStateOptions } from "./types";
3
+ import { HttpRequestStateStore } from './HttpRequestStateStore';
4
+ import { Observable } from "rxjs";
5
+
6
+ @Injectable()
7
+ export class HttpRequestStateFactory implements OnDestroy {
8
+
9
+ constructor() {}
10
+ ngOnDestroy(): void {
11
+ this.requestors.forEach( request => request.ngOnDestroy());
12
+ }
13
+ private requestors: OnDestroy[] = [];
14
+ create<TParam extends any[], T>( req: HttpRequestFactory<TParam,T>, options?: RequestStateOptions ) : HttpRequestStateStore<TParam,T> {
15
+ const requestor = new HttpRequestStateStore(req, options);
16
+ this.requestors.push(requestor);
17
+ return requestor;
18
+ }
19
+
20
+ createHttpClient<T>( r: (o: Observable<T> ) => Observable<T> , options?: RequestStateOptions ) {
21
+ const requestor = new HttpRequestStateStore(r, options);
22
+ this.requestors.push(requestor);
23
+ return requestor;
24
+ }
25
+
26
+ }
@@ -0,0 +1,147 @@
1
+ import { Observable, of, Subscription } from 'rxjs';
2
+ import { ComponentStore } from '@ngrx/component-store';
3
+ import { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions, HttpRequestStateCancelled } from './types';
4
+ import { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';
5
+ import { concatMap, filter, map, mergeMap, pluck, startWith, switchMap, tap } from 'rxjs/operators';
6
+ import { HttpErrorResponse } from '@angular/common/http';
7
+ import { mapError } from '../rxjs/mapError';
8
+ import { defaultShareReplay } from '../rxjs/defaultShareReplay';
9
+ import { Directive } from '@angular/core';
10
+
11
+ export interface RequestResponse<TParam extends any[],T> {
12
+ requestParams: [...TParam];
13
+ response: HttpRequestState<T>;
14
+ }
15
+
16
+ @Directive()
17
+ export class HttpRequestStateStore<TParam extends any[], T> extends ComponentStore<RequestResponse<TParam,T>> {
18
+
19
+ constructor(private req: HttpRequestFactory<TParam,T> ,private options?: RequestStateOptions) {
20
+ super({ requestParams: null as any ,response: notStarted });
21
+ this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;
22
+ }
23
+
24
+ reset() {
25
+ this.setState({ requestParams:null as any, response: notStarted });
26
+ }
27
+
28
+ private flatteningStrategy = () => {
29
+ if(this.options?.strategy === HttpRequestStrategy.concurrent)
30
+ return mergeMap( (params: [...TParam]) => this.createRequest(...params));
31
+ if(this.options?.strategy === HttpRequestStrategy.sequential)
32
+ return concatMap( (params: [...TParam]) => this.createRequest(...params));
33
+ return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?
34
+ of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } as HttpRequestStateCancelled } ) : this.createRequest(...params) );
35
+ }
36
+
37
+ private requestEffect: (value: [...TParam] ) => Subscription = this.effect((obs: Observable<[...TParam]>) => {
38
+ return (obs).pipe(
39
+ this.flatteningStrategy(),
40
+ tap<RequestResponse<TParam, T>>(state => this.setState(state)),
41
+ );
42
+ });
43
+
44
+ private flattenedRequest = (...value: [...TParam]) => {
45
+ return this.requestEffect(value) as Subscription;
46
+ }
47
+ private singleUseRequest = (...value: [...TParam]) => {
48
+ if (this.get().response.status !== HttpRequestStatus.notStarted) {
49
+ throw new Error("state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.");
50
+ }
51
+ return this.requestEffect(value) as Subscription;
52
+ }
53
+
54
+ selectHttpState$ = this.state$.pipe(map(a => a.response));
55
+
56
+ selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));
57
+
58
+ selectError$ = this.state$.pipe(
59
+ map(r => r.response),
60
+ filter(isErrorState),
61
+ map( state => state.error)
62
+ );
63
+
64
+ selectResponse$ = this.state$.pipe(
65
+ map(r => r.response),
66
+ filter(isSuccessState),
67
+ map( state => state.body)
68
+ );
69
+ selectSuccessOrError$ = this.state$.pipe(
70
+ map(r => r.response),
71
+ filter(isSuccessOrErrorState),
72
+ map( () => null)
73
+ );
74
+
75
+ errorHandled = false;
76
+ onError( cb: (error: HttpErrorResponse) => void) {
77
+ this.errorHandled = true;
78
+ this.on(this.selectError$, cb);
79
+ return this;
80
+ }
81
+
82
+ onSuccess( cb: (body: T) => void) {
83
+ this.on(this.selectResponse$, cb);
84
+ return this;
85
+ }
86
+
87
+ onSuccessOrError(cb: () => void){
88
+ this.on(this.selectSuccessOrError$, cb);
89
+ return this;
90
+ }
91
+
92
+ onSuccessWithRequest(func: (state: {
93
+ requestParams: [...TParam];
94
+ body: T;
95
+ }) => void) {
96
+ this.onUpdate(({ requestParams, response }) => {
97
+ if(isSuccessState(response)){
98
+ func({requestParams,body: response.body});
99
+ }
100
+ });
101
+ return this;
102
+ }
103
+
104
+ onErrorWithRequest(func: (state: {
105
+ error: HttpErrorResponse;
106
+ requestParams: [...TParam];
107
+ }) => void) {
108
+ this.onUpdate( ({ requestParams, response }) => {
109
+ if(isErrorState(response)){
110
+ func({ requestParams, error: response.error });
111
+ }
112
+ });
113
+ return this;
114
+ }
115
+
116
+ private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam,T>> {
117
+ return this.req(...params).pipe(
118
+ map(createSuccess),
119
+ mapError(createFailure),
120
+ startWith(inProgress),
121
+ map( state => ({ requestParams: params, response: state })),
122
+ defaultShareReplay()
123
+ );
124
+ }
125
+
126
+ onUpdate(func: (state: {
127
+ requestParams: [...TParam];
128
+ response: HttpRequestState<T>;
129
+ }) => void) {
130
+ this.on(this.state$, func);
131
+ }
132
+
133
+ on = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {
134
+ return this.effect((src: Observable<V>) => {
135
+ return src.pipe(tap(func));
136
+ })(srcObservable) as Subscription;
137
+ }
138
+
139
+ request: (...value: [...TParam] ) => Subscription;
140
+
141
+ ngOnDestroy() {
142
+ super.ngOnDestroy();
143
+ }
144
+
145
+ }
146
+
147
+ export class CancellationToken {}
@@ -0,0 +1,38 @@
1
+ import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { HttpRequestState } from '../types';
3
+ import { HttpRequestStateDirective } from './request-state-directive';
4
+
5
+ @Directive()
6
+ export abstract class HttpStateDirectiveBase {
7
+ hasView = false;
8
+ constructor(
9
+ private injector: Injector,
10
+ protected templateRef: TemplateRef<any>,
11
+ protected viewContainer: ViewContainerRef,
12
+ ) {
13
+
14
+ }
15
+
16
+ ngOnInit() {
17
+ const parent = this.injector.get(HttpRequestStateDirective);
18
+ if(parent == null) {
19
+ throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');
20
+ }
21
+ parent.hooks.push(this.baseRender);
22
+ this.baseRender(parent.ViewContext.state);
23
+ }
24
+
25
+ ngOnDestroy() {
26
+
27
+ }
28
+
29
+ private baseRender = (state:HttpRequestState ) : void => {
30
+ if (this.hasView) {
31
+ this.viewContainer.clear();
32
+ this.hasView = false;
33
+ }
34
+ this.hasView = this.render(state);
35
+ }
36
+
37
+ abstract render: (state: HttpRequestState) => boolean;
38
+ }
@@ -0,0 +1,32 @@
1
+ import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { isErrorState } from '../helpers';
3
+ import { HttpRequestState } from '../types';
4
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
5
+
6
+ @Directive({ selector: '[httpErrorState]' })
7
+ export class HttpErrorStateDirective<TParam extends any[], T> extends HttpStateDirectiveBase {
8
+
9
+ constructor(
10
+ injector: Injector,
11
+ templateRef: TemplateRef<any>,
12
+ viewContainer: ViewContainerRef,
13
+ ) {
14
+ super(injector, templateRef, viewContainer);
15
+ }
16
+
17
+ render = (state: HttpRequestState<any>) => {
18
+ if (isErrorState(state)) {
19
+ this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });
20
+ return true;
21
+ }
22
+ return false;
23
+ };
24
+
25
+ ngOnInit() {
26
+ super.ngOnInit();
27
+ }
28
+
29
+ ngOnDestroy() {
30
+ super.ngOnDestroy();
31
+ }
32
+ }
@@ -0,0 +1,32 @@
1
+ import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
3
+ import { HttpRequestState, HttpRequestStatus } from '../types'
4
+
5
+
6
+ @Directive({ selector: '[httpInProgressState]' })
7
+ export class HttpInProgressStateDirective extends HttpStateDirectiveBase {
8
+ render = (state: HttpRequestState<any>) => {
9
+ if(state.status === HttpRequestStatus.inProgress){
10
+ this.viewContainer.createEmbeddedView(this.templateRef );
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+
16
+ constructor(
17
+ injector: Injector,
18
+ templateRef: TemplateRef<any>,
19
+ viewContainer: ViewContainerRef,
20
+ ) {
21
+ super(injector,templateRef,viewContainer);
22
+ }
23
+
24
+ ngOnInit() {
25
+ super.ngOnInit();
26
+ }
27
+
28
+ ngOnDestroy() {
29
+ super.ngOnDestroy();
30
+ }
31
+
32
+ }
@@ -0,0 +1,31 @@
1
+ import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { HttpRequestState, HttpRequestStatus } from '../types';
3
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
+
5
+
6
+ @Directive({ selector: '[httpNotStartedState]' })
7
+ export class HttpNotStartedStateDirective<TParam extends any[],T> extends HttpStateDirectiveBase {
8
+ render = (state: HttpRequestState<any>) => {
9
+ if(state.status === HttpRequestStatus.notStarted){
10
+ this.viewContainer.createEmbeddedView(this.templateRef );
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+
16
+ constructor(
17
+ injector: Injector,
18
+ templateRef: TemplateRef<any>,
19
+ viewContainer: ViewContainerRef,
20
+ ) {
21
+ super(injector,templateRef,viewContainer);
22
+ }
23
+
24
+ ngOnInit() {
25
+ super.ngOnInit();
26
+ }
27
+
28
+ ngOnDestroy() {
29
+ super.ngOnDestroy();
30
+ }
31
+ }
@@ -0,0 +1,31 @@
1
+ import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { isSuccessState } from '../helpers';
3
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
+ import { HttpRequestState } from '../types';
5
+
6
+ @Directive({ selector: '[httpSuccessState]'})
7
+ export class HttpSuccessStateDirective<T> extends HttpStateDirectiveBase {
8
+ render = (state: HttpRequestState<any>) => {
9
+ if(isSuccessState(state)){
10
+ this.viewContainer.createEmbeddedView(this.templateRef,{ $implicit: state.body} );
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+
16
+ constructor(
17
+ injector: Injector,
18
+ templateRef: TemplateRef<{$implicit: T}>,
19
+ viewContainer: ViewContainerRef,
20
+ ) {
21
+ super(injector,templateRef,viewContainer);
22
+ }
23
+
24
+ ngOnInit() {
25
+ super.ngOnInit();
26
+ }
27
+
28
+ ngOnDestroy() {
29
+ super.ngOnDestroy();
30
+ }
31
+ }
@@ -1,5 +1,5 @@
1
- export * from './http-error-state-directive';
2
- export * from './http-inProgress-state-directive';
3
- export * from './http-notStarted-state-directive';
4
- export * from './http-success-state-directive';
5
- export * from './request-state-directive';
1
+ export * from './http-error-state-directive';
2
+ export * from './http-inProgress-state-directive';
3
+ export * from './http-notStarted-state-directive';
4
+ export * from './http-success-state-directive';
5
+ export * from './request-state-directive';