@ldquocc/dynamic-form 0.0.9 → 0.0.10

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 (298) hide show
  1. package/fesm2022/ldquocc-dynamic-form.mjs +4909 -0
  2. package/fesm2022/ldquocc-dynamic-form.mjs.map +1 -0
  3. package/index.d.ts +5 -0
  4. package/lib/dynamic-form.component.d.ts +67 -0
  5. package/lib/shared/base/base-select.component.d.ts +19 -0
  6. package/lib/shared/base/base-value-accessor.d.ts +69 -0
  7. package/{src/lib/shared/components/component.ts → lib/shared/components/component.d.ts} +14 -34
  8. package/lib/shared/components/dynamic-field/dynamic-field.component.d.ts +23 -0
  9. package/lib/shared/components/field-user-config/field-user-config.component.d.ts +10 -0
  10. package/lib/shared/components/fields/components/suffix/suffix.component.d.ts +12 -0
  11. package/lib/shared/components/fields/date/date-picker/date-picker.component.d.ts +17 -0
  12. package/lib/shared/components/fields/date/date-range/date-range.component.d.ts +17 -0
  13. package/lib/shared/components/fields/input/input-formatted/input-formatted.component.d.ts +20 -0
  14. package/lib/shared/components/fields/input/input-password/input-password.component.d.ts +12 -0
  15. package/lib/shared/components/fields/input/input-text/input-text.component.d.ts +14 -0
  16. package/lib/shared/components/fields/select/multi-select/multi-select.component.d.ts +21 -0
  17. package/lib/shared/components/fields/select/single-select/single-select.component.d.ts +21 -0
  18. package/lib/shared/components/fields/select/tree-select/tree-select.component.d.ts +28 -0
  19. package/lib/shared/components/fields/textarea/textarea.component.d.ts +14 -0
  20. package/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.d.ts +25 -0
  21. package/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.d.ts +76 -0
  22. package/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.d.ts +27 -0
  23. package/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.d.ts +29 -0
  24. package/lib/shared/config/dynamic-form.config.d.ts +9 -0
  25. package/lib/shared/consts/common/common.const.d.ts +5 -0
  26. package/lib/shared/consts/common/field-dependency.const.d.ts +1 -0
  27. package/lib/shared/consts/common/file.const.d.ts +148 -0
  28. package/{src/lib/shared/consts/common/index.ts → lib/shared/consts/common/index.d.ts} +4 -4
  29. package/lib/shared/consts/common/standalone-import.const.d.ts +7 -0
  30. package/lib/shared/consts/controls/control.const.d.ts +1 -0
  31. package/{src/lib/shared/consts/controls/index.ts → lib/shared/consts/controls/index.d.ts} +1 -1
  32. package/lib/shared/consts/fields/date-field.const.d.ts +7 -0
  33. package/lib/shared/consts/fields/field.const.d.ts +4 -0
  34. package/{src/lib/shared/consts/fields/index.ts → lib/shared/consts/fields/index.d.ts} +5 -5
  35. package/lib/shared/consts/fields/input-field.const.d.ts +4 -0
  36. package/lib/shared/consts/fields/input-formatted-field.const.d.ts +4 -0
  37. package/lib/shared/consts/fields/radio-field.const.d.ts +10 -0
  38. package/lib/shared/consts/fields/select-field.const.d.ts +6 -0
  39. package/lib/shared/consts/fields/upload-field.const.d.ts +1 -0
  40. package/lib/shared/consts/validators/pattern.const.d.ts +2 -0
  41. package/lib/shared/enums/common/field-dependency.enum.d.ts +9 -0
  42. package/lib/shared/enums/common/file-size-type.enum.d.ts +6 -0
  43. package/{src/lib/shared/enums/common/index.ts → lib/shared/enums/common/index.d.ts} +4 -4
  44. package/lib/shared/enums/common/output-value-type.enum.d.ts +19 -0
  45. package/lib/shared/enums/common/view-mode.enum.d.ts +4 -0
  46. package/lib/shared/enums/controls/control.enum.d.ts +11 -0
  47. package/{src/lib/shared/enums/controls/index.ts → lib/shared/enums/controls/index.d.ts} +1 -1
  48. package/lib/shared/enums/fields/date-field.enum.d.ts +4 -0
  49. package/lib/shared/enums/fields/field.enum.d.ts +20 -0
  50. package/{src/lib/shared/enums/fields/index.ts → lib/shared/enums/fields/index.d.ts} +6 -6
  51. package/lib/shared/enums/fields/input-field.enum.d.ts +6 -0
  52. package/lib/shared/enums/fields/input-formatted-field.enum.d.ts +6 -0
  53. package/lib/shared/enums/fields/select-field.enum.d.ts +4 -0
  54. package/lib/shared/enums/fields/upload-field.enum.d.ts +5 -0
  55. package/lib/shared/enums/form/dynamic-form.enum.d.ts +6 -0
  56. package/{src/lib/shared/enums/form/index.ts → lib/shared/enums/form/index.d.ts} +1 -1
  57. package/{src/lib/shared/enums/validators/index.ts → lib/shared/enums/validators/index.d.ts} +2 -2
  58. package/lib/shared/enums/validators/regex.enum.d.ts +38 -0
  59. package/lib/shared/enums/validators/validators.enum.d.ts +14 -0
  60. package/lib/shared/factories/auto-numeric-options.factory.d.ts +5 -0
  61. package/lib/shared/models/common/api-config.model.d.ts +4 -0
  62. package/lib/shared/models/common/api-response.model.d.ts +19 -0
  63. package/lib/shared/models/common/common.model.d.ts +29 -0
  64. package/lib/shared/models/common/field-dependency.model.d.ts +16 -0
  65. package/lib/shared/models/common/file-config.model.d.ts +11 -0
  66. package/{src/lib/shared/models/common/index.ts → lib/shared/models/common/index.d.ts} +7 -7
  67. package/lib/shared/models/common/obj-field.model.d.ts +59 -0
  68. package/lib/shared/models/common/object-storage.model.d.ts +15 -0
  69. package/{src/lib/shared/models/common/output-value-type.model.ts → lib/shared/models/common/output-value-type.model.d.ts} +4 -4
  70. package/lib/shared/models/common/table-models.d.ts +15 -0
  71. package/{src/lib/shared/models/common/view-mode.model.ts → lib/shared/models/common/view-mode.model.d.ts} +1 -1
  72. package/{src/lib/shared/models/controls/control.model.ts → lib/shared/models/controls/control.model.d.ts} +2 -3
  73. package/{src/lib/shared/models/controls/index.ts → lib/shared/models/controls/index.d.ts} +1 -1
  74. package/lib/shared/models/fields/date/base-date-field.model.d.ts +19 -0
  75. package/lib/shared/models/fields/date/date-picker-field.model.d.ts +12 -0
  76. package/lib/shared/models/fields/date/date-range-field.model.d.ts +12 -0
  77. package/{src/lib/shared/models/fields/date/index.ts → lib/shared/models/fields/date/index.d.ts} +3 -3
  78. package/lib/shared/models/fields/field-grid.model.d.ts +9 -0
  79. package/lib/shared/models/fields/field-group.model.d.ts +21 -0
  80. package/lib/shared/models/fields/field-user-config.model.d.ts +3 -0
  81. package/lib/shared/models/fields/field.model.d.ts +57 -0
  82. package/{src/lib/shared/models/fields/index.ts → lib/shared/models/fields/index.d.ts} +2 -2
  83. package/{src/lib/shared/models/fields/input/index.ts → lib/shared/models/fields/input/index.d.ts} +4 -4
  84. package/lib/shared/models/fields/input/input-field.model.d.ts +31 -0
  85. package/lib/shared/models/fields/input/input-formatted-field.model.d.ts +13 -0
  86. package/lib/shared/models/fields/input/input-password-field.model.d.ts +11 -0
  87. package/lib/shared/models/fields/input/input-text-field.model.d.ts +9 -0
  88. package/lib/shared/models/fields/radio/radio-base-field.model.d.ts +26 -0
  89. package/lib/shared/models/fields/select/multi-select-field.model.d.ts +11 -0
  90. package/lib/shared/models/fields/select/select-base-field.model.d.ts +40 -0
  91. package/lib/shared/models/fields/select/single-select-field.model.d.ts +9 -0
  92. package/lib/shared/models/fields/select/tree-select-field.model.d.ts +10 -0
  93. package/lib/shared/models/fields/textarea/textarea-field.model.d.ts +20 -0
  94. package/lib/shared/models/fields/upload/avatar-upload-field.model.d.ts +9 -0
  95. package/lib/shared/models/fields/upload/base-upload-field.model.d.ts +25 -0
  96. package/{src/lib/shared/models/fields/upload/index.ts → lib/shared/models/fields/upload/index.d.ts} +5 -5
  97. package/lib/shared/models/fields/upload/multi-file-upload-field.model.d.ts +10 -0
  98. package/lib/shared/models/fields/upload/multi-image-upload-field.model.d.ts +12 -0
  99. package/lib/shared/models/fields/upload/single-file-upload-field.model.d.ts +11 -0
  100. package/{src/lib/shared/models/form/dynamic-form.model.ts → lib/shared/models/form/dynamic-form.model.d.ts} +1 -1
  101. package/{src/lib/shared/models/form/index.ts → lib/shared/models/form/index.d.ts} +1 -1
  102. package/lib/shared/services/dynamic-form.service.d.ts +48 -0
  103. package/lib/shared/services/field.service.d.ts +41 -0
  104. package/lib/shared/services/file.service.d.ts +20 -0
  105. package/lib/shared/services/form-config.service.d.ts +10 -0
  106. package/lib/shared/services/form-data.service.d.ts +53 -0
  107. package/lib/shared/services/form-utils.d.ts +5 -0
  108. package/lib/shared/services/suffix.service.d.ts +12 -0
  109. package/lib/shared/services/validation.service.d.ts +10 -0
  110. package/lib/shared/utils/common/common.utils.d.ts +7 -0
  111. package/{src/lib/shared/utils/common/index.ts → lib/shared/utils/common/index.d.ts} +1 -1
  112. package/lib/shared/utils/date/date.utils.d.ts +6 -0
  113. package/{src/lib/shared/utils/date/index.ts → lib/shared/utils/date/index.d.ts} +1 -1
  114. package/lib/shared/utils/dynamic-form/dynamic-form.d.ts +11 -0
  115. package/lib/shared/utils/fields/fields.d.ts +20 -0
  116. package/{src/lib/shared/utils/fields/index.ts → lib/shared/utils/fields/index.d.ts} +1 -1
  117. package/lib/shared/utils/file/file.utils.d.ts +4 -0
  118. package/{src/lib/shared/utils/file/index.ts → lib/shared/utils/file/index.d.ts} +1 -1
  119. package/lib/shared/utils/validators/custom-validators.d.ts +11 -0
  120. package/lib/shared/utils/validators/default-error-message.d.ts +6 -0
  121. package/{src/lib/shared/utils/validators/index.ts → lib/shared/utils/validators/index.d.ts} +3 -3
  122. package/lib/shared/utils/validators/pattern.d.ts +4 -0
  123. package/package.json +31 -20
  124. package/{src/public-api.ts → public-api.d.ts} +29 -68
  125. package/ng-package.json +0 -15
  126. package/src/lib/dynamic-form.component.html +0 -121
  127. package/src/lib/dynamic-form.component.scss +0 -7
  128. package/src/lib/dynamic-form.component.spec.ts +0 -21
  129. package/src/lib/dynamic-form.component.ts +0 -237
  130. package/src/lib/dynamic-form.service.spec.ts +0 -16
  131. package/src/lib/dynamic-form.service.ts +0 -9
  132. package/src/lib/shared/base/base-select.component.ts +0 -183
  133. package/src/lib/shared/base/base-value-accessor.ts +0 -192
  134. package/src/lib/shared/components/d-form-testing/d-form-testing.component.html +0 -197
  135. package/src/lib/shared/components/d-form-testing/d-form-testing.component.less +0 -12
  136. package/src/lib/shared/components/d-form-testing/d-form-testing.component.spec.ts +0 -22
  137. package/src/lib/shared/components/d-form-testing/d-form-testing.component.ts +0 -197
  138. package/src/lib/shared/components/dynamic-field/dynamic-field.component.html +0 -218
  139. package/src/lib/shared/components/dynamic-field/dynamic-field.component.scss +0 -28
  140. package/src/lib/shared/components/dynamic-field/dynamic-field.component.spec.ts +0 -21
  141. package/src/lib/shared/components/dynamic-field/dynamic-field.component.ts +0 -67
  142. package/src/lib/shared/components/field-user-config/field-user-config.component.html +0 -38
  143. package/src/lib/shared/components/field-user-config/field-user-config.component.scss +0 -29
  144. package/src/lib/shared/components/field-user-config/field-user-config.component.ts +0 -33
  145. package/src/lib/shared/components/fields/components/suffix/suffix.component.html +0 -42
  146. package/src/lib/shared/components/fields/components/suffix/suffix.component.scss +0 -3
  147. package/src/lib/shared/components/fields/components/suffix/suffix.component.spec.ts +0 -22
  148. package/src/lib/shared/components/fields/components/suffix/suffix.component.ts +0 -32
  149. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.html +0 -20
  150. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.scss +0 -5
  151. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.spec.ts +0 -21
  152. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.ts +0 -148
  153. package/src/lib/shared/components/fields/date/date-range/date-range.component.html +0 -33
  154. package/src/lib/shared/components/fields/date/date-range/date-range.component.scss +0 -22
  155. package/src/lib/shared/components/fields/date/date-range/date-range.component.spec.ts +0 -21
  156. package/src/lib/shared/components/fields/date/date-range/date-range.component.ts +0 -133
  157. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.html +0 -31
  158. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.scss +0 -3
  159. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.spec.ts +0 -21
  160. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.ts +0 -148
  161. package/src/lib/shared/components/fields/input/input-password/input-password.component.html +0 -18
  162. package/src/lib/shared/components/fields/input/input-password/input-password.component.scss +0 -0
  163. package/src/lib/shared/components/fields/input/input-password/input-password.component.spec.ts +0 -21
  164. package/src/lib/shared/components/fields/input/input-password/input-password.component.ts +0 -56
  165. package/src/lib/shared/components/fields/input/input-text/input-text.component.html +0 -73
  166. package/src/lib/shared/components/fields/input/input-text/input-text.component.scss +0 -0
  167. package/src/lib/shared/components/fields/input/input-text/input-text.component.spec.ts +0 -21
  168. package/src/lib/shared/components/fields/input/input-text/input-text.component.ts +0 -98
  169. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.html +0 -73
  170. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.scss +0 -21
  171. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.spec.ts +0 -21
  172. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.ts +0 -212
  173. package/src/lib/shared/components/fields/select/single-select/single-select.component.html +0 -55
  174. package/src/lib/shared/components/fields/select/single-select/single-select.component.scss +0 -1
  175. package/src/lib/shared/components/fields/select/single-select/single-select.component.spec.ts +0 -21
  176. package/src/lib/shared/components/fields/select/single-select/single-select.component.ts +0 -217
  177. package/src/lib/shared/components/fields/select/single-select/sl.component.old.txt +0 -337
  178. package/src/lib/shared/components/fields/select/single-select/sl.component.old2.txt +0 -340
  179. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.html +0 -38
  180. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.scss +0 -1
  181. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.spec.ts +0 -21
  182. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.ts +0 -401
  183. package/src/lib/shared/components/fields/textarea/textarea.component.html +0 -29
  184. package/src/lib/shared/components/fields/textarea/textarea.component.scss +0 -17
  185. package/src/lib/shared/components/fields/textarea/textarea.component.spec.ts +0 -21
  186. package/src/lib/shared/components/fields/textarea/textarea.component.ts +0 -76
  187. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.html +0 -30
  188. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.scss +0 -22
  189. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.spec.ts +0 -22
  190. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.ts +0 -217
  191. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.html +0 -101
  192. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.scss +0 -117
  193. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.spec.ts +0 -22
  194. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.ts +0 -480
  195. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.html +0 -82
  196. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.less +0 -80
  197. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.spec.ts +0 -22
  198. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.ts +0 -288
  199. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.html +0 -104
  200. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.scss +0 -37
  201. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.spec.ts +0 -21
  202. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.ts +0 -317
  203. package/src/lib/shared/config/dynamic-form.config.ts +0 -11
  204. package/src/lib/shared/consts/common/common.const.ts +0 -5
  205. package/src/lib/shared/consts/common/field-dependency.const.ts +0 -1
  206. package/src/lib/shared/consts/common/file.const.ts +0 -130
  207. package/src/lib/shared/consts/common/sample-test.const.ts +0 -1648
  208. package/src/lib/shared/consts/common/standalone-import.const.ts +0 -51
  209. package/src/lib/shared/consts/controls/control.const.ts +0 -11
  210. package/src/lib/shared/consts/fields/date-field.const.ts +0 -12
  211. package/src/lib/shared/consts/fields/field.const.ts +0 -23
  212. package/src/lib/shared/consts/fields/input-field.const.ts +0 -4
  213. package/src/lib/shared/consts/fields/input-formatted-field.const.ts +0 -35
  214. package/src/lib/shared/consts/fields/radio-field.const.ts +0 -31
  215. package/src/lib/shared/consts/fields/select-field.const.ts +0 -7
  216. package/src/lib/shared/consts/fields/upload-field.const.ts +0 -1
  217. package/src/lib/shared/consts/validators/index.ts +0 -0
  218. package/src/lib/shared/consts/validators/pattern.const.ts +0 -117
  219. package/src/lib/shared/enums/common/component-ui.enum.ts +0 -8
  220. package/src/lib/shared/enums/common/field-dependency.enum.ts +0 -10
  221. package/src/lib/shared/enums/common/file-size-type.enum.ts +0 -6
  222. package/src/lib/shared/enums/common/output-value-type.enum.ts +0 -22
  223. package/src/lib/shared/enums/common/view-mode.enum.ts +0 -4
  224. package/src/lib/shared/enums/controls/control.enum.ts +0 -12
  225. package/src/lib/shared/enums/fields/date-field.enum.ts +0 -4
  226. package/src/lib/shared/enums/fields/field.enum.ts +0 -21
  227. package/src/lib/shared/enums/fields/input-field.enum.ts +0 -6
  228. package/src/lib/shared/enums/fields/input-formatted-field.enum.ts +0 -6
  229. package/src/lib/shared/enums/fields/select-field.enum.ts +0 -4
  230. package/src/lib/shared/enums/fields/upload-field.enum.ts +0 -5
  231. package/src/lib/shared/enums/form/dynamic-form.enum.ts +0 -6
  232. package/src/lib/shared/enums/validators/regex.enum.ts +0 -47
  233. package/src/lib/shared/enums/validators/validators.enum.ts +0 -17
  234. package/src/lib/shared/factories/auto-numeric-options.factory.ts +0 -14
  235. package/src/lib/shared/models/common/api-config.model.ts +0 -7
  236. package/src/lib/shared/models/common/api-response.model.ts +0 -20
  237. package/src/lib/shared/models/common/common.model.ts +0 -39
  238. package/src/lib/shared/models/common/field-dependency.model.ts +0 -27
  239. package/src/lib/shared/models/common/file-config.model.ts +0 -22
  240. package/src/lib/shared/models/common/obj-field.model.ts +0 -68
  241. package/src/lib/shared/models/common/object-storage.model.ts +0 -15
  242. package/src/lib/shared/models/common/table-models.ts +0 -16
  243. package/src/lib/shared/models/fields/date/base-date-field.model.ts +0 -52
  244. package/src/lib/shared/models/fields/date/date-picker-field.model.ts +0 -43
  245. package/src/lib/shared/models/fields/date/date-range-field.model.ts +0 -52
  246. package/src/lib/shared/models/fields/field-grid.model.ts +0 -10
  247. package/src/lib/shared/models/fields/field-group.model.ts +0 -50
  248. package/src/lib/shared/models/fields/field-user-config.model.ts +0 -8
  249. package/src/lib/shared/models/fields/field.model.ts +0 -184
  250. package/src/lib/shared/models/fields/input/input-field.model.ts +0 -111
  251. package/src/lib/shared/models/fields/input/input-formatted-field.model.ts +0 -38
  252. package/src/lib/shared/models/fields/input/input-password-field.model.ts +0 -38
  253. package/src/lib/shared/models/fields/input/input-text-field.model.ts +0 -26
  254. package/src/lib/shared/models/fields/radio/index.ts +0 -0
  255. package/src/lib/shared/models/fields/radio/radio-base-field.model.ts +0 -84
  256. package/src/lib/shared/models/fields/select/index.ts +0 -0
  257. package/src/lib/shared/models/fields/select/multi-select-field.model.ts +0 -46
  258. package/src/lib/shared/models/fields/select/select-base-field.model.ts +0 -125
  259. package/src/lib/shared/models/fields/select/single-select-field.model.ts +0 -43
  260. package/src/lib/shared/models/fields/select/tree-select-field.model.ts +0 -44
  261. package/src/lib/shared/models/fields/textarea/index.ts +0 -0
  262. package/src/lib/shared/models/fields/textarea/textarea-field.model.ts +0 -97
  263. package/src/lib/shared/models/fields/upload/avatar-upload-field.model.ts +0 -33
  264. package/src/lib/shared/models/fields/upload/base-upload-field.model.ts +0 -105
  265. package/src/lib/shared/models/fields/upload/multi-file-upload-field.model.ts +0 -34
  266. package/src/lib/shared/models/fields/upload/multi-image-upload-field.model.ts +0 -42
  267. package/src/lib/shared/models/fields/upload/single-file-upload-field.model.ts +0 -33
  268. package/src/lib/shared/models/validations/index.ts +0 -1
  269. package/src/lib/shared/models/validations/validations.model.ts +0 -14
  270. package/src/lib/shared/services/dynamic-form.service.spec.ts +0 -16
  271. package/src/lib/shared/services/dynamic-form.service.ts +0 -251
  272. package/src/lib/shared/services/field.service.spec.ts +0 -16
  273. package/src/lib/shared/services/field.service.ts +0 -152
  274. package/src/lib/shared/services/file.service.spec.ts +0 -16
  275. package/src/lib/shared/services/file.service.ts +0 -53
  276. package/src/lib/shared/services/form-config.service.ts +0 -53
  277. package/src/lib/shared/services/form-data.service.spec.ts +0 -16
  278. package/src/lib/shared/services/form-data.service.ts +0 -114
  279. package/src/lib/shared/services/form-utils.ts +0 -52
  280. package/src/lib/shared/services/suffix.service.spec.ts +0 -16
  281. package/src/lib/shared/services/suffix.service.ts +0 -16
  282. package/src/lib/shared/services/validation.service.spec.ts +0 -16
  283. package/src/lib/shared/services/validation.service.ts +0 -38
  284. package/src/lib/shared/utils/common/common.utils.ts +0 -52
  285. package/src/lib/shared/utils/date/date.utils.ts +0 -129
  286. package/src/lib/shared/utils/dynamic-field/dynamic-field.ts +0 -0
  287. package/src/lib/shared/utils/dynamic-field/index.ts +0 -0
  288. package/src/lib/shared/utils/dynamic-form/dynamic-form.ts +0 -114
  289. package/src/lib/shared/utils/dynamic-form/index.ts +0 -0
  290. package/src/lib/shared/utils/fields/fields.ts +0 -78
  291. package/src/lib/shared/utils/file/file.utils.ts +0 -37
  292. package/src/lib/shared/utils/validators/custom-validators.ts +0 -158
  293. package/src/lib/shared/utils/validators/default-error-message.ts +0 -42
  294. package/src/lib/shared/utils/validators/pattern.ts +0 -26
  295. package/tsconfig.lib.json +0 -15
  296. package/tsconfig.lib.prod.json +0 -11
  297. package/tsconfig.spec.json +0 -15
  298. /package/{src/lib/shared/styles → styles}/_common-form.scss +0 -0
