@verisoft/ui-primeng 18.7.0 → 18.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +7 -57
  2. package/assets/icons/complex/v-logo.svg +4 -4
  3. package/assets/sass/base/_scrollbar.scss +18 -18
  4. package/assets/sass/base/_typography.scss +24 -24
  5. package/assets/sass/layout/_app.scss +26 -26
  6. package/assets/sass/layout/_button.scss +57 -57
  7. package/assets/sass/layout/_checkbox.scss +32 -32
  8. package/assets/sass/layout/_dialog.scss +12 -12
  9. package/assets/sass/layout/_dropdown.scss +8 -8
  10. package/assets/sass/layout/_formField.scss +4 -4
  11. package/assets/sass/layout/_header.scss +62 -62
  12. package/assets/sass/layout/_icons.scss +12 -12
  13. package/assets/sass/layout/_inputSwitch.scss +12 -12
  14. package/assets/sass/layout/_layout.scss +5 -5
  15. package/assets/sass/layout/_loader.scss +8 -8
  16. package/assets/sass/layout/_radiobutton.scss +21 -21
  17. package/assets/sass/layout/_sidemenu.scss +172 -172
  18. package/assets/sass/layout/_snackbar.scss +7 -7
  19. package/assets/sass/layout/_tables.scss +4 -4
  20. package/assets/sass/layout/_tree.scss +11 -11
  21. package/assets/sass/layout/_tristatecheckbox.scss +14 -14
  22. package/assets/sass/main.scss +28 -28
  23. package/assets/sass/themes/_verisoft_theme.scss +46 -46
  24. package/assets/sass/utils/_utils.scss +39 -39
  25. package/assets/sass/utils/_variables.scss +12 -12
  26. package/assets/sass/vendors/_bootstrap.scss +2 -2
  27. package/assets/sass/vendors/_primeng.scss +2 -2
  28. package/esm2022/index.mjs +30 -0
  29. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +31 -0
  30. package/esm2022/lib/components/breadcrumb/breadcrumb.pipe.mjs +17 -0
  31. package/esm2022/lib/components/breadcrumb/index.mjs +2 -0
  32. package/esm2022/lib/components/button/button.component.mjs +61 -0
  33. package/esm2022/lib/components/button/index.mjs +2 -0
  34. package/esm2022/lib/components/calendar/calendar.component.mjs +73 -0
  35. package/esm2022/lib/components/calendar/index.mjs +2 -0
  36. package/esm2022/lib/components/checkbox/checkbox.component.mjs +47 -0
  37. package/esm2022/lib/components/checkbox/index.mjs +2 -0
  38. package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +65 -0
  39. package/esm2022/lib/components/confirm-dialog/index.mjs +2 -0
  40. package/esm2022/lib/components/dropdown/dropdown.component.mjs +139 -0
  41. package/esm2022/lib/components/dropdown/index.mjs +2 -0
  42. package/esm2022/lib/components/errors/error.component.mjs +41 -0
  43. package/esm2022/lib/components/errors/index.mjs +2 -0
  44. package/esm2022/lib/components/form-field/form-field.component.mjs +41 -0
  45. package/esm2022/lib/components/form-field/index.mjs +2 -0
  46. package/esm2022/lib/components/header/header.component.mjs +58 -0
  47. package/esm2022/lib/components/header/index.mjs +3 -0
  48. package/esm2022/lib/components/header/services/header-provider.service.mjs +24 -0
  49. package/esm2022/lib/components/input-group/index.mjs +2 -0
  50. package/esm2022/lib/components/input-group/input-group.component.mjs +57 -0
  51. package/esm2022/lib/components/loader/index.mjs +2 -0
  52. package/esm2022/lib/components/loader/loader.component.mjs +19 -0
  53. package/esm2022/lib/components/multiselect/index.mjs +2 -0
  54. package/esm2022/lib/components/multiselect/multiselect.component.mjs +124 -0
  55. package/esm2022/lib/components/number-input/index.mjs +2 -0
  56. package/esm2022/lib/components/number-input/number-input.component.mjs +64 -0
  57. package/esm2022/lib/components/page-header/index.mjs +2 -0
  58. package/esm2022/lib/components/page-header/page-header.component.mjs +28 -0
  59. package/esm2022/lib/components/password/index.mjs +2 -0
  60. package/esm2022/lib/components/password/password.component.mjs +59 -0
  61. package/esm2022/lib/components/radiobutton/index.mjs +2 -0
  62. package/esm2022/lib/components/radiobutton/radiobutton.component.mjs +57 -0
  63. package/esm2022/lib/components/section/index.mjs +2 -0
  64. package/esm2022/lib/components/section/section.component.mjs +35 -0
  65. package/esm2022/lib/components/shared-components/action-button-group/action-button-group.component.mjs +92 -0
  66. package/esm2022/lib/components/shared-components/action-button-group/components/action-button/action-button.component.mjs +60 -0
  67. package/esm2022/lib/components/shared-components/action-button-group/index.mjs +3 -0
  68. package/esm2022/lib/components/shared-components/dynamic-component/dynamic-component-factory.service.mjs +90 -0
  69. package/esm2022/lib/components/shared-components/dynamic-component/dynamic-component.component.mjs +41 -0
  70. package/esm2022/lib/components/shared-components/dynamic-component/index.mjs +3 -0
  71. package/esm2022/lib/components/shared-components/feature-list/directives/feature-list-column.directive.mjs +46 -0
  72. package/esm2022/lib/components/shared-components/feature-list/directives/feature-list-filter-field.directive.mjs +16 -0
  73. package/esm2022/lib/components/shared-components/feature-list/feature-list-filter.pipe.mjs +24 -0
  74. package/esm2022/lib/components/shared-components/feature-list/feature-list-page.component.mjs +42 -0
  75. package/esm2022/lib/components/shared-components/feature-list/feature-list-page.model.mjs +16 -0
  76. package/esm2022/lib/components/shared-components/feature-list/feature-list.component.mjs +275 -0
  77. package/esm2022/lib/components/shared-components/feature-list/index.mjs +6 -0
  78. package/esm2022/lib/components/shared-components/filter/directives/filter-field.directive.mjs +44 -0
  79. package/esm2022/lib/components/shared-components/filter/filter.component.mjs +190 -0
  80. package/esm2022/lib/components/shared-components/filter/filter.model.mjs +16 -0
  81. package/esm2022/lib/components/shared-components/filter/index.mjs +3 -0
  82. package/esm2022/lib/components/shared-components/generic-field/generic-field.component.mjs +93 -0
  83. package/esm2022/lib/components/shared-components/generic-field/index.mjs +2 -0
  84. package/esm2022/lib/components/shared-components/generic-form/generic-form.component.mjs +40 -0
  85. package/esm2022/lib/components/shared-components/generic-form/generic-form.model.mjs +50 -0
  86. package/esm2022/lib/components/shared-components/generic-form/index.mjs +3 -0
  87. package/esm2022/lib/components/shared-components/index.mjs +7 -0
  88. package/esm2022/lib/components/side-menu/index.mjs +3 -0
  89. package/esm2022/lib/components/side-menu/side-menu.component.mjs +92 -0
  90. package/esm2022/lib/components/side-menu/side-menu.module.mjs +74 -0
  91. package/esm2022/lib/components/slider/index.mjs +2 -0
  92. package/esm2022/lib/components/slider/slider.component.mjs +62 -0
  93. package/esm2022/lib/components/snackbar/index.mjs +3 -0
  94. package/esm2022/lib/components/snackbar/services/snackbar.service.mjs +50 -0
  95. package/esm2022/lib/components/snackbar/snackbar.component.mjs +33 -0
  96. package/esm2022/lib/components/stepper/index.mjs +2 -0
  97. package/esm2022/lib/components/stepper/stepper.component.mjs +48 -0
  98. package/esm2022/lib/components/switch/index.mjs +2 -0
  99. package/esm2022/lib/components/switch/switch.component.mjs +54 -0
  100. package/esm2022/lib/components/tab-view/index.mjs +4 -0
  101. package/esm2022/lib/components/tab-view/tab-menu.pipe.mjs +25 -0
  102. package/esm2022/lib/components/tab-view/tab-view-item.component.mjs +31 -0
  103. package/esm2022/lib/components/tab-view/tab-view.component.mjs +50 -0
  104. package/esm2022/lib/components/tab-view/tab-view.module.mjs +29 -0
  105. package/esm2022/lib/components/table/index.mjs +2 -0
  106. package/esm2022/lib/components/table/table-filter.pipe.mjs +49 -0
  107. package/esm2022/lib/components/table/table.component.mjs +220 -0
  108. package/esm2022/lib/components/table/table.models.mjs +17 -0
  109. package/esm2022/lib/components/textarea/index.mjs +2 -0
  110. package/esm2022/lib/components/textarea/textarea.component.mjs +65 -0
  111. package/esm2022/lib/components/textfield/index.mjs +2 -0
  112. package/esm2022/lib/components/textfield/textfield.component.mjs +65 -0
  113. package/esm2022/lib/components/tristatecheckbox/index.mjs +2 -0
  114. package/esm2022/lib/components/tristatecheckbox/tristatecheckbox.component.mjs +53 -0
  115. package/esm2022/lib/icons.mjs +35 -0
  116. package/esm2022/lib/interceptors/http-error-message.interceptor.mjs +31 -0
  117. package/esm2022/verisoft-ui-primeng.mjs +5 -0
  118. package/fesm2022/verisoft-ui-primeng.mjs +2909 -0
  119. package/fesm2022/verisoft-ui-primeng.mjs.map +1 -0
  120. package/{src/index.ts → index.d.ts} +29 -29
  121. package/lib/components/breadcrumb/breadcrumb.component.d.ts +6 -0
  122. package/lib/components/breadcrumb/breadcrumb.pipe.d.ts +9 -0
  123. package/{src/lib/components/breadcrumb/index.ts → lib/components/breadcrumb/index.d.ts} +1 -1
  124. package/lib/components/button/button.component.d.ts +20 -0
  125. package/{src/lib/components/button/index.ts → lib/components/button/index.d.ts} +1 -1
  126. package/lib/components/calendar/calendar.component.d.ts +17 -0
  127. package/{src/lib/components/calendar/index.ts → lib/components/calendar/index.d.ts} +1 -1
  128. package/lib/components/checkbox/checkbox.component.d.ts +9 -0
  129. package/{src/lib/components/checkbox/index.ts → lib/components/checkbox/index.d.ts} +1 -1
  130. package/lib/components/confirm-dialog/confirm-dialog.component.d.ts +15 -0
  131. package/{src/lib/components/confirm-dialog/index.ts → lib/components/confirm-dialog/index.d.ts} +1 -1
  132. package/lib/components/dropdown/dropdown.component.d.ts +38 -0
  133. package/{src/lib/components/dropdown/index.ts → lib/components/dropdown/index.d.ts} +1 -1
  134. package/lib/components/errors/error.component.d.ts +16 -0
  135. package/lib/components/errors/index.d.ts +1 -0
  136. package/lib/components/form-field/form-field.component.d.ts +12 -0
  137. package/{src/lib/components/form-field/index.ts → lib/components/form-field/index.d.ts} +1 -1
  138. package/lib/components/header/header.component.d.ts +23 -0
  139. package/{src/lib/components/header/index.ts → lib/components/header/index.d.ts} +2 -2
  140. package/lib/components/header/services/header-provider.service.d.ts +10 -0
  141. package/{src/lib/components/input-group/index.ts → lib/components/input-group/index.d.ts} +1 -1
  142. package/lib/components/input-group/input-group.component.d.ts +9 -0
  143. package/{src/lib/components/loader/index.ts → lib/components/loader/index.d.ts} +1 -1
  144. package/lib/components/loader/loader.component.d.ts +6 -0
  145. package/{src/lib/components/multiselect/index.ts → lib/components/multiselect/index.d.ts} +1 -1
  146. package/lib/components/multiselect/multiselect.component.d.ts +34 -0
  147. package/{src/lib/components/number-input/index.ts → lib/components/number-input/index.d.ts} +1 -1
  148. package/lib/components/number-input/number-input.component.d.ts +14 -0
  149. package/{src/lib/components/page-header/index.ts → lib/components/page-header/index.d.ts} +1 -1
  150. package/lib/components/page-header/page-header.component.d.ts +10 -0
  151. package/{src/lib/components/password/index.ts → lib/components/password/index.d.ts} +1 -1
  152. package/lib/components/password/password.component.d.ts +11 -0
  153. package/{src/lib/components/radiobutton/index.ts → lib/components/radiobutton/index.d.ts} +1 -1
  154. package/lib/components/radiobutton/radiobutton.component.d.ts +10 -0
  155. package/{src/lib/components/section/index.ts → lib/components/section/index.d.ts} +1 -1
  156. package/lib/components/section/section.component.d.ts +12 -0
  157. package/lib/components/shared-components/action-button-group/action-button-group.component.d.ts +29 -0
  158. package/lib/components/shared-components/action-button-group/components/action-button/action-button.component.d.ts +24 -0
  159. package/{src/lib/components/shared-components/action-button-group/index.ts → lib/components/shared-components/action-button-group/index.d.ts} +2 -2
  160. package/lib/components/shared-components/dynamic-component/dynamic-component-factory.service.d.ts +17 -0
  161. package/lib/components/shared-components/dynamic-component/dynamic-component.component.d.ts +16 -0
  162. package/{src/lib/components/shared-components/dynamic-component/index.ts → lib/components/shared-components/dynamic-component/index.d.ts} +2 -2
  163. package/lib/components/shared-components/feature-list/directives/feature-list-column.directive.d.ts +10 -0
  164. package/lib/components/shared-components/feature-list/directives/feature-list-filter-field.directive.d.ts +6 -0
  165. package/lib/components/shared-components/feature-list/feature-list-filter.pipe.d.ts +9 -0
  166. package/lib/components/shared-components/feature-list/feature-list-page.component.d.ts +9 -0
  167. package/lib/components/shared-components/feature-list/feature-list-page.model.d.ts +23 -0
  168. package/lib/components/shared-components/feature-list/feature-list.component.d.ts +62 -0
  169. package/{src/lib/components/shared-components/feature-list/index.ts → lib/components/shared-components/feature-list/index.d.ts} +5 -5
  170. package/lib/components/shared-components/filter/directives/filter-field.directive.d.ts +20 -0
  171. package/lib/components/shared-components/filter/filter.component.d.ts +53 -0
  172. package/lib/components/shared-components/filter/filter.model.d.ts +2 -0
  173. package/{src/lib/components/shared-components/filter/index.ts → lib/components/shared-components/filter/index.d.ts} +2 -2
  174. package/lib/components/shared-components/generic-field/generic-field.component.d.ts +28 -0
  175. package/{src/lib/components/shared-components/generic-field/index.ts → lib/components/shared-components/generic-field/index.d.ts} +1 -1
  176. package/lib/components/shared-components/generic-form/generic-form.component.d.ts +15 -0
  177. package/lib/components/shared-components/generic-form/generic-form.model.d.ts +4 -0
  178. package/{src/lib/components/shared-components/generic-form/index.ts → lib/components/shared-components/generic-form/index.d.ts} +2 -2
  179. package/{src/lib/components/shared-components/index.ts → lib/components/shared-components/index.d.ts} +6 -6
  180. package/{src/lib/components/side-menu/index.ts → lib/components/side-menu/index.d.ts} +2 -2
  181. package/lib/components/side-menu/side-menu.component.d.ts +27 -0
  182. package/lib/components/side-menu/side-menu.module.d.ts +13 -0
  183. package/{src/lib/components/slider/index.ts → lib/components/slider/index.d.ts} +1 -1
  184. package/lib/components/slider/slider.component.d.ts +12 -0
  185. package/{src/lib/components/snackbar/index.ts → lib/components/snackbar/index.d.ts} +2 -2
  186. package/lib/components/snackbar/services/snackbar.service.d.ts +12 -0
  187. package/lib/components/snackbar/snackbar.component.d.ts +9 -0
  188. package/{src/lib/components/stepper/index.ts → lib/components/stepper/index.d.ts} +1 -1
  189. package/lib/components/stepper/stepper.component.d.ts +17 -0
  190. package/{src/lib/components/switch/index.ts → lib/components/switch/index.d.ts} +1 -1
  191. package/lib/components/switch/switch.component.d.ts +9 -0
  192. package/{src/lib/components/tab-view/index.ts → lib/components/tab-view/index.d.ts} +3 -3
  193. package/lib/components/tab-view/tab-menu.pipe.d.ts +9 -0
  194. package/lib/components/tab-view/tab-view-item.component.d.ts +12 -0
  195. package/lib/components/tab-view/tab-view.component.d.ts +17 -0
  196. package/lib/components/tab-view/tab-view.module.d.ts +13 -0
  197. package/{src/lib/components/table/index.ts → lib/components/table/index.d.ts} +1 -1
  198. package/lib/components/table/table-filter.pipe.d.ts +13 -0
  199. package/lib/components/table/table.component.d.ts +67 -0
  200. package/lib/components/table/table.models.d.ts +4 -0
  201. package/{src/lib/components/textarea/index.ts → lib/components/textarea/index.d.ts} +1 -1
  202. package/lib/components/textarea/textarea.component.d.ts +12 -0
  203. package/{src/lib/components/textfield/index.ts → lib/components/textfield/index.d.ts} +1 -1
  204. package/lib/components/textfield/textfield.component.d.ts +12 -0
  205. package/{src/lib/components/tristatecheckbox/index.ts → lib/components/tristatecheckbox/index.d.ts} +1 -1
  206. package/lib/components/tristatecheckbox/tristatecheckbox.component.d.ts +9 -0
  207. package/lib/icons.d.ts +2 -0
  208. package/lib/interceptors/http-error-message.interceptor.d.ts +11 -0
  209. package/package.json +37 -22
  210. package/.eslintrc.json +0 -43
  211. package/assets/.gitkeep +0 -0
  212. package/jest.config.ts +0 -22
  213. package/ng-package.json +0 -15
  214. package/project.json +0 -36
  215. package/src/lib/components/breadcrumb/breadcrumb.component.html +0 -12
  216. package/src/lib/components/breadcrumb/breadcrumb.component.scss +0 -18
  217. package/src/lib/components/breadcrumb/breadcrumb.component.spec.ts +0 -21
  218. package/src/lib/components/breadcrumb/breadcrumb.component.stories.ts +0 -36
  219. package/src/lib/components/breadcrumb/breadcrumb.component.ts +0 -29
  220. package/src/lib/components/breadcrumb/breadcrumb.pipe.ts +0 -13
  221. package/src/lib/components/button/button.component.html +0 -20
  222. package/src/lib/components/button/button.component.scss +0 -0
  223. package/src/lib/components/button/button.component.spec.ts +0 -21
  224. package/src/lib/components/button/button.component.ts +0 -49
  225. package/src/lib/components/calendar/calendar.component.html +0 -53
  226. package/src/lib/components/calendar/calendar.component.scss +0 -0
  227. package/src/lib/components/calendar/calendar.component.spec.ts +0 -21
  228. package/src/lib/components/calendar/calendar.component.ts +0 -72
  229. package/src/lib/components/checkbox/checkbox.component.html +0 -19
  230. package/src/lib/components/checkbox/checkbox.component.scss +0 -15
  231. package/src/lib/components/checkbox/checkbox.component.spec.ts +0 -21
  232. package/src/lib/components/checkbox/checkbox.component.stories.ts +0 -72
  233. package/src/lib/components/checkbox/checkbox.component.ts +0 -45
  234. package/src/lib/components/confirm-dialog/confirm-dialog.component.html +0 -48
  235. package/src/lib/components/confirm-dialog/confirm-dialog.component.scss +0 -3
  236. package/src/lib/components/confirm-dialog/confirm-dialog.component.spec.ts +0 -21
  237. package/src/lib/components/confirm-dialog/confirm-dialog.component.stories.ts +0 -74
  238. package/src/lib/components/confirm-dialog/confirm-dialog.component.ts +0 -74
  239. package/src/lib/components/dropdown/dropdown.component.html +0 -96
  240. package/src/lib/components/dropdown/dropdown.component.scss +0 -16
  241. package/src/lib/components/dropdown/dropdown.component.spec.ts +0 -21
  242. package/src/lib/components/dropdown/dropdown.component.stories.ts +0 -90
  243. package/src/lib/components/dropdown/dropdown.component.ts +0 -144
  244. package/src/lib/components/errors/error.component.html +0 -6
  245. package/src/lib/components/errors/error.component.scss +0 -3
  246. package/src/lib/components/errors/error.component.ts +0 -35
  247. package/src/lib/components/errors/index.ts +0 -1
  248. package/src/lib/components/form-field/form-field.component.html +0 -36
  249. package/src/lib/components/form-field/form-field.component.scss +0 -0
  250. package/src/lib/components/form-field/form-field.component.spec.ts +0 -21
  251. package/src/lib/components/form-field/form-field.component.stories.ts +0 -69
  252. package/src/lib/components/form-field/form-field.component.ts +0 -38
  253. package/src/lib/components/header/header.component.html +0 -84
  254. package/src/lib/components/header/header.component.scss +0 -0
  255. package/src/lib/components/header/header.component.spec.ts +0 -21
  256. package/src/lib/components/header/header.component.stories.ts +0 -24
  257. package/src/lib/components/header/header.component.ts +0 -66
  258. package/src/lib/components/header/services/header-provider.service.ts +0 -15
  259. package/src/lib/components/input-group/input-group.component.html +0 -30
  260. package/src/lib/components/input-group/input-group.component.spec.ts +0 -21
  261. package/src/lib/components/input-group/input-group.component.ts +0 -60
  262. package/src/lib/components/loader/loader.component.html +0 -5
  263. package/src/lib/components/loader/loader.component.scss +0 -0
  264. package/src/lib/components/loader/loader.component.spec.ts +0 -21
  265. package/src/lib/components/loader/loader.component.ts +0 -17
  266. package/src/lib/components/multiselect/multiselect.component.html +0 -70
  267. package/src/lib/components/multiselect/multiselect.component.scss +0 -0
  268. package/src/lib/components/multiselect/multiselect.component.spec.ts +0 -21
  269. package/src/lib/components/multiselect/multiselect.component.ts +0 -122
  270. package/src/lib/components/number-input/number-input.component.html +0 -22
  271. package/src/lib/components/number-input/number-input.component.spec.ts +0 -21
  272. package/src/lib/components/number-input/number-input.component.ts +0 -57
  273. package/src/lib/components/page-header/page-header.component.html +0 -31
  274. package/src/lib/components/page-header/page-header.component.scss +0 -0
  275. package/src/lib/components/page-header/page-header.component.spec.ts +0 -21
  276. package/src/lib/components/page-header/page-header.component.ts +0 -32
  277. package/src/lib/components/password/password.component.html +0 -24
  278. package/src/lib/components/password/password.component.scss +0 -0
  279. package/src/lib/components/password/password.component.spec.ts +0 -21
  280. package/src/lib/components/password/password.component.ts +0 -58
  281. package/src/lib/components/radiobutton/radiobutton.component.html +0 -32
  282. package/src/lib/components/radiobutton/radiobutton.component.scss +0 -6
  283. package/src/lib/components/radiobutton/radiobutton.component.spec.ts +0 -21
  284. package/src/lib/components/radiobutton/radiobutton.component.stories.ts +0 -71
  285. package/src/lib/components/radiobutton/radiobutton.component.ts +0 -62
  286. package/src/lib/components/section/section.component.html +0 -23
  287. package/src/lib/components/section/section.component.scss +0 -0
  288. package/src/lib/components/section/section.component.spec.ts +0 -21
  289. package/src/lib/components/section/section.component.ts +0 -32
  290. package/src/lib/components/shared-components/action-button-group/action-button-group.component.html +0 -27
  291. package/src/lib/components/shared-components/action-button-group/action-button-group.component.scss +0 -0
  292. package/src/lib/components/shared-components/action-button-group/action-button-group.component.spec.ts +0 -21
  293. package/src/lib/components/shared-components/action-button-group/action-button-group.component.ts +0 -114
  294. package/src/lib/components/shared-components/action-button-group/components/action-button/action-button.component.html +0 -11
  295. package/src/lib/components/shared-components/action-button-group/components/action-button/action-button.component.scss +0 -0
  296. package/src/lib/components/shared-components/action-button-group/components/action-button/action-button.component.spec.ts +0 -21
  297. package/src/lib/components/shared-components/action-button-group/components/action-button/action-button.component.ts +0 -71
  298. package/src/lib/components/shared-components/dynamic-component/dynamic-component-factory.service.ts +0 -142
  299. package/src/lib/components/shared-components/dynamic-component/dynamic-component.component.ts +0 -56
  300. package/src/lib/components/shared-components/feature-list/directives/feature-list-column.directive.ts +0 -32
  301. package/src/lib/components/shared-components/feature-list/directives/feature-list-filter-field.directive.ts +0 -8
  302. package/src/lib/components/shared-components/feature-list/feature-list-filter.pipe.ts +0 -21
  303. package/src/lib/components/shared-components/feature-list/feature-list-page.component.ts +0 -31
  304. package/src/lib/components/shared-components/feature-list/feature-list-page.model.ts +0 -42
  305. package/src/lib/components/shared-components/feature-list/feature-list.component.html +0 -59
  306. package/src/lib/components/shared-components/feature-list/feature-list.component.scss +0 -10
  307. package/src/lib/components/shared-components/feature-list/feature-list.component.ts +0 -342
  308. package/src/lib/components/shared-components/filter/directives/filter-field.directive.ts +0 -35
  309. package/src/lib/components/shared-components/filter/filter.component.html +0 -68
  310. package/src/lib/components/shared-components/filter/filter.component.scss +0 -0
  311. package/src/lib/components/shared-components/filter/filter.component.spec.ts +0 -21
  312. package/src/lib/components/shared-components/filter/filter.component.stories.ts +0 -23
  313. package/src/lib/components/shared-components/filter/filter.component.ts +0 -284
  314. package/src/lib/components/shared-components/filter/filter.model.ts +0 -18
  315. package/src/lib/components/shared-components/generic-field/generic-field.component.html +0 -97
  316. package/src/lib/components/shared-components/generic-field/generic-field.component.spec.ts +0 -21
  317. package/src/lib/components/shared-components/generic-field/generic-field.component.ts +0 -94
  318. package/src/lib/components/shared-components/generic-form/generic-form.component.html +0 -46
  319. package/src/lib/components/shared-components/generic-form/generic-form.component.spec.ts +0 -21
  320. package/src/lib/components/shared-components/generic-form/generic-form.component.ts +0 -57
  321. package/src/lib/components/shared-components/generic-form/generic-form.model.spec.ts +0 -82
  322. package/src/lib/components/shared-components/generic-form/generic-form.model.ts +0 -68
  323. package/src/lib/components/side-menu/side-menu.component.html +0 -52
  324. package/src/lib/components/side-menu/side-menu.component.scss +0 -0
  325. package/src/lib/components/side-menu/side-menu.component.spec.ts +0 -21
  326. package/src/lib/components/side-menu/side-menu.component.ts +0 -98
  327. package/src/lib/components/side-menu/side-menu.module.ts +0 -66
  328. package/src/lib/components/slider/slider.component.html +0 -19
  329. package/src/lib/components/slider/slider.component.spec.ts +0 -21
  330. package/src/lib/components/slider/slider.component.ts +0 -58
  331. package/src/lib/components/snackbar/services/snackbar.service.ts +0 -45
  332. package/src/lib/components/snackbar/snackbar.component.html +0 -3
  333. package/src/lib/components/snackbar/snackbar.component.scss +0 -0
  334. package/src/lib/components/snackbar/snackbar.component.spec.ts +0 -21
  335. package/src/lib/components/snackbar/snackbar.component.stories.ts +0 -70
  336. package/src/lib/components/snackbar/snackbar.component.ts +0 -26
  337. package/src/lib/components/stepper/stepper.component.html +0 -43
  338. package/src/lib/components/stepper/stepper.component.spec.ts +0 -21
  339. package/src/lib/components/stepper/stepper.component.ts +0 -40
  340. package/src/lib/components/switch/switch.component.html +0 -18
  341. package/src/lib/components/switch/switch.component.scss +0 -0
  342. package/src/lib/components/switch/switch.component.spec.ts +0 -21
  343. package/src/lib/components/switch/switch.component.stories.ts +0 -65
  344. package/src/lib/components/switch/switch.component.ts +0 -54
  345. package/src/lib/components/tab-view/tab-menu.pipe.ts +0 -23
  346. package/src/lib/components/tab-view/tab-view-item.component.ts +0 -22
  347. package/src/lib/components/tab-view/tab-view.component.html +0 -23
  348. package/src/lib/components/tab-view/tab-view.component.ts +0 -55
  349. package/src/lib/components/tab-view/tab-view.module.ts +0 -19
  350. package/src/lib/components/table/table-filter.pipe.ts +0 -59
  351. package/src/lib/components/table/table.component.html +0 -123
  352. package/src/lib/components/table/table.component.scss +0 -11
  353. package/src/lib/components/table/table.component.spec.ts +0 -21
  354. package/src/lib/components/table/table.component.stories.ts +0 -55
  355. package/src/lib/components/table/table.component.ts +0 -289
  356. package/src/lib/components/table/table.models.ts +0 -26
  357. package/src/lib/components/textarea/textarea.component.html +0 -40
  358. package/src/lib/components/textarea/textarea.component.scss +0 -5
  359. package/src/lib/components/textarea/textarea.component.spec.ts +0 -21
  360. package/src/lib/components/textarea/textarea.component.stories.ts +0 -98
  361. package/src/lib/components/textarea/textarea.component.ts +0 -64
  362. package/src/lib/components/textfield/textfield.component.html +0 -83
  363. package/src/lib/components/textfield/textfield.component.scss +0 -23
  364. package/src/lib/components/textfield/textfield.component.spec.ts +0 -21
  365. package/src/lib/components/textfield/textfield.component.stories.ts +0 -85
  366. package/src/lib/components/textfield/textfield.component.ts +0 -69
  367. package/src/lib/components/tristatecheckbox/tristatecheckbox.component.html +0 -23
  368. package/src/lib/components/tristatecheckbox/tristatecheckbox.component.scss +0 -0
  369. package/src/lib/components/tristatecheckbox/tristatecheckbox.component.spec.ts +0 -21
  370. package/src/lib/components/tristatecheckbox/tristatecheckbox.component.stories.ts +0 -22
  371. package/src/lib/components/tristatecheckbox/tristatecheckbox.component.ts +0 -50
  372. package/src/lib/icons.ts +0 -36
  373. package/src/lib/interceptors/http-error-message.interceptor.ts +0 -35
  374. package/src/lib/pages/not-found-page/not-found-page.component.html +0 -26
  375. package/src/lib/pages/not-found-page/not-found-page.component.scss +0 -0
  376. package/src/lib/pages/not-found-page/not-found-page.component.spec.ts +0 -21
  377. package/src/lib/pages/not-found-page/not-found-page.component.ts +0 -17
  378. package/src/tab-view.ts +0 -1
  379. package/src/test-setup.ts +0 -8
  380. package/tsconfig.json +0 -29
  381. package/tsconfig.lib.json +0 -18
  382. package/tsconfig.lib.prod.json +0 -9
  383. package/tsconfig.spec.json +0 -16
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { RadioButtonComponent } from './radiobutton.component';
3
-
4
- describe('RadioButtonComponent', () => {
5
- let component: RadioButtonComponent<any>;
6
- let fixture: ComponentFixture<RadioButtonComponent<any>>;
7
-
8
- beforeEach(async () => {
9
- await TestBed.configureTestingModule({
10
- imports: [RadioButtonComponent],
11
- }).compileComponents();
12
-
13
- fixture = TestBed.createComponent(RadioButtonComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });
@@ -1,71 +0,0 @@
1
- import {
2
- FormControl,
3
- FormGroup,
4
- FormsModule,
5
- ReactiveFormsModule,
6
- } from '@angular/forms';
7
- import { moduleMetadata, type Meta, type StoryObj } from '@storybook/angular';
8
- import { within, expect } from '@storybook/test';
9
- import { BaseFormInputComponent } from '@verisoft/ui-core';
10
- import { FormFieldComponent } from '../form-field';
11
- import { RadioButtonComponent } from './radiobutton.component';
12
-
13
- const meta: Meta<RadioButtonComponent<any>> = {
14
- component: RadioButtonComponent,
15
- title: 'RadioButtonComponent',
16
- decorators: [
17
- moduleMetadata({
18
- imports: [
19
- FormFieldComponent,
20
- ReactiveFormsModule,
21
- FormsModule,
22
- BaseFormInputComponent,
23
- ],
24
- }),
25
- ],
26
- };
27
- export default meta;
28
- type Story = StoryObj<RadioButtonComponent<any>>;
29
- const formGroup: FormGroup = new FormGroup({
30
- radio: new FormControl(null),
31
- });
32
- export const Primary: Story = {
33
- render: (args: any) => ({
34
- props: {
35
- ...args,
36
- formGroup,
37
- },
38
- template: `
39
- <form [formGroup]="formGroup">
40
- <v-radiobutton
41
- formControlName="radio"
42
- [radioGroupName]="radioGroupName"
43
- [items]="items"
44
- [testId]="testId"
45
- [label]="label"
46
- [required]="required"
47
- [tooltip]="tooltip"
48
- />
49
- </form>
50
- `,
51
- }),
52
- args: {
53
- radioGroupName: 'test',
54
- items: [
55
- { id: 'true', value: 'Yes' },
56
- { id: 'false', value: 'No' },
57
- ],
58
- label: 'Save item?',
59
- required: true,
60
- tooltip: 'This is a tooltip lorem ipsum',
61
- testId: 'radioButtonTestId',
62
- },
63
- play: async ({ canvasElement }: any) => {
64
- const canvas = within(canvasElement);
65
- expect(canvas.getByText('Save item?')).toBeTruthy();
66
- expect(canvas.getByText('Yes')).toBeTruthy();
67
- expect(canvas.getByText('No')).toBeTruthy();
68
- expect(canvas.queryAllByText('This is a tooltip lorem ipsum')).toBeTruthy();
69
- expect(canvas.findByTestId('radioButtonTestId')).toBeTruthy();
70
- },
71
- };
@@ -1,62 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import {
3
- ChangeDetectionStrategy,
4
- Component,
5
- Input,
6
- Optional,
7
- Self,
8
- ViewEncapsulation,
9
- } from '@angular/core';
10
- import {
11
- ControlValueAccessor,
12
- NgControl,
13
- ReactiveFormsModule,
14
- } from '@angular/forms';
15
- import {
16
- BaseFormInputComponent,
17
- BaseInputControls,
18
- RADIOBUTTON_COMPONENT_TOKEN,
19
- RadiobuttonCore,
20
- RadioButtonItem,
21
- } from '@verisoft/ui-core';
22
- import { RadioButtonModule } from 'primeng/radiobutton';
23
- import { ErrorComponent } from '../errors';
24
- import { FormFieldComponent } from '../form-field/form-field.component';
25
-
26
- @Component({
27
- selector: 'v-radiobutton',
28
- standalone: true,
29
- imports: [
30
- CommonModule,
31
- FormFieldComponent,
32
- RadioButtonModule,
33
- ReactiveFormsModule,
34
- ErrorComponent
35
- ],
36
- templateUrl: './radiobutton.component.html',
37
- styleUrl: './radiobutton.component.scss',
38
- changeDetection: ChangeDetectionStrategy.OnPush,
39
- encapsulation: ViewEncapsulation.None,
40
- providers: [
41
- {
42
- provide: BaseInputControls,
43
- useExisting: RadioButtonComponent,
44
- },
45
- {
46
- provide: RADIOBUTTON_COMPONENT_TOKEN,
47
- useExisting: RadioButtonComponent,
48
- },
49
- ],
50
- })
51
- export class RadioButtonComponent<T>
52
- extends BaseFormInputComponent
53
- implements ControlValueAccessor, RadiobuttonCore<T>
54
- {
55
- constructor(@Optional() @Self() ngControl: NgControl) {
56
- super(ngControl);
57
- }
58
-
59
- @Input() radioGroupName = Math.random().toString();
60
-
61
- @Input() items: RadioButtonItem<T>[] = [];
62
- }
@@ -1,23 +0,0 @@
1
- <div class="v-section">
2
- <div
3
- class="v-section-header text-align-center d-flex"
4
- [ngStyle]="{ 'background-color': backgroundColor }"
5
- >
6
- <p
7
- class="text-primary align-items-center text-nowrap d-none d-md-block ps-3 m-0 w-100"
8
- >
9
- {{ title }}
10
- </p>
11
- <div class="d-flex">
12
- <ng-content select="[actions]"></ng-content>
13
- <v-button
14
- size="small"
15
- [icon]="icon"
16
- (click)="toggle()"
17
- />
18
- </div>
19
- </div>
20
- <div class="v-section-content" *ngIf="showContent">
21
- <ng-content></ng-content>
22
- </div>
23
- </div>
File without changes
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { SectionComponent } from './section.component';
3
-
4
- describe('SectionComponent', () => {
5
- let component: SectionComponent;
6
- let fixture: ComponentFixture<SectionComponent>;
7
-
8
- beforeEach(async () => {
9
- await TestBed.configureTestingModule({
10
- imports: [SectionComponent],
11
- }).compileComponents();
12
-
13
- fixture = TestBed.createComponent(SectionComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });
@@ -1,32 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
- import { SECTION_COMPONENT_TOKEN, SectionCore } from '@verisoft/ui-core';
4
- import { Icons } from '../../icons';
5
- import { ButtonComponent } from '../button';
6
-
7
- @Component({
8
- selector: 'v-section',
9
- standalone: true,
10
- imports: [CommonModule, ButtonComponent],
11
- templateUrl: './section.component.html',
12
- styleUrl: './section.component.scss',
13
- changeDetection: ChangeDetectionStrategy.OnPush,
14
- providers: [
15
- { provide: SECTION_COMPONENT_TOKEN, useExisting: SectionComponent },
16
- ],
17
- })
18
- export class SectionComponent
19
- implements SectionCore
20
- {
21
- @Input() title!: string;
22
- @Input() showContent = true;
23
- @Input() backgroundColor!: string;
24
-
25
- icons = Icons;
26
- protected icon = Icons.chevronDown;
27
-
28
- protected toggle(): void {
29
- this.showContent = !this.showContent;
30
- this.icon = this.showContent ? Icons.chevronDown : Icons.chevronUp;
31
- }
32
- }
@@ -1,27 +0,0 @@
1
- <div
2
- class="v-action-button-group align-items-center justify-content-center justify-content-md-end"
3
- >
4
- <div class="v-action-button-group__actions d-flex gap-2">
5
- @for (action of visibleActions; track action) {
6
- <v-action-button
7
- [disabled]="action.disabled"
8
- [icon]="action.icon"
9
- [id]="action.id"
10
- [outlined]="action.outlined"
11
- [raised]="action.raised"
12
- [toolTip]="action.toolTip || action.label"
13
- [severity]="action.severity"
14
- [size]="action.size"
15
- (click)="fireClick(action, $event)"
16
- ></v-action-button>
17
- } @if (actions.length > visibleActions.length) {
18
- <v-button
19
- (click)="menu.toggle($event)"
20
- [label]="label"
21
- [iconPos]="menuIconPos"
22
- [icon]="menuIcon"
23
- />
24
- }
25
- </div>
26
- </div>
27
- <p-menu #menu [model]="menuItems" [popup]="true" appendTo="body" />
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { ActionButtonGroupComponent } from './action-button-group.component';
3
-
4
- describe('ActionButtonGroupComponent', () => {
5
- let component: ActionButtonGroupComponent;
6
- let fixture: ComponentFixture<ActionButtonGroupComponent>;
7
-
8
- beforeEach(async () => {
9
- await TestBed.configureTestingModule({
10
- imports: [ActionButtonGroupComponent],
11
- }).compileComponents();
12
-
13
- fixture = TestBed.createComponent(ActionButtonGroupComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });
@@ -1,114 +0,0 @@
1
- import {
2
- AfterContentInit,
3
- ChangeDetectionStrategy,
4
- ChangeDetectorRef,
5
- Component,
6
- ContentChildren,
7
- Input,
8
- QueryList,
9
- } from '@angular/core';
10
- import {
11
- ACTION_BUTTON_GROUP_COMPONENT_TOKEN,
12
- ActionButton,
13
- ActionButtonGroupCore,
14
- IconPositionType,
15
- queryListChanged,
16
- ScreenSizeService,
17
- UnsubscribeComponent,
18
- } from '@verisoft/ui-core';
19
- import { MenuItem } from 'primeng/api';
20
- import { MenuModule } from 'primeng/menu';
21
- import {
22
- combineLatestWith,
23
- takeUntil,
24
- } from 'rxjs';
25
- import { Icons } from '../../../icons';
26
- import { ButtonComponent } from '../../button';
27
- import { ActionButtonComponent } from './components/action-button/action-button.component';
28
-
29
- @Component({
30
- selector: 'v-action-button-group',
31
- standalone: true,
32
- imports: [MenuModule, ButtonComponent, ActionButtonComponent],
33
- templateUrl: './action-button-group.component.html',
34
- styleUrl: './action-button-group.component.scss',
35
- changeDetection: ChangeDetectionStrategy.OnPush,
36
- providers: [
37
- {
38
- provide: ACTION_BUTTON_GROUP_COMPONENT_TOKEN,
39
- useExisting: ActionButtonGroupComponent,
40
- },
41
- ],
42
- })
43
- export class ActionButtonGroupComponent
44
- extends UnsubscribeComponent
45
- implements AfterContentInit, ActionButtonGroupCore
46
- {
47
- @ContentChildren(ActionButtonComponent)
48
- actions!: QueryList<ActionButtonComponent>;
49
-
50
- @Input() maxItems = 3;
51
-
52
- @Input() maxItemsMobile = 0;
53
-
54
- @Input() items: ActionButton[] = [];
55
-
56
- @Input() menuIconPos: IconPositionType = 'right';
57
-
58
- @Input() menuIcon = Icons.action;
59
-
60
- @Input() label?: string;
61
-
62
- @Input() icon?: string;
63
-
64
- icons = Icons;
65
- allItems: ActionButton[] = [];
66
- visibleActions: ActionButton[] = [];
67
- menuItems: MenuItem[] = [];
68
-
69
- constructor(
70
- private readonly changeDetectorRef: ChangeDetectorRef,
71
- readonly screenSizeService: ScreenSizeService
72
- ) {
73
- super();
74
- }
75
-
76
- ngAfterContentInit(): void {
77
- this.subscribeItemChange();
78
- }
79
-
80
- fireClick(item: ActionButton, event: MouseEvent) {
81
- event.stopPropagation();
82
- item.click.emit();
83
- }
84
-
85
- private subscribeItemChange(): void {
86
- const screenResize$ = this.screenSizeService.isMobileBlock;
87
-
88
- const actions$ = queryListChanged(this.actions);
89
-
90
- screenResize$
91
- .pipe(takeUntil(this.destroyed$), combineLatestWith(actions$))
92
- .subscribe(([isMobile, actions]) => {
93
- this.computeItems(actions, isMobile);
94
- });
95
- }
96
-
97
- private computeItems(actions: ActionButton[], isMobile: boolean) {
98
- const allItems = [...(this.items ?? []), ...actions];
99
- const maxItems = isMobile ? this.maxItemsMobile : this.maxItems;
100
- this.visibleActions = allItems.slice(0, maxItems);
101
- this.menuItems = allItems.slice(maxItems).map(this.convertToMenuItem);
102
- this.changeDetectorRef.detectChanges();
103
- }
104
-
105
- private convertToMenuItem(item: ActionButton): MenuItem {
106
- return {
107
- label: item.label,
108
- icon: item.icon,
109
- command: () => {
110
- item.click.emit();
111
- },
112
- };
113
- }
114
- }
@@ -1,11 +0,0 @@
1
- <v-button
2
- [label]="label"
3
- [disabled]="disabled"
4
- [icon]="icon"
5
- [pTooltip]="toolTip"
6
- [outlined]="outlined"
7
- tooltipPosition="bottom"
8
- [size]="size"
9
- [severity]="severity"
10
- (click)="handleClick($event)"
11
- ></v-button>
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { ActionButtonComponent } from './action-button.component';
3
-
4
- describe('ActionButtonComponent', () => {
5
- let component: ActionButtonComponent;
6
- let fixture: ComponentFixture<ActionButtonComponent>;
7
-
8
- beforeEach(async () => {
9
- await TestBed.configureTestingModule({
10
- imports: [ActionButtonComponent],
11
- }).compileComponents();
12
-
13
- fixture = TestBed.createComponent(ActionButtonComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });
@@ -1,71 +0,0 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- EventEmitter,
5
- inject,
6
- Input,
7
- OnChanges,
8
- Output,
9
- SimpleChanges,
10
- } from '@angular/core';
11
- import {
12
- ACTION_BUTTON_GROUP_COMPONENT_TOKEN,
13
- ActionButton,
14
- ActionButtonGroupCore,
15
- ControlSeverityType,
16
- FieldSizeType,
17
- } from '@verisoft/ui-core';
18
- import { TooltipModule } from 'primeng/tooltip';
19
- import { Observable, Subject } from 'rxjs';
20
- import { Icons } from '../../../../../icons';
21
- import { ButtonComponent } from '../../../../button';
22
-
23
- @Component({
24
- selector: 'v-action-button',
25
- standalone: true,
26
- imports: [ButtonComponent, TooltipModule],
27
- templateUrl: './action-button.component.html',
28
- styleUrl: './action-button.component.scss',
29
- changeDetection: ChangeDetectionStrategy.OnPush,
30
- })
31
- export class ActionButtonComponent implements ActionButton, OnChanges {
32
- @Input() disabled = false;
33
- @Input() toolTip?: string;
34
- @Input() id?: string;
35
- @Input() icon?: string;
36
- @Input() outlined = false;
37
- @Input() raised = false;
38
- @Input() severity?: ControlSeverityType;
39
- @Input() label?: string;
40
- @Input() size?: FieldSizeType;
41
- // eslint-disable-next-line @angular-eslint/no-output-native
42
- @Output() click = new EventEmitter<MouseEvent>();
43
-
44
- icons = Icons
45
-
46
- private propertyChangeSubject = new Subject();
47
-
48
- propertyChanged: Observable<unknown> =
49
- this.propertyChangeSubject.asObservable();
50
-
51
- buttonGroup: ActionButtonGroupCore | null = inject<ActionButtonGroupCore>(
52
- ACTION_BUTTON_GROUP_COMPONENT_TOKEN,
53
- {
54
- optional: true,
55
- }
56
- );
57
-
58
- ngOnChanges(changes: SimpleChanges): void {
59
- const isValueChange = Object.keys(changes).some(
60
- (x) => !changes[x].firstChange
61
- );
62
- if (isValueChange) {
63
- this.propertyChangeSubject.next(null);
64
- }
65
- }
66
-
67
- handleClick(event: MouseEvent) {
68
- event.stopPropagation();
69
- this.click.emit(event);
70
- }
71
- }
@@ -1,142 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import {
3
- Injectable,
4
- ViewContainerRef,
5
- Type,
6
- ComponentFactoryResolver,
7
- Injector,
8
- ComponentRef,
9
- ComponentFactory,
10
- OnChanges,
11
- SimpleChanges,
12
- SimpleChange,
13
- EventEmitter,
14
- OnDestroy,
15
- } from '@angular/core';
16
- import { ExtendedComponent } from '@verisoft/ui-core';
17
- import { Subscription } from 'rxjs';
18
-
19
- @Injectable({
20
- providedIn: 'root',
21
- })
22
- export class DynamicComponentFactoryService implements OnDestroy {
23
- constructor(private componentFactoryResolver: ComponentFactoryResolver) { }
24
-
25
- ngOnDestroy(): void {
26
- this.unsubscribeComponentEvents(this);
27
- }
28
-
29
- async createDynamicComponent<TComponent>(
30
- componentType: Type<TComponent>,
31
- viewContainerRef: ViewContainerRef,
32
- inputs: ExtendedComponent<TComponent>,
33
- injector: Injector | undefined = undefined
34
- ) {
35
- const componentFactory =
36
- this.componentFactoryResolver.resolveComponentFactory(componentType);
37
- viewContainerRef.clear();
38
- const component = viewContainerRef.createComponent(
39
- componentFactory,
40
- undefined,
41
- injector
42
- );
43
- this.setComponentDataInt(componentFactory, component, inputs);
44
- this.fireComponentEvents(component.instance, inputs);
45
- return component;
46
- }
47
-
48
- setComponentData<TComponent>(
49
- component: ComponentRef<TComponent>,
50
- inputs: Partial<TComponent>
51
- ) {
52
- const factory = this.componentFactoryResolver.resolveComponentFactory(
53
- component.componentType
54
- );
55
-
56
- this.setComponentDataInt(factory, component, inputs);
57
- }
58
-
59
- private unsubscribeComponentEvents<TComponent>(instance: TComponent) {
60
- const subscriptionStoreKey = '__outputSubscriptions__';
61
- const subscriptions = (instance as any)[subscriptionStoreKey] as Map<string, Subscription>;
62
-
63
- if (subscriptions) {
64
- subscriptions.forEach((sub) => sub.unsubscribe());
65
- subscriptions.clear();
66
- }
67
- }
68
-
69
- private fireComponentEvents<TComponent>(
70
- instance: TComponent,
71
- inputs: ExtendedComponent<TComponent>
72
- ) {
73
- if (!instance || typeof instance !== 'object') return;
74
-
75
- this.fireInputComponentEvents(instance, inputs);
76
- this.fireOutputComponentEvents(instance, inputs);
77
- }
78
-
79
- private setComponentDataInt<TComponent>(
80
- factory: ComponentFactory<TComponent>,
81
- component: ComponentRef<TComponent>,
82
- inputs: Partial<TComponent>
83
- ) {
84
- if (inputs) {
85
- const propertyNames = factory.inputs.map((x) => x.propName);
86
- const inputsHash = new Set(propertyNames);
87
- Object.keys(inputs)
88
- .filter((x) => inputsHash.has(x))
89
- .forEach((x) => {
90
- (<{ [key: string]: unknown }>component.instance)[x] = (<
91
- { [key: string]: unknown }
92
- >inputs)[x];
93
- });
94
- }
95
- }
96
-
97
- private fireInputComponentEvents<TComponent>(
98
- instance: TComponent,
99
- inputs: ExtendedComponent<TComponent>
100
- ) {
101
- const onChangeComponent = instance as unknown as OnChanges;
102
- if (onChangeComponent.ngOnChanges && inputs) {
103
- const changeEventArgs = Object.keys(inputs).reduce((changes: SimpleChanges, key: string) => {
104
- const inputValue = (inputs as { [key: string]: unknown })[key];
105
- changes[key] = new SimpleChange(undefined, inputValue, true);
106
- return changes;
107
- }, {} as SimpleChanges);
108
-
109
- onChangeComponent.ngOnChanges(changeEventArgs);
110
- }
111
- }
112
-
113
- private fireOutputComponentEvents<TComponent>(
114
- instance: TComponent & object,
115
- inputs: ExtendedComponent<TComponent>
116
- ) {
117
- const outputs = Object.keys(inputs).filter((key) => {
118
- const emitter = (instance as Record<string, any>)[key];
119
- return emitter instanceof EventEmitter;
120
- });
121
-
122
- const subscriptionStoreKey = '__outputSubscriptions__';
123
- if (!(subscriptionStoreKey in instance)) {
124
- (instance as any)[subscriptionStoreKey] = new Map<string, Subscription>();
125
- }
126
- const subscriptions = (instance as any)[subscriptionStoreKey] as Map<string, Subscription>;
127
-
128
- for (const outputKey of outputs) {
129
- const eventEmitter = (instance as Record<string, any>)[outputKey] as EventEmitter<any>;
130
- const callback = inputs[outputKey] as (value: any) => void;
131
-
132
- if (eventEmitter && typeof callback === 'function') {
133
- if (subscriptions.has(outputKey)) {
134
- subscriptions.get(outputKey)!.unsubscribe();
135
- }
136
-
137
- const subscription = eventEmitter.subscribe((value: any) => callback(value));
138
- subscriptions.set(outputKey, subscription);
139
- }
140
- }
141
- }
142
- }