@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,317 +0,0 @@
1
- import { Component, computed, forwardRef, inject, signal } from "@angular/core";
2
- import {
3
- DELETE_FILE_ERROR,
4
- NO_FILE_NAME,
5
- NO_INFO_TEXT,
6
- UPLOAD_FILE_ERROR,
7
- UPLOAD_FILE_TEXT,
8
- } from "../../../../consts/common";
9
- import { BaseValueAccessor } from "../../../../base/base-value-accessor";
10
- import { SingleFileUploadField } from "../../../../models/fields/upload/single-file-upload-field.model";
11
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
12
- import {
13
- NzUploadFile,
14
- NzUploadModule,
15
- NzUploadXHRArgs,
16
- } from "ng-zorro-antd/upload";
17
- import { finalize, Observable, of, Subscription } from "rxjs";
18
- import { FileService } from "../../../../services/file.service";
19
- import { ObjectStorage } from "../../../../models/common/object-storage.model";
20
- import { FieldTypeEnum } from "../../../../enums/fields";
21
- import { MyUploadFile } from "../../../../models/common/common.model";
22
- import { formatFileSize, getExtensions } from "../../../../utils/file";
23
- import { isValidJSON } from "../../../../utils/common";
24
- import { ControlTypeEnum } from "../../../../enums/controls";
25
- import { FileSizeTypeEnum } from "../../../../enums/common";
26
- import { FormUtils } from "../../../../services/form-utils";
27
- import { FormConfigService } from "../../../../services/form-config.service";
28
- import { NzIconModule } from "ng-zorro-antd/icon";
29
- import { NzInputModule } from "ng-zorro-antd/input";
30
- import { NzButtonModule } from "ng-zorro-antd/button";
31
- import { SuffixComponent } from "../../components/suffix/suffix.component";
32
- import { NzSpinModule } from "ng-zorro-antd/spin";
33
- import { NzNotificationService } from "ng-zorro-antd/notification";
34
- import { CommonModule } from "@angular/common";
35
-
36
- const modules = [CommonModule];
37
- const zorroModules = [
38
- NzUploadModule,
39
- NzIconModule,
40
- NzInputModule,
41
- NzButtonModule,
42
- NzSpinModule,
43
- ];
44
- const components = [SuffixComponent];
45
-
46
- @Component({
47
- selector: "app-single-file-upload",
48
- standalone: true,
49
- imports: [...modules, ...zorroModules, ...components],
50
- templateUrl: "./single-file-upload.component.html",
51
- styleUrls: ["./single-file-upload.component.scss"],
52
- providers: [
53
- {
54
- provide: NG_VALUE_ACCESSOR,
55
- useExisting: forwardRef(() => SingleFileUploadComponent),
56
- multi: true,
57
- },
58
- ],
59
- })
60
- export class SingleFileUploadComponent extends BaseValueAccessor<
61
- string | File | NzUploadFile
62
- > {
63
- readonly field = computed(() => {
64
- const base = this.fieldInput();
65
- if (
66
- !(base instanceof SingleFileUploadField) ||
67
- (base.type !== FieldTypeEnum.SingleFileUpload &&
68
- base.controlType !== ControlTypeEnum.Upload)
69
- ) {
70
- throw new Error("Expected SingleFileUploadField");
71
- }
72
- return base;
73
- });
74
-
75
- // Inject services
76
- private readonly fileService = inject(FileService);
77
- private readonly nzNotification = inject(NzNotificationService);
78
- private readonly formConfigService = inject(FormConfigService);
79
-
80
- // Mảng lưu trữ objectStorage liên quan đến tập tin.
81
- readonly objStorageList = signal<ObjectStorage[]>([]);
82
-
83
- // Mảng đại diện các files.
84
- readonly allFiles = signal<MyUploadFile[]>([]);
85
-
86
- // Text hướng dẫn các loại extension được upload.
87
- readonly fileExtensionGuide = computed(() => {
88
- if (!this.isAddOrEdit()) return "";
89
- const { acceptedMimeTypes } = this.field();
90
- return `Hỗ trợ định dạng ${getExtensions(acceptedMimeTypes).join(", ")}`;
91
- });
92
-
93
- readonly viewDisplayValue = computed(() => {
94
- // 1. Nếu không phải View thì không cần quan tâm text này
95
- if (!this.isView()) return "";
96
-
97
- if (this.allFiles().length === 0) return NO_INFO_TEXT;
98
-
99
- const { objStorage } = this.allFiles()[0];
100
- const { nameAlias, name } = objStorage;
101
- if (!nameAlias && !name) return NO_INFO_TEXT;
102
-
103
- return nameAlias ?? name;
104
- });
105
-
106
- readonly addEditDisplayValue = computed(() => {
107
- if (!this.isAddOrEdit()) return "";
108
-
109
- if (this.allFiles().length === 0) return UPLOAD_FILE_TEXT;
110
-
111
- const { objStorage } = this.allFiles()[0];
112
- const { nameAlias, name } = objStorage;
113
- if (!nameAlias && !name) return NO_FILE_NAME;
114
-
115
- return nameAlias ?? name;
116
- });
117
-
118
- readonly uploading = signal(false);
119
-
120
- constructor() {
121
- super();
122
- }
123
-
124
- // Chạy khi value form được gán bởi các hàm reset, patchValue, setValue.
125
- protected override writeValueToView(value: string): void {
126
- this.handleInitAllData(value);
127
-
128
- if (!this.isAddOrEdit()) return;
129
-
130
- // Gán data vào đầu ra của form.
131
- this.patchFormData(this.fieldKey(), value);
132
- }
133
-
134
- // Xử lý init các data cần thiết: objStorage, myFile, fileList, lưu giữ first value.
135
- // value sẽ là 1 string json mảng các objStorage.
136
- private handleInitAllData(value: string): void {
137
- // Reset khi đổi mode, hoặc model, hoặc fields.
138
- this.objStorageList.set([]);
139
- this.allFiles.set([]);
140
-
141
- if (isValidJSON(value)) {
142
- const objStorageList = JSON.parse(value) as ObjectStorage[];
143
- this.objStorageList.set(objStorageList);
144
-
145
- // Khởi tạo danh sách MyUploadFile từ data json.
146
- const myUploadFiles = objStorageList.map(
147
- (objStorage) =>
148
- ({
149
- objStorage,
150
- isTemp: false,
151
- previewUrl: `${this.formConfigService.getStorageUrl()}${objStorage.bucket}/${objStorage.path}`,
152
- }) as MyUploadFile,
153
- );
154
- this.allFiles.set(myUploadFiles);
155
- } else {
156
- if (value) {
157
- this.allFiles.set([
158
- {
159
- isTemp: false,
160
- objStorage: { id: "", name: value },
161
- previewUrl: "",
162
- } as MyUploadFile,
163
- ]);
164
- }
165
- }
166
- }
167
-
168
- beforeUpload = (
169
- file: NzUploadFile,
170
- fileList: NzUploadFile[],
171
- ): boolean | Observable<boolean> => {
172
- // const originFile = file?.originFileObj as unknown as File; // có thể ở version mới nhất đã fix lỗi NzUploadFile nhưng trả về File của tham số file.
173
- // Xử lý gán vào CVA để tiến hành validation theo các props đã truyền vào.
174
- const originFile = file as unknown as File;
175
- this.propagateValue(originFile);
176
-
177
- const { maxSizeInMB, acceptedMimeTypes } = this.field();
178
- const fileSizeInMB = formatFileSize(file.size!, FileSizeTypeEnum.MB);
179
- const fileType = file.type;
180
- if (fileSizeInMB > maxSizeInMB || !acceptedMimeTypes.includes(fileType!)) {
181
- return false;
182
- }
183
-
184
- return true;
185
- };
186
-
187
- customRequest = (item: NzUploadXHRArgs): Subscription => {
188
- // const originFile = nzUploadFile?.originFileObj;
189
- const originFile = item.file as unknown as File;
190
-
191
- // Nếu validation không thỏa, dừng tại đây.
192
- if (this.control?.invalid) {
193
- return of(null).subscribe(); // fake subscription.
194
- }
195
-
196
- // Validation đã thỏa, tiến hành upload file.
197
- return this.uploadFile(originFile);
198
- };
199
-
200
- private uploadFile(file: File) {
201
- this.uploading.set(true);
202
- const { apiFileConfig, uploadTemp } = this.field();
203
- const newFileName = FormUtils.randomFileName(file.name);
204
-
205
- const mimeCfg = apiFileConfig.perMimeTypeConfig?.[file.type]; // Lấy mimeTypes file upload.
206
- const uploadUrl = mimeCfg?.uploadUrl ?? apiFileConfig.uploadUrl; // Nếu có config upload riêng cho mimeTypes đang kiểm tra.
207
- const formData = mimeCfg?.buildFormData // Nếu có hàm custon buildFormData.
208
- ? mimeCfg.buildFormData(file, {
209
- fileName: newFileName,
210
- })
211
- : (() => {
212
- // Mặc định
213
- const fd = new FormData();
214
- fd.append("File", file, newFileName);
215
- if (apiFileConfig.uploadByPath && apiFileConfig.uploadPath) {
216
- fd.append("path", apiFileConfig.uploadPath);
217
- }
218
-
219
- if (apiFileConfig.isOriginName) {
220
- fd.append("nameAlias", file.name);
221
- }
222
- // fd.append('isTemp', 'true');
223
- return fd;
224
- })();
225
-
226
- if (uploadTemp) formData.append("isTemp", "true");
227
-
228
- return this.fileService
229
- .uploadFile(file, formData, { uploadUrl })
230
- .pipe(
231
- this.takeUntilDestroy(),
232
- finalize(() => this.uploading.set(false)),
233
- )
234
- .subscribe({
235
- next: (res) => {
236
- const { code, data, message } = res;
237
- if (code === 0) {
238
- this.objStorageList.set([data]);
239
-
240
- this.allFiles.set([
241
- {
242
- objStorage: data,
243
- isTemp: true,
244
- previewUrl: uploadTemp
245
- ? this.formConfigService.getViewFileUrl(data.name ?? "", true)
246
- : `${this.formConfigService.getStorageUrl()}${data.bucket}/${data.path}`,
247
- } as MyUploadFile,
248
- ]);
249
-
250
- this.patchFormData(
251
- this.fieldKey(),
252
- JSON.stringify(this.objStorageList()),
253
- );
254
- } else {
255
- console.error(message);
256
- }
257
- },
258
- error: () => {
259
- console.error(UPLOAD_FILE_ERROR);
260
- },
261
- });
262
- }
263
-
264
- handleDelete(file: MyUploadFile): void {
265
- const { objStorage } = file;
266
- const { uploadTemp } = this.field();
267
-
268
- this.objStorageList.set([]);
269
-
270
- // Loại bỏ và cập nhật danh sách MyUploadFile.
271
- const newAllFiles = this.allFiles().filter(
272
- (item) => item.objStorage?.id !== objStorage?.id,
273
- );
274
- this.allFiles.set(newAllFiles);
275
-
276
- if (!uploadTemp) {
277
- this.deleteObjStorage(objStorage.id || "");
278
- return;
279
- }
280
- this.patchFormData(this.fieldKey(), JSON.stringify(this.objStorageList()));
281
-
282
- return;
283
- }
284
-
285
- deleteObjStorage(id: string) {
286
- return this.fileService
287
- .deleteObjStorage(id, {
288
- deleteUrl: this.field().apiFileConfig.deleteUrl,
289
- })
290
- .pipe(this.takeUntilDestroy())
291
- .subscribe({
292
- next: (res) => {
293
- const { code, message } = res;
294
- if (code === 0) {
295
- this.objStorageList.set([]);
296
-
297
- this.patchFormData(
298
- this.fieldKey(),
299
- JSON.stringify(this.objStorageList()),
300
- );
301
- } else {
302
- console.error(message);
303
- }
304
- },
305
- error: () => {
306
- console.error(DELETE_FILE_ERROR);
307
- // Tạm do api xóa có vấn đề
308
- this.objStorageList.set([]);
309
-
310
- this.patchFormData(
311
- this.fieldKey(),
312
- JSON.stringify(this.objStorageList()),
313
- );
314
- },
315
- });
316
- }
317
- }
@@ -1,11 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
-
3
- export interface DynamicFormConfig {
4
- prefix: string;
5
- mainApiUrl: string;
6
- systemApiUrl: string;
7
- portalApiUrl: string;
8
- storageUrl: string;
9
- }
10
-
11
- export const DYNAMIC_FORM_CONFIG = new InjectionToken<DynamicFormConfig>('DYNAMIC_FORM_CONFIG');
@@ -1,5 +0,0 @@
1
- export const NO_INFO_TEXT = "Không có thông tin";
2
- export const UPLOAD_FILE_TEXT = "Tải lên tập tin";
3
- export const NO_FILE_NAME = "Chưa có thông tin tên tập tin";
4
- export const UPLOAD_FILE_ERROR = "Lỗi trong quá trình tải tập tin đến máy chủ!";
5
- export const DELETE_FILE_ERROR = "Lỗi trong quá trình xóa tập tin đến máy chủ!";
@@ -1 +0,0 @@
1
- export const COMBINE_DEPEND_TYPES = ['skip', 'null', 'valid'] as const;
@@ -1,130 +0,0 @@
1
- export const IMAGE_TYPES = {
2
- apng: 'image/apng',
3
- avif: 'image/avif',
4
- bmp: 'image/bmp',
5
- gif: 'image/gif',
6
- jpeg: 'image/jpeg',
7
- jpg: 'image/jpeg',
8
- png: 'image/png',
9
- svg: 'image/svg+xml',
10
- tif: 'image/tiff',
11
- tiff: 'image/tiff',
12
- webp: 'image/webp',
13
- };
14
-
15
- export const AUDIO_TYPES = {
16
- aac: 'audio/aac',
17
- mp3: 'audio/mpeg',
18
- oga: 'audio/ogg',
19
- opus: 'audio/ogg',
20
- wav: 'audio/wav',
21
- weba: 'audio/webm',
22
- };
23
-
24
- export const VIDEO_TYPES = {
25
- avi: 'video/avi',
26
- mp4: 'video/mp4',
27
- mpeg: 'video/mpeg',
28
- ogv: 'video/ogg',
29
- ts: 'video/mp2t',
30
- webm: 'video/webm',
31
- };
32
-
33
- export const videoTypesPath = ['mp4', 'avi'];
34
-
35
- export const TEXT_TYPES = {
36
- css: 'text/css',
37
- csv: 'text/csv',
38
- html: 'text/html',
39
- ics: 'text/calendar',
40
- js: 'text/javascript ',
41
- mjs: 'text/javascript ',
42
- txt: 'text/plain',
43
- };
44
-
45
- export const APPLICATION_TYPES = {
46
- abw: 'application/x-abiword',
47
- arc: 'application/x-freearc',
48
- azw: 'application/vnd.amazon.ebook',
49
- bin: 'application/octet-stream',
50
- bz: 'application/x-bzip',
51
- bz2: 'application/x-bzip2',
52
- cda: 'application/x-cdf',
53
- csh: 'application/x-csh',
54
- doc: 'application/msword',
55
- docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
56
- eot: 'application/vnd.ms-fontobject',
57
- epub: 'application/epub+zip',
58
- jar: 'application/java-archive',
59
- json: 'application/json',
60
- jsonld: 'application/ld+json',
61
- mpkg: 'application/vnd.apple.installer+xml',
62
- ods: 'application/vnd.oasis.opendocument.spreadsheet',
63
- odt: 'application/vnd.oasis.opendocument.text',
64
- ogx: 'application/ogg',
65
- pdf: 'application/pdf',
66
- php: 'application/x-httpd-php',
67
- ppt: 'application/vnd.ms-powerpoint',
68
- pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
69
- rar: 'application/vnd.rar',
70
- rarX: 'application/x-rar',
71
- rtf: 'application/rtf',
72
- sh: 'application/x-sh',
73
- tar: 'application/x-tar',
74
- vsd: 'application/vnd.visio',
75
- xhtml: 'application/xhtml+xml',
76
- xls: 'application/vnd.ms-excel',
77
- xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
78
- zip: 'application/x-zip-compressed',
79
- zipN: 'application/zip',
80
- sevenZ: 'application/x-7z-compressed',
81
- csv: 'text/csv',
82
- };
83
-
84
- export const MIME_TYPES_TO_EXTENSION = Object.entries(APPLICATION_TYPES).reduce(
85
- (acc, [key, value]) => {
86
- acc[value] = key;
87
- return acc;
88
- },
89
- {} as Record<string, string>,
90
- );
91
-
92
- export const ALL_MIME_TYPES = {
93
- ...IMAGE_TYPES,
94
- ...AUDIO_TYPES,
95
- ...VIDEO_TYPES,
96
- ...TEXT_TYPES,
97
- ...APPLICATION_TYPES,
98
- };
99
-
100
- export const ALL_MIME_TYPES_VALUE = Object.values({
101
- ...IMAGE_TYPES,
102
- ...AUDIO_TYPES,
103
- ...VIDEO_TYPES,
104
- ...TEXT_TYPES,
105
- ...APPLICATION_TYPES,
106
- });
107
-
108
- export const DEFAULT_ACCEPTED_MIME_TYPES = [
109
- IMAGE_TYPES.jpg,
110
- IMAGE_TYPES.jpeg,
111
- IMAGE_TYPES.png,
112
- IMAGE_TYPES.svg,
113
- APPLICATION_TYPES.doc,
114
- APPLICATION_TYPES.docx,
115
- APPLICATION_TYPES.pdf,
116
- APPLICATION_TYPES.xls,
117
- APPLICATION_TYPES.xlsx,
118
- APPLICATION_TYPES.zip,
119
- APPLICATION_TYPES.zipN,
120
- TEXT_TYPES.txt,
121
- VIDEO_TYPES.mp4,
122
- VIDEO_TYPES.avi,
123
- ];
124
-
125
- export const DEFAULT_ACCEPTED_IMAGE_MIME_TYPES = [
126
- IMAGE_TYPES.jpg,
127
- IMAGE_TYPES.jpeg,
128
- IMAGE_TYPES.png,
129
- IMAGE_TYPES.svg,
130
- ];