@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,337 +0,0 @@
1
- import {
2
- Component,
3
- computed,
4
- effect,
5
- forwardRef,
6
- Input,
7
- signal,
8
- untracked,
9
- } from "@angular/core";
10
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
11
- import { BaseValueAccessor } from "../../../../base/base-value-accessor";
12
- import { SingleSelectField } from "../../../../models/fields/select/single-select-field.model";
13
- import {
14
- createSelectPlaceholder,
15
- createSingleSelectPlaceholder,
16
- } from "../../../../utils/dynamic-form/dynamic-form";
17
- import { FORM_MODULES } from "../../../../consts/common/standalone-import.const";
18
- import { NO_INFO_TEXT } from "../../../../consts/common/common.const";
19
- import { SelectOutputValueTypeEnum } from "../../../../enums/common";
20
- import { ApiResponse } from "../../../../models/common/api-response.model";
21
- import { FieldTypeEnum } from "../../../../enums/fields";
22
- import { ControlTypeEnum } from "../../../../enums/controls";
23
- import { SuffixComponent } from "../../components/suffix/suffix.component";
24
- import { NzSelectModule } from "ng-zorro-antd/select";
25
- import { NzSpinModule } from "ng-zorro-antd/spin";
26
- import { NzInputModule } from "ng-zorro-antd/input";
27
-
28
- const ZORRO_MODULES = [NzSelectModule, NzSpinModule, NzInputModule];
29
- const COMPONENTS = [SuffixComponent];
30
-
31
- @Component({
32
- selector: "app-single-select",
33
- standalone: true,
34
- imports: [...FORM_MODULES, ...ZORRO_MODULES, ...COMPONENTS],
35
- templateUrl: "./single-select.component.html",
36
- styleUrls: ["./single-select.component.scss"],
37
- providers: [
38
- {
39
- provide: NG_VALUE_ACCESSOR,
40
- useExisting: forwardRef(() => SingleSelectComponent),
41
- multi: true,
42
- },
43
- ],
44
- })
45
- export class SingleSelectComponent extends BaseValueAccessor<
46
- string | Record<string, unknown>
47
- > {
48
- @Input() isCustomInputText!: boolean;
49
- readonly field = computed(() => {
50
- const base = this.fieldInput();
51
- if (
52
- !(base instanceof SingleSelectField) ||
53
- (base.type !== FieldTypeEnum.SingleSelect &&
54
- base.controlType !== ControlTypeEnum.Select)
55
- ) {
56
- throw new Error("Expected SingleSelectField");
57
- }
58
- return base;
59
- });
60
-
61
- // Giá trị dùng hiển thị ở chế độ View.
62
- displayValue: string | number = "";
63
-
64
- loadingSignal = signal(false);
65
- isDisabledSignal = signal(false);
66
- disabled = computed(() => this.loadingSignal() || this.isDisabledSignal());
67
-
68
- options: Record<string, unknown>[] = [];
69
- queryParams: Record<string, unknown> = {};
70
-
71
- constructor() {
72
- super();
73
-
74
- effect(() => {
75
- if (untracked(() => this.isView())) return;
76
-
77
- const { key, dependsOn, isParent, dependType } = untracked(() =>
78
- this.field(),
79
- );
80
-
81
- // Không dính dáng gì đến isParent và dependsOn.
82
- if (!isParent && dependsOn!.length === 0) {
83
- this.getOptions();
84
- return;
85
- }
86
-
87
- const dependValuesMap = this.fieldService.getDependValuesMap();
88
-
89
- const dependValues = dependsOn?.map((depend) => {
90
- const dependFunc = dependValuesMap.get(depend.fieldKey);
91
- const value =
92
- typeof dependFunc === "function" ? dependFunc() : dependFunc;
93
- return [depend.paramKey, value];
94
- });
95
-
96
- // console.log(`${key} dependValue`, dependValues);
97
-
98
- const params = Object.fromEntries(dependValues as any);
99
-
100
- this.queryParams = {
101
- ...this.queryParams,
102
- ...params,
103
- };
104
-
105
- // console.log(`${key} queryParams`, this.queryParams);
106
-
107
- // Nếu tất cả các phụ thuộc có value thì mới gọi API.
108
- const allDependHasValues = dependValues?.every(
109
- ([fieldKey, value]) => value,
110
- );
111
- // console.log(`${key} allDependHasValues`, allDependHasValues);
112
-
113
- if (allDependHasValues) {
114
- // this.isDisabledSignal.set(false);
115
- this.control?.enable();
116
- this.getOptions();
117
- } else {
118
- // Ngược lại reset và disabled.
119
- this.control?.reset();
120
- // this.isDisabledSignal.set(true);
121
- this.control?.disable();
122
- }
123
- });
124
- }
125
-
126
- // Xử lý tạo placeholder text tự động nếu chưa truyền placeholder vào config của field
127
- override resolvePlaceholderText(): string {
128
- return createSingleSelectPlaceholder(this.field());
129
- }
130
-
131
- // Chạy khi value form được gán bởi các hàm reset, patchValue, setValue.
132
- protected override writeValueToView(value: string | null): void {
133
- if (this.isView()) {
134
- this.displayValue = this.getDisplayValue(
135
- this.field().modelValue as string | Record<string, unknown>,
136
- );
137
- return;
138
- }
139
-
140
- if (!this.isAddOrEdit()) return;
141
-
142
- this.fieldService.updateDependValuesMap(this.fieldKey(), value ?? "");
143
- // const signal = untracked(() => this.fieldService.getDependValuesMap().get(this.fieldKey()))
144
- // console.log("DependValuesMap SET", untracked(() => signal!()));
145
-
146
- // Gán data vào đầu ra của form.
147
- const newOutputValue = value && this.getValueByOutputAs(value);
148
- this.patchFormData(this.fieldKey(), newOutputValue);
149
- }
150
-
151
- // Xử lý phụ thuộc khi change value
152
- protected override handleValueChange(value: string): void {
153
- const { isParent } = this.field();
154
- if (isParent) {
155
- this.fieldService.updateDependValuesMap(this.fieldKey(), value);
156
- // const signal = untracked(() => this.fieldService.getDependValuesMap().get(this.fieldKey()))
157
- // console.log("DependValuesMap UI", untracked(() => signal!()));
158
- }
159
-
160
- // Gán data vào đầu ra của form.
161
- const newOutputValue = value && this.getValueByOutputAs(value);
162
- this.patchFormData(this.fieldKey(), newOutputValue);
163
- }
164
-
165
- private createFullApiUrl(): string {
166
- const field = untracked(() => this.field());
167
- let fullApiUrl = field?.apiConfig?.baseUrl || "";
168
- const params = field?.apiConfig?.params || {};
169
- this.queryParams = {
170
- ...this.queryParams,
171
- ...params,
172
- };
173
- return fullApiUrl;
174
- }
175
-
176
- // Lấy danh sách options từ GET api.
177
- private getOptions(): void {
178
- const field = untracked(() => this.field());
179
- const { optionsToPrepend, optionsToAppend, exceptOptions } = field;
180
- const fullApiUrl = this.createFullApiUrl();
181
-
182
- if (!fullApiUrl) {
183
- this.options = field?.options ?? [];
184
- this.options = [
185
- ...optionsToPrepend,
186
- ...this.options,
187
- ...optionsToAppend,
188
- ].filter(
189
- (options) =>
190
- !exceptOptions.some(
191
- (opts) => opts[field.bindValue] === options[field.bindValue],
192
- ),
193
- );
194
- return;
195
- }
196
-
197
- this.loadingSignal.set(true);
198
- this.control?.disable();
199
- this.fieldService
200
- .getAllOptions(fullApiUrl, this.queryParams)
201
- .pipe(this.takeUntilDestroy())
202
- .subscribe({
203
- next: (res: ApiResponse<Record<string, unknown>[]>) => {
204
- this.loadingSignal.set(false);
205
- if (!this.field().isDisabled) {
206
- this.control?.enable();
207
- this.control?.reset();
208
- }
209
-
210
- if (res?.code === 0) {
211
- this.options = res?.data;
212
- this.options = [
213
- ...optionsToPrepend,
214
- ...this.options,
215
- ...optionsToAppend,
216
- ].filter(
217
- (options) =>
218
- !exceptOptions.some(
219
- (opts) => opts[field.bindValue] === options[field.bindValue],
220
- ),
221
- );
222
-
223
- // Nếu outputAs là dạng sourceObject đồng bộ sau khi load xong list.
224
- if (field.outputAs === SelectOutputValueTypeEnum.SourceObject) {
225
- const newOutputValue = this.options.find(
226
- (option) => option[field.bindValue] === this.value,
227
- ) ?? {
228
- [field.bindValue]: this.value,
229
- };
230
- this.patchFormData(this.fieldKey(), newOutputValue);
231
- }
232
- }
233
- },
234
- error: (error: Error) => {
235
- this.loadingSignal.set(false);
236
- if (!this.field().isDisabled) this.control?.enable();
237
- },
238
- });
239
- }
240
-
241
- handleChangeOptions(optionValue: string): void {
242
- const { enableFieldChange, bindValue } = untracked(() => this.field());
243
-
244
- if (enableFieldChange) {
245
- const option = this.options.find(
246
- (option) => option[bindValue] === optionValue,
247
- );
248
- this.fieldService.onFieldChange(this.fieldKey(), option);
249
- }
250
-
251
- this.propagateValue(optionValue);
252
- }
253
-
254
- // Xử lý output value đầu ra theo outputAs mà người dùng mong muốn.
255
- private getValueByOutputAs(
256
- singleValue: string,
257
- ): string | Record<string, unknown> {
258
- const field = this.field();
259
-
260
- if (singleValue) {
261
- // Nếu outputAs là dạng single.
262
- let value: string | Record<string, unknown> = singleValue;
263
-
264
- // Nếu outputAs là dạng object.
265
- if (field.outputAs === SelectOutputValueTypeEnum.Object) {
266
- value = {
267
- [field.bindValue]: singleValue,
268
- };
269
- }
270
-
271
- // Nếu outputAs là dạng sourceObject.
272
- if (field.outputAs === SelectOutputValueTypeEnum.SourceObject) {
273
- value = this.options.find(
274
- (option) => option[field.bindValue] === singleValue,
275
- ) ?? {
276
- [field.bindValue]: singleValue,
277
- };
278
- }
279
-
280
- return value;
281
- }
282
- return singleValue;
283
- }
284
-
285
- // Làm phẳng giá trị để hiện thị ở chế độ View.
286
- protected getDisplayValue(value: string | Record<string, unknown>): string {
287
- if (!value) return NO_INFO_TEXT;
288
-
289
- if (typeof value === "object") {
290
- return this.getCustomLabel(value);
291
- }
292
- return value as string;
293
- }
294
-
295
- // Lấy value ở option tag.
296
- protected transformOptionValue(option: Record<string, unknown>): unknown {
297
- const field = this.field()!;
298
-
299
- let optionValue: unknown;
300
-
301
- optionValue = option[field.bindValue];
302
-
303
- return optionValue;
304
- }
305
-
306
- // Lấy label.
307
- protected getOptionLabel(option: Record<string, unknown>): string {
308
- return this.getCustomLabel(option);
309
- }
310
-
311
- // Biến đổi label nếu có thuộc tính hàm biến đổi transformLabel.
312
- private getCustomLabel(option: Record<string, unknown>): string {
313
- const field = this.field();
314
-
315
- if (
316
- typeof option[field.bindLabel] === "function" ||
317
- !option[field.bindLabel]
318
- ) {
319
- let warnMessage =
320
- "Giá trị label lấy theo bindLabel hiện đang là dạng object, array hoặc các dạng còn lại của complex data";
321
- if (!option[field.bindLabel])
322
- warnMessage = "Không tồn tại giá trị label khi lấy theo bindLabel";
323
- // console.warn(warnMessage);
324
-
325
- return NO_INFO_TEXT;
326
- }
327
-
328
- let optionLabel = option[field.bindLabel] as string;
329
-
330
- if (field.transformLabel) {
331
- const tranformLabelValue = field.transformLabel(option);
332
- if (tranformLabelValue) optionLabel = tranformLabelValue;
333
- }
334
-
335
- return optionLabel;
336
- }
337
- }
@@ -1,340 +0,0 @@
1
- import {
2
- Component,
3
- computed,
4
- effect,
5
- forwardRef,
6
- Input,
7
- signal,
8
- untracked,
9
- } from "@angular/core";
10
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
11
- import { BaseValueAccessor } from "../../../../base/base-value-accessor";
12
- import { SingleSelectField } from "../../../../models/fields/select/single-select-field.model";
13
- import {
14
- createSelectPlaceholder,
15
- createSingleSelectPlaceholder,
16
- } from "../../../../utils/dynamic-form/dynamic-form";
17
- import { FORM_MODULES } from "../../../../consts/common/standalone-import.const";
18
- import { NO_INFO_TEXT } from "../../../../consts/common/common.const";
19
- import { SelectOutputValueTypeEnum } from "../../../../enums/common";
20
- import { ApiResponse } from "../../../../models/common/api-response.model";
21
- import { FieldTypeEnum } from "../../../../enums/fields";
22
- import { ControlTypeEnum } from "../../../../enums/controls";
23
- import { SuffixComponent } from "../../components/suffix/suffix.component";
24
- import { NzSelectModule } from "ng-zorro-antd/select";
25
- import { NzSpinModule } from "ng-zorro-antd/spin";
26
- import { NzInputModule } from "ng-zorro-antd/input";
27
-
28
- const ZORRO_MODULES = [NzSelectModule, NzSpinModule, NzInputModule];
29
- const COMPONENTS = [SuffixComponent];
30
-
31
- @Component({
32
- selector: "app-single-select",
33
- standalone: true,
34
- imports: [...FORM_MODULES, ...ZORRO_MODULES, ...COMPONENTS],
35
- templateUrl: "./single-select.component.html",
36
- styleUrls: ["./single-select.component.scss"],
37
- providers: [
38
- {
39
- provide: NG_VALUE_ACCESSOR,
40
- useExisting: forwardRef(() => SingleSelectComponent),
41
- multi: true,
42
- },
43
- ],
44
- })
45
- export class SingleSelectComponent extends BaseValueAccessor<
46
- string | Record<string, unknown>
47
- > {
48
- optionsSignal() {
49
- throw new Error("Method not implemented.");
50
- }
51
- @Input() isCustomInputText!: boolean;
52
- readonly field = computed(() => {
53
- const base = this.fieldInput();
54
- if (
55
- !(base instanceof SingleSelectField) ||
56
- (base.type !== FieldTypeEnum.SingleSelect &&
57
- base.controlType !== ControlTypeEnum.Select)
58
- ) {
59
- throw new Error("Expected SingleSelectField");
60
- }
61
- return base;
62
- });
63
-
64
- // Giá trị dùng hiển thị ở chế độ View.
65
- displayValue: string | number = "";
66
-
67
- loadingSignal = signal(false);
68
- isDisabledSignal = signal(false);
69
- disabled = computed(() => this.loadingSignal() || this.isDisabledSignal());
70
-
71
- options: Record<string, unknown>[] = [];
72
- queryParams: Record<string, unknown> = {};
73
-
74
- constructor() {
75
- super();
76
-
77
- effect(() => {
78
- if (untracked(() => this.isView())) return;
79
-
80
- const { key, dependsOn, isParent, dependType } = untracked(() =>
81
- this.field(),
82
- );
83
-
84
- // Không dính dáng gì đến isParent và dependsOn.
85
- if (!isParent && dependsOn!.length === 0) {
86
- this.getOptions();
87
- return;
88
- }
89
-
90
- const dependValuesMap = this.fieldService.getDependValuesMap();
91
-
92
- const dependValues = dependsOn?.map((depend) => {
93
- const dependFunc = dependValuesMap.get(depend.fieldKey);
94
- const value =
95
- typeof dependFunc === "function" ? dependFunc() : dependFunc;
96
- return [depend.paramKey, value];
97
- });
98
-
99
- // console.log(`${key} dependValue`, dependValues);
100
-
101
- const params = Object.fromEntries(dependValues as any);
102
-
103
- this.queryParams = {
104
- ...this.queryParams,
105
- ...params,
106
- };
107
-
108
- // console.log(`${key} queryParams`, this.queryParams);
109
-
110
- // Nếu tất cả các phụ thuộc có value thì mới gọi API.
111
- const allDependHasValues = dependValues?.every(
112
- ([fieldKey, value]) => value,
113
- );
114
- // console.log(`${key} allDependHasValues`, allDependHasValues);
115
-
116
- if (allDependHasValues) {
117
- // this.isDisabledSignal.set(false);
118
- this.control?.enable();
119
- this.getOptions();
120
- } else {
121
- // Ngược lại reset và disabled.
122
- this.control?.reset();
123
- // this.isDisabledSignal.set(true);
124
- this.control?.disable();
125
- }
126
- });
127
- }
128
-
129
- // Xử lý tạo placeholder text tự động nếu chưa truyền placeholder vào config của field
130
- override resolvePlaceholderText(): string {
131
- return createSingleSelectPlaceholder(this.field());
132
- }
133
-
134
- // Chạy khi value form được gán bởi các hàm reset, patchValue, setValue.
135
- protected override writeValueToView(value: string | null): void {
136
- if (this.isView()) {
137
- this.displayValue = this.getDisplayValue(
138
- this.field().modelValue as string | Record<string, unknown>,
139
- );
140
- return;
141
- }
142
-
143
- if (!this.isAddOrEdit()) return;
144
-
145
- this.fieldService.updateDependValuesMap(this.fieldKey(), value ?? "");
146
- // const signal = untracked(() => this.fieldService.getDependValuesMap().get(this.fieldKey()))
147
- // console.log("DependValuesMap SET", untracked(() => signal!()));
148
-
149
- // Gán data vào đầu ra của form.
150
- const newOutputValue = value && this.getValueByOutputAs(value);
151
- this.patchFormData(this.fieldKey(), newOutputValue);
152
- }
153
-
154
- // Xử lý phụ thuộc khi change value
155
- protected override handleValueChange(value: string): void {
156
- const { isParent } = this.field();
157
- if (isParent) {
158
- this.fieldService.updateDependValuesMap(this.fieldKey(), value);
159
- // const signal = untracked(() => this.fieldService.getDependValuesMap().get(this.fieldKey()))
160
- // console.log("DependValuesMap UI", untracked(() => signal!()));
161
- }
162
-
163
- // Gán data vào đầu ra của form.
164
- const newOutputValue = value && this.getValueByOutputAs(value);
165
- this.patchFormData(this.fieldKey(), newOutputValue);
166
- }
167
-
168
- private createFullApiUrl(): string {
169
- const field = untracked(() => this.field());
170
- let fullApiUrl = field?.apiConfig?.baseUrl || "";
171
- const params = field?.apiConfig?.params || {};
172
- this.queryParams = {
173
- ...this.queryParams,
174
- ...params,
175
- };
176
- return fullApiUrl;
177
- }
178
-
179
- // Lấy danh sách options từ GET api.
180
- private getOptions(): void {
181
- const field = untracked(() => this.field());
182
- const { optionsToPrepend, optionsToAppend, exceptOptions } = field;
183
- const fullApiUrl = this.createFullApiUrl();
184
-
185
- if (!fullApiUrl) {
186
- this.options = field?.options ?? [];
187
- this.options = [
188
- ...optionsToPrepend,
189
- ...this.options,
190
- ...optionsToAppend,
191
- ].filter(
192
- (options) =>
193
- !exceptOptions.some(
194
- (opts) => opts[field.bindValue] === options[field.bindValue],
195
- ),
196
- );
197
- return;
198
- }
199
-
200
- this.loadingSignal.set(true);
201
- this.control?.disable();
202
- this.fieldService
203
- .getAllOptions(fullApiUrl, this.queryParams)
204
- .pipe(this.takeUntilDestroy())
205
- .subscribe({
206
- next: (res: ApiResponse<Record<string, unknown>[]>) => {
207
- this.loadingSignal.set(false);
208
- if (!this.field().isDisabled) {
209
- this.control?.enable();
210
- this.control?.reset();
211
- }
212
-
213
- if (res?.code === 0) {
214
- this.options = res?.data;
215
- this.options = [
216
- ...optionsToPrepend,
217
- ...this.options,
218
- ...optionsToAppend,
219
- ].filter(
220
- (options) =>
221
- !exceptOptions.some(
222
- (opts) => opts[field.bindValue] === options[field.bindValue],
223
- ),
224
- );
225
-
226
- // Nếu outputAs là dạng sourceObject đồng bộ sau khi load xong list.
227
- if (field.outputAs === SelectOutputValueTypeEnum.SourceObject) {
228
- const newOutputValue = this.options.find(
229
- (option) => option[field.bindValue] === this.value,
230
- ) ?? {
231
- [field.bindValue]: this.value,
232
- };
233
- this.patchFormData(this.fieldKey(), newOutputValue);
234
- }
235
- }
236
- },
237
- error: (error: Error) => {
238
- this.loadingSignal.set(false);
239
- if (!this.field().isDisabled) this.control?.enable();
240
- },
241
- });
242
- }
243
-
244
- handleChangeOptions(optionValue: string): void {
245
- const { enableFieldChange, bindValue } = untracked(() => this.field());
246
-
247
- if (enableFieldChange) {
248
- const option = this.options.find(
249
- (option) => option[bindValue] === optionValue,
250
- );
251
- this.fieldService.onFieldChange(this.fieldKey(), option);
252
- }
253
-
254
- this.propagateValue(optionValue);
255
- }
256
-
257
- // Xử lý output value đầu ra theo outputAs mà người dùng mong muốn.
258
- private getValueByOutputAs(
259
- singleValue: string,
260
- ): string | Record<string, unknown> {
261
- const field = this.field();
262
-
263
- if (singleValue) {
264
- // Nếu outputAs là dạng single.
265
- let value: string | Record<string, unknown> = singleValue;
266
-
267
- // Nếu outputAs là dạng object.
268
- if (field.outputAs === SelectOutputValueTypeEnum.Object) {
269
- value = {
270
- [field.bindValue]: singleValue,
271
- };
272
- }
273
-
274
- // Nếu outputAs là dạng sourceObject.
275
- if (field.outputAs === SelectOutputValueTypeEnum.SourceObject) {
276
- value = this.options.find(
277
- (option) => option[field.bindValue] === singleValue,
278
- ) ?? {
279
- [field.bindValue]: singleValue,
280
- };
281
- }
282
-
283
- return value;
284
- }
285
- return singleValue;
286
- }
287
-
288
- // Làm phẳng giá trị để hiện thị ở chế độ View.
289
- protected getDisplayValue(value: string | Record<string, unknown>): string {
290
- if (!value) return NO_INFO_TEXT;
291
-
292
- if (typeof value === "object") {
293
- return this.getCustomLabel(value);
294
- }
295
- return value as string;
296
- }
297
-
298
- // Lấy value ở option tag.
299
- protected transformOptionValue(option: Record<string, unknown>): unknown {
300
- const field = this.field()!;
301
-
302
- let optionValue: unknown;
303
-
304
- optionValue = option[field.bindValue];
305
-
306
- return optionValue;
307
- }
308
-
309
- // Lấy label.
310
- protected getOptionLabel(option: Record<string, unknown>): string {
311
- return this.getCustomLabel(option);
312
- }
313
-
314
- // Biến đổi label nếu có thuộc tính hàm biến đổi transformLabel.
315
- private getCustomLabel(option: Record<string, unknown>): string {
316
- const field = this.field();
317
-
318
- if (
319
- typeof option[field.bindLabel] === "function" ||
320
- !option[field.bindLabel]
321
- ) {
322
- let warnMessage =
323
- "Giá trị label lấy theo bindLabel hiện đang là dạng object, array hoặc các dạng còn lại của complex data";
324
- if (!option[field.bindLabel])
325
- warnMessage = "Không tồn tại giá trị label khi lấy theo bindLabel";
326
- // console.warn(warnMessage);
327
-
328
- return NO_INFO_TEXT;
329
- }
330
-
331
- let optionLabel = option[field.bindLabel] as string;
332
-
333
- if (field.transformLabel) {
334
- const tranformLabelValue = field.transformLabel(option);
335
- if (tranformLabelValue) optionLabel = tranformLabelValue;
336
- }
337
-
338
- return optionLabel;
339
- }
340
- }