@@ -1,197 +0,0 @@
1
- @if (showTestFormInModal) {
2
- <h4>
3
- =============================================== FORM IN MODAL
4
- ==================================================</h4
5
- >
6
- <div class="my-4">
7
- <button
8
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
9
- nz-button
10
- nzType="primary"
11
- (click)="openModal(formModeEnum.Add)"
12
- >
13
- <span>OpenModal add</span>
14
- </button>
15
-
16
- <button
17
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
18
- nz-button
19
- nzType="primary"
20
- (click)="openModal(formModeEnum.Edit)"
21
- >
22
- <span>OpenModal edit</span>
23
- </button>
24
-
25
- <nz-modal
26
- [nzVisible]="isVisibleModal"
27
- [nzContent]="modalContent"
28
- [nzWidth]="800"
29
- (nzOnCancel)="handleCancel()"
30
- (nzOnOk)="handleOk()"
31
- [nzKeyboard]="false"
32
- >
33
- <ng-template #modalContent>
34
- <app-dynamic-forms
35
- [formId]="formId"
36
- [mode]="formMode"
37
- [fields]="fields"
38
- [model]="model"
39
- (formSubmit)="handleWhenFormSubmit($event)"
40
- ></app-dynamic-forms>
41
- </ng-template>
42
- </nz-modal>
43
- </div>
44
- }
45
-
46
- @if (showTestForm) {
47
- <h4>
48
- =============================================== FORM
49
- ==================================================</h4
50
- >
51
- <div>
52
- <app-dynamic-forms
53
- [formId]="formId"
54
- [mode]="formMode"
55
- [fields]="fields"
56
- [model]="model"
57
- (formSubmit)="handleWhenFormSubmit($event)"
58
- ></app-dynamic-forms>
59
-
60
- <button
61
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
62
- nz-button
63
- nzType="primary"
64
- (click)="handleSubmitDform()"
65
- >
66
- <span>Submit</span>
67
- </button>
68
-
69
- <button
70
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
71
- nz-button
72
- nzType="primary"
73
- (click)="handleResetDform()"
74
- >
75
- <span>Reset</span>
76
- </button>
77
-
78
- <button
79
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
80
- nz-button
81
- nzType="primary"
82
- (click)="handleChangeModelData()"
83
- >
84
- <span>Change model data</span>
85
- </button>
86
-
87
- <button
88
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
89
- nz-button
90
- nzType="primary"
91
- (click)="handleChangeMode(formModeEnum.Add)"
92
- >
93
- <span>Change mode add</span>
94
- </button>
95
-
96
- <button
97
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
98
- nz-button
99
- nzType="primary"
100
- (click)="handleChangeMode(formModeEnum.Edit)"
101
- >
102
- <span>Change mode edit</span>
103
- </button>
104
-
105
- <button
106
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
107
- nz-button
108
- nzType="primary"
109
- (click)="handleChangeMode(formModeEnum.View)"
110
- >
111
- <span>Change mode view</span>
112
- </button>
113
-
114
- <button
115
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
116
- nz-button
117
- nzType="primary"
118
- (click)="handleSetDataOutsideForm()"
119
- >
120
- <span>Set data outside form for field</span>
121
- </button>
122
- </div>
123
- }
124
-
125
- <!-- Test trường hợp nhiều dynamic form cùng một giao diện -->
126
- @if (showTestMultiForm) {
127
- <div class="multi-form">
128
- <div>
129
- <h2>Form A</h2>
130
- <app-dynamic-forms
131
- [formId]="multiFormIdA"
132
- [mode]="multiFormMode"
133
- [fields]="multiFormFieldsA"
134
- [model]="multiFormModelA"
135
- (formSubmit)="multiFormSubmitA($event)"
136
- ></app-dynamic-forms>
137
- </div>
138
-
139
- <div>
140
- <h2>Form B</h2>
141
- <app-dynamic-forms
142
- [formId]="multiFormIdB"
143
- [mode]="multiFormMode"
144
- [fields]="multiFormFieldsB"
145
- [model]="multiFormModelB"
146
- (formSubmit)="multiFormSubmitB($event)"
147
- ></app-dynamic-forms>
148
- </div>
149
-
150
- <div>
151
- <button
152
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
153
- nz-button
154
- nzType="primary"
155
- (click)="submitMultiFormA()"
156
- >
157
- <span>Submit A</span>
158
- </button>
159
-
160
- <button
161
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
162
- nz-button
163
- nzType="primary"
164
- (click)="submitMultiFormB()"
165
- >
166
- <span>Submit B</span>
167
- </button>
168
- </div>
169
- </div>
170
- }
171
-
172
- <!-- Test trường hợp multi select field phụ thuộc vào parent -->
173
- @if (showTestMultiSelectDependOnParent) {
174
- <div class="multi-select-depend-on-parent">
175
- <div>
176
- <h2>Multi select depend on parent</h2>
177
- <app-dynamic-forms
178
- [formId]="multiSelectDependOnParentId"
179
- [mode]="multiSelectDependOnParentFormMode"
180
- [fields]="multiSelectDependOnParentFields"
181
- [model]="multiSelectDependOnParentModel"
182
- (formSubmit)="multiSelectDependOnParentResponse($event)"
183
- ></app-dynamic-forms>
184
- </div>
185
-
186
- <div>
187
- <button
188
- class="btn-add-new d-inline-flex align-items-center mt-2 ms-2 me-2"
189
- nz-button
190
- nzType="primary"
191
- (click)="multiSelectDependOnParentSubmit()"
192
- >
193
- <span>Submit</span>
194
- </button>
195
- </div>
196
- </div>
197
- }
@@ -1,12 +0,0 @@
1
- .mb-4 {
2
- margin-bottom: 1rem;
3
- }
4
-
5
- .mt-4 {
6
- margin-top: 1rem;
7
- }
8
-
9
- .my-4 {
10
- margin-bottom: 1rem;
11
- margin-top: 1rem;
12
- }
@@ -1,22 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { DFormTestingComponent } from './d-form-testing.component';
4
-
5
- describe('DFormTestingComponent', () => {
6
- let component: DFormTestingComponent;
7
- let fixture: ComponentFixture<DFormTestingComponent>;
8
-
9
- beforeEach(async () => {
10
- await TestBed.configureTestingModule({
11
- imports: [DFormTestingComponent],
12
- }).compileComponents();
13
-
14
- fixture = TestBed.createComponent(DFormTestingComponent);
15
- component = fixture.componentInstance;
16
- fixture.detectChanges();
17
- });
18
-
19
- it('should create', () => {
20
- expect(component).toBeTruthy();
21
- });
22
- });
@@ -1,197 +0,0 @@
1
- import { Component, inject } from "@angular/core";
2
- import { uuidGenerator } from "../../utils/common";
3
- import { BaseField } from "../../models/fields/field.model";
4
- import { DynamicFormService } from "../../services/dynamic-form.service";
5
- import { CORE_MODULES, FORM_MODULES } from "../../consts/common";
6
- import {
7
- sampleFields,
8
- sampleFields2,
9
- sampleModel,
10
- sampleModel2,
11
- sampleMultiFormFieldsA,
12
- sampleMultiFormFieldsB,
13
- sampleMultiFormModelA,
14
- sampleMultiFormModelB,
15
- sampleMultiSelectDependOnParent,
16
- } from "../../consts/common/sample-test.const";
17
- import { FormMode } from "../../models/form";
18
- import { FormModeEnum } from "../../enums/form";
19
- import { DynamicFormComponent } from "../../../dynamic-form.component";
20
- import { NzModalModule, NzModalService } from "ng-zorro-antd/modal";
21
- import { cloneDeep, isEqual } from "lodash-es";
22
- import { SuffixService } from "../../services/suffix.service";
23
- import { NzButtonModule } from "ng-zorro-antd/button";
24
-
25
- const ZORRO_MODULES = [NzButtonModule, NzModalModule];
26
- @Component({
27
- selector: "app-d-form-testing",
28
- imports: [
29
- ...CORE_MODULES,
30
- ...FORM_MODULES,
31
- ...ZORRO_MODULES,
32
- DynamicFormComponent,
33
- ],
34
- templateUrl: "./d-form-testing.component.html",
35
- styleUrl: "./d-form-testing.component.less",
36
- })
37
- export class DFormTestingComponent {
38
- formId = "";
39
- formMode: FormMode = FormModeEnum.Add;
40
- fields: BaseField<any>[] = [];
41
- model: Record<string, unknown> = {
42
- username: "get off",
43
- province: { code: 35, name: "Hà Name" },
44
- };
45
-
46
- formModeEnum = FormModeEnum;
47
-
48
- showTestForm = true;
49
- showTestFormInModal = false;
50
-
51
- isVisibleModal = false;
52
-
53
- private dFormService = inject(DynamicFormService);
54
- private modalService = inject(NzModalService);
55
- private suffixService = inject(SuffixService);
56
-
57
- ngOnInit(): void {
58
- this.formId = uuidGenerator();
59
- this.formMode = FormModeEnum.Add;
60
- this.fields = sampleFields;
61
- // this.fields = sampleFields2;
62
- // this.model = sampleModel2
63
-
64
- this.suffixService.suffixClick.subscribe(({ key }) => {
65
- console.log("output ra với", key);
66
- });
67
- }
68
-
69
- handleSubmitDform(): void {
70
- this.dFormService.triggerSubmit(this.formId);
71
- }
72
-
73
- handleWhenFormSubmit(data: Record<string, unknown>): void {
74
- console.log("submit data", data);
75
-
76
- if (data["pictures"]) {
77
- console.log(
78
- "pictures",
79
- JSON.parse(data["pictures"] as unknown as string),
80
- );
81
- }
82
- }
83
-
84
- handleResetDform(): void {
85
- this.dFormService.triggerReset(this.formId);
86
- }
87
-
88
- handleChangeModelData(): void {
89
- this.model = sampleModel2;
90
- }
91
-
92
- openModal(mode: FormMode): void {
93
- this.formMode = mode;
94
-
95
- if (mode === FormModeEnum.Add) {
96
- // this.model = {};
97
- this.model = sampleModel;
98
- }
99
-
100
- if (mode === FormModeEnum.Edit) {
101
- // this.model = sampleModel;
102
- this.model = sampleModel2;
103
- }
104
-
105
- this.isVisibleModal = true;
106
- }
107
-
108
- handleCancel(): void {
109
- this.isVisibleModal = false;
110
- // this.dFormService.triggerReset(this.formId)
111
- }
112
-
113
- handleOk(): void {
114
- this.dFormService.triggerSubmit(this.formId);
115
- }
116
-
117
- handleChangeMode(mode: FormMode) {
118
- // this.dFormService.triggerReset(this.formId);
119
- this.formMode = mode;
120
- const x = this.fields;
121
- this.model = sampleModel2;
122
- // this.fields = sampleFields;
123
- if (mode === FormModeEnum.Add) {
124
- // this.fields = sampleFields;
125
- this.model = {};
126
- }
127
-
128
- if (mode === FormModeEnum.Edit) {
129
- // this.fields = sampleFields2;
130
- this.model = sampleModel2;
131
- }
132
- }
133
-
134
- handleSetDataOutsideForm(): void {
135
- if (
136
- this.formMode === FormModeEnum.Add ||
137
- this.formMode === FormModeEnum.Edit
138
- ) {
139
- // {
140
- // code: 'ADMIN'
141
- // }
142
- // 'ADMIN'
143
- this.dFormService.setFieldValue("role", {
144
- code: "ADMIN",
145
- });
146
- } else {
147
- alert("Không hỗ trợ cho view");
148
- }
149
- }
150
-
151
- //#region Test Multi Form
152
- showTestMultiForm = false;
153
-
154
- multiFormMode: FormMode = FormModeEnum.Add;
155
-
156
- multiFormIdA = uuidGenerator();
157
- multiFormFieldsA: BaseField<any>[] = sampleMultiFormFieldsA;
158
- multiFormModelA: Record<string, unknown> = sampleMultiFormModelA;
159
-
160
- multiFormIdB = uuidGenerator();
161
- multiFormFieldsB: BaseField<any>[] = sampleMultiFormFieldsB;
162
- multiFormModelB: Record<string, unknown> = sampleMultiFormModelB;
163
-
164
- submitMultiFormA(): void {
165
- this.dFormService.triggerSubmit(this.multiFormIdA);
166
- }
167
-
168
- multiFormSubmitA(rawData: Record<string, unknown>): void {
169
- console.log("submit data A", rawData);
170
- }
171
-
172
- submitMultiFormB(): void {
173
- this.dFormService.triggerSubmit(this.multiFormIdB);
174
- }
175
-
176
- multiFormSubmitB(rawData: Record<string, unknown>): void {
177
- console.log("submit data B", rawData);
178
- }
179
- //#endregion Test Multi Form
180
-
181
- //#region Test Multi Select depend on Parent
182
- showTestMultiSelectDependOnParent = false;
183
- multiSelectDependOnParentFormMode: FormMode = FormModeEnum.Add;
184
- multiSelectDependOnParentId = uuidGenerator();
185
- multiSelectDependOnParentFields: BaseField<any>[] =
186
- sampleMultiSelectDependOnParent;
187
- multiSelectDependOnParentModel: Record<string, unknown> = {};
188
-
189
- multiSelectDependOnParentSubmit(): void {
190
- this.dFormService.triggerSubmit(this.multiSelectDependOnParentId);
191
- }
192
-
193
- multiSelectDependOnParentResponse(rawData: Record<string, unknown>): void {
194
- console.log("Multi Select Depend On Parent Response", rawData);
195
- }
196
- //#endregion Test Multi Select depend on Parent
197
- }
@@ -1,218 +0,0 @@
1
- <div [formGroup]="formGroup()">
2
- <nz-form-item>
3
- <nz-form-label
4
- [nzXXl]="field().labelGrid.xxl ?? null"
5
- [nzXl]="field().labelGrid.xl ?? null"
6
- [nzLg]="field().labelGrid.lg ?? null"
7
- [nzMd]="field().labelGrid.md ?? null"
8
- [nzSm]="field().labelGrid.sm ?? null"
9
- [nzXs]="field().labelGrid.xs ?? null"
10
- [nzLabelAlign]="field().labelAlign"
11
- >
12
- @if (field().required) {
13
- <span class="required">*</span>
14
- }
15
- <span class="form-label">
16
- {{ field().label }}
17
- @if (field().sublabel) {
18
- <span class="sub-label mb-sm">{{ field().sublabel }}</span>
19
- }
20
- </span>
21
- </nz-form-label>
22
-
23
- <nz-form-control
24
- [nzXXl]="field().controlGrid.xxl ?? null"
25
- [nzXl]="field().controlGrid.xl ?? null"
26
- [nzLg]="field().controlGrid.lg ?? null"
27
- [nzMd]="field().controlGrid.md ?? null"
28
- [nzSm]="field().controlGrid.sm ?? null"
29
- [nzXs]="field().controlGrid.xs ?? null"
30
- [nzErrorTip]="getErrorMessage()"
31
- >
32
- <div nz-flex [nzAlign]="'flex-start'" [nzGap]="8" class="w-100">
33
- <div class="flex-1 min-w-0">
34
- @switch (field().type) {
35
- <!-- Input text -->
36
- @case (fieldTypeEnum.InputText) {
37
- <app-input-text
38
- [formControlName]="field().key"
39
- [fieldInput]="field()"
40
- [modeSignal]="mode()"
41
- [control]="control()"
42
- [formId]="formId()"
43
- ></app-input-text>
44
- }
45
-
46
- <!-- Input password -->
47
- @case (fieldTypeEnum.InputPassword) {
48
- @if (mode() === formModeEnum.Add) {
49
- <app-input-password
50
- [formControlName]="field().key"
51
- [fieldInput]="field()"
52
- [modeSignal]="mode()"
53
- [control]="control()"
54
- [formId]="formId()"
55
- ></app-input-password>
56
- }
57
- }
58
-
59
- <!-- Input formatted -->
60
- @case (fieldTypeEnum.InputFormatted) {
61
- <app-input-formatted
62
- [formControlName]="field().key"
63
- [fieldInput]="field()"
64
- [modeSignal]="mode()"
65
- [control]="control()"
66
- [formId]="formId()"
67
- ></app-input-formatted>
68
- }
69
-
70
- <!-- Textarea -->
71
- @case (fieldTypeEnum.Textarea) {
72
- <app-textarea
73
- [formControlName]="field().key"
74
- [fieldInput]="field()"
75
- [modeSignal]="mode()"
76
- [control]="control()"
77
- [formId]="formId()"
78
- ></app-textarea>
79
- }
80
-
81
- <!-- Single select -->
82
- @case (fieldTypeEnum.SingleSelect) {
83
- <app-single-select
84
- [formControlName]="field().key"
85
- [fieldInput]="field()"
86
- [modeSignal]="mode()"
87
- [control]="control()"
88
- [formId]="formId()"
89
- ></app-single-select>
90
- }
91
-
92
- <!-- Multi select -->
93
- @case (fieldTypeEnum.MultiSelect) {
94
- <app-multi-select
95
- [formControlName]="field().key"
96
- [fieldInput]="field()"
97
- [modeSignal]="mode()"
98
- [control]="control()"
99
- [formId]="formId()"
100
- ></app-multi-select>
101
- }
102
-
103
- @case (fieldTypeEnum.TreeSelect) {
104
- <app-tree-select
105
- [formControlName]="field().key"
106
- [fieldInput]="field()"
107
- [modeSignal]="mode()"
108
- [control]="control()"
109
- [formId]="formId()"
110
- ></app-tree-select>
111
- }
112
-
113
- <!-- Date Picker -->
114
- @case (fieldTypeEnum.DatePicker) {
115
- <app-date-picker
116
- [formControlName]="field().key"
117
- [fieldInput]="field()"
118
- [modeSignal]="mode()"
119
- [control]="control()"
120
- [formId]="formId()"
121
- ></app-date-picker>
122
- }
123
-
124
- <!-- Date Range -->
125
- @case (fieldTypeEnum.DateRange) {
126
- <app-date-range
127
- [formControlName]="field().key"
128
- [fieldInput]="field()"
129
- [modeSignal]="mode()"
130
- [control]="control()"
131
- [formId]="formId()"
132
- ></app-date-range>
133
- }
134
-
135
- <!-- Single File Upload -->
136
- @case (fieldTypeEnum.SingleFileUpload) {
137
- <app-single-file-upload
138
- [formControlName]="field().key"
139
- [fieldInput]="field()"
140
- [modeSignal]="mode()"
141
- [control]="control()"
142
- [formId]="formId()"
143
- ></app-single-file-upload>
144
- }
145
-
146
- <!-- Multi File Upload -->
147
- @case (fieldTypeEnum.MultiFileUpload) {
148
- <app-multi-file-upload
149
- [formControlName]="field().key"
150
- [fieldInput]="field()"
151
- [modeSignal]="mode()"
152
- [control]="control()"
153
- [formId]="formId()"
154
- ></app-multi-file-upload>
155
- }
156
-
157
- <!-- Multi File Upload -->
158
- @case (fieldTypeEnum.MultiImageUpload) {
159
- <app-multi-image-upload
160
- [formControlName]="field().key"
161
- [fieldInput]="field()"
162
- [modeSignal]="mode()"
163
- [control]="control()"
164
- [formId]="formId()"
165
- ></app-multi-image-upload>
166
- }
167
-
168
- <!-- Avatar -->
169
- @case (fieldTypeEnum.AvatarUpload) {
170
- <app-avatar-upload
171
- [formControlName]="field().key"
172
- [fieldInput]="field()"
173
- [modeSignal]="mode()"
174
- [control]="control()"
175
- [formId]="formId()"
176
- ></app-avatar-upload>
177
- }
178
-
179
- <!-- Radio -->
180
- @case (fieldTypeEnum.Radio) {
181
- <span>Radio</span>
182
- }
183
-
184
- <!-- Checkbox -->
185
- @case (fieldTypeEnum.Checkbox) {
186
- <span>Checkbox</span>
187
- }
188
-
189
- <!-- Radio -->
190
- @case (fieldTypeEnum.Radio) {
191
- <span>Radio</span>
192
- }
193
-
194
- <!-- Switch -->
195
- @case (fieldTypeEnum.Switch) {
196
- <span>Switch</span>
197
- }
198
-
199
- <!-- Autocomplete -->
200
- @case (fieldTypeEnum.Autocomplete) {
201
- <span>Autocomplete</span>
202
- }
203
- }
204
- </div>
205
-
206
- <!-- Tách phần cấu hình ra Component riêng -->
207
- @if (mode() !== formModeEnum.View) {
208
- <div class="field-user-config-ctn">
209
- <app-field-user-config
210
- [field]="field()"
211
- [control]="control()"
212
- ></app-field-user-config>
213
- </div>
214
- }
215
- </div>
216
- </nz-form-control>
217
- </nz-form-item>
218
- </div>
@@ -1,28 +0,0 @@
1
- .required {
2
- color: red;
3
- font-weight: bold;
4
- margin-right: 4px;
5
- }
6
-
7
- .form-label {
8
- white-space: normal !important;
9
- word-break: break-word;
10
- font-weight: 500;
11
- font-size: 12px;
12
- }
13
-
14
- .sub-label {
15
- white-space: normal !important;
16
- word-break: break-word;
17
- font-size: 11px;
18
- font-style: italic;
19
- }
20
- :host ::ng-deep {
21
- .ant-form-item {
22
- align-items: center;
23
- }
24
-
25
- .ant-form-item-label > label {
26
- display: inline-block !important;
27
- }
28
- }
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { DynamicFieldComponent } from './dynamic-field.component';
4
-
5
- describe('DynamicFieldComponent', () => {
6
- let component: DynamicFieldComponent;
7
- let fixture: ComponentFixture<DynamicFieldComponent>;
8
-
9
- beforeEach(() => {
10
- TestBed.configureTestingModule({
11
- imports: [DynamicFieldComponent],
12
- });
13
- fixture = TestBed.createComponent(DynamicFieldComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });