@ldquocc/dynamic-form 0.0.8 → 0.0.9

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/ng-package.json +15 -0
  2. package/package.json +20 -31
  3. package/src/lib/dynamic-form.component.html +121 -0
  4. package/src/lib/dynamic-form.component.scss +7 -0
  5. package/src/lib/dynamic-form.component.spec.ts +21 -0
  6. package/src/lib/dynamic-form.component.ts +237 -0
  7. package/src/lib/dynamic-form.service.spec.ts +16 -0
  8. package/src/lib/dynamic-form.service.ts +9 -0
  9. package/src/lib/shared/base/base-select.component.ts +183 -0
  10. package/src/lib/shared/base/base-value-accessor.ts +192 -0
  11. package/{lib/shared/components/component.d.ts → src/lib/shared/components/component.ts} +34 -14
  12. package/src/lib/shared/components/d-form-testing/d-form-testing.component.html +197 -0
  13. package/src/lib/shared/components/d-form-testing/d-form-testing.component.less +12 -0
  14. package/src/lib/shared/components/d-form-testing/d-form-testing.component.spec.ts +22 -0
  15. package/src/lib/shared/components/d-form-testing/d-form-testing.component.ts +197 -0
  16. package/src/lib/shared/components/dynamic-field/dynamic-field.component.html +218 -0
  17. package/src/lib/shared/components/dynamic-field/dynamic-field.component.scss +28 -0
  18. package/src/lib/shared/components/dynamic-field/dynamic-field.component.spec.ts +21 -0
  19. package/src/lib/shared/components/dynamic-field/dynamic-field.component.ts +67 -0
  20. package/src/lib/shared/components/field-user-config/field-user-config.component.html +38 -0
  21. package/src/lib/shared/components/field-user-config/field-user-config.component.scss +29 -0
  22. package/src/lib/shared/components/field-user-config/field-user-config.component.ts +33 -0
  23. package/src/lib/shared/components/fields/components/suffix/suffix.component.html +42 -0
  24. package/src/lib/shared/components/fields/components/suffix/suffix.component.scss +3 -0
  25. package/src/lib/shared/components/fields/components/suffix/suffix.component.spec.ts +22 -0
  26. package/src/lib/shared/components/fields/components/suffix/suffix.component.ts +32 -0
  27. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.html +20 -0
  28. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.scss +5 -0
  29. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.spec.ts +21 -0
  30. package/src/lib/shared/components/fields/date/date-picker/date-picker.component.ts +148 -0
  31. package/src/lib/shared/components/fields/date/date-range/date-range.component.html +33 -0
  32. package/src/lib/shared/components/fields/date/date-range/date-range.component.scss +22 -0
  33. package/src/lib/shared/components/fields/date/date-range/date-range.component.spec.ts +21 -0
  34. package/src/lib/shared/components/fields/date/date-range/date-range.component.ts +133 -0
  35. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.html +31 -0
  36. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.scss +3 -0
  37. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.spec.ts +21 -0
  38. package/src/lib/shared/components/fields/input/input-formatted/input-formatted.component.ts +148 -0
  39. package/src/lib/shared/components/fields/input/input-password/input-password.component.html +18 -0
  40. package/src/lib/shared/components/fields/input/input-password/input-password.component.scss +0 -0
  41. package/src/lib/shared/components/fields/input/input-password/input-password.component.spec.ts +21 -0
  42. package/src/lib/shared/components/fields/input/input-password/input-password.component.ts +56 -0
  43. package/src/lib/shared/components/fields/input/input-text/input-text.component.html +73 -0
  44. package/src/lib/shared/components/fields/input/input-text/input-text.component.scss +0 -0
  45. package/src/lib/shared/components/fields/input/input-text/input-text.component.spec.ts +21 -0
  46. package/src/lib/shared/components/fields/input/input-text/input-text.component.ts +98 -0
  47. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.html +73 -0
  48. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.scss +21 -0
  49. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.spec.ts +21 -0
  50. package/src/lib/shared/components/fields/select/multi-select/multi-select.component.ts +212 -0
  51. package/src/lib/shared/components/fields/select/single-select/single-select.component.html +55 -0
  52. package/src/lib/shared/components/fields/select/single-select/single-select.component.scss +1 -0
  53. package/src/lib/shared/components/fields/select/single-select/single-select.component.spec.ts +21 -0
  54. package/src/lib/shared/components/fields/select/single-select/single-select.component.ts +217 -0
  55. package/src/lib/shared/components/fields/select/single-select/sl.component.old.txt +337 -0
  56. package/src/lib/shared/components/fields/select/single-select/sl.component.old2.txt +340 -0
  57. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.html +38 -0
  58. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.scss +1 -0
  59. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.spec.ts +21 -0
  60. package/src/lib/shared/components/fields/select/tree-select/tree-select.component.ts +401 -0
  61. package/src/lib/shared/components/fields/textarea/textarea.component.html +29 -0
  62. package/src/lib/shared/components/fields/textarea/textarea.component.scss +17 -0
  63. package/src/lib/shared/components/fields/textarea/textarea.component.spec.ts +21 -0
  64. package/src/lib/shared/components/fields/textarea/textarea.component.ts +76 -0
  65. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.html +30 -0
  66. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.scss +22 -0
  67. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.spec.ts +22 -0
  68. package/src/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.ts +217 -0
  69. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.html +101 -0
  70. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.scss +117 -0
  71. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.spec.ts +22 -0
  72. package/src/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.ts +480 -0
  73. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.html +82 -0
  74. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.less +80 -0
  75. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.spec.ts +22 -0
  76. package/src/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.ts +288 -0
  77. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.html +104 -0
  78. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.scss +37 -0
  79. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.spec.ts +21 -0
  80. package/src/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.ts +317 -0
  81. package/src/lib/shared/config/dynamic-form.config.ts +11 -0
  82. package/src/lib/shared/consts/common/common.const.ts +5 -0
  83. package/src/lib/shared/consts/common/field-dependency.const.ts +1 -0
  84. package/src/lib/shared/consts/common/file.const.ts +130 -0
  85. package/{lib/shared/consts/common/index.d.ts → src/lib/shared/consts/common/index.ts} +4 -4
  86. package/src/lib/shared/consts/common/sample-test.const.ts +1648 -0
  87. package/src/lib/shared/consts/common/standalone-import.const.ts +51 -0
  88. package/src/lib/shared/consts/controls/control.const.ts +11 -0
  89. package/{lib/shared/consts/controls/index.d.ts → src/lib/shared/consts/controls/index.ts} +1 -1
  90. package/src/lib/shared/consts/fields/date-field.const.ts +12 -0
  91. package/src/lib/shared/consts/fields/field.const.ts +23 -0
  92. package/{lib/shared/consts/fields/index.d.ts → src/lib/shared/consts/fields/index.ts} +5 -5
  93. package/src/lib/shared/consts/fields/input-field.const.ts +4 -0
  94. package/src/lib/shared/consts/fields/input-formatted-field.const.ts +35 -0
  95. package/src/lib/shared/consts/fields/radio-field.const.ts +31 -0
  96. package/src/lib/shared/consts/fields/select-field.const.ts +7 -0
  97. package/src/lib/shared/consts/fields/upload-field.const.ts +1 -0
  98. package/src/lib/shared/consts/validators/index.ts +0 -0
  99. package/src/lib/shared/consts/validators/pattern.const.ts +117 -0
  100. package/src/lib/shared/enums/common/component-ui.enum.ts +8 -0
  101. package/src/lib/shared/enums/common/field-dependency.enum.ts +10 -0
  102. package/src/lib/shared/enums/common/file-size-type.enum.ts +6 -0
  103. package/{lib/shared/enums/common/index.d.ts → src/lib/shared/enums/common/index.ts} +4 -4
  104. package/src/lib/shared/enums/common/output-value-type.enum.ts +22 -0
  105. package/src/lib/shared/enums/common/view-mode.enum.ts +4 -0
  106. package/src/lib/shared/enums/controls/control.enum.ts +12 -0
  107. package/{lib/shared/enums/controls/index.d.ts → src/lib/shared/enums/controls/index.ts} +1 -1
  108. package/src/lib/shared/enums/fields/date-field.enum.ts +4 -0
  109. package/src/lib/shared/enums/fields/field.enum.ts +21 -0
  110. package/{lib/shared/enums/fields/index.d.ts → src/lib/shared/enums/fields/index.ts} +6 -6
  111. package/src/lib/shared/enums/fields/input-field.enum.ts +6 -0
  112. package/src/lib/shared/enums/fields/input-formatted-field.enum.ts +6 -0
  113. package/src/lib/shared/enums/fields/select-field.enum.ts +4 -0
  114. package/src/lib/shared/enums/fields/upload-field.enum.ts +5 -0
  115. package/src/lib/shared/enums/form/dynamic-form.enum.ts +6 -0
  116. package/{lib/shared/enums/form/index.d.ts → src/lib/shared/enums/form/index.ts} +1 -1
  117. package/{lib/shared/enums/validators/index.d.ts → src/lib/shared/enums/validators/index.ts} +2 -2
  118. package/src/lib/shared/enums/validators/regex.enum.ts +47 -0
  119. package/src/lib/shared/enums/validators/validators.enum.ts +17 -0
  120. package/src/lib/shared/factories/auto-numeric-options.factory.ts +14 -0
  121. package/src/lib/shared/models/common/api-config.model.ts +7 -0
  122. package/src/lib/shared/models/common/api-response.model.ts +20 -0
  123. package/src/lib/shared/models/common/common.model.ts +39 -0
  124. package/src/lib/shared/models/common/field-dependency.model.ts +27 -0
  125. package/src/lib/shared/models/common/file-config.model.ts +22 -0
  126. package/{lib/shared/models/common/index.d.ts → src/lib/shared/models/common/index.ts} +7 -7
  127. package/src/lib/shared/models/common/obj-field.model.ts +68 -0
  128. package/src/lib/shared/models/common/object-storage.model.ts +15 -0
  129. package/{lib/shared/models/common/output-value-type.model.d.ts → src/lib/shared/models/common/output-value-type.model.ts} +4 -4
  130. package/src/lib/shared/models/common/table-models.ts +16 -0
  131. package/{lib/shared/models/common/view-mode.model.d.ts → src/lib/shared/models/common/view-mode.model.ts} +1 -1
  132. package/{lib/shared/models/controls/control.model.d.ts → src/lib/shared/models/controls/control.model.ts} +3 -2
  133. package/{lib/shared/models/controls/index.d.ts → src/lib/shared/models/controls/index.ts} +1 -1
  134. package/src/lib/shared/models/fields/date/base-date-field.model.ts +52 -0
  135. package/src/lib/shared/models/fields/date/date-picker-field.model.ts +43 -0
  136. package/src/lib/shared/models/fields/date/date-range-field.model.ts +52 -0
  137. package/{lib/shared/models/fields/date/index.d.ts → src/lib/shared/models/fields/date/index.ts} +3 -3
  138. package/src/lib/shared/models/fields/field-grid.model.ts +10 -0
  139. package/src/lib/shared/models/fields/field-group.model.ts +50 -0
  140. package/src/lib/shared/models/fields/field-user-config.model.ts +8 -0
  141. package/src/lib/shared/models/fields/field.model.ts +184 -0
  142. package/{lib/shared/models/fields/index.d.ts → src/lib/shared/models/fields/index.ts} +2 -2
  143. package/{lib/shared/models/fields/input/index.d.ts → src/lib/shared/models/fields/input/index.ts} +4 -4
  144. package/src/lib/shared/models/fields/input/input-field.model.ts +111 -0
  145. package/src/lib/shared/models/fields/input/input-formatted-field.model.ts +38 -0
  146. package/src/lib/shared/models/fields/input/input-password-field.model.ts +38 -0
  147. package/src/lib/shared/models/fields/input/input-text-field.model.ts +26 -0
  148. package/src/lib/shared/models/fields/radio/index.ts +0 -0
  149. package/src/lib/shared/models/fields/radio/radio-base-field.model.ts +84 -0
  150. package/src/lib/shared/models/fields/select/index.ts +0 -0
  151. package/src/lib/shared/models/fields/select/multi-select-field.model.ts +46 -0
  152. package/src/lib/shared/models/fields/select/select-base-field.model.ts +125 -0
  153. package/src/lib/shared/models/fields/select/single-select-field.model.ts +43 -0
  154. package/src/lib/shared/models/fields/select/tree-select-field.model.ts +44 -0
  155. package/src/lib/shared/models/fields/textarea/index.ts +0 -0
  156. package/src/lib/shared/models/fields/textarea/textarea-field.model.ts +97 -0
  157. package/src/lib/shared/models/fields/upload/avatar-upload-field.model.ts +33 -0
  158. package/src/lib/shared/models/fields/upload/base-upload-field.model.ts +105 -0
  159. package/{lib/shared/models/fields/upload/index.d.ts → src/lib/shared/models/fields/upload/index.ts} +5 -5
  160. package/src/lib/shared/models/fields/upload/multi-file-upload-field.model.ts +34 -0
  161. package/src/lib/shared/models/fields/upload/multi-image-upload-field.model.ts +42 -0
  162. package/src/lib/shared/models/fields/upload/single-file-upload-field.model.ts +33 -0
  163. package/{lib/shared/models/form/dynamic-form.model.d.ts → src/lib/shared/models/form/dynamic-form.model.ts} +1 -1
  164. package/{lib/shared/models/form/index.d.ts → src/lib/shared/models/form/index.ts} +1 -1
  165. package/src/lib/shared/models/validations/index.ts +1 -0
  166. package/src/lib/shared/models/validations/validations.model.ts +14 -0
  167. package/src/lib/shared/services/dynamic-form.service.spec.ts +16 -0
  168. package/src/lib/shared/services/dynamic-form.service.ts +251 -0
  169. package/src/lib/shared/services/field.service.spec.ts +16 -0
  170. package/src/lib/shared/services/field.service.ts +152 -0
  171. package/src/lib/shared/services/file.service.spec.ts +16 -0
  172. package/src/lib/shared/services/file.service.ts +53 -0
  173. package/src/lib/shared/services/form-config.service.ts +53 -0
  174. package/src/lib/shared/services/form-data.service.spec.ts +16 -0
  175. package/src/lib/shared/services/form-data.service.ts +114 -0
  176. package/src/lib/shared/services/form-utils.ts +52 -0
  177. package/src/lib/shared/services/suffix.service.spec.ts +16 -0
  178. package/src/lib/shared/services/suffix.service.ts +16 -0
  179. package/src/lib/shared/services/validation.service.spec.ts +16 -0
  180. package/src/lib/shared/services/validation.service.ts +38 -0
  181. package/src/lib/shared/utils/common/common.utils.ts +52 -0
  182. package/{lib/shared/utils/common/index.d.ts → src/lib/shared/utils/common/index.ts} +1 -1
  183. package/src/lib/shared/utils/date/date.utils.ts +129 -0
  184. package/{lib/shared/utils/date/index.d.ts → src/lib/shared/utils/date/index.ts} +1 -1
  185. package/src/lib/shared/utils/dynamic-field/dynamic-field.ts +0 -0
  186. package/src/lib/shared/utils/dynamic-field/index.ts +0 -0
  187. package/src/lib/shared/utils/dynamic-form/dynamic-form.ts +114 -0
  188. package/src/lib/shared/utils/dynamic-form/index.ts +0 -0
  189. package/src/lib/shared/utils/fields/fields.ts +78 -0
  190. package/{lib/shared/utils/fields/index.d.ts → src/lib/shared/utils/fields/index.ts} +1 -1
  191. package/src/lib/shared/utils/file/file.utils.ts +37 -0
  192. package/{lib/shared/utils/file/index.d.ts → src/lib/shared/utils/file/index.ts} +1 -1
  193. package/src/lib/shared/utils/validators/custom-validators.ts +158 -0
  194. package/src/lib/shared/utils/validators/default-error-message.ts +42 -0
  195. package/{lib/shared/utils/validators/index.d.ts → src/lib/shared/utils/validators/index.ts} +3 -3
  196. package/src/lib/shared/utils/validators/pattern.ts +26 -0
  197. package/{public-api.d.ts → src/public-api.ts} +68 -28
  198. package/tsconfig.lib.json +15 -0
  199. package/tsconfig.lib.prod.json +11 -0
  200. package/tsconfig.spec.json +15 -0
  201. package/fesm2022/ldquocc-dynamic-form.mjs +0 -4938
  202. package/fesm2022/ldquocc-dynamic-form.mjs.map +0 -1
  203. package/index.d.ts +0 -5
  204. package/lib/dynamic-form.component.d.ts +0 -67
  205. package/lib/shared/base/base-select.component.d.ts +0 -19
  206. package/lib/shared/base/base-value-accessor.d.ts +0 -69
  207. package/lib/shared/components/dynamic-field/dynamic-field.component.d.ts +0 -23
  208. package/lib/shared/components/field-user-config/field-user-config.component.d.ts +0 -10
  209. package/lib/shared/components/fields/components/suffix/suffix.component.d.ts +0 -12
  210. package/lib/shared/components/fields/date/date-picker/date-picker.component.d.ts +0 -17
  211. package/lib/shared/components/fields/date/date-range/date-range.component.d.ts +0 -17
  212. package/lib/shared/components/fields/input/input-formatted/input-formatted.component.d.ts +0 -20
  213. package/lib/shared/components/fields/input/input-password/input-password.component.d.ts +0 -12
  214. package/lib/shared/components/fields/input/input-text/input-text.component.d.ts +0 -14
  215. package/lib/shared/components/fields/select/multi-select/multi-select.component.d.ts +0 -21
  216. package/lib/shared/components/fields/select/single-select/single-select.component.d.ts +0 -21
  217. package/lib/shared/components/fields/select/tree-select/tree-select.component.d.ts +0 -28
  218. package/lib/shared/components/fields/textarea/textarea.component.d.ts +0 -14
  219. package/lib/shared/components/fields/upload/avatar-upload/avatar-upload.component.d.ts +0 -25
  220. package/lib/shared/components/fields/upload/multi-file-upload/multi-file-upload.component.d.ts +0 -76
  221. package/lib/shared/components/fields/upload/multi-image-upload/multi-image-upload.component.d.ts +0 -27
  222. package/lib/shared/components/fields/upload/single-file-upload/single-file-upload.component.d.ts +0 -29
  223. package/lib/shared/config/dynamic-form.config.d.ts +0 -9
  224. package/lib/shared/consts/common/common.const.d.ts +0 -5
  225. package/lib/shared/consts/common/field-dependency.const.d.ts +0 -1
  226. package/lib/shared/consts/common/file.const.d.ts +0 -148
  227. package/lib/shared/consts/common/standalone-import.const.d.ts +0 -7
  228. package/lib/shared/consts/controls/control.const.d.ts +0 -1
  229. package/lib/shared/consts/fields/date-field.const.d.ts +0 -7
  230. package/lib/shared/consts/fields/field.const.d.ts +0 -4
  231. package/lib/shared/consts/fields/input-field.const.d.ts +0 -4
  232. package/lib/shared/consts/fields/input-formatted-field.const.d.ts +0 -4
  233. package/lib/shared/consts/fields/radio-field.const.d.ts +0 -10
  234. package/lib/shared/consts/fields/select-field.const.d.ts +0 -6
  235. package/lib/shared/consts/fields/upload-field.const.d.ts +0 -1
  236. package/lib/shared/consts/validators/pattern.const.d.ts +0 -2
  237. package/lib/shared/enums/common/field-dependency.enum.d.ts +0 -9
  238. package/lib/shared/enums/common/file-size-type.enum.d.ts +0 -6
  239. package/lib/shared/enums/common/output-value-type.enum.d.ts +0 -19
  240. package/lib/shared/enums/common/view-mode.enum.d.ts +0 -4
  241. package/lib/shared/enums/controls/control.enum.d.ts +0 -11
  242. package/lib/shared/enums/fields/date-field.enum.d.ts +0 -4
  243. package/lib/shared/enums/fields/field.enum.d.ts +0 -20
  244. package/lib/shared/enums/fields/input-field.enum.d.ts +0 -6
  245. package/lib/shared/enums/fields/input-formatted-field.enum.d.ts +0 -6
  246. package/lib/shared/enums/fields/select-field.enum.d.ts +0 -4
  247. package/lib/shared/enums/fields/upload-field.enum.d.ts +0 -5
  248. package/lib/shared/enums/form/dynamic-form.enum.d.ts +0 -6
  249. package/lib/shared/enums/validators/regex.enum.d.ts +0 -38
  250. package/lib/shared/enums/validators/validators.enum.d.ts +0 -14
  251. package/lib/shared/factories/auto-numeric-options.factory.d.ts +0 -5
  252. package/lib/shared/models/common/api-config.model.d.ts +0 -4
  253. package/lib/shared/models/common/api-response.model.d.ts +0 -19
  254. package/lib/shared/models/common/common.model.d.ts +0 -29
  255. package/lib/shared/models/common/field-dependency.model.d.ts +0 -16
  256. package/lib/shared/models/common/file-config.model.d.ts +0 -11
  257. package/lib/shared/models/common/obj-field.model.d.ts +0 -59
  258. package/lib/shared/models/common/object-storage.model.d.ts +0 -15
  259. package/lib/shared/models/common/table-models.d.ts +0 -15
  260. package/lib/shared/models/fields/date/base-date-field.model.d.ts +0 -19
  261. package/lib/shared/models/fields/date/date-picker-field.model.d.ts +0 -12
  262. package/lib/shared/models/fields/date/date-range-field.model.d.ts +0 -12
  263. package/lib/shared/models/fields/field-grid.model.d.ts +0 -9
  264. package/lib/shared/models/fields/field-group.model.d.ts +0 -21
  265. package/lib/shared/models/fields/field-user-config.model.d.ts +0 -3
  266. package/lib/shared/models/fields/field.model.d.ts +0 -57
  267. package/lib/shared/models/fields/input/input-field.model.d.ts +0 -31
  268. package/lib/shared/models/fields/input/input-formatted-field.model.d.ts +0 -13
  269. package/lib/shared/models/fields/input/input-password-field.model.d.ts +0 -11
  270. package/lib/shared/models/fields/input/input-text-field.model.d.ts +0 -9
  271. package/lib/shared/models/fields/radio/radio-base-field.model.d.ts +0 -26
  272. package/lib/shared/models/fields/select/multi-select-field.model.d.ts +0 -11
  273. package/lib/shared/models/fields/select/select-base-field.model.d.ts +0 -40
  274. package/lib/shared/models/fields/select/single-select-field.model.d.ts +0 -9
  275. package/lib/shared/models/fields/select/tree-select-field.model.d.ts +0 -10
  276. package/lib/shared/models/fields/textarea/textarea-field.model.d.ts +0 -20
  277. package/lib/shared/models/fields/upload/avatar-upload-field.model.d.ts +0 -9
  278. package/lib/shared/models/fields/upload/base-upload-field.model.d.ts +0 -25
  279. package/lib/shared/models/fields/upload/multi-file-upload-field.model.d.ts +0 -10
  280. package/lib/shared/models/fields/upload/multi-image-upload-field.model.d.ts +0 -12
  281. package/lib/shared/models/fields/upload/single-file-upload-field.model.d.ts +0 -11
  282. package/lib/shared/services/dynamic-form.service.d.ts +0 -48
  283. package/lib/shared/services/field.service.d.ts +0 -41
  284. package/lib/shared/services/file.service.d.ts +0 -20
  285. package/lib/shared/services/form-config.service.d.ts +0 -10
  286. package/lib/shared/services/form-data.service.d.ts +0 -53
  287. package/lib/shared/services/form-utils.d.ts +0 -5
  288. package/lib/shared/services/suffix.service.d.ts +0 -12
  289. package/lib/shared/services/validation.service.d.ts +0 -10
  290. package/lib/shared/utils/common/common.utils.d.ts +0 -7
  291. package/lib/shared/utils/date/date.utils.d.ts +0 -6
  292. package/lib/shared/utils/dynamic-form/dynamic-form.d.ts +0 -11
  293. package/lib/shared/utils/fields/fields.d.ts +0 -20
  294. package/lib/shared/utils/file/file.utils.d.ts +0 -4
  295. package/lib/shared/utils/validators/custom-validators.d.ts +0 -11
  296. package/lib/shared/utils/validators/default-error-message.d.ts +0 -6
  297. package/lib/shared/utils/validators/pattern.d.ts +0 -4
  298. /package/{styles → src/lib/shared/styles}/_common-form.scss +0 -0
@@ -0,0 +1,1648 @@
1
+ import { CommonValidaterEnum, CustomValidaterEnum } from '../../enums/validators';
2
+ import { Suffix } from '../../models/common/common.model';
3
+ import { Extra, ObjField } from '../../models/common/obj-field.model';
4
+ import { DatePickerField, DateRangeField } from '../../models/fields/date';
5
+ import { BaseField } from '../../models/fields/field.model';
6
+ import { InputPasswordField, InputTextField } from '../../models/fields/input';
7
+ import { MultiSelectField } from '../../models/fields/select/multi-select-field.model';
8
+ import { SingleSelectField } from '../../models/fields/select/single-select-field.model';
9
+ import { TextareaField } from '../../models/fields/textarea/textarea-field.model';
10
+ import { AvatarUploadField } from '../../models/fields/upload/avatar-upload-field.model';
11
+ import { MultiFileUploadField } from '../../models/fields/upload/multi-file-upload-field.model';
12
+ import { MultiImageUploadField } from '../../models/fields/upload/multi-image-upload-field.model';
13
+ import { SingleFileUploadField } from '../../models/fields/upload/single-file-upload-field.model';
14
+ import { APPLICATION_TYPES, IMAGE_TYPES } from './file.const';
15
+ import { DependTypeEnum } from '../../enums/common';
16
+ // Sample extra.
17
+ // InputText
18
+ const inputTextExtra: Extra = {
19
+ form: {
20
+ formTypes: ['add'],
21
+ configs: {
22
+ add: {
23
+ key: 'name',
24
+ label: 'Tên nhiệm vụ đề xuất',
25
+ type: 'input-text',
26
+ controlType: 'input',
27
+ placeholder: 'Nhập tên nhiệm vụ đề xuất nào',
28
+ required: false,
29
+ grid: { xs: 12 },
30
+ labelGrid: { xs: 8 },
31
+ controlGrid: { xs: 16 },
32
+ isHidden: false,
33
+ isParent: false,
34
+ allowSetValue: ['add'],
35
+ } as BaseField<any>,
36
+ },
37
+ },
38
+ };
39
+ // Input Password
40
+ // SingleSelect Province
41
+ // SingleSelect District
42
+ // DatePicker
43
+ // DateRange
44
+ // SingleFileUpload
45
+ // MultiFileUpload
46
+
47
+ // Sample test ObjFields lấy từ API.
48
+ export const sampleObjFields = [
49
+ // Input Text
50
+ {
51
+ code: 'Name',
52
+ name: 'Tên nhiệm vụ',
53
+ nameEn: 'Name',
54
+ dataType: 'string',
55
+ allowShare: 1,
56
+ objClassCode: 'SciTaskProposal',
57
+ componentUI: 'InputText',
58
+ codeOnDb: 'tenNhiemVu',
59
+ seqNum: 3,
60
+ required: 3,
61
+ allowStatistic: 0,
62
+ preventEdit: 0,
63
+ validateRegex: 'ALPHA_DASH_VN',
64
+ extra: JSON.stringify(inputTextExtra),
65
+ id: '7902fd41-f7c7-47e3-86f4-29b59a97dae3',
66
+ },
67
+ // Input Password
68
+ // SingleSelect Province
69
+ // SingleSelect District
70
+ // DatePicker
71
+ // DateRange
72
+ // SingleFileUpload
73
+ // MultiFileUpload
74
+ // Field rác test k có cấu hình 1
75
+ // Field rác test k có cấu hình 2
76
+ // {
77
+ // code: 'Code',
78
+ // name: 'Mã đề xuất',
79
+ // nameEn: 'Code',
80
+ // dataType: 'string',
81
+ // allowShare: 1,
82
+ // objClassCode: 'SciTaskProposal',
83
+ // componentUI: 'InputText',
84
+ // codeOnDb: 'maDeXuat',
85
+ // seqNum: 1,
86
+ // required: 2,
87
+ // allowStatistic: 0,
88
+ // preventEdit: 0,
89
+ // viewType: 'Basic',
90
+ // id: '39d81def-6a34-4594-ab59-978233bea797',
91
+ // },
92
+ // {
93
+ // code: 'Id',
94
+ // name: 'Id',
95
+ // nameEn: 'Id',
96
+ // dataType: 'Guid',
97
+ // allowShare: 1,
98
+ // objClassCode: 'SciTaskProposal',
99
+ // componentUI: 'TextView',
100
+ // codeOnDb: 'id',
101
+ // seqNum: 1,
102
+ // required: 2,
103
+ // allowStatistic: 0,
104
+ // preventEdit: 1,
105
+ // validateRegex: 'UUID',
106
+ // viewType: 'Detail',
107
+ // id: '0e460f53-76b0-4718-be0a-7e87c4a252a1',
108
+ // },
109
+ // {
110
+ // code: 'ProposalName',
111
+ // name: 'Tên đề xuất',
112
+ // nameEn: 'ProposalName',
113
+ // dataType: 'string',
114
+ // allowShare: 1,
115
+ // objClassCode: 'SciTaskProposal',
116
+ // componentUI: 'InputText',
117
+ // codeOnDb: 'tenDeXuat',
118
+ // seqNum: 2,
119
+ // required: 1,
120
+ // allowStatistic: 0,
121
+ // preventEdit: 0,
122
+ // viewType: 'Detail',
123
+ // id: '425739aa-0ab5-4524-8eec-1ccfaaf53ccc',
124
+ // },
125
+ // {
126
+ // code: 'Name',
127
+ // name: 'Tên nhiệm vụ',
128
+ // nameEn: 'Name',
129
+ // dataType: 'string',
130
+ // allowShare: 1,
131
+ // objClassCode: 'SciTaskProposal',
132
+ // componentUI: 'InputText',
133
+ // codeOnDb: 'tenNhiemVu',
134
+ // seqNum: 3,
135
+ // required: 3,
136
+ // allowStatistic: 0,
137
+ // preventEdit: 0,
138
+ // validateRegex: 'ALPHA_DASH_VN',
139
+ // extra:
140
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":1,"viewType":"taskInfo"},"editting":{"seqNumber":1,"viewType":"taskInfo"},"viewing":{"seqNumber":1,"section":"left","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}}}}',
141
+ // viewType: 'Basic',
142
+ // id: '7902fd41-f7c7-47e3-86f4-29b59a97dae3',
143
+ // },
144
+ // {
145
+ // code: 'Level',
146
+ // name: 'Cấp nhiệm vụ đề xuất',
147
+ // nameEn: 'Level',
148
+ // dataType: 'ObjType',
149
+ // allowShare: 1,
150
+ // objClassCode: 'SciTaskProposal',
151
+ // apiURL: '{MainApiURL}/CommonCats/ObjType/byTypeGroupCode/{ObjTypeGroupCode}',
152
+ // componentUI: 'Combobox(SingleChoice)',
153
+ // codeOnDb: 'cap',
154
+ // seqNum: 4,
155
+ // required: 3,
156
+ // allowStatistic: 0,
157
+ // preventEdit: 0,
158
+ // extra:
159
+ // '{"formField":{"displayMode":["add","edit"],"adding":{"seqNumber":2,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"editting":{"seqNumber":2,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"viewing":{"seqNumber":2,"section":"left","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}}}}',
160
+ // viewType: 'Detail',
161
+ // objTypeGroupCode: 'RECOMMEND_TASK',
162
+ // id: '03230f20-2c88-4c05-a990-8290d435ce31',
163
+ // },
164
+ // {
165
+ // code: 'Program',
166
+ // name: 'Chương trình mà nhiệm vụ trực thuộc',
167
+ // nameEn: 'Program',
168
+ // dataType: 'string',
169
+ // allowShare: 1,
170
+ // objClassCode: 'SciTaskProposal',
171
+ // componentUI: 'InputText',
172
+ // codeOnDb: 'chuongTrinh',
173
+ // seqNum: 5,
174
+ // required: 1,
175
+ // allowStatistic: 0,
176
+ // preventEdit: 0,
177
+ // validateRegex: 'ALPHA_DASH_VN',
178
+ // extra:
179
+ // '{"formField":{"displayMode":["add","edit"],"adding":{"seqNumber":2,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"editting":{"seqNumber":2,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"viewing":{"seqNumber":2,"section":"left","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}}}}',
180
+ // viewType: 'Detail',
181
+ // id: 'c03a9d28-ca43-44ca-a59c-fc54494f3c73',
182
+ // },
183
+ // {
184
+ // code: 'ResearchField',
185
+ // name: 'Lĩnh vực',
186
+ // nameEn: 'ResearchField',
187
+ // dataType: 'ObjType',
188
+ // allowShare: 1,
189
+ // objClassCode: 'SciTaskProposal',
190
+ // apiURL: '{MainApiURL}/CommonCats/ObjType/byTypeGroupCode/{ObjTypeGroupCode}',
191
+ // componentUI: 'Combobox(SingleChoice)',
192
+ // codeOnDb: 'linhVucNghienCuu',
193
+ // seqNum: 6,
194
+ // required: 3,
195
+ // allowStatistic: 0,
196
+ // preventEdit: 0,
197
+ // extra:
198
+ // '{"formField":{"displayMode":["add","edit","view","filter"],"adding":{"seqNumber":2,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"editting":{"seqNumber":2,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"viewing":{"seqNumber":2,"section":"left","isShowBgInput":true,"inputBgColor":"#2E7D32","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}},"filtering":{"codeField":"researchFieldCode","seqNumber":3,"required":false,"dataTypeCombobox":"single"}}}',
199
+ // viewType: 'Detail',
200
+ // objTypeGroupCode: 'RESEARCH_FIELD',
201
+ // id: 'b5248535-fb73-486e-a980-24e8ada1993b',
202
+ // },
203
+ // {
204
+ // code: 'Type',
205
+ // name: 'Loại hình nhiệm vụ',
206
+ // nameEn: 'Type',
207
+ // dataType: 'ObjType',
208
+ // allowShare: 1,
209
+ // objClassCode: 'SciTaskProposal',
210
+ // apiURL: '{MainApiURL}/CommonCats/ObjType/byTypeGroupCode/{ObjTypeGroupCode}',
211
+ // componentUI: 'Combobox(SingleChoice)',
212
+ // codeOnDb: 'loaiHinhNhiemVu',
213
+ // seqNum: 7,
214
+ // required: 3,
215
+ // allowStatistic: 0,
216
+ // preventEdit: 0,
217
+ // extra:
218
+ // '{"formField":{"displayMode":["add","edit","view","filter"],"adding":{"seqNumber":3,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"editting":{"seqNumber":3,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"viewing":{"seqNumber":3,"section":"left","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}},"filtering":{"codeField":"typeCode","seqNumber":1,"required":false,"dataTypeCombobox": "single"}}}',
219
+ // viewType: 'Detail',
220
+ // objTypeGroupCode: 'TYPE_TASK',
221
+ // id: 'f6793a1e-f451-4050-b751-aa3a5f86d862',
222
+ // },
223
+ // {
224
+ // code: 'PlanningProposalYear',
225
+ // name: 'Năm kế hoạch đề xuất',
226
+ // nameEn: 'PlanningProposalYear',
227
+ // dataType: 'int',
228
+ // allowShare: 1,
229
+ // objClassCode: 'SciTaskProposal',
230
+ // componentUI: 'InputText',
231
+ // codeOnDb: 'namKeHoachDeXuat',
232
+ // seqNum: 8,
233
+ // required: 1,
234
+ // allowStatistic: 0,
235
+ // preventEdit: 0,
236
+ // viewType: 'Detail',
237
+ // id: '90f48f9f-5d3d-43d0-bbac-1dd072a4ffd1',
238
+ // },
239
+ // {
240
+ // code: 'ResearchObjective',
241
+ // name: 'Mục tiêu của nhiệm vụ ',
242
+ // nameEn: 'ResearchObjective',
243
+ // dataType: 'string',
244
+ // allowShare: 1,
245
+ // objClassCode: 'SciTaskProposal',
246
+ // componentUI: 'TextArea',
247
+ // codeOnDb: 'mucTieu',
248
+ // seqNum: 9,
249
+ // required: 3,
250
+ // allowStatistic: 0,
251
+ // preventEdit: 0,
252
+ // extra:
253
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":3,"viewType":"taskInfo"},"editting":{"seqNumber":3,"viewType":"taskInfo"},"viewing":{"seqNumber":1,"section":"bottom"}}}',
254
+ // viewType: 'Detail',
255
+ // id: 'ecc54ec4-ee0e-4b97-9c5b-2e06d25d6bf0',
256
+ // },
257
+ // {
258
+ // code: 'ExpectedContent',
259
+ // name: 'Dự kiến các nội dung cần thực hiện',
260
+ // nameEn: 'ExpectedContent',
261
+ // dataType: 'string',
262
+ // allowShare: 1,
263
+ // objClassCode: 'SciTaskProposal',
264
+ // componentUI: 'InputText',
265
+ // codeOnDb: 'duKienNoiDung',
266
+ // seqNum: 10,
267
+ // required: 1,
268
+ // allowStatistic: 0,
269
+ // preventEdit: 0,
270
+ // viewType: 'Detail',
271
+ // id: '180c8300-11da-41f4-8685-97d2e8885200',
272
+ // },
273
+ // {
274
+ // code: 'ExpectedResultsAndIndicators',
275
+ // name: 'Dự kiến kết quả chính và các chỉ tiêu cần đạt',
276
+ // nameEn: 'ExpectedResultsAndIndicators',
277
+ // dataType: 'string',
278
+ // allowShare: 1,
279
+ // objClassCode: 'SciTaskProposal',
280
+ // componentUI: 'TextArea',
281
+ // codeOnDb: 'duKienKetQuaVaChiTieu',
282
+ // seqNum: 11,
283
+ // required: 3,
284
+ // allowStatistic: 0,
285
+ // preventEdit: 0,
286
+ // extra:
287
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":5,"viewType":"taskInfo"},"editting":{"seqNumber":5,"viewType":"taskInfo"},"viewing":{"seqNumber":2,"section":"bottom"}}}',
288
+ // viewType: 'Detail',
289
+ // id: '617af2b0-d4d8-4e41-b0cb-388c4fbd917a',
290
+ // },
291
+ // {
292
+ // code: 'ExpectedApplicationPlan',
293
+ // name: 'Dự kiến phương án ứng dụng hoặc sử dụng kết quả tạo ra',
294
+ // nameEn: 'ExpectedApplicationPlan',
295
+ // dataType: 'string',
296
+ // allowShare: 1,
297
+ // objClassCode: 'SciTaskProposal',
298
+ // componentUI: 'TextArea',
299
+ // codeOnDb: 'duKienPhuongAnUngDung',
300
+ // seqNum: 12,
301
+ // required: 3,
302
+ // allowStatistic: 0,
303
+ // preventEdit: 0,
304
+ // extra:
305
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":6,"viewType":"taskInfo"},"editting":{"seqNumber":6,"viewType":"taskInfo"},"viewing":{"seqNumber":3,"section":"bottom"}}}',
306
+ // viewType: 'Detail',
307
+ // id: 'c89bb6c9-3dcf-4380-94f5-630baadb9b31',
308
+ // },
309
+ // {
310
+ // code: 'EstimatedBudget',
311
+ // name: 'Dự kiến kinh phí (đồng)',
312
+ // nameEn: 'EstimatedBudget',
313
+ // dataType: 'long',
314
+ // allowShare: 1,
315
+ // objClassCode: 'SciTaskProposal',
316
+ // componentUI: 'InputText',
317
+ // codeOnDb: 'duKienKinhPhi',
318
+ // seqNum: 13,
319
+ // required: 3,
320
+ // allowStatistic: 0,
321
+ // preventEdit: 0,
322
+ // validateRegex: 'INTEGER',
323
+ // extra:
324
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":7,"span":{"sm":24,"md":"12"},"viewType":"taskInfo","isCurrency":true},"editting":{"seqNumber":7,"span":{"sm":24,"md":"12"},"viewType":"taskInfo","isCurrency":true},"viewing":{"seqNumber":4,"section":"left","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}},"isCurrency":true}}}',
325
+ // viewType: 'Detail',
326
+ // id: 'a8072db6-0bd1-4352-8e30-326446989eef',
327
+ // },
328
+ // {
329
+ // code: 'EstimatedDuration',
330
+ // name: 'Dự kiến thời gian thực hiện (tháng)',
331
+ // nameEn: 'EstimatedDuration',
332
+ // dataType: 'int',
333
+ // allowShare: 1,
334
+ // objClassCode: 'SciTaskProposal',
335
+ // componentUI: 'InputText',
336
+ // codeOnDb: 'duKienThoiGianThucHien',
337
+ // seqNum: 14,
338
+ // required: 3,
339
+ // allowStatistic: 0,
340
+ // preventEdit: 0,
341
+ // validateRegex: 'INTEGER',
342
+ // extra:
343
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":8,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"editting":{"seqNumber":8,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"viewing":{"seqNumber":5,"section":"left","executionTime":"month","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}}}}',
344
+ // viewType: 'Detail',
345
+ // id: 'f69bdf14-c555-4cf5-b793-1eba85a25701',
346
+ // },
347
+ // {
348
+ // code: 'ProposalAttachment',
349
+ // name: 'Văn bản đề xuất đính kèm (pdf)',
350
+ // nameEn: 'ProposalAttachment',
351
+ // dataType: 'string',
352
+ // allowShare: 1,
353
+ // objClassCode: 'SciTaskProposal',
354
+ // componentUI: 'File',
355
+ // codeOnDb: 'vanBanDeXuat',
356
+ // seqNum: 15,
357
+ // required: 3,
358
+ // allowStatistic: 0,
359
+ // preventEdit: 0,
360
+ // extra:
361
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"title":"Văn bản đề xuất đính kèm (hỗ trợ tập tin dạng .pdf)","seqNumber":9,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"editting":{"title":"Văn bản đề xuất đính kèm (hỗ trợ tập tin dạng .pdf)","seqNumber":9,"span":{"sm":24,"md":"12"},"viewType":"taskInfo"},"viewing":{"seqNumber":7,"section":"left","viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}}}}',
362
+ // viewType: 'Detail',
363
+ // id: '75596544-c7b1-40dd-ad24-deee21e8b8d1',
364
+ // },
365
+ // {
366
+ // code: 'ProposalOrganizationName',
367
+ // name: 'Tên đơn vị/cá nhân đề xuất',
368
+ // nameEn: 'ProposalOrganizationName',
369
+ // dataType: 'string',
370
+ // allowShare: 1,
371
+ // objClassCode: 'SciTaskProposal',
372
+ // componentUI: 'InputText',
373
+ // codeOnDb: 'tenToChucDeXuat',
374
+ // seqNum: 16,
375
+ // required: 3,
376
+ // allowStatistic: 0,
377
+ // preventEdit: 0,
378
+ // validateRegex: 'ALPHA_DASH_VN',
379
+ // extra:
380
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":2,"viewType":"taskOrgzIndivInfo"},"editting":{"seqNumber":2,"viewType":"taskOrgzIndivInfo"},"viewing":{"seqNumber":1,"section":"right"}}}',
381
+ // viewType: 'Detail',
382
+ // id: '9ba7ea0a-e1d3-4006-9a10-bba7b54f17e4',
383
+ // },
384
+ // {
385
+ // code: 'ProposerName',
386
+ // name: 'Tên cá nhân đề xuất',
387
+ // nameEn: 'ProposerName',
388
+ // dataType: 'string',
389
+ // allowShare: 1,
390
+ // objClassCode: 'SciTaskProposal',
391
+ // componentUI: 'InputText',
392
+ // codeOnDb: 'tenCaNhanDeXuat',
393
+ // seqNum: 17,
394
+ // required: 3,
395
+ // allowStatistic: 0,
396
+ // preventEdit: 0,
397
+ // extra: '',
398
+ // viewType: 'Detail',
399
+ // id: 'cb2e752c-ed93-46f1-8cd8-75aeb399952b',
400
+ // },
401
+ // {
402
+ // code: 'PhoneNumber',
403
+ // name: 'Số điện thoại',
404
+ // nameEn: 'PhoneNumber',
405
+ // dataType: 'string',
406
+ // allowShare: 1,
407
+ // objClassCode: 'SciTaskProposal',
408
+ // componentUI: 'InputText',
409
+ // codeOnDb: 'soDienThoai',
410
+ // seqNum: 18,
411
+ // required: 1,
412
+ // allowStatistic: 0,
413
+ // preventEdit: 0,
414
+ // validateRegex: 'PHONE_NUMBER',
415
+ // extra:
416
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":4,"viewType":"taskOrgzIndivInfo","span":{"sm":24,"md":12}},"editting":{"seqNumber":4,"viewType":"taskOrgzIndivInfo","span":{"sm":24,"md":12}},"viewing":{"seqNumber":3,"section":"right"}}}',
417
+ // viewType: 'Detail',
418
+ // id: '06137a76-2793-42db-a0d1-2039e087b2ce',
419
+ // },
420
+ // {
421
+ // code: 'Email',
422
+ // name: 'Thư điện tử',
423
+ // nameEn: 'Email',
424
+ // dataType: 'string',
425
+ // allowShare: 1,
426
+ // objClassCode: 'SciTaskProposal',
427
+ // componentUI: 'InputText',
428
+ // codeOnDb: 'thuDienTu',
429
+ // seqNum: 19,
430
+ // required: 3,
431
+ // allowStatistic: 0,
432
+ // preventEdit: 0,
433
+ // validateRegex: 'EMAIL',
434
+ // extra:
435
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":3,"viewType":"taskOrgzIndivInfo","span":{"sm":24,"md":12}},"editting":{"seqNumber":3,"viewType":"taskOrgzIndivInfo","span":{"sm":24,"md":12}},"viewing":{"seqNumber":2,"section":"right"}}}',
436
+ // viewType: 'Detail',
437
+ // id: 'acef6046-1f41-48f2-b53a-c0ecebb42939',
438
+ // },
439
+ // {
440
+ // code: 'Address',
441
+ // name: 'Địa chỉ liên hệ',
442
+ // nameEn: 'Address',
443
+ // dataType: 'string',
444
+ // allowShare: 1,
445
+ // objClassCode: 'SciTaskProposal',
446
+ // componentUI: 'TextArea',
447
+ // codeOnDb: 'diaChi',
448
+ // seqNum: 20,
449
+ // required: 1,
450
+ // allowStatistic: 0,
451
+ // preventEdit: 0,
452
+ // extra:
453
+ // '{"formField":{"displayMode":["add","edit","view"],"adding":{"seqNumber":4,"viewType":"taskOrgzIndivInfo"},"editting":{"seqNumber":4,"viewType":"taskOrgzIndivInfo"},"viewing":{"type":"InputText","seqNumber":3,"section":"right"}}}',
454
+ // viewType: 'Detail',
455
+ // id: 'faef0e51-f288-424e-9e72-50ed155313a5',
456
+ // },
457
+ // {
458
+ // code: 'ProposalSource',
459
+ // name: 'Nguồn đề xuất',
460
+ // nameEn: 'ProposalSource',
461
+ // dataType: 'ObjType',
462
+ // allowShare: 1,
463
+ // objClassCode: 'SciTaskProposal',
464
+ // apiURL: '{MainApiURL}/CommonCats/ObjType/byTypeGroupCode/{ObjTypeGroupCode}',
465
+ // componentUI: 'Radiobox',
466
+ // codeOnDb: 'nguonDeXuat',
467
+ // seqNum: 21,
468
+ // required: 3,
469
+ // allowStatistic: 0,
470
+ // preventEdit: 0,
471
+ // extra:
472
+ // '{"formField":{"displayMode":["add","edit","filter"],"adding":{"seqNumber":1,"viewType":"taskOrgzIndivInfo"},"editting":{"seqNumber":1,"viewType":"taskOrgzIndivInfo"},"filtering":{"codeField":"proposalSourceCode","seqNumber":2,"type":"Dropdown","required":false,"dataTypeCombobox": "single"}}}',
473
+ // viewType: 'Detail',
474
+ // objTypeGroupCode: 'PROPOSAL_SOURCE',
475
+ // id: '6dea381c-368f-4423-83fb-957df68b176d',
476
+ // },
477
+ // {
478
+ // code: 'ProposalStatus',
479
+ // name: 'Trạng thái',
480
+ // nameEn: 'ProposalStatus',
481
+ // dataType: 'ObjType',
482
+ // allowShare: 1,
483
+ // objClassCode: 'SciTaskProposal',
484
+ // apiURL: '{MainApiURL}/CommonCats/ObjType/byTypeGroupCode/{ObjTypeGroupCode}',
485
+ // componentUI: 'Combobox(SingleChoice)',
486
+ // codeOnDb: 'trangThaiDeXuat',
487
+ // seqNum: 22,
488
+ // required: 2,
489
+ // allowStatistic: 0,
490
+ // preventEdit: 0,
491
+ // extra:
492
+ // '{"formField":{"displayMode":["view","filter"],"viewing":{"seqNumber":6,"section":"left","isShowBgInput":true,"viewConfig":{"labelSpan":{"sm":24,"md":10},"formControlSpan":{"sm":24,"md":14}}},"filtering":{"codeField":"proposalStatusCode","seqNumber":4,"dataTypeCombobox":"single"}}}',
493
+ // viewType: 'Detail',
494
+ // objTypeGroupCode: 'PROPOSAL_STATUS',
495
+ // id: 'b77dcf37-880b-48f9-acfb-09b983df4a0d',
496
+ // },
497
+ // {
498
+ // code: 'ApplicationStartDate',
499
+ // name: 'Ngày bắt đầu mở ứng tuyển cho đề xuất ',
500
+ // nameEn: 'ApplicationStartDate',
501
+ // dataType: 'Date',
502
+ // allowShare: 1,
503
+ // objClassCode: 'SciTaskProposal',
504
+ // componentUI: 'Calendar(Date)',
505
+ // codeOnDb: 'ngayBatDauUngTuyen',
506
+ // seqNum: 23,
507
+ // required: 3,
508
+ // allowStatistic: 0,
509
+ // preventEdit: 0,
510
+ // extra:
511
+ // '{"formField":{"displayMode":["edit","view"],"editting":{"title":"Thời gian bắt đầu","allowFutureDates":true,"seqNumber":1,"span":{"sm":24,"md":12},"section":"approval"},"viewing":{"title":"Thời gian bắt đầu","seqNumber":1,"section":"application"}}}',
512
+ // viewType: 'Detail',
513
+ // id: '790d2aee-4fb2-456f-8fd0-8cd5e0296a57',
514
+ // },
515
+ // {
516
+ // code: 'ApplicationEndDate',
517
+ // name: 'Ngày kết thúc ứng tuyển cho đề xuất ',
518
+ // nameEn: 'ApplicationEndDate',
519
+ // dataType: 'Date',
520
+ // allowShare: 1,
521
+ // objClassCode: 'SciTaskProposal',
522
+ // componentUI: 'Calendar(Date)',
523
+ // codeOnDb: 'ngayKetThucUngTuyen',
524
+ // seqNum: 24,
525
+ // required: 3,
526
+ // allowStatistic: 0,
527
+ // preventEdit: 0,
528
+ // extra:
529
+ // '{"formField":{"displayMode":["edit","view"],"editting":{"title":"Thời gian kết thúc","allowFutureDates":true,"seqNumber":1,"span":{"sm":24,"md":12},"section":"approval"},"viewing":{"title":"Thời gian kết thúc","seqNumber":2,"section":"application"}}}',
530
+ // viewType: 'Detail',
531
+ // id: '95822a49-2883-4ddb-a6ff-a3c8fc84f3bf',
532
+ // },
533
+ // {
534
+ // code: 'ApprovalAttachment',
535
+ // name: 'Văn bản giao nhiệm vụ - ứng tuyển được duyệt làm ',
536
+ // nameEn: 'ApprovalAttachment',
537
+ // dataType: 'string',
538
+ // allowShare: 1,
539
+ // objClassCode: 'SciTaskProposal',
540
+ // componentUI: 'InputText',
541
+ // codeOnDb: 'vanBanGiaoNhiemVu',
542
+ // seqNum: 25,
543
+ // required: 3,
544
+ // allowStatistic: 0,
545
+ // preventEdit: 0,
546
+ // viewType: 'Detail',
547
+ // id: 'fa00b65d-ebfb-49f9-8da2-09cd44138b79',
548
+ // },
549
+ // {
550
+ // code: 'ApprovalDuration',
551
+ // name: 'thời gian thức hiện duyệt',
552
+ // nameEn: 'ApprovalDuration',
553
+ // dataType: 'int',
554
+ // allowShare: 1,
555
+ // objClassCode: 'SciTaskProposal',
556
+ // codeOnDb: 'thoiGianThucHienDuyet',
557
+ // seqNum: 26,
558
+ // required: 0,
559
+ // allowStatistic: 0,
560
+ // preventEdit: 0,
561
+ // viewType: 'Detail',
562
+ // id: '54477413-ec20-43d8-8f9e-6e73205b86ad',
563
+ // },
564
+ // {
565
+ // code: 'ApprovalTotalBudget',
566
+ // name: 'Tổng kinh phí cần thiết được duyệt với văn bản giao nhiệm vụ ',
567
+ // nameEn: 'ApprovalTotalBudget',
568
+ // dataType: 'long',
569
+ // allowShare: 1,
570
+ // objClassCode: 'SciTaskProposal',
571
+ // codeOnDb: 'tongKinhPhiCanThietDuyet',
572
+ // seqNum: 27,
573
+ // required: 0,
574
+ // allowStatistic: 0,
575
+ // preventEdit: 0,
576
+ // viewType: 'Detail',
577
+ // id: 'f9a6c1a6-780e-4e9c-87ac-41a7dfbf37df',
578
+ // },
579
+ // {
580
+ // code: 'ApprovalGovermentBudget',
581
+ // name: 'Kinh phí từ Ngân sách nhà nước được duyệt với văn bản giao nhiệm vụ ',
582
+ // nameEn: 'ApprovalGovermentBudget',
583
+ // dataType: 'long',
584
+ // allowShare: 1,
585
+ // objClassCode: 'SciTaskProposal',
586
+ // codeOnDb: 'kinhPhiTuNSNNDuyet',
587
+ // seqNum: 28,
588
+ // required: 0,
589
+ // allowStatistic: 0,
590
+ // preventEdit: 0,
591
+ // viewType: 'Detail',
592
+ // id: '37690b42-c4f7-40bf-ae4a-c42f10735409',
593
+ // },
594
+ // {
595
+ // code: 'ApprovalNonGovermentBudget',
596
+ // name: 'Kinh phí từ các nguồn ngoài ngân sách nhà nước được duyệt với văn bản giao nhiệm vụ ',
597
+ // nameEn: 'ApprovalNonGovermentBudget',
598
+ // dataType: 'long',
599
+ // allowShare: 1,
600
+ // objClassCode: 'SciTaskProposal',
601
+ // codeOnDb: 'kinhPhiTuNgoaiNSNNDuyet',
602
+ // seqNum: 29,
603
+ // required: 0,
604
+ // allowStatistic: 0,
605
+ // preventEdit: 0,
606
+ // viewType: 'Detail',
607
+ // id: 'f9cf4aa3-6593-4b2d-88ca-1513069ce57f',
608
+ // },
609
+ // {
610
+ // code: 'ApprovalContractStateBudget',
611
+ // name: 'Kinh phí Ngân sách nhà nước khoán được duyệt với văn bản giao nhiệm vụ ',
612
+ // nameEn: 'ApprovalContractStateBudget',
613
+ // dataType: 'long',
614
+ // allowShare: 1,
615
+ // objClassCode: 'SciTaskProposal',
616
+ // codeOnDb: 'kinhPhiNSNNKhoanDuyet',
617
+ // seqNum: 30,
618
+ // required: 0,
619
+ // allowStatistic: 0,
620
+ // preventEdit: 0,
621
+ // viewType: 'Detail',
622
+ // id: '9c0aeb4b-b6db-460e-8c01-7bc728535e7a',
623
+ // },
624
+ // {
625
+ // code: 'ApprovalNonContractStateBudget',
626
+ // name: 'Kinh phí Ngân sách nhà nước không khoán được duyệt với văn bản giao nhiệm vụ ',
627
+ // nameEn: 'ApprovalNonContractStateBudget',
628
+ // dataType: 'long',
629
+ // allowShare: 1,
630
+ // objClassCode: 'SciTaskProposal',
631
+ // codeOnDb: 'kinhPhiNSNNKhongKhoanDuyet',
632
+ // seqNum: 31,
633
+ // required: 0,
634
+ // allowStatistic: 0,
635
+ // preventEdit: 0,
636
+ // viewType: 'Detail',
637
+ // id: 'c5cf6569-306a-4ede-ace6-5b9212003a0c',
638
+ // },
639
+ // {
640
+ // code: 'ApprovalImplementationMethod',
641
+ // name: 'Phương thức thực hiện',
642
+ // nameEn: 'ApprovalImplementationMethod',
643
+ // dataType: 'ObjType',
644
+ // allowShare: 1,
645
+ // objClassCode: 'SciTaskProposal',
646
+ // codeOnDb: 'phuongThucThucHienDuyet',
647
+ // seqNum: 32,
648
+ // required: 1,
649
+ // allowStatistic: 0,
650
+ // preventEdit: 0,
651
+ // viewType: 'Detail',
652
+ // id: 'cf73d6e1-581d-4228-b016-6557466ed61a',
653
+ // },
654
+ // {
655
+ // code: 'UpdatedById',
656
+ // name: 'Mã người cập nhật trang thái hiện tại của nhiệm vụ',
657
+ // nameEn: 'UpdatedById',
658
+ // dataType: 'Guid',
659
+ // allowShare: 1,
660
+ // objClassCode: 'SciTaskProposal',
661
+ // apiURL: '1',
662
+ // codeOnDb: 'maNguoiCapNhat',
663
+ // seqNum: 33,
664
+ // required: 2,
665
+ // allowStatistic: 0,
666
+ // preventEdit: 0,
667
+ // viewType: 'Detail',
668
+ // id: '8c8de675-f6fa-4dd7-b706-39ea7408a12d',
669
+ // },
670
+ // {
671
+ // code: 'UpdatedBy',
672
+ // name: 'Người cập nhật trang thái hiện tại của nhiệm vụ',
673
+ // nameEn: 'UpdatedBy',
674
+ // dataType: 'string',
675
+ // allowShare: 1,
676
+ // objClassCode: 'SciTaskProposal',
677
+ // apiURL: '1',
678
+ // codeOnDb: 'nguoiCapNhat',
679
+ // seqNum: 34,
680
+ // required: 2,
681
+ // allowStatistic: 0,
682
+ // preventEdit: 0,
683
+ // viewType: 'Detail',
684
+ // id: 'f09197be-09c3-43e2-b2a0-b535be2643f0',
685
+ // },
686
+ // {
687
+ // code: 'CreatedAt',
688
+ // name: 'Thời gian tạo',
689
+ // nameEn: 'CreatedAt',
690
+ // dataType: 'DateTime',
691
+ // allowShare: 1,
692
+ // objClassCode: 'SciTaskProposal',
693
+ // componentUI: 'Calendar(Date)',
694
+ // codeOnDb: 'createdAt',
695
+ // seqNum: 35,
696
+ // required: 2,
697
+ // allowStatistic: 0,
698
+ // preventEdit: 0,
699
+ // extra:
700
+ // '{"formField":{"displayMode":["filter"],"filtering":{"seqNumber":5,"type":"DateRange"}}}',
701
+ // viewType: 'Detail',
702
+ // id: '8b425192-574b-4df3-8b9a-c28bcd47bdc7',
703
+ // },
704
+ // {
705
+ // code: 'UpdatedAt',
706
+ // name: 'Thời gian cập nhật',
707
+ // nameEn: 'UpdatedAt',
708
+ // dataType: 'DateTime',
709
+ // allowShare: 1,
710
+ // objClassCode: 'SciTaskProposal',
711
+ // componentUI: 'TextView',
712
+ // codeOnDb: 'updatedAt',
713
+ // seqNum: 36,
714
+ // required: 0,
715
+ // allowStatistic: 0,
716
+ // preventEdit: 0,
717
+ // viewType: 'Detail',
718
+ // id: '004a60a1-0b66-4d0b-acb0-eb76d57f49f1',
719
+ // },
720
+ // {
721
+ // code: 'ApprovalNumber',
722
+ // name: 'Số quyết định giao nhiệm vụ',
723
+ // nameEn: 'ApprovalNumber',
724
+ // dataType: 'string',
725
+ // allowShare: 1,
726
+ // objClassCode: 'SciTaskProposal',
727
+ // componentUI: 'InputText',
728
+ // codeOnDb: 'soQuyetDinhGiaoNhiemVu',
729
+ // seqNum: 37,
730
+ // required: 1,
731
+ // allowStatistic: 0,
732
+ // preventEdit: 0,
733
+ // viewType: 'Detail',
734
+ // id: '4000def5-2820-4d20-a624-9fc91834487e',
735
+ // },
736
+ ] as ObjField[];
737
+
738
+ // Sample test mảng fields json đầu vào cho tham số @Input() fields.
739
+ export const sampleFields = [
740
+ // new MultiImageUploadField({
741
+ // key: 'images',
742
+ // label: 'Hình ảnh kèm theo',
743
+ // required: true,
744
+ // maxSizeInMB: 62,
745
+ // imageCardWidth: '208px'
746
+ // }),
747
+ // new SingleSelectField({
748
+ // key: 'role',
749
+ // label: 'Vai trò',
750
+ // bindLabel: 'name',
751
+ // bindValue: 'code',
752
+ // required: true,
753
+ // // outputAs: 'single',
754
+ // suffixes: [
755
+ // new Suffix({
756
+ // key: 'test',
757
+ // visibleOn: ['add', 'edit', 'view']
758
+ // }),
759
+ // new Suffix({
760
+ // key: 'edit',
761
+ // }),
762
+ // ],
763
+ // transformLabel: (option: Record<string, unknown>) => {
764
+ // const { name, code } = option;
765
+ // if (name && code) return `${name} - ${code}`;
766
+ // return '';
767
+ // },
768
+ // apiConfig: {
769
+ // baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/system/Role',
770
+ // },
771
+ // options: [
772
+ // { name: 'Quản trị viên', code: 'admin' },
773
+ // { name: 'Người vận hành', code: 'operator' },
774
+ // { name: 'Người dân', code: 'anonymous' },
775
+ // ],
776
+ // errorMessages: {
777
+ // [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
778
+ // },
779
+ // }),
780
+ // new SingleSelectField({
781
+ // key: 'province',
782
+ // label: 'Tỉnh/Thành phố',
783
+ // required: true,
784
+ // outputAs: 'single',
785
+ // transformLabel: (option: Record<string, unknown>) => {
786
+ // const { name, code } = option;
787
+ // if (name && code) return `${name} - ${code}`;
788
+ // return '';
789
+ // },
790
+ // apiConfig: {
791
+ // baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/main/CommonCats/Province',
792
+ // },
793
+ // isParent: true,
794
+ // }),
795
+ // new SingleSelectField({
796
+ // key: 'district',
797
+ // label: 'Quận/Huyện',
798
+ // required: false,
799
+ // transformLabel: (option: Record<string, unknown>) => {
800
+ // const { name, code } = option;
801
+ // if (name && code) return `${name} - ${code}`;
802
+ // return '';
803
+ // },
804
+ // apiConfig: {
805
+ // baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/main/CommonCats/District',
806
+ // },
807
+ // isParent: true,
808
+ // dependsOn: [
809
+ // {
810
+ // fieldKey: 'province',
811
+ // paramKey: 'provinceCode',
812
+ // },
813
+ // ],
814
+ // }),
815
+
816
+ // new SingleSelectField({
817
+ // key: 'ward',
818
+ // label: 'Phường/Xã',
819
+ // required: false,
820
+ // transformLabel: (option: Record<string, unknown>) => {
821
+ // const { name, code } = option;
822
+ // if (name && code) return `${name} - ${code}`;
823
+ // return '';
824
+ // },
825
+ // apiConfig: {
826
+ // baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/main/CommonCats/Ward',
827
+ // },
828
+ // dependsOn: [
829
+ // {
830
+ // fieldKey: 'district',
831
+ // paramKey: 'districtCode',
832
+ // },
833
+ // ],
834
+ // }),
835
+ // new MultiSelectField({
836
+ // key: 'multiRole',
837
+ // label: 'Nhiều vai trò',
838
+ // bindLabel: 'name',
839
+ // bindValue: 'code',
840
+ // outputAs: 'single',
841
+ // required: true,
842
+ // isDisabled: false,
843
+ // transformLabel: (option: Record<string, unknown>) => {
844
+ // const { name, code } = option;
845
+ // if (name && code) return `${name} - ${code}`;
846
+ // return '';
847
+ // },
848
+ // apiConfig: {
849
+ // baseUrl: `${environment.GDCI_SYSTEM_URL}CommonCats/Position`,
850
+ // },
851
+ // errorMessages: {
852
+ // [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
853
+ // },
854
+ // suffixes: [
855
+ // new Suffix({
856
+ // key: 'test',
857
+ // visibleOn: ['add', 'edit'],
858
+ // }),
859
+ // new Suffix({
860
+ // key: 'edit',
861
+ // }),
862
+ // ],
863
+ // }),
864
+ // new InputTextField({
865
+ // key: 'username',
866
+ // label: 'Tên tài khoản',
867
+ // value: '',
868
+ // required: true,
869
+ // minLength: 1,
870
+ // isDisabled: false,
871
+ // suffixes: [
872
+ // new Suffix({
873
+ // key: 'view',
874
+ // visibleOn: ['view']
875
+ // }),
876
+ // new Suffix({
877
+ // key: 'edit',
878
+ // }),
879
+ // ],
880
+ // errorMessages: {
881
+ // // [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
882
+ // // [CommonValidaterEnum.MinLength]: 'Tối thiểu nè hẹ hẹ',
883
+ // },
884
+ // pattern: 'alphaDashVN',
885
+ // // grid: { xs: 12 },
886
+ // // labelGrid: { xs: 8 },
887
+ // // controlGrid: { xs: 16 }
888
+ // }),
889
+ // new InputPasswordField({
890
+ // key: 'password',
891
+ // label: 'Mật khẩu',
892
+ // value: '',
893
+ // required: false,
894
+ // matchField: 'confirmPassword',
895
+ // errorMessages: {
896
+ // // [CustomValidaterEnum.MatchField]: 'Mật khẩu không khớp',
897
+ // },
898
+ // // grid: { xs: 12 },
899
+ // // labelGrid: { xs: 8 },
900
+ // // controlGrid: { xs: 16 }
901
+ // }),
902
+ // new InputPasswordField({
903
+ // key: 'confirmPassword',
904
+ // label: 'Xác nhận mật khẩu',
905
+ // value: '',
906
+ // required: false,
907
+ // matchField: 'password',
908
+ // errorMessages: {
909
+ // // [CustomValidaterEnum.MatchField]: 'Mật khẩu không khớp',
910
+ // },
911
+ // // labelGrid: { xs: 16 },
912
+ // // controlGrid: { xs: 8 }
913
+ // }),
914
+ // new TextareaField({
915
+ // key: 'note',
916
+ // label: 'Ghi chú',
917
+ // value: '',
918
+ // required: false,
919
+ // minLength: 3,
920
+ // maxLength: 128,
921
+ // errorMessages: {
922
+ // // [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
923
+ // // [CommonValidaterEnum.MinLength]: 'Tối thiểu nè hẹ hẹ',
924
+ // },
925
+ // // grid: { xs: 12 },
926
+ // // labelGrid: { xs: 8 },
927
+ // // controlGrid: { xs: 16 }
928
+ // }),
929
+ // new DatePickerField({
930
+ // key: 'date',
931
+ // label: 'Ngày',
932
+ // required: true,
933
+ // allowPastDates: false,
934
+ // allowFutureDates: true,
935
+ // isDisabled: true
936
+ // }),
937
+ // new DateRangeField({
938
+ // key: 'expectedTime',
939
+ // label: 'Thời gian dự kiến',
940
+ // required: true,
941
+ // outputAs: 'date',
942
+ // allowPastDates: false,
943
+ // allowFutureDates: true,
944
+ // isDisabled: true
945
+ // }),
946
+
947
+ // new SingleFileUploadField({
948
+ // key: 'attachment',
949
+ // label: 'Văn bản đính kèm',
950
+ // // required: true,
951
+ // acceptedMimeTypes: [APPLICATION_TYPES.pdf, IMAGE_TYPES.tif, IMAGE_TYPES.tiff],
952
+ // maxSizeInMB: 100000,
953
+ // required: true,
954
+ // apiFileConfig: {
955
+ // uploadUrl: DEFAULT_UPLOAD_TIFF_URL,
956
+ // deleteUrl: DEFAULT_DELETE_URL,
957
+ // perMimeTypeConfig: {
958
+ // 'image/tiff': {
959
+ // uploadUrl: DEFAULT_UPLOAD_TIFF_URL,
960
+ // buildFormData: (file, extraParams) => {
961
+ // const fd = new FormData();
962
+ // fd.append('File', file);
963
+ // fd.append('SaveFile', String(true));
964
+ // fd.append('BucketName', 'documents');
965
+
966
+ // return fd;
967
+ // },
968
+ // },
969
+ // },
970
+ // },
971
+ // }),
972
+ new MultiFileUploadField({
973
+ key: 'pictures',
974
+ label: 'Những hình ảnh kèm theo',
975
+ // required: true,
976
+ // acceptedMimeTypes: [APPLICATION_TYPES.pdf],
977
+ maxSizeInMB: 2,
978
+ required: true,
979
+ }),
980
+ // new AvatarUploadField({
981
+ // key: 'avatar',
982
+ // label: 'Ảnh đại diện',
983
+ // acceptedMimeTypes: [IMAGE_TYPES.jpeg, IMAGE_TYPES.jpg, IMAGE_TYPES.png],
984
+ // required: false,
985
+ // labelGrid: { xs: 4 },
986
+ // controlGrid: { xs: 20 },
987
+ // }),
988
+ ];
989
+
990
+ export const sampleFields2 = [
991
+ new SingleSelectField({
992
+ key: 'role',
993
+ label: 'Vai trò',
994
+ bindLabel: 'name',
995
+ bindValue: 'code',
996
+ required: false,
997
+ outputAs: 'single',
998
+ transformLabel: (option: Record<string, unknown>) => {
999
+ const { name, code } = option;
1000
+ if (name && code) return `${name} - ${code}`;
1001
+ return '';
1002
+ },
1003
+ apiConfig: {
1004
+ baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/system/Role',
1005
+ },
1006
+ options: [
1007
+ { name: 'Quản trị viên', code: 'admin' },
1008
+ { name: 'Người vận hành', code: 'operator' },
1009
+ { name: 'Người dân', code: 'anonymous' },
1010
+ ],
1011
+ errorMessages: {
1012
+ [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
1013
+ },
1014
+ }),
1015
+ new SingleSelectField({
1016
+ key: 'province',
1017
+ label: 'Tỉnh/Thành phố',
1018
+ required: true,
1019
+ transformLabel: (option: Record<string, unknown>) => {
1020
+ const { name, code } = option;
1021
+ if (name && code) return `${name} - ${code}`;
1022
+ return '';
1023
+ },
1024
+ apiConfig: {
1025
+ baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/main/CommonCats/Province',
1026
+ },
1027
+ isParent: true,
1028
+ }),
1029
+ new SingleSelectField({
1030
+ key: 'district',
1031
+ label: 'Quận/Huyện',
1032
+ required: false,
1033
+ transformLabel: (option: Record<string, unknown>) => {
1034
+ const { name, code } = option;
1035
+ if (name && code) return `${name} - ${code}`;
1036
+ return '';
1037
+ },
1038
+ apiConfig: {
1039
+ baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/main/CommonCats/District',
1040
+ },
1041
+ isParent: true,
1042
+ dependsOn: [
1043
+ {
1044
+ fieldKey: 'province',
1045
+ paramKey: 'provinceCode',
1046
+ },
1047
+ ],
1048
+ }),
1049
+ new MultiSelectField({
1050
+ key: 'multiRole',
1051
+ label: 'Nhiều vai trò',
1052
+ bindLabel: 'name',
1053
+ bindValue: 'code',
1054
+ outputAs: 'single',
1055
+ required: true,
1056
+ transformLabel: (option: Record<string, unknown>) => {
1057
+ const { name, code } = option;
1058
+ if (name && code) return `${name} - ${code}`;
1059
+ return '';
1060
+ },
1061
+ apiConfig: {
1062
+ baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/system/Role',
1063
+ },
1064
+ errorMessages: {
1065
+ [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
1066
+ },
1067
+ }),
1068
+ new InputTextField({
1069
+ key: 'username',
1070
+ label: 'Tên tài khoản',
1071
+ value: '',
1072
+ required: true,
1073
+ minLength: 1,
1074
+ errorMessages: {
1075
+ // [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
1076
+ // [CommonValidaterEnum.MinLength]: 'Tối thiểu nè hẹ hẹ',
1077
+ },
1078
+ pattern: 'alphaDashVN',
1079
+ // grid: { xs: 12 },
1080
+ // labelGrid: { xs: 8 },
1081
+ // controlGrid: { xs: 16 }
1082
+ }),
1083
+ new TextareaField({
1084
+ key: 'note',
1085
+ label: 'Ghi chú',
1086
+ value: '',
1087
+ required: false,
1088
+ minLength: 3,
1089
+ maxLength: 128,
1090
+ errorMessages: {
1091
+ // [CommonValidaterEnum.Required]: 'Bắt buộc nè hẹ hẹ',
1092
+ // [CommonValidaterEnum.MinLength]: 'Tối thiểu nè hẹ hẹ',
1093
+ },
1094
+ // grid: { xs: 12 },
1095
+ // labelGrid: { xs: 8 },
1096
+ // controlGrid: { xs: 16 }
1097
+ }),
1098
+ new DatePickerField({
1099
+ key: 'date',
1100
+ label: 'Ngày',
1101
+ required: true,
1102
+ allowPastDates: false,
1103
+ allowFutureDates: true,
1104
+ }),
1105
+ new DateRangeField({
1106
+ key: 'expectedTime',
1107
+ label: 'Thời gian dự kiến',
1108
+ required: true,
1109
+ outputAs: 'string',
1110
+ allowPastDates: false,
1111
+ allowFutureDates: true,
1112
+ }),
1113
+
1114
+ new SingleFileUploadField({
1115
+ key: 'attachment',
1116
+ label: 'Văn bản đính kèm',
1117
+ // required: true,
1118
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf],
1119
+ maxSizeInMB: 2,
1120
+ required: true,
1121
+ }),
1122
+ new MultiFileUploadField({
1123
+ key: 'documents',
1124
+ label: 'Những hồ sơ đính kèm',
1125
+ // required: true,
1126
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf],
1127
+ maxSizeInMB: 2,
1128
+ required: false,
1129
+ }),
1130
+ ];
1131
+
1132
+ // Sample test model data 1.
1133
+ export const sampleModel = {
1134
+ province: { code: 35, name: 'Hà Name' },
1135
+ username: 'ldquocccccccccc',
1136
+ role: {
1137
+ name: 'Quản trị viên',
1138
+ code: 'ADMIN',
1139
+ },
1140
+ // role: 'ADMIN',
1141
+ multiRole: [
1142
+ {
1143
+ name: 'Quản trị',
1144
+ code: 'ADMIN',
1145
+ },
1146
+ {
1147
+ name: 'Vận hành',
1148
+ code: 'OPERATOR',
1149
+ },
1150
+ ],
1151
+ note: 'Hãy nhớ những điều này:\n-Tôi là tôi.\n-Ai là tôi?\n-Sẽ ra sao nếu tôi tiến lên.\n-Hẹ hẹ.',
1152
+ // note: 'hè hè\nhihihi\nfefefef',
1153
+ // date: '08-01-2025',
1154
+ // date: '30-08-2025',
1155
+ // date: '2025-08-28',
1156
+ date: new Date('2025-08-28'),
1157
+ expectedTime: ['2025-08-28', new Date('2025-08-30')],
1158
+ // attachment: [{
1159
+ // id: 'd3f549e0-a036-4b16-aa67-30444d23d795',
1160
+ // name: 'dummy.pdf',
1161
+ // path: '/dummy.pdf',
1162
+ // type: APPLICATION_TYPES.pdf,
1163
+ // size: 1800
1164
+ // }],
1165
+ // attachment:
1166
+ // '[{\"id\":\"1952e9ea-61c3-4b8d-abe2-4df238804458\",\"name\":\"Ho_Cubic_30L_Tong_Hop.pdf\",\"contentType\":\"application/pdf\",\"size\":28407,\"bucket\":\"caosuvn\",\"isDir\":false,\"createdAt\":\"2025-08-08\",\"updatedAt\":\"2025-08-08\",\"path\":\"/Ho_Cubic_30L_Tong_Hop.pdf\",\"isPublic\":true}]',
1167
+
1168
+ attachment:
1169
+ '[{"id":"8fe5f9b1-18aa-415d-a33e-b4a843b7cab1","name":"image.png","contentType":"image/png","size":77239,"bucket":"public","isDir":false,"createdAt":"2025-09-04","updatedAt":"2025-09-04","path":"/image.png","isPublic":true},{"id":"b8963fb1-e842-42ac-9fc4-1733a3b65dc5","name":"image (1).png","contentType":"image/png","size":79610,"bucket":"public","isDir":false,"createdAt":"2025-09-04","updatedAt":"2025-09-04","path":"/image (1).png","isPublic":true}]',
1170
+ pictures:
1171
+ '[{\"id\":\"1952e9ea-61c3-4b8d-abe2-4df238803338\",\"name\":\"Ho_Cubic_30L_Tong_Hop.pdf\",\"contentType\":\"application/pdf\",\"size\":28407,\"bucket\":\"caosuvn\",\"isDir\":false,\"createdAt\":\"2025-08-08\",\"updatedAt\":\"2025-08-08\",\"path\":\"/Ho_Cubic_30L_Tong_Hop.pdf\",\"isPublic\":true},{\"id\":\"1952e9ea-61c3-4b8d-abe2-4df238804458\",\"name\":\"Ho_Cubic_35L_Tong_Hop.pdf\",\"contentType\":\"application/pdf\",\"size\":28407,\"bucket\":\"caosuvn\",\"isDir\":false,\"createdAt\":\"2025-08-08\",\"updatedAt\":\"2025-08-08\",\"path\":\"/Ho_Cubic_35L_Tong_Hop.pdf\",\"isPublic\":true}]',
1172
+ // pictures: '[{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800}]'
1173
+ };
1174
+
1175
+ // Sample test model data 2.
1176
+ export const sampleModel2 = {
1177
+ images:
1178
+ '[{"id":"56062785-a619-41f7-8b64-ed648e57f934","name":"vrg_file_5141201818_104814_39-11_anh_bai_chinh_ml41ozadgy_ug51tjdtjb.jpg","contentType":"image/jpeg","size":176638,"bucket":"public","isDir":false,"createdAt":"2025-09-08","updatedAt":"2025-09-08","path":"/vrg_file_5141201818_104814_39-11_anh_bai_chinh_ml41ozadgy_ug51tjdtjb.jpg","isPublic":true},{"id":"79c62863-8241-4785-ac52-162a1d5347a6","name":"vrg_file_5409423468_coral-reef-fish-reef-fish-aquarium-wallpaper-preview.jpg","contentType":"image/jpeg","size":128651,"bucket":"public","isDir":false,"createdAt":"2025-09-08","updatedAt":"2025-09-08","path":"/vrg_file_5409423468_coral-reef-fish-reef-fish-aquarium-wallpaper-preview.jpg","isPublic":true},{"id":"973d2861-fe87-481f-9dc7-aeb7991516de","name":"vrg_file_8710772406_nemo_fi.jpg","contentType":"image/jpeg","size":19134,"bucket":"public","isDir":false,"createdAt":"2025-09-08","updatedAt":"2025-09-08","path":"/vrg_file_8710772406_nemo_fi.jpg","isPublic":true}]',
1179
+ avatar:
1180
+ '[{"id":"55283e86-6d16-4f12-9d9b-fce1b928eae5","name":"104814_39-11_anh_bai_chinh_ml41ozadgy_ug51tjdtjb.jpg","contentType":"image/jpeg","size":176638,"bucket":"public","isDir":false,"createdAt":"2025-08-19","updatedAt":"2025-08-19","path":"/104814_39-11_anh_bai_chinh_ml41ozadgy_ug51tjdtjb.jpg","isPublic":true}]',
1181
+ province: { code: 35, name: 'Hà Name' },
1182
+ district: { code: 349, name: 'Duy tiên' },
1183
+ username: 'dddddddddddddddddddddddd',
1184
+ role: {
1185
+ name: 'Vận hành',
1186
+ code: 'OPERATOR',
1187
+ },
1188
+ // role: 'ADMIN',
1189
+ multiRole: [
1190
+ {
1191
+ name: 'Quản trị',
1192
+ code: 'ADMIN',
1193
+ },
1194
+ {
1195
+ name: 'Vận hành',
1196
+ code: 'OPERATOR',
1197
+ },
1198
+ {
1199
+ name: 'Người dân',
1200
+ code: 'ANONYMOUS',
1201
+ },
1202
+ ],
1203
+ note: 'CCCCC',
1204
+ // note: 'hè hè\nhihihi\nfefefef',
1205
+ // date: '08-01-2025',
1206
+ // date: '30-08-2025',
1207
+ // date: '2025-08-28',
1208
+ date: new Date('2025-08-30'),
1209
+ expectedTime: ['2025-08-01', new Date('2025-08-02')],
1210
+ // attachment: [{
1211
+ // id: 'd3f549e0-a036-4b16-aa67-30444d23d795',
1212
+ // name: 'dummy.pdf',
1213
+ // path: '/dummy.pdf',
1214
+ // type: APPLICATION_TYPES.pdf,
1215
+ // size: 1800
1216
+ // }],
1217
+ attachment:
1218
+ '[{"id":"8fe5f9b1-18aa-415d-a33e-b4a843b7cab1","name":"image.png","contentType":"image/png","size":77239,"bucket":"public","isDir":false,"createdAt":"2025-09-04","updatedAt":"2025-09-04","path":"/image.png","isPublic":true},{"id":"b8963fb1-e842-42ac-9fc4-1733a3b65dc5","name":"image (1).png","contentType":"image/png","size":79610,"bucket":"public","isDir":false,"createdAt":"2025-09-04","updatedAt":"2025-09-04","path":"/image (1).png","isPublic":true}]',
1219
+ // attachment:
1220
+ // '[{\"id\":\"1952e9ea-61c3-4b8d-abe2-4df238804458\",\"name\":\"dumpleeeee.pdf\",\"contentType\":\"application/pdf\",\"size\":28407,\"bucket\":\"caosuvn\",\"isDir\":false,\"createdAt\":\"2025-08-08\",\"updatedAt\":\"2025-08-08\",\"path\":\"/Ho_Cubic_30L_Tong_Hop.pdf\",\"isPublic\":true}]',
1221
+ pictures:
1222
+ '[{\"id\":\"1952e9ea-61c3-4b8d-abe2-4df238803338\",\"name\":\"Ho_Cubic_45L_Tong_Hop.pdf\",\"contentType\":\"application/pdf\",\"size\":28407,\"bucket\":\"caosuvn\",\"isDir\":false,\"createdAt\":\"2025-08-08\",\"updatedAt\":\"2025-08-08\",\"path\":\"/Ho_Cubic_30L_Tong_Hop.pdf\",\"isPublic\":true},{\"id\":\"1952e9ea-61c3-4b8d-abe2-4df238804458\",\"name\":\"Ho_Cubic_60L_Tong_Hop.pdf\",\"contentType\":\"application/pdf\",\"size\":28407,\"bucket\":\"caosuvn\",\"isDir\":false,\"createdAt\":\"2025-08-08\",\"updatedAt\":\"2025-08-08\",\"path\":\"/Ho_Cubic_35L_Tong_Hop.pdf\",\"isPublic\":true}]',
1223
+ // pictures: '[{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800},{"id":"d3f549e0-a036-4b16-aa67-30444d23d795","name":"dummy.pdf","path":"/dummy.pdf","contentType":"application/pdf","size":1800}]'
1224
+ };
1225
+
1226
+ //#region Multi Form
1227
+
1228
+ export const sampleMultiFormFieldsA = [
1229
+ // ======== Input Text ========
1230
+ new InputTextField({
1231
+ key: 'usernameA',
1232
+ label: 'Tên tài khoản A',
1233
+ value: '',
1234
+ required: true,
1235
+ minLength: 2,
1236
+ isDisabled: false,
1237
+ errorMessages: {
1238
+ [CommonValidaterEnum.Required]: 'Bắt buộc nha hẹ hẹ',
1239
+ [CommonValidaterEnum.MinLength]: 'Tối thiểu là 2 nha hẹ hẹ',
1240
+ },
1241
+ pattern: 'alphaDashVN',
1242
+ // grid: { xs: 12 },
1243
+ // labelGrid: { xs: 8 },
1244
+ // controlGrid: { xs: 16 },
1245
+ // suffixes: [
1246
+ // new Suffix({
1247
+ // key: 'view',
1248
+ // visibleOn: ['view'],
1249
+ // }),
1250
+ // new Suffix({
1251
+ // key: 'edit',
1252
+ // }),
1253
+ // ],
1254
+ }),
1255
+ // ======== Input Text ========
1256
+
1257
+ // ======== Input Password ========
1258
+ // new InputPasswordField({
1259
+ // key: 'passwordA',
1260
+ // label: 'Mật khẩu',
1261
+ // // value: '',
1262
+ // required: false,
1263
+ // matchField: 'confirmPasswordA',
1264
+ // errorMessages: {
1265
+ // [CustomValidaterEnum.MatchField]: 'Mật khẩu không khớp',
1266
+ // },
1267
+ // // grid: { xs: 12 },
1268
+ // // labelGrid: { xs: 8 },
1269
+ // // controlGrid: { xs: 16 }
1270
+ // }),
1271
+ // new InputPasswordField({
1272
+ // key: 'confirmPasswordA',
1273
+ // label: 'Xác nhận mật khẩu',
1274
+ // // value: '',
1275
+ // required: false,
1276
+ // matchField: 'passwordA',
1277
+ // errorMessages: {
1278
+ // [CustomValidaterEnum.MatchField]: 'Xác nhận mật khẩu không khớp',
1279
+ // },
1280
+ // // labelGrid: { xs: 16 },
1281
+ // // controlGrid: { xs: 8 }
1282
+ // }),
1283
+ // ======== Input Password ========
1284
+
1285
+ // ======== Textarea ========
1286
+ // new TextareaField({
1287
+ // key: 'noteA',
1288
+ // label: 'Ghi chú A',
1289
+ // value: '',
1290
+ // required: false,
1291
+ // minLength: 3,
1292
+ // maxLength: 128,
1293
+ // // grid: { xs: 12 },
1294
+ // // labelGrid: { xs: 8 },
1295
+ // // controlGrid: { xs: 16 }
1296
+ // }),
1297
+ // ======== Textarea ========
1298
+
1299
+ // ======== DATE PICKER ========
1300
+ // new DatePickerField({
1301
+ // key: 'dateA',
1302
+ // label: 'Ngày A',
1303
+ // required: true,
1304
+ // allowPastDates: false,
1305
+ // allowFutureDates: true,
1306
+ // isDisabled: false,
1307
+ // }),
1308
+ // ======== DATE PICKER ========
1309
+
1310
+ // ======== DATE RANGE ========
1311
+ // new DateRangeField({
1312
+ // key: 'expectedTimeA',
1313
+ // label: 'Thời gian dự kiến A',
1314
+ // required: true,
1315
+ // outputAs: 'date-array',
1316
+ // allowPastDates: false,
1317
+ // allowFutureDates: true,
1318
+ // isDisabled: false,
1319
+ // }),
1320
+ // ======== DATE RANGE ========
1321
+
1322
+ // ======== SINGLE SELECT ========
1323
+ // new SingleSelectField({
1324
+ // key: 'roleA',
1325
+ // label: 'Vai trò A',
1326
+ // bindLabel: 'name',
1327
+ // bindValue: 'code',
1328
+ // required: true,
1329
+ // // outputAs: 'single',
1330
+ // transformLabel: (option: Record<string, unknown>) => {
1331
+ // const { name, code } = option;
1332
+ // if (name && code) return `${name} - ${code}`;
1333
+ // return '';
1334
+ // },
1335
+ // apiConfig: {
1336
+ // baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/system/Role',
1337
+ // },
1338
+ // options: [
1339
+ // { name: 'Quản trị viên', code: 'admin' },
1340
+ // { name: 'Người vận hành', code: 'operator' },
1341
+ // { name: 'Người dân', code: 'anonymous' },
1342
+ // ],
1343
+ // }),
1344
+ // ======== SINGLE SELECT ========
1345
+
1346
+ // ======== MULTI SELECT ========
1347
+ // new MultiSelectField({
1348
+ // key: 'multiRoleA',
1349
+ // label: 'Nhiều vai trò A',
1350
+ // bindLabel: 'name',
1351
+ // bindValue: 'code',
1352
+ // outputAs: 'single',
1353
+ // required: true,
1354
+ // isDisabled: false,
1355
+ // transformLabel: (option: Record<string, unknown>) => {
1356
+ // const { name, code } = option;
1357
+ // if (name && code) return `${name} - ${code}`;
1358
+ // return '';
1359
+ // },
1360
+ // apiConfig: {
1361
+ // baseUrl: `${environment.GDCI_SYSTEM_URL}CommonCats/Position`,
1362
+ // },
1363
+ // }),
1364
+ // ======== MULTI SELECT ========
1365
+
1366
+ // ======== SINGLE FILE UPLOAD ========
1367
+ new SingleFileUploadField({
1368
+ key: 'attachmentA',
1369
+ label: 'Văn bản đính kèm A',
1370
+ // required: true,
1371
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf, IMAGE_TYPES.tif, IMAGE_TYPES.tiff],
1372
+ maxSizeInMB: 100000,
1373
+ required: true,
1374
+ }),
1375
+ // ======== SINGLE FILE UPLOAD ========
1376
+
1377
+ // ======== MULTI FILE UPLOAD ========
1378
+ new MultiFileUploadField({
1379
+ key: 'picturesA',
1380
+ label: 'Những hình ảnh kèm theo A',
1381
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf],
1382
+ maxSizeInMB: 2,
1383
+ required: false,
1384
+ }),
1385
+ // ======== MULTI FILE UPLOAD ========
1386
+
1387
+ // ======== MULTI IMAGE UPLOAD ========
1388
+ new MultiImageUploadField({
1389
+ key: 'imagesA',
1390
+ label: 'Hình ảnh kèm theo A',
1391
+ required: true,
1392
+ maxSizeInMB: 62,
1393
+ imageCardWidth: '208px',
1394
+ }),
1395
+ // ======== MULTI IMAGE UPLOAD ========
1396
+
1397
+ // ======== AVATAR UPLOAD ========
1398
+ new AvatarUploadField({
1399
+ key: 'avatarA',
1400
+ label: 'Ảnh đại diện A',
1401
+ acceptedMimeTypes: [IMAGE_TYPES.jpeg, IMAGE_TYPES.jpg, IMAGE_TYPES.png],
1402
+ required: false,
1403
+ labelGrid: { xs: 4 },
1404
+ controlGrid: { xs: 20 },
1405
+ }),
1406
+ // ======== AVATAR UPLOAD ========
1407
+ ];
1408
+
1409
+ export const sampleMultiFormFieldsB = [
1410
+ // ======== Input Text ========
1411
+ new InputTextField({
1412
+ key: 'usernameB',
1413
+ label: 'Tên tài khoản B',
1414
+ value: '',
1415
+ required: true,
1416
+ minLength: 2,
1417
+ isDisabled: false,
1418
+ errorMessages: {
1419
+ [CommonValidaterEnum.Required]: 'Bắt buộc nha hẹ hẹ',
1420
+ [CommonValidaterEnum.MinLength]: 'Tối thiểu là 2 nha hẹ hẹ',
1421
+ },
1422
+ pattern: 'alphaDashVN',
1423
+ // grid: { xs: 12 },
1424
+ // labelGrid: { xs: 8 },
1425
+ // controlGrid: { xs: 16 },
1426
+ // suffixes: [
1427
+ // new Suffix({
1428
+ // key: 'view',
1429
+ // visibleOn: ['view'],
1430
+ // }),
1431
+ // new Suffix({
1432
+ // key: 'edit',
1433
+ // }),
1434
+ // ],
1435
+ }),
1436
+ // ======== Input Text ========
1437
+
1438
+ // ======== Input Password ========
1439
+ // new InputPasswordField({
1440
+ // key: 'passwordB',
1441
+ // label: 'Mật khẩu',
1442
+ // // value: '',
1443
+ // required: false,
1444
+ // matchField: 'confirmPasswordB',
1445
+ // errorMessages: {
1446
+ // [CustomValidaterEnum.MatchField]: 'Mật khẩu không khớp',
1447
+ // },
1448
+ // // grid: { xs: 12 },
1449
+ // // labelGrid: { xs: 8 },
1450
+ // // controlGrid: { xs: 16 }
1451
+ // }),
1452
+ // new InputPasswordField({
1453
+ // key: 'confirmPasswordB',
1454
+ // label: 'Xác nhận mật khẩu',
1455
+ // // value: '',
1456
+ // required: false,
1457
+ // matchField: 'passwordB',
1458
+ // errorMessages: {
1459
+ // [CustomValidaterEnum.MatchField]: 'Xác nhận mật khẩu không khớp',
1460
+ // },
1461
+ // // labelGrid: { xs: 16 },
1462
+ // // controlGrid: { xs: 8 }
1463
+ // }),
1464
+ // ======== Input Password ========
1465
+
1466
+ // ======== Textarea ========
1467
+ // new TextareaField({
1468
+ // key: 'noteB',
1469
+ // label: 'Ghi chú B',
1470
+ // value: '',
1471
+ // required: false,
1472
+ // minLength: 3,
1473
+ // maxLength: 128,
1474
+ // // grid: { xs: 12 },
1475
+ // // labelGrid: { xs: 8 },
1476
+ // // controlGrid: { xs: 16 }
1477
+ // }),
1478
+ // ======== Textarea ========
1479
+
1480
+ // ======== DATE PICKER ========
1481
+ // new DatePickerField({
1482
+ // key: 'dateB',
1483
+ // label: 'Ngày B',
1484
+ // required: true,
1485
+ // allowPastDates: false,
1486
+ // allowFutureDates: true,
1487
+ // isDisabled: false,
1488
+ // }),
1489
+ // ======== DATE PICKER ========
1490
+
1491
+ // ======== DATE RANGE ========
1492
+ // new DateRangeField({
1493
+ // key: 'expectedTimeB',
1494
+ // label: 'Thời gian dự kiến B',
1495
+ // required: true,
1496
+ // outputAs: 'date-array',
1497
+ // allowPastDates: false,
1498
+ // allowFutureDates: true,
1499
+ // isDisabled: false,
1500
+ // }),
1501
+ // ======== DATE RANGE ========
1502
+
1503
+ // ======== SINGLE SELECT ========
1504
+ // new SingleSelectField({
1505
+ // key: 'roleB',
1506
+ // label: 'Vai trò B',
1507
+ // bindLabel: 'name',
1508
+ // bindValue: 'code',
1509
+ // required: true,
1510
+ // // outputAs: 'single',
1511
+ // transformLabel: (option: Record<string, unknown>) => {
1512
+ // const { name, code } = option;
1513
+ // if (name && code) return `${name} - ${code}`;
1514
+ // return '';
1515
+ // },
1516
+ // apiConfig: {
1517
+ // baseUrl: 'https://quyhoachxaydung.hanam.gov.vn/gdci/system/Role',
1518
+ // },
1519
+ // options: [
1520
+ // { name: 'Quản trị viên', code: 'admin' },
1521
+ // { name: 'Người vận hành', code: 'operator' },
1522
+ // { name: 'Người dân', code: 'anonymous' },
1523
+ // ],
1524
+ // }),
1525
+ // ======== SINGLE SELECT ========
1526
+
1527
+ // ======== MULTI SELECT ========
1528
+ // new MultiSelectField({
1529
+ // key: 'multiRoleB',
1530
+ // label: 'Nhiều vai trò B',
1531
+ // bindLabel: 'name',
1532
+ // bindValue: 'code',
1533
+ // outputAs: 'single',
1534
+ // required: true,
1535
+ // isDisabled: false,
1536
+ // transformLabel: (option: Record<string, unknown>) => {
1537
+ // const { name, code } = option;
1538
+ // if (name && code) return `${name} - ${code}`;
1539
+ // return '';
1540
+ // },
1541
+ // apiConfig: {
1542
+ // baseUrl: `${environment.GDCI_SYSTEM_URL}CommonCats/Position`,
1543
+ // },
1544
+ // }),
1545
+ // ======== MULTI SELECT ========
1546
+
1547
+ // ======== SINGLE FILE UPLOAD ========
1548
+ new SingleFileUploadField({
1549
+ key: 'attachmentB',
1550
+ label: 'Văn bản đính kèm B',
1551
+ // required: true,
1552
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf, IMAGE_TYPES.tif, IMAGE_TYPES.tiff],
1553
+ maxSizeInMB: 100000,
1554
+ required: true,
1555
+ }),
1556
+ // ======== SINGLE FILE UPLOAD ========
1557
+
1558
+ // ======== MULTI FILE UPLOAD ========
1559
+ new MultiFileUploadField({
1560
+ key: 'picturesB',
1561
+ label: 'Những hình ảnh kèm theo B',
1562
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf],
1563
+ maxSizeInMB: 2,
1564
+ required: false,
1565
+ }),
1566
+ // ======== MULTI FILE UPLOAD ========
1567
+
1568
+ // ======== MULTI IMAGE UPLOAD ========
1569
+ new MultiImageUploadField({
1570
+ key: 'imagesB',
1571
+ label: 'Hình ảnh kèm theo B',
1572
+ required: true,
1573
+ maxSizeInMB: 62,
1574
+ imageCardWidth: '208px',
1575
+ }),
1576
+ // ======== MULTI IMAGE UPLOAD ========
1577
+
1578
+ // ======== AVATAR UPLOAD ========
1579
+ new AvatarUploadField({
1580
+ key: 'avatarB',
1581
+ label: 'Ảnh đại diện B',
1582
+ acceptedMimeTypes: [IMAGE_TYPES.jpeg, IMAGE_TYPES.jpg, IMAGE_TYPES.png],
1583
+ required: false,
1584
+ labelGrid: { xs: 4 },
1585
+ controlGrid: { xs: 20 },
1586
+ }),
1587
+ // ======== AVATAR UPLOAD ========
1588
+ ];
1589
+
1590
+ export const sampleMultiFormModelA = {
1591
+ usernameA: 'Lương Văn Lào',
1592
+ };
1593
+
1594
+ export const sampleMultiFormModelB = {
1595
+ usernameB: 'Đào Mai Tôn',
1596
+ };
1597
+
1598
+ //#endregion Multi Form
1599
+
1600
+ //#region MultiSelect depend on field has isParent
1601
+ export const sampleMultiSelectDependOnParent = [
1602
+ new MultiFileUploadField({
1603
+ key: 'picturesB',
1604
+ label: 'Những hình ảnh kèm theo B',
1605
+ acceptedMimeTypes: [APPLICATION_TYPES.pdf, IMAGE_TYPES.png, IMAGE_TYPES.jpg],
1606
+ maxSizeInMB: 1,
1607
+ required: true,
1608
+ }),
1609
+
1610
+ new SingleSelectField({
1611
+ key: 'province',
1612
+ label: 'Tỉnh/Thành phố',
1613
+ required: true,
1614
+ outputAs: 'single',
1615
+ transformLabel: (option: Record<string, unknown>) => {
1616
+ const { name, code } = option;
1617
+ if (name && code) return `${name} - ${code}`;
1618
+ return '';
1619
+ },
1620
+ apiConfig: {
1621
+ baseUrl: `http://mock-api.com/CommonCats/Province`,
1622
+ },
1623
+ isParent: true,
1624
+ }),
1625
+
1626
+ new MultiSelectField({
1627
+ key: 'ward',
1628
+ label: 'Phường/Xã',
1629
+ required: false,
1630
+ transformLabel: (option: Record<string, unknown>) => {
1631
+ const { name, code } = option;
1632
+ if (name && code) return `${name} - ${code}`;
1633
+ return '';
1634
+ },
1635
+ apiConfig: {
1636
+ baseUrl: `http://mock-api.com/CommonCats/Ward`,
1637
+ },
1638
+ dependsOn: [
1639
+ {
1640
+ fieldKey: 'province',
1641
+ paramKey: 'provinceCode',
1642
+ },
1643
+ ],
1644
+ // dependType: DependTypeEnum.All
1645
+ }),
1646
+ ];
1647
+
1648
+ //#endregion MultiSelect depend on field has isParent