@rchemist/listgrid 0.2.6

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 (592) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +343 -0
  3. package/dist/adapters/next/NextListGridProvider.d.ts +5 -0
  4. package/dist/adapters/next/NextListGridProvider.js +7 -0
  5. package/dist/adapters/next/NextRouterAdapter.d.ts +2 -0
  6. package/dist/adapters/next/NextRouterAdapter.js +34 -0
  7. package/dist/adapters/next/NextUrlStateAdapter.d.ts +2 -0
  8. package/dist/adapters/next/NextUrlStateAdapter.js +31 -0
  9. package/dist/adapters/next/index.d.ts +4 -0
  10. package/dist/adapters/next/index.js +12 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.js +3 -0
  13. package/dist/listgrid/api/ApiClient.d.ts +20 -0
  14. package/dist/listgrid/api/ApiClient.js +32 -0
  15. package/dist/listgrid/api/index.d.ts +4 -0
  16. package/dist/listgrid/api/index.js +2 -0
  17. package/dist/listgrid/api/types.d.ts +21 -0
  18. package/dist/listgrid/api/types.js +30 -0
  19. package/dist/listgrid/auth/AuthContext.d.ts +12 -0
  20. package/dist/listgrid/auth/AuthContext.js +25 -0
  21. package/dist/listgrid/auth/SessionProvider.d.ts +4 -0
  22. package/dist/listgrid/auth/SessionProvider.js +16 -0
  23. package/dist/listgrid/auth/index.d.ts +6 -0
  24. package/dist/listgrid/auth/index.js +17 -0
  25. package/dist/listgrid/auth/types.d.ts +15 -0
  26. package/dist/listgrid/auth/types.js +12 -0
  27. package/dist/listgrid/common/func.d.ts +16 -0
  28. package/dist/listgrid/common/func.js +351 -0
  29. package/dist/listgrid/common/type.d.ts +35 -0
  30. package/dist/listgrid/common/type.js +46 -0
  31. package/dist/listgrid/components/api/ApiSpecificationButton.d.ts +5 -0
  32. package/dist/listgrid/components/api/ApiSpecificationButton.js +16 -0
  33. package/dist/listgrid/components/api/Type.d.ts +23 -0
  34. package/dist/listgrid/components/api/Type.js +8 -0
  35. package/dist/listgrid/components/api/ViewApiSpecification.d.ts +2 -0
  36. package/dist/listgrid/components/api/ViewApiSpecification.js +32 -0
  37. package/dist/listgrid/components/fields/ApplyFullAddressFields.d.ts +45 -0
  38. package/dist/listgrid/components/fields/ApplyFullAddressFields.js +177 -0
  39. package/dist/listgrid/components/fields/BirthdayField.d.ts +39 -0
  40. package/dist/listgrid/components/fields/BirthdayField.js +205 -0
  41. package/dist/listgrid/components/fields/BooleanField.d.ts +38 -0
  42. package/dist/listgrid/components/fields/BooleanField.js +141 -0
  43. package/dist/listgrid/components/fields/CheckboxField.d.ts +23 -0
  44. package/dist/listgrid/components/fields/CheckboxField.js +33 -0
  45. package/dist/listgrid/components/fields/ColorField.d.ts +18 -0
  46. package/dist/listgrid/components/fields/ColorField.js +63 -0
  47. package/dist/listgrid/components/fields/ColorPresetField.d.ts +19 -0
  48. package/dist/listgrid/components/fields/ColorPresetField.js +56 -0
  49. package/dist/listgrid/components/fields/CustomOptionField.d.ts +45 -0
  50. package/dist/listgrid/components/fields/CustomOptionField.js +176 -0
  51. package/dist/listgrid/components/fields/DateField.d.ts +34 -0
  52. package/dist/listgrid/components/fields/DateField.js +116 -0
  53. package/dist/listgrid/components/fields/DatetimeField.d.ts +29 -0
  54. package/dist/listgrid/components/fields/DatetimeField.js +93 -0
  55. package/dist/listgrid/components/fields/EmailField.d.ts +37 -0
  56. package/dist/listgrid/components/fields/EmailField.js +144 -0
  57. package/dist/listgrid/components/fields/FileField.d.ts +36 -0
  58. package/dist/listgrid/components/fields/FileField.js +157 -0
  59. package/dist/listgrid/components/fields/HtmlField.d.ts +24 -0
  60. package/dist/listgrid/components/fields/HtmlField.js +70 -0
  61. package/dist/listgrid/components/fields/ImageField.d.ts +34 -0
  62. package/dist/listgrid/components/fields/ImageField.js +125 -0
  63. package/dist/listgrid/components/fields/InlineMapField.d.ts +40 -0
  64. package/dist/listgrid/components/fields/InlineMapField.js +85 -0
  65. package/dist/listgrid/components/fields/LinkField.d.ts +26 -0
  66. package/dist/listgrid/components/fields/LinkField.js +61 -0
  67. package/dist/listgrid/components/fields/ManyToOneField.d.ts +80 -0
  68. package/dist/listgrid/components/fields/ManyToOneField.js +416 -0
  69. package/dist/listgrid/components/fields/MappedJoinField.d.ts +16 -0
  70. package/dist/listgrid/components/fields/MappedJoinField.js +29 -0
  71. package/dist/listgrid/components/fields/MarkdownField.d.ts +20 -0
  72. package/dist/listgrid/components/fields/MarkdownField.js +58 -0
  73. package/dist/listgrid/components/fields/MessageViewField.d.ts +20 -0
  74. package/dist/listgrid/components/fields/MessageViewField.js +27 -0
  75. package/dist/listgrid/components/fields/MonthField.d.ts +25 -0
  76. package/dist/listgrid/components/fields/MonthField.js +68 -0
  77. package/dist/listgrid/components/fields/MultiSelectField.d.ts +59 -0
  78. package/dist/listgrid/components/fields/MultiSelectField.js +74 -0
  79. package/dist/listgrid/components/fields/MultipleAssetField.d.ts +31 -0
  80. package/dist/listgrid/components/fields/MultipleAssetField.js +200 -0
  81. package/dist/listgrid/components/fields/NumberField.d.ts +54 -0
  82. package/dist/listgrid/components/fields/NumberField.js +216 -0
  83. package/dist/listgrid/components/fields/PasswordField.d.ts +23 -0
  84. package/dist/listgrid/components/fields/PasswordField.js +70 -0
  85. package/dist/listgrid/components/fields/PhoneNumberField.d.ts +39 -0
  86. package/dist/listgrid/components/fields/PhoneNumberField.js +91 -0
  87. package/dist/listgrid/components/fields/Preset.d.ts +68 -0
  88. package/dist/listgrid/components/fields/Preset.js +306 -0
  89. package/dist/listgrid/components/fields/ProfileField.d.ts +14 -0
  90. package/dist/listgrid/components/fields/ProfileField.js +25 -0
  91. package/dist/listgrid/components/fields/QrField.d.ts +21 -0
  92. package/dist/listgrid/components/fields/QrField.js +31 -0
  93. package/dist/listgrid/components/fields/RuleField.d.ts +11 -0
  94. package/dist/listgrid/components/fields/RuleField.js +24 -0
  95. package/dist/listgrid/components/fields/SelectField.d.ts +223 -0
  96. package/dist/listgrid/components/fields/SelectField.js +379 -0
  97. package/dist/listgrid/components/fields/SelectFieldRenderer.d.ts +35 -0
  98. package/dist/listgrid/components/fields/SelectFieldRenderer.js +363 -0
  99. package/dist/listgrid/components/fields/StatusChangeReasonModal.d.ts +18 -0
  100. package/dist/listgrid/components/fields/StatusChangeReasonModal.js +25 -0
  101. package/dist/listgrid/components/fields/StringField.d.ts +34 -0
  102. package/dist/listgrid/components/fields/StringField.js +131 -0
  103. package/dist/listgrid/components/fields/TagField.d.ts +35 -0
  104. package/dist/listgrid/components/fields/TagField.js +75 -0
  105. package/dist/listgrid/components/fields/TelephoneNumberField.d.ts +35 -0
  106. package/dist/listgrid/components/fields/TelephoneNumberField.js +121 -0
  107. package/dist/listgrid/components/fields/TextareaField.d.ts +27 -0
  108. package/dist/listgrid/components/fields/TextareaField.js +47 -0
  109. package/dist/listgrid/components/fields/TimeField.d.ts +21 -0
  110. package/dist/listgrid/components/fields/TimeField.js +40 -0
  111. package/dist/listgrid/components/fields/XrefAvailableDateMappingField.d.ts +22 -0
  112. package/dist/listgrid/components/fields/XrefAvailableDateMappingField.js +39 -0
  113. package/dist/listgrid/components/fields/XrefMappingField.d.ts +30 -0
  114. package/dist/listgrid/components/fields/XrefMappingField.js +59 -0
  115. package/dist/listgrid/components/fields/XrefPreferMappingField.d.ts +30 -0
  116. package/dist/listgrid/components/fields/XrefPreferMappingField.js +53 -0
  117. package/dist/listgrid/components/fields/XrefPriceMappingField.d.ts +33 -0
  118. package/dist/listgrid/components/fields/XrefPriceMappingField.js +56 -0
  119. package/dist/listgrid/components/fields/YearField.d.ts +32 -0
  120. package/dist/listgrid/components/fields/YearField.js +99 -0
  121. package/dist/listgrid/components/fields/abstract/AbstractDateField.d.ts +33 -0
  122. package/dist/listgrid/components/fields/abstract/AbstractDateField.js +61 -0
  123. package/dist/listgrid/components/fields/abstract/AbstractManyToOneField.d.ts +97 -0
  124. package/dist/listgrid/components/fields/abstract/AbstractManyToOneField.js +50 -0
  125. package/dist/listgrid/components/fields/abstract/CheckButtonValidationField.d.ts +22 -0
  126. package/dist/listgrid/components/fields/abstract/CheckButtonValidationField.js +92 -0
  127. package/dist/listgrid/components/fields/abstract/FormField.d.ts +250 -0
  128. package/dist/listgrid/components/fields/abstract/FormField.js +606 -0
  129. package/dist/listgrid/components/fields/abstract/ListableFormField.d.ts +140 -0
  130. package/dist/listgrid/components/fields/abstract/ListableFormField.js +285 -0
  131. package/dist/listgrid/components/fields/abstract/OptionalField.d.ts +96 -0
  132. package/dist/listgrid/components/fields/abstract/OptionalField.js +310 -0
  133. package/dist/listgrid/components/fields/abstract/index.d.ts +6 -0
  134. package/dist/listgrid/components/fields/abstract/index.js +12 -0
  135. package/dist/listgrid/components/fields/address/AddressFieldView.d.ts +9 -0
  136. package/dist/listgrid/components/fields/address/AddressFieldView.js +92 -0
  137. package/dist/listgrid/components/fields/address/AddressMapField.d.ts +33 -0
  138. package/dist/listgrid/components/fields/address/AddressMapField.js +49 -0
  139. package/dist/listgrid/components/fields/address/KakaoMap.d.ts +10 -0
  140. package/dist/listgrid/components/fields/address/KakaoMap.js +50 -0
  141. package/dist/listgrid/components/fields/address/PostCodeSelector.d.ts +9 -0
  142. package/dist/listgrid/components/fields/address/PostCodeSelector.js +125 -0
  143. package/dist/listgrid/components/fields/contentasset/ContentAssetField.d.ts +61 -0
  144. package/dist/listgrid/components/fields/contentasset/ContentAssetField.js +80 -0
  145. package/dist/listgrid/components/fields/contentasset/ContentAssetItem.d.ts +17 -0
  146. package/dist/listgrid/components/fields/contentasset/ContentAssetItem.js +67 -0
  147. package/dist/listgrid/components/fields/contentasset/components/AddContentDialog.d.ts +11 -0
  148. package/dist/listgrid/components/fields/contentasset/components/AddContentDialog.js +68 -0
  149. package/dist/listgrid/components/fields/contentasset/components/ContentAssetItemUI.d.ts +30 -0
  150. package/dist/listgrid/components/fields/contentasset/components/ContentAssetItemUI.js +38 -0
  151. package/dist/listgrid/components/fields/contentasset/hooks/useContentAsset.d.ts +36 -0
  152. package/dist/listgrid/components/fields/contentasset/hooks/useContentAsset.js +188 -0
  153. package/dist/listgrid/components/fields/contentasset/index.d.ts +2 -0
  154. package/dist/listgrid/components/fields/contentasset/index.js +1 -0
  155. package/dist/listgrid/components/fields/contentasset/types.d.ts +50 -0
  156. package/dist/listgrid/components/fields/contentasset/types.js +48 -0
  157. package/dist/listgrid/components/fields/filter/DatetimeFilter.d.ts +7 -0
  158. package/dist/listgrid/components/fields/filter/DatetimeFilter.js +46 -0
  159. package/dist/listgrid/components/fields/filter/NumberFilter.d.ts +7 -0
  160. package/dist/listgrid/components/fields/filter/NumberFilter.js +74 -0
  161. package/dist/listgrid/components/fields/rule/RuleBasedFieldView.d.ts +15 -0
  162. package/dist/listgrid/components/fields/rule/RuleBasedFieldView.js +351 -0
  163. package/dist/listgrid/components/fields/rule/RuleBasedSelector.d.ts +13 -0
  164. package/dist/listgrid/components/fields/rule/RuleBasedSelector.js +75 -0
  165. package/dist/listgrid/components/fields/rule/RuleCondition.d.ts +14 -0
  166. package/dist/listgrid/components/fields/rule/RuleCondition.js +173 -0
  167. package/dist/listgrid/components/fields/rule/RuleFieldRenderer.d.ts +7 -0
  168. package/dist/listgrid/components/fields/rule/RuleFieldRenderer.js +21 -0
  169. package/dist/listgrid/components/fields/rule/RuleFieldView.d.ts +7 -0
  170. package/dist/listgrid/components/fields/rule/RuleFieldView.js +28 -0
  171. package/dist/listgrid/components/fields/rule/Type.d.ts +54 -0
  172. package/dist/listgrid/components/fields/rule/Type.js +72 -0
  173. package/dist/listgrid/components/fields/view/CardManyToOneView.d.ts +93 -0
  174. package/dist/listgrid/components/fields/view/CardManyToOneView.js +409 -0
  175. package/dist/listgrid/components/fields/view/CopyableTextView.d.ts +11 -0
  176. package/dist/listgrid/components/fields/view/CopyableTextView.js +44 -0
  177. package/dist/listgrid/components/fields/view/DynamicSelectFieldView.d.ts +28 -0
  178. package/dist/listgrid/components/fields/view/DynamicSelectFieldView.js +119 -0
  179. package/dist/listgrid/components/fields/view/LinkFieldView.d.ts +14 -0
  180. package/dist/listgrid/components/fields/view/LinkFieldView.js +41 -0
  181. package/dist/listgrid/components/fields/view/ManyToOneListView.d.ts +8 -0
  182. package/dist/listgrid/components/fields/view/ManyToOneListView.js +25 -0
  183. package/dist/listgrid/components/fields/view/ManyToOneMultiFilterView.d.ts +12 -0
  184. package/dist/listgrid/components/fields/view/ManyToOneMultiFilterView.js +142 -0
  185. package/dist/listgrid/components/fields/view/ManyToOneView.d.ts +8 -0
  186. package/dist/listgrid/components/fields/view/ManyToOneView.js +322 -0
  187. package/dist/listgrid/components/fields/view/MultipleAssetUpload.d.ts +7 -0
  188. package/dist/listgrid/components/fields/view/MultipleAssetUpload.js +47 -0
  189. package/dist/listgrid/components/fields/view/PhoneNumberFieldView.d.ts +19 -0
  190. package/dist/listgrid/components/fields/view/PhoneNumberFieldView.js +82 -0
  191. package/dist/listgrid/components/fields/view/PhoneNumberListView.d.ts +9 -0
  192. package/dist/listgrid/components/fields/view/PhoneNumberListView.js +49 -0
  193. package/dist/listgrid/components/fields/view/SelectBoxManyToOneView.d.ts +47 -0
  194. package/dist/listgrid/components/fields/view/SelectBoxManyToOneView.js +286 -0
  195. package/dist/listgrid/components/fields/view/SmsModal.d.ts +6 -0
  196. package/dist/listgrid/components/fields/view/SmsModal.js +124 -0
  197. package/dist/listgrid/components/fields/view/TreeSelectView.d.ts +11 -0
  198. package/dist/listgrid/components/fields/view/TreeSelectView.js +118 -0
  199. package/dist/listgrid/components/fields/view/XrefAvailableDateMappingView.d.ts +19 -0
  200. package/dist/listgrid/components/fields/view/XrefAvailableDateMappingView.js +305 -0
  201. package/dist/listgrid/components/fields/view/XrefMappingView.d.ts +16 -0
  202. package/dist/listgrid/components/fields/view/XrefMappingView.js +173 -0
  203. package/dist/listgrid/components/fields/view/XrefPiceMappingView.d.ts +19 -0
  204. package/dist/listgrid/components/fields/view/XrefPiceMappingView.js +319 -0
  205. package/dist/listgrid/components/fields/view/XrefPreferMappingView.d.ts +19 -0
  206. package/dist/listgrid/components/fields/view/XrefPreferMappingView.js +261 -0
  207. package/dist/listgrid/components/fields/view/XrefPriorityMappingView.d.ts +19 -0
  208. package/dist/listgrid/components/fields/view/XrefPriorityMappingView.js +180 -0
  209. package/dist/listgrid/components/form/FieldRenderer.d.ts +23 -0
  210. package/dist/listgrid/components/form/FieldRenderer.js +292 -0
  211. package/dist/listgrid/components/form/SubCollectionRenderer.d.ts +22 -0
  212. package/dist/listgrid/components/form/SubCollectionRenderer.js +46 -0
  213. package/dist/listgrid/components/form/ViewEntityForm.d.ts +14 -0
  214. package/dist/listgrid/components/form/ViewEntityForm.js +124 -0
  215. package/dist/listgrid/components/form/ViewFieldGroup.d.ts +27 -0
  216. package/dist/listgrid/components/form/ViewFieldGroup.js +164 -0
  217. package/dist/listgrid/components/form/ViewTab.d.ts +24 -0
  218. package/dist/listgrid/components/form/ViewTab.js +68 -0
  219. package/dist/listgrid/components/form/ViewTabPanel.d.ts +14 -0
  220. package/dist/listgrid/components/form/ViewTabPanel.js +32 -0
  221. package/dist/listgrid/components/form/context/EntityFormThemeContext.d.ts +52 -0
  222. package/dist/listgrid/components/form/context/EntityFormThemeContext.js +129 -0
  223. package/dist/listgrid/components/form/context/index.d.ts +1 -0
  224. package/dist/listgrid/components/form/context/index.js +1 -0
  225. package/dist/listgrid/components/form/hooks/useAlertManager.d.ts +12 -0
  226. package/dist/listgrid/components/form/hooks/useAlertManager.js +103 -0
  227. package/dist/listgrid/components/form/hooks/useEntityFormAutoSave.d.ts +23 -0
  228. package/dist/listgrid/components/form/hooks/useEntityFormAutoSave.js +145 -0
  229. package/dist/listgrid/components/form/hooks/useEntityFormInitializer.d.ts +24 -0
  230. package/dist/listgrid/components/form/hooks/useEntityFormInitializer.js +109 -0
  231. package/dist/listgrid/components/form/hooks/useEntityFormLogic.d.ts +63 -0
  232. package/dist/listgrid/components/form/hooks/useEntityFormLogic.js +513 -0
  233. package/dist/listgrid/components/form/hooks/useEntityFormSave.d.ts +28 -0
  234. package/dist/listgrid/components/form/hooks/useEntityFormSave.js +89 -0
  235. package/dist/listgrid/components/form/hooks/useEntityFormTitle.d.ts +12 -0
  236. package/dist/listgrid/components/form/hooks/useEntityFormTitle.js +53 -0
  237. package/dist/listgrid/components/form/themes/defaultTheme.d.ts +11 -0
  238. package/dist/listgrid/components/form/themes/defaultTheme.js +129 -0
  239. package/dist/listgrid/components/form/themes/index.d.ts +1 -0
  240. package/dist/listgrid/components/form/themes/index.js +1 -0
  241. package/dist/listgrid/components/form/types/ViewEntityForm.types.d.ts +169 -0
  242. package/dist/listgrid/components/form/types/ViewEntityForm.types.js +1 -0
  243. package/dist/listgrid/components/form/types/ViewEntityFormAlerts.types.d.ts +26 -0
  244. package/dist/listgrid/components/form/types/ViewEntityFormAlerts.types.js +1 -0
  245. package/dist/listgrid/components/form/types/ViewEntityFormButtons.types.d.ts +49 -0
  246. package/dist/listgrid/components/form/types/ViewEntityFormButtons.types.js +1 -0
  247. package/dist/listgrid/components/form/types/ViewEntityFormTheme.types.d.ts +518 -0
  248. package/dist/listgrid/components/form/types/ViewEntityFormTheme.types.js +1 -0
  249. package/dist/listgrid/components/form/ui/AlertItem.d.ts +7 -0
  250. package/dist/listgrid/components/form/ui/AlertItem.js +18 -0
  251. package/dist/listgrid/components/form/ui/CreateStepButtons.d.ts +25 -0
  252. package/dist/listgrid/components/form/ui/CreateStepButtons.js +18 -0
  253. package/dist/listgrid/components/form/ui/CreateStepView.d.ts +39 -0
  254. package/dist/listgrid/components/form/ui/CreateStepView.js +50 -0
  255. package/dist/listgrid/components/form/ui/ViewEntityError.d.ts +13 -0
  256. package/dist/listgrid/components/form/ui/ViewEntityError.js +90 -0
  257. package/dist/listgrid/components/form/ui/ViewEntityFormAlerts.d.ts +3 -0
  258. package/dist/listgrid/components/form/ui/ViewEntityFormAlerts.js +24 -0
  259. package/dist/listgrid/components/form/ui/ViewEntityFormButtons.d.ts +24 -0
  260. package/dist/listgrid/components/form/ui/ViewEntityFormButtons.js +208 -0
  261. package/dist/listgrid/components/form/ui/ViewEntityFormErrors.d.ts +25 -0
  262. package/dist/listgrid/components/form/ui/ViewEntityFormErrors.js +9 -0
  263. package/dist/listgrid/components/form/ui/ViewEntityFormFields.d.ts +38 -0
  264. package/dist/listgrid/components/form/ui/ViewEntityFormFields.js +25 -0
  265. package/dist/listgrid/components/form/ui/ViewEntityFormSkeleton.d.ts +16 -0
  266. package/dist/listgrid/components/form/ui/ViewEntityFormSkeleton.js +79 -0
  267. package/dist/listgrid/components/form/ui/ViewEntityFormTitle.d.ts +15 -0
  268. package/dist/listgrid/components/form/ui/ViewEntityFormTitle.js +21 -0
  269. package/dist/listgrid/components/form/ui/ViewFieldError.d.ts +5 -0
  270. package/dist/listgrid/components/form/ui/ViewFieldError.js +12 -0
  271. package/dist/listgrid/components/form/ui/ViewHelpIcon.d.ts +5 -0
  272. package/dist/listgrid/components/form/ui/ViewHelpIcon.js +13 -0
  273. package/dist/listgrid/components/form/ui/ViewHelpText.d.ts +5 -0
  274. package/dist/listgrid/components/form/ui/ViewHelpText.js +10 -0
  275. package/dist/listgrid/components/form/ui/buttons/ClosePopupButton.d.ts +8 -0
  276. package/dist/listgrid/components/form/ui/buttons/ClosePopupButton.js +32 -0
  277. package/dist/listgrid/components/form/ui/buttons/DeleteButton.d.ts +2 -0
  278. package/dist/listgrid/components/form/ui/buttons/DeleteButton.js +101 -0
  279. package/dist/listgrid/components/form/ui/buttons/ListButton.d.ts +2 -0
  280. package/dist/listgrid/components/form/ui/buttons/ListButton.js +55 -0
  281. package/dist/listgrid/components/form/ui/buttons/SaveButton.d.ts +2 -0
  282. package/dist/listgrid/components/form/ui/buttons/SaveButton.js +55 -0
  283. package/dist/listgrid/components/helper/FieldRendererHelper.d.ts +23 -0
  284. package/dist/listgrid/components/helper/FieldRendererHelper.js +27 -0
  285. package/dist/listgrid/components/helper/ShowNotifications.d.ts +13 -0
  286. package/dist/listgrid/components/helper/ShowNotifications.js +58 -0
  287. package/dist/listgrid/components/list/AdvancedSearchForm.d.ts +17 -0
  288. package/dist/listgrid/components/list/AdvancedSearchForm.js +113 -0
  289. package/dist/listgrid/components/list/AdvancedSearchFormV2.d.ts +19 -0
  290. package/dist/listgrid/components/list/AdvancedSearchFormV2.js +347 -0
  291. package/dist/listgrid/components/list/ListGridHeader.d.ts +2 -0
  292. package/dist/listgrid/components/list/ListGridHeader.js +21 -0
  293. package/dist/listgrid/components/list/QuickSearchBar.d.ts +22 -0
  294. package/dist/listgrid/components/list/QuickSearchBar.js +17 -0
  295. package/dist/listgrid/components/list/RowItem.d.ts +2 -0
  296. package/dist/listgrid/components/list/RowItem.js +70 -0
  297. package/dist/listgrid/components/list/SubCollectionButtons.d.ts +2 -0
  298. package/dist/listgrid/components/list/SubCollectionButtons.js +36 -0
  299. package/dist/listgrid/components/list/ViewFieldSelector.d.ts +10 -0
  300. package/dist/listgrid/components/list/ViewFieldSelector.js +48 -0
  301. package/dist/listgrid/components/list/ViewListGrid.d.ts +2 -0
  302. package/dist/listgrid/components/list/ViewListGrid.js +359 -0
  303. package/dist/listgrid/components/list/context/EntityFormScopeContext.d.ts +39 -0
  304. package/dist/listgrid/components/list/context/EntityFormScopeContext.js +75 -0
  305. package/dist/listgrid/components/list/context/ListGridThemeContext.d.ts +70 -0
  306. package/dist/listgrid/components/list/context/ListGridThemeContext.js +157 -0
  307. package/dist/listgrid/components/list/context/index.d.ts +2 -0
  308. package/dist/listgrid/components/list/context/index.js +1 -0
  309. package/dist/listgrid/components/list/hooks/searchFormUrlSync.d.ts +42 -0
  310. package/dist/listgrid/components/list/hooks/searchFormUrlSync.js +212 -0
  311. package/dist/listgrid/components/list/hooks/urlStateParsers.d.ts +63 -0
  312. package/dist/listgrid/components/list/hooks/urlStateParsers.js +241 -0
  313. package/dist/listgrid/components/list/hooks/useCardSubCollectionData.d.ts +34 -0
  314. package/dist/listgrid/components/list/hooks/useCardSubCollectionData.js +181 -0
  315. package/dist/listgrid/components/list/hooks/useListGridHeader.d.ts +6 -0
  316. package/dist/listgrid/components/list/hooks/useListGridHeader.js +92 -0
  317. package/dist/listgrid/components/list/hooks/useListGridLogic.d.ts +2 -0
  318. package/dist/listgrid/components/list/hooks/useListGridLogic.js +625 -0
  319. package/dist/listgrid/components/list/hooks/useListGridUrlState.d.ts +45 -0
  320. package/dist/listgrid/components/list/hooks/useListGridUrlState.js +131 -0
  321. package/dist/listgrid/components/list/hooks/useQuickSearchBar.d.ts +22 -0
  322. package/dist/listgrid/components/list/hooks/useQuickSearchBar.js +104 -0
  323. package/dist/listgrid/components/list/hooks/useSubCollectionExpansion.d.ts +21 -0
  324. package/dist/listgrid/components/list/hooks/useSubCollectionExpansion.js +62 -0
  325. package/dist/listgrid/components/list/themes/defaultListGridTheme.d.ts +14 -0
  326. package/dist/listgrid/components/list/themes/defaultListGridTheme.js +169 -0
  327. package/dist/listgrid/components/list/themes/index.d.ts +4 -0
  328. package/dist/listgrid/components/list/themes/index.js +4 -0
  329. package/dist/listgrid/components/list/themes/variants/mainTheme.d.ts +8 -0
  330. package/dist/listgrid/components/list/themes/variants/mainTheme.js +37 -0
  331. package/dist/listgrid/components/list/themes/variants/modalTheme.d.ts +8 -0
  332. package/dist/listgrid/components/list/themes/variants/modalTheme.js +47 -0
  333. package/dist/listgrid/components/list/themes/variants/subCollectionTheme.d.ts +8 -0
  334. package/dist/listgrid/components/list/themes/variants/subCollectionTheme.js +101 -0
  335. package/dist/listgrid/components/list/types/ListGridHeader.types.d.ts +35 -0
  336. package/dist/listgrid/components/list/types/ListGridHeader.types.js +3 -0
  337. package/dist/listgrid/components/list/types/RowItem.types.d.ts +57 -0
  338. package/dist/listgrid/components/list/types/RowItem.types.js +1 -0
  339. package/dist/listgrid/components/list/types/SubCollectionButtons.type.d.ts +29 -0
  340. package/dist/listgrid/components/list/types/SubCollectionButtons.type.js +1 -0
  341. package/dist/listgrid/components/list/types/ViewListGrid.types.d.ts +152 -0
  342. package/dist/listgrid/components/list/types/ViewListGrid.types.js +2 -0
  343. package/dist/listgrid/components/list/types/ViewListGridTheme.types.d.ts +374 -0
  344. package/dist/listgrid/components/list/types/ViewListGridTheme.types.js +1 -0
  345. package/dist/listgrid/components/list/ui/CardFieldRenderer.d.ts +31 -0
  346. package/dist/listgrid/components/list/ui/CardFieldRenderer.js +71 -0
  347. package/dist/listgrid/components/list/ui/CardFieldSection.d.ts +27 -0
  348. package/dist/listgrid/components/list/ui/CardFieldSection.js +108 -0
  349. package/dist/listgrid/components/list/ui/CardItem.d.ts +28 -0
  350. package/dist/listgrid/components/list/ui/CardItem.js +376 -0
  351. package/dist/listgrid/components/list/ui/CardSubCollectionModal.d.ts +38 -0
  352. package/dist/listgrid/components/list/ui/CardSubCollectionModal.js +80 -0
  353. package/dist/listgrid/components/list/ui/CardSubCollectionView.d.ts +44 -0
  354. package/dist/listgrid/components/list/ui/CardSubCollectionView.js +238 -0
  355. package/dist/listgrid/components/list/ui/DataTransferModal.d.ts +12 -0
  356. package/dist/listgrid/components/list/ui/DataTransferModal.js +10 -0
  357. package/dist/listgrid/components/list/ui/EntireChecker.d.ts +11 -0
  358. package/dist/listgrid/components/list/ui/EntireChecker.js +46 -0
  359. package/dist/listgrid/components/list/ui/FieldSelector.d.ts +11 -0
  360. package/dist/listgrid/components/list/ui/FieldSelector.js +40 -0
  361. package/dist/listgrid/components/list/ui/FilterButton.d.ts +7 -0
  362. package/dist/listgrid/components/list/ui/FilterButton.js +5 -0
  363. package/dist/listgrid/components/list/ui/FilterDropdown.d.ts +15 -0
  364. package/dist/listgrid/components/list/ui/FilterDropdown.js +106 -0
  365. package/dist/listgrid/components/list/ui/FilterView.d.ts +12 -0
  366. package/dist/listgrid/components/list/ui/FilterView.js +22 -0
  367. package/dist/listgrid/components/list/ui/HeaderActionButtons.d.ts +10 -0
  368. package/dist/listgrid/components/list/ui/HeaderActionButtons.js +39 -0
  369. package/dist/listgrid/components/list/ui/HeaderField.d.ts +19 -0
  370. package/dist/listgrid/components/list/ui/HeaderField.js +32 -0
  371. package/dist/listgrid/components/list/ui/HeaderFieldFilter.d.ts +14 -0
  372. package/dist/listgrid/components/list/ui/HeaderFieldFilter.js +166 -0
  373. package/dist/listgrid/components/list/ui/HeaderTitle.d.ts +4 -0
  374. package/dist/listgrid/components/list/ui/HeaderTitle.js +13 -0
  375. package/dist/listgrid/components/list/ui/InlineSubCollectionView.d.ts +30 -0
  376. package/dist/listgrid/components/list/ui/InlineSubCollectionView.js +260 -0
  377. package/dist/listgrid/components/list/ui/MemoizedFilterField.d.ts +14 -0
  378. package/dist/listgrid/components/list/ui/MemoizedFilterField.js +67 -0
  379. package/dist/listgrid/components/list/ui/QuickSearchInput.d.ts +9 -0
  380. package/dist/listgrid/components/list/ui/QuickSearchInput.js +17 -0
  381. package/dist/listgrid/components/list/ui/SearchBarActions.d.ts +19 -0
  382. package/dist/listgrid/components/list/ui/SearchBarActions.js +39 -0
  383. package/dist/listgrid/components/list/ui/SortField.d.ts +8 -0
  384. package/dist/listgrid/components/list/ui/SortField.js +42 -0
  385. package/dist/listgrid/components/list/ui/SubCollectionInlineView.d.ts +23 -0
  386. package/dist/listgrid/components/list/ui/SubCollectionInlineView.js +47 -0
  387. package/dist/listgrid/components/list/ui/SubCollectionModal.d.ts +15 -0
  388. package/dist/listgrid/components/list/ui/SubCollectionModal.js +34 -0
  389. package/dist/listgrid/components/list/ui/SubCollectionViewModal.d.ts +13 -0
  390. package/dist/listgrid/components/list/ui/SubCollectionViewModal.js +33 -0
  391. package/dist/listgrid/components/list/ui/SyncTopScrollbar.d.ts +18 -0
  392. package/dist/listgrid/components/list/ui/SyncTopScrollbar.js +91 -0
  393. package/dist/listgrid/components/list/ui/TableSubCollectionView.d.ts +25 -0
  394. package/dist/listgrid/components/list/ui/TableSubCollectionView.js +213 -0
  395. package/dist/listgrid/components/list/ui/ViewColumn.d.ts +2 -0
  396. package/dist/listgrid/components/list/ui/ViewColumn.js +56 -0
  397. package/dist/listgrid/components/list/ui/ViewListGridSkeleton.d.ts +20 -0
  398. package/dist/listgrid/components/list/ui/ViewListGridSkeleton.js +82 -0
  399. package/dist/listgrid/components/list/ui/ViewRows.d.ts +15 -0
  400. package/dist/listgrid/components/list/ui/ViewRows.js +283 -0
  401. package/dist/listgrid/components/list/ui/buttons/CacheClearButton.d.ts +9 -0
  402. package/dist/listgrid/components/list/ui/buttons/CacheClearButton.js +35 -0
  403. package/dist/listgrid/components/list/ui/buttons/CreateButton.d.ts +13 -0
  404. package/dist/listgrid/components/list/ui/buttons/CreateButton.js +13 -0
  405. package/dist/listgrid/components/list/ui/buttons/PriorityButton.d.ts +11 -0
  406. package/dist/listgrid/components/list/ui/buttons/PriorityButton.js +49 -0
  407. package/dist/listgrid/components/list/ui/headerFilterStore.d.ts +8 -0
  408. package/dist/listgrid/components/list/ui/headerFilterStore.js +13 -0
  409. package/dist/listgrid/components/list/utils/mappedByFieldFilter.d.ts +21 -0
  410. package/dist/listgrid/components/list/utils/mappedByFieldFilter.js +54 -0
  411. package/dist/listgrid/components/list/utils/performanceLogger.d.ts +48 -0
  412. package/dist/listgrid/components/list/utils/performanceLogger.js +67 -0
  413. package/dist/listgrid/components/revision/RevisionField.d.ts +13 -0
  414. package/dist/listgrid/components/revision/RevisionField.js +194 -0
  415. package/dist/listgrid/config/AdvancedSearchOpenCache.d.ts +3 -0
  416. package/dist/listgrid/config/AdvancedSearchOpenCache.js +48 -0
  417. package/dist/listgrid/config/CardSubCollectionField.d.ts +133 -0
  418. package/dist/listgrid/config/CardSubCollectionField.js +164 -0
  419. package/dist/listgrid/config/CommonType.d.ts +4 -0
  420. package/dist/listgrid/config/CommonType.js +15 -0
  421. package/dist/listgrid/config/Config.d.ts +251 -0
  422. package/dist/listgrid/config/Config.js +299 -0
  423. package/dist/listgrid/config/EntityField.d.ts +148 -0
  424. package/dist/listgrid/config/EntityField.js +1 -0
  425. package/dist/listgrid/config/EntityFieldGroup.d.ts +37 -0
  426. package/dist/listgrid/config/EntityFieldGroup.js +55 -0
  427. package/dist/listgrid/config/EntityForm.d.ts +101 -0
  428. package/dist/listgrid/config/EntityForm.js +859 -0
  429. package/dist/listgrid/config/EntityFormButton.d.ts +56 -0
  430. package/dist/listgrid/config/EntityFormButton.js +42 -0
  431. package/dist/listgrid/config/EntityFormMethod.d.ts +32 -0
  432. package/dist/listgrid/config/EntityFormMethod.js +152 -0
  433. package/dist/listgrid/config/EntityFormTypes.d.ts +62 -0
  434. package/dist/listgrid/config/EntityFormTypes.js +1 -0
  435. package/dist/listgrid/config/EntityItem.d.ts +86 -0
  436. package/dist/listgrid/config/EntityItem.js +1 -0
  437. package/dist/listgrid/config/EntityTab.d.ts +26 -0
  438. package/dist/listgrid/config/EntityTab.js +68 -0
  439. package/dist/listgrid/config/InlineSubCollectionField.d.ts +184 -0
  440. package/dist/listgrid/config/InlineSubCollectionField.js +194 -0
  441. package/dist/listgrid/config/ListGrid.d.ts +56 -0
  442. package/dist/listgrid/config/ListGrid.js +183 -0
  443. package/dist/listgrid/config/ListGridViewFieldCache.d.ts +3 -0
  444. package/dist/listgrid/config/ListGridViewFieldCache.js +53 -0
  445. package/dist/listgrid/config/OnChangeEntityForm.d.ts +43 -0
  446. package/dist/listgrid/config/OnChangeEntityForm.js +266 -0
  447. package/dist/listgrid/config/RuntimeConfig.d.ts +18 -0
  448. package/dist/listgrid/config/RuntimeConfig.js +22 -0
  449. package/dist/listgrid/config/SubCollectionField.d.ts +119 -0
  450. package/dist/listgrid/config/SubCollectionField.js +241 -0
  451. package/dist/listgrid/config/TableSubCollectionField.d.ts +66 -0
  452. package/dist/listgrid/config/TableSubCollectionField.js +132 -0
  453. package/dist/listgrid/config/form/EntityFormActions.d.ts +69 -0
  454. package/dist/listgrid/config/form/EntityFormActions.js +459 -0
  455. package/dist/listgrid/config/form/EntityFormBase.d.ts +204 -0
  456. package/dist/listgrid/config/form/EntityFormBase.js +526 -0
  457. package/dist/listgrid/config/form/EntityFormData.d.ts +32 -0
  458. package/dist/listgrid/config/form/EntityFormData.js +184 -0
  459. package/dist/listgrid/config/form/EntityFormExtensions.d.ts +37 -0
  460. package/dist/listgrid/config/form/EntityFormExtensions.js +105 -0
  461. package/dist/listgrid/config/form/EntityFormValidation.d.ts +28 -0
  462. package/dist/listgrid/config/form/EntityFormValidation.js +128 -0
  463. package/dist/listgrid/extensions/EntityFormExtension.types.d.ts +52 -0
  464. package/dist/listgrid/extensions/EntityFormExtension.types.js +19 -0
  465. package/dist/listgrid/extensions/FieldExtensions.d.ts +5 -0
  466. package/dist/listgrid/extensions/FieldExtensions.js +21 -0
  467. package/dist/listgrid/form/SearchForm.d.ts +153 -0
  468. package/dist/listgrid/form/SearchForm.js +689 -0
  469. package/dist/listgrid/form/TagsInput/types.d.ts +133 -0
  470. package/dist/listgrid/form/TagsInput/types.js +1 -0
  471. package/dist/listgrid/form/Type.d.ts +50 -0
  472. package/dist/listgrid/form/Type.js +95 -0
  473. package/dist/listgrid/index.d.ts +205 -0
  474. package/dist/listgrid/index.js +244 -0
  475. package/dist/listgrid/loading/index.d.ts +6 -0
  476. package/dist/listgrid/loading/index.js +17 -0
  477. package/dist/listgrid/menu/MenuPermissionChecker.d.ts +15 -0
  478. package/dist/listgrid/menu/MenuPermissionChecker.js +15 -0
  479. package/dist/listgrid/menu/index.d.ts +1 -0
  480. package/dist/listgrid/menu/index.js +1 -0
  481. package/dist/listgrid/message/MessageProvider.d.ts +19 -0
  482. package/dist/listgrid/message/MessageProvider.js +62 -0
  483. package/dist/listgrid/message/index.d.ts +1 -0
  484. package/dist/listgrid/message/index.js +1 -0
  485. package/dist/listgrid/misc/index.d.ts +64 -0
  486. package/dist/listgrid/misc/index.js +478 -0
  487. package/dist/listgrid/router/RouterProvider.d.ts +12 -0
  488. package/dist/listgrid/router/RouterProvider.js +34 -0
  489. package/dist/listgrid/router/index.d.ts +3 -0
  490. package/dist/listgrid/router/index.js +1 -0
  491. package/dist/listgrid/router/types.d.ts +34 -0
  492. package/dist/listgrid/router/types.js +6 -0
  493. package/dist/listgrid/store/index.d.ts +24 -0
  494. package/dist/listgrid/store/index.js +40 -0
  495. package/dist/listgrid/transfer/DataExportProcessor.d.ts +18 -0
  496. package/dist/listgrid/transfer/DataExportProcessor.js +102 -0
  497. package/dist/listgrid/transfer/DataExportService.d.ts +37 -0
  498. package/dist/listgrid/transfer/DataExportService.js +225 -0
  499. package/dist/listgrid/transfer/DataExporter.d.ts +10 -0
  500. package/dist/listgrid/transfer/DataExporter.js +85 -0
  501. package/dist/listgrid/transfer/DataImportDescription.d.ts +8 -0
  502. package/dist/listgrid/transfer/DataImportDescription.js +18 -0
  503. package/dist/listgrid/transfer/DataImportProcessor.d.ts +24 -0
  504. package/dist/listgrid/transfer/DataImportProcessor.js +59 -0
  505. package/dist/listgrid/transfer/DataImportResultView.d.ts +13 -0
  506. package/dist/listgrid/transfer/DataImportResultView.js +64 -0
  507. package/dist/listgrid/transfer/DataImportSample.d.ts +10 -0
  508. package/dist/listgrid/transfer/DataImportSample.js +105 -0
  509. package/dist/listgrid/transfer/DataImporter.d.ts +8 -0
  510. package/dist/listgrid/transfer/DataImporter.js +335 -0
  511. package/dist/listgrid/transfer/DynamicDataImporter.d.ts +4 -0
  512. package/dist/listgrid/transfer/DynamicDataImporter.js +13 -0
  513. package/dist/listgrid/transfer/ExcelPasswordField.d.ts +9 -0
  514. package/dist/listgrid/transfer/ExcelPasswordField.js +23 -0
  515. package/dist/listgrid/transfer/Provider/ExcelProvider.d.ts +24 -0
  516. package/dist/listgrid/transfer/Provider/ExcelProvider.js +194 -0
  517. package/dist/listgrid/transfer/Type.d.ts +176 -0
  518. package/dist/listgrid/transfer/Type.js +568 -0
  519. package/dist/listgrid/ui/GlobalModalManager.d.ts +22 -0
  520. package/dist/listgrid/ui/GlobalModalManager.js +65 -0
  521. package/dist/listgrid/ui/UIProvider.d.ts +151 -0
  522. package/dist/listgrid/ui/UIProvider.js +292 -0
  523. package/dist/listgrid/ui/index.d.ts +2 -0
  524. package/dist/listgrid/ui/index.js +2 -0
  525. package/dist/listgrid/urlState/UrlStateProvider.d.ts +8 -0
  526. package/dist/listgrid/urlState/UrlStateProvider.js +20 -0
  527. package/dist/listgrid/urlState/index.d.ts +4 -0
  528. package/dist/listgrid/urlState/index.js +2 -0
  529. package/dist/listgrid/urlState/types.d.ts +21 -0
  530. package/dist/listgrid/urlState/types.js +14 -0
  531. package/dist/listgrid/utils/BooleanUtil.d.ts +1 -0
  532. package/dist/listgrid/utils/BooleanUtil.js +9 -0
  533. package/dist/listgrid/utils/CompareUtil.d.ts +7 -0
  534. package/dist/listgrid/utils/CompareUtil.js +87 -0
  535. package/dist/listgrid/utils/PhoneUtil.d.ts +19 -0
  536. package/dist/listgrid/utils/PhoneUtil.js +38 -0
  537. package/dist/listgrid/utils/RequestUtil.d.ts +6 -0
  538. package/dist/listgrid/utils/RequestUtil.js +6 -0
  539. package/dist/listgrid/utils/StringUtil.d.ts +32 -0
  540. package/dist/listgrid/utils/StringUtil.js +316 -0
  541. package/dist/listgrid/utils/classNames.d.ts +21 -0
  542. package/dist/listgrid/utils/classNames.js +29 -0
  543. package/dist/listgrid/utils/cn.d.ts +12 -0
  544. package/dist/listgrid/utils/cn.js +15 -0
  545. package/dist/listgrid/utils/hash.d.ts +1 -0
  546. package/dist/listgrid/utils/hash.js +15 -0
  547. package/dist/listgrid/utils/i18n.d.ts +16 -0
  548. package/dist/listgrid/utils/i18n.js +31 -0
  549. package/dist/listgrid/utils/index.d.ts +10 -0
  550. package/dist/listgrid/utils/index.js +17 -0
  551. package/dist/listgrid/utils/jsonUtils.d.ts +4 -0
  552. package/dist/listgrid/utils/jsonUtils.js +77 -0
  553. package/dist/listgrid/utils/lazy.d.ts +10 -0
  554. package/dist/listgrid/utils/lazy.js +13 -0
  555. package/dist/listgrid/utils/simpleCrypt.d.ts +4 -0
  556. package/dist/listgrid/utils/simpleCrypt.js +79 -0
  557. package/dist/listgrid/validations/CustomValidation.d.ts +8 -0
  558. package/dist/listgrid/validations/CustomValidation.js +10 -0
  559. package/dist/listgrid/validations/EmailValidation.d.ts +4 -0
  560. package/dist/listgrid/validations/EmailValidation.js +7 -0
  561. package/dist/listgrid/validations/IpAddressValidation.d.ts +26 -0
  562. package/dist/listgrid/validations/IpAddressValidation.js +57 -0
  563. package/dist/listgrid/validations/MinMaxNumberValidation.d.ts +14 -0
  564. package/dist/listgrid/validations/MinMaxNumberValidation.js +28 -0
  565. package/dist/listgrid/validations/PasswordValidation.d.ts +4 -0
  566. package/dist/listgrid/validations/PasswordValidation.js +7 -0
  567. package/dist/listgrid/validations/PhoneNumberValidation.d.ts +12 -0
  568. package/dist/listgrid/validations/PhoneNumberValidation.js +24 -0
  569. package/dist/listgrid/validations/RegexFormularValidation.d.ts +7 -0
  570. package/dist/listgrid/validations/RegexFormularValidation.js +28 -0
  571. package/dist/listgrid/validations/RegexValidation.d.ts +8 -0
  572. package/dist/listgrid/validations/RegexValidation.js +17 -0
  573. package/dist/listgrid/validations/RequiredValidation.d.ts +7 -0
  574. package/dist/listgrid/validations/RequiredValidation.js +12 -0
  575. package/dist/listgrid/validations/StringValidation.d.ts +17 -0
  576. package/dist/listgrid/validations/StringValidation.js +33 -0
  577. package/dist/listgrid/validations/TelephoneNumberValidation.d.ts +12 -0
  578. package/dist/listgrid/validations/TelephoneNumberValidation.js +24 -0
  579. package/dist/listgrid/validations/Validation.d.ts +63 -0
  580. package/dist/listgrid/validations/Validation.js +72 -0
  581. package/dist/listgrid/view/ViewEntityFormWrapper.d.ts +16 -0
  582. package/dist/listgrid/view/ViewEntityFormWrapper.js +98 -0
  583. package/dist/listgrid/view/ViewListGridWrapper.d.ts +10 -0
  584. package/dist/listgrid/view/ViewListGridWrapper.js +96 -0
  585. package/dist/styles/base.css +116 -0
  586. package/dist/styles/components.css +1404 -0
  587. package/dist/styles/layouts.css +3206 -0
  588. package/dist/styles/primitives.css +1542 -0
  589. package/dist/styles/tokens.css +218 -0
  590. package/dist/styles.css +6486 -0
  591. package/docs/PRIMITIVES.md +271 -0
  592. package/package.json +201 -0
@@ -0,0 +1,513 @@
1
+ 'use client';
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { usePathname, useRouter } from '../../../router';
4
+ import { isTrue } from '../../../utils/BooleanUtil';
5
+ import { useModalManagerStore } from '../../../store';
6
+ import { useSession } from '../../../auth';
7
+ import { useLoadingStore } from '../../../loading';
8
+ // Dynamic import for getEntityFormButtons to reduce bundle size
9
+ import { showSuccess } from '../../../message';
10
+ import { subStringBeforeLast } from '../../../utils/StringUtil';
11
+ import { useEntityFormInitializer } from './useEntityFormInitializer';
12
+ import { useEntityFormSave } from './useEntityFormSave';
13
+ import { useEntityFormTitle } from './useEntityFormTitle';
14
+ import { useEntityFormAutoSave } from './useEntityFormAutoSave';
15
+ /**
16
+ * useEntityFormLogic 훅
17
+ * - ViewEntityForm의 모든 상태/핸들러/로직을 관리하는 커스텀 훅
18
+ * - 렌더링에 필요한 모든 값/함수만 반환
19
+ *
20
+ * @param props ViewEntityFormProps
21
+ */
22
+ export function useEntityFormLogic(props) {
23
+ // 상태 선언
24
+ const [entityForm, setEntityForm] = useState();
25
+ const entityFormRef = useRef(entityForm);
26
+ useEffect(() => {
27
+ entityFormRef.current = entityForm;
28
+ }, [entityForm]);
29
+ const [tabIndex, setTabIndex] = useState();
30
+ const [cacheKey, setCacheKey] = useState();
31
+ const [loadingError, setLoadingError] = useState(false);
32
+ const [initialized, setInitialized] = useState(false);
33
+ const [errors, setErrors] = useState([]);
34
+ const [notifications, setNotifications] = useState([]);
35
+ const [title, setTitle] = useState('');
36
+ const [renderType, setRenderType] = useState();
37
+ const [selectedTabIndex, setSelectedTabIndex] = useState(0);
38
+ const [currentStep, setCurrentStep] = useState(0);
39
+ const [showStepper, setShowStepper] = useState(true);
40
+ const [tabs, setTabs] = useState([]);
41
+ const [buttons, setButtons] = useState([]);
42
+ const [headerAreaContent, setHeaderAreaContent] = useState(null);
43
+ const { setOpenBaseLoading } = useLoadingStore();
44
+ const router = useRouter();
45
+ const pathname = usePathname();
46
+ const isSubCollectionEntity = isTrue(props.subCollection);
47
+ const isInlineMode = isTrue(props.inlineMode);
48
+ const readonly = isTrue(props.readonly);
49
+ const popupMode = isTrue(props.popupMode);
50
+ // useSession 훅은 항상 최상단에서 호출
51
+ const sessionFromHook = useSession();
52
+ // session을 찾는 순서: 1. entityForm.session 2. props.session 3. useSession()
53
+ let session = null;
54
+ // 1. entityForm 안에 있는 session 확인
55
+ if (entityForm?.session) {
56
+ session = entityForm.session;
57
+ }
58
+ // 2. props.session으로 넘어온 session 확인
59
+ else if (props.session) {
60
+ session = props.session;
61
+ }
62
+ // 3. sessionFromHook에서 넘어온 session 확인
63
+ else if (sessionFromHook) {
64
+ session = sessionFromHook;
65
+ }
66
+ if (!session) {
67
+ // throw new Error("Session is required for ViewEntityForm");
68
+ }
69
+ // session이 검출되면 entityForm에 session 설정
70
+ if (entityForm && !entityForm.session && session) {
71
+ entityForm.withSession(session);
72
+ }
73
+ // title 계산 훅 (title 반환형)
74
+ const getEntityFormTitle = useEntityFormTitle({
75
+ entityForm: entityForm ?? props.entityForm,
76
+ ...(props.title !== undefined ? { customTitle: props.title } : {}),
77
+ });
78
+ // title 갱신 함수 - useCallback으로 메모이제이션
79
+ const updateTitle = useCallback(async (form) => {
80
+ const newTitle = await getEntityFormTitle(form);
81
+ setTitle(newTitle);
82
+ // 팝업 모드일 때 브라우저 창 타이틀도 업데이트
83
+ if (popupMode && newTitle) {
84
+ if (typeof newTitle === 'string') {
85
+ document.title = newTitle;
86
+ }
87
+ else if (typeof newTitle === 'number') {
88
+ document.title = String(newTitle);
89
+ }
90
+ // ReactNode인 경우는 브라우저 타이틀에 적용하지 않음
91
+ }
92
+ }, [getEntityFormTitle, popupMode]);
93
+ // postSave/postDelete 분리 (타입 보장) - useCallback으로 메모이제이션
94
+ // clearAutoSave는 아래에서 정의되므로, 여기서는 ref로 접근
95
+ const clearAutoSaveRef = useRef(() => { });
96
+ const postSave = useCallback(async (entityForm) => {
97
+ // 저장 성공 시 autoSave 데이터 삭제
98
+ clearAutoSaveRef.current();
99
+ if (props.postSave) {
100
+ const result = await props.postSave(entityForm);
101
+ if (isSubCollectionEntity) {
102
+ await showSuccess({
103
+ message: '데이터가 저장되었습니다.',
104
+ topLayer: true,
105
+ });
106
+ setTimeout(() => {
107
+ if (props.buttonLinks?.onSave) {
108
+ props.buttonLinks?.onSave?.success?.({ entityForm: result });
109
+ }
110
+ }, 100);
111
+ }
112
+ await updateTitle(result);
113
+ return result;
114
+ }
115
+ if (!isSubCollectionEntity) {
116
+ if (renderType === 'create') {
117
+ const url = subStringBeforeLast(pathname, '/add') + '/' + entityForm.id;
118
+ await showSuccess({
119
+ message: '데이터가 저장되었습니다.',
120
+ topLayer: true,
121
+ });
122
+ setTimeout(() => {
123
+ router.push(url);
124
+ }, 100);
125
+ }
126
+ else {
127
+ setCacheKey(`${new Date().getTime()}`);
128
+ setNotifications(['데이터가 저장되었습니다.']);
129
+ setEntityForm(entityForm);
130
+ await updateTitle(entityForm);
131
+ }
132
+ }
133
+ else {
134
+ await showSuccess({
135
+ message: '데이터가 저장되었습니다.',
136
+ topLayer: true,
137
+ });
138
+ setTimeout(() => {
139
+ if (props.buttonLinks?.onSave) {
140
+ props.buttonLinks?.onSave?.success?.({ entityForm: entityForm });
141
+ }
142
+ }, 100);
143
+ }
144
+ await updateTitle(entityForm);
145
+ return entityForm;
146
+ }, [
147
+ props.postSave,
148
+ props.buttonLinks,
149
+ isSubCollectionEntity,
150
+ renderType,
151
+ pathname,
152
+ router,
153
+ updateTitle,
154
+ ]);
155
+ const postDelete = useCallback(async (entityForm) => {
156
+ if (props.postDelete) {
157
+ await props.postDelete(entityForm);
158
+ }
159
+ }, [props.postDelete]);
160
+ // 커스텀 훅: EntityForm 초기화
161
+ const initializeEntityForm = useEntityFormInitializer({
162
+ entityForm: props.entityForm,
163
+ isSubCollectionEntity,
164
+ pathname: pathname,
165
+ ...(session ? { session } : {}),
166
+ ...(props.buttonLinks !== undefined ? { buttonLinks: props.buttonLinks } : {}),
167
+ ...(props.onInitialize !== undefined ? { onInitialize: props.onInitialize } : {}),
168
+ setTabs,
169
+ setTabIndex,
170
+ setEntityForm,
171
+ setTitleText: updateTitle,
172
+ setLoadingError,
173
+ });
174
+ // 커스텀 훅: 저장 로직 (postDelete는 전달하지 않음)
175
+ const { onClickSaveButton } = useEntityFormSave({
176
+ entityForm: entityForm,
177
+ isSubCollectionEntity,
178
+ renderType,
179
+ pathname: pathname,
180
+ router,
181
+ ...(props.buttonLinks !== undefined ? { buttonLinks: props.buttonLinks } : {}),
182
+ postSave: postSave,
183
+ setEntityForm,
184
+ setNotifications,
185
+ setTitleText: updateTitle,
186
+ setCacheKey,
187
+ setErrors,
188
+ setOpenBaseLoading,
189
+ ...(session ? { session } : {}),
190
+ });
191
+ // 최초 마운트 시 EntityForm 초기화
192
+ useEffect(() => {
193
+ if (!initialized && typeof window !== 'undefined' && props.entityForm) {
194
+ setRenderType(props.entityForm.id !== undefined ? 'update' : 'create');
195
+ initializeEntityForm();
196
+ setInitialized(true);
197
+ }
198
+ // eslint-disable-next-line react-hooks/exhaustive-deps
199
+ }, []);
200
+ // entityForm이 변경될 때마다 session 설정
201
+ useEffect(() => {
202
+ if (entityForm && session && !entityForm.session) {
203
+ entityForm.withSession(session);
204
+ }
205
+ }, [entityForm, session]);
206
+ // AutoSave 훅 초기화
207
+ const { triggerSave: triggerAutoSave, clearAutoSave, saveNow: saveAutoSaveNow, } = useEntityFormAutoSave({
208
+ ...(entityForm !== undefined ? { entityForm } : {}),
209
+ enabled: props.autoSave ?? false,
210
+ ...(props.autoSaveKey !== undefined ? { autoSaveKey: props.autoSaveKey } : {}),
211
+ });
212
+ // clearAutoSaveRef 업데이트 (postSave에서 사용)
213
+ useEffect(() => {
214
+ clearAutoSaveRef.current = clearAutoSave;
215
+ }, [clearAutoSave]);
216
+ // entityForm 값이 변경될 때 자동 저장 트리거
217
+ useEffect(() => {
218
+ if (entityForm && initialized && props.autoSave) {
219
+ triggerAutoSave();
220
+ }
221
+ }, [entityForm, initialized, props.autoSave, triggerAutoSave]);
222
+ // EntityForm.shouldReload 감지 시 갱신
223
+ useEffect(() => {
224
+ if (isTrue(entityForm?.shouldReload)) {
225
+ const newCacheKey = `${new Date().getTime()}`;
226
+ setCacheKey(newCacheKey);
227
+ const cloned = entityForm.clone(true).withShouldReload();
228
+ setEntityForm(cloned);
229
+ updateTitle(entityForm);
230
+ }
231
+ // eslint-disable-next-line react-hooks/exhaustive-deps
232
+ }, [entityForm?.shouldReload]);
233
+ // onLoad 콜백 처리 - 컴포넌트가 완전히 렌더링된 후 호출
234
+ useEffect(() => {
235
+ if (entityForm && initialized && !loadingError && props.onLoad) {
236
+ // 약간의 지연을 두어 DOM이 완전히 렌더링된 후 호출
237
+ const timer = setTimeout(async () => {
238
+ try {
239
+ await props.onLoad(entityForm);
240
+ }
241
+ catch (error) {
242
+ console.error('Error in onLoad callback:', error);
243
+ }
244
+ }, 100);
245
+ return () => clearTimeout(timer);
246
+ }
247
+ return undefined;
248
+ }, [entityForm, initialized, loadingError, props.onLoad]);
249
+ // CreateStep 관련 - useMemo로 메모이제이션
250
+ const useCreateStep = useMemo(() => renderType === 'create' &&
251
+ entityForm?.getCreateStep() !== undefined &&
252
+ entityForm?.getCreateStep().length > 0, [renderType, entityForm]);
253
+ const maxStep = useMemo(() => (entityForm?.getCreateStep()?.length ?? 1) - 1, [entityForm]);
254
+ const createStepFields = useMemo(() => {
255
+ const fields = [];
256
+ if (useCreateStep && entityForm) {
257
+ fields.push(...entityForm.getCreateStep()[currentStep].fields);
258
+ }
259
+ return fields;
260
+ }, [useCreateStep, entityForm, currentStep]);
261
+ // CreateStep 변경 시 탭 인덱스를 자동으로 첫 번째 보이는 탭으로 이동
262
+ useEffect(() => {
263
+ if (!useCreateStep || !entityForm)
264
+ return;
265
+ (async () => {
266
+ const step = entityForm.getCreateStep()?.[currentStep];
267
+ if (!step)
268
+ return;
269
+ const allTabs = await entityForm.getViewableTabs(false);
270
+ let firstVisibleTabId = '';
271
+ for (const tab of allTabs) {
272
+ const viewableFieldGroups = await entityForm.getViewableFieldGroups({
273
+ tabId: tab.id,
274
+ createStepFields: step.fields,
275
+ });
276
+ if (viewableFieldGroups.length > 0) {
277
+ firstVisibleTabId = tab.id;
278
+ break;
279
+ }
280
+ }
281
+ if (firstVisibleTabId) {
282
+ const tabIndex = allTabs.findIndex((tab) => tab.id === firstVisibleTabId);
283
+ setTabIndex(firstVisibleTabId);
284
+ setSelectedTabIndex(tabIndex);
285
+ }
286
+ setTabs(allTabs);
287
+ })();
288
+ }, [currentStep, useCreateStep, entityForm]);
289
+ // openBaseLoading 함수를 useCallback으로 메모이제이션
290
+ const openBaseLoadingCallback = useCallback((open) => {
291
+ setOpenBaseLoading(open);
292
+ }, [setOpenBaseLoading]);
293
+ // 모달 관련 함수들
294
+ const { openModal, closeModal, closeTopModal, findModal, updateModalData } = useModalManagerStore();
295
+ const showModal = useCallback((options) => {
296
+ return openModal(options);
297
+ }, [openModal]);
298
+ const handleCloseModal = useCallback(async (id) => {
299
+ await closeModal(id);
300
+ }, [closeModal]);
301
+ const getModalData = useCallback((id) => {
302
+ const modal = findModal(id);
303
+ return modal?.data;
304
+ }, [findModal]);
305
+ const handleUpdateModalData = useCallback((id, data) => {
306
+ updateModalData(id, data);
307
+ }, [updateModalData]);
308
+ // 버튼 영역 비동기 업데이트 - Dynamic import for better performance
309
+ useEffect(() => {
310
+ // entityForm이 없거나 hideAllButtons가 true이면 빈 배열로 설정
311
+ if (!entityForm || props.hideAllButtons) {
312
+ setButtons([]);
313
+ return;
314
+ }
315
+ const updateButtons = async () => {
316
+ try {
317
+ // Dynamic import to reduce initial bundle size
318
+ const { getEntityFormButtons } = await import('../ui/ViewEntityFormButtons');
319
+ const newButtons = await getEntityFormButtons({
320
+ readonly: readonly,
321
+ entityForm: entityForm,
322
+ postSave: postSave,
323
+ postDelete: postDelete,
324
+ ...(props.buttonLinks !== undefined ? { buttonLinks: props.buttonLinks } : {}),
325
+ ...(props.buttons !== undefined ? { buttons: props.buttons } : {}),
326
+ ...(props.excludeButtons !== undefined ? { excludeButtons: props.excludeButtons } : {}),
327
+ subCollection: isSubCollectionEntity,
328
+ setEntityForm: setEntityForm,
329
+ setErrors: setErrors,
330
+ setNotifications: setNotifications,
331
+ router,
332
+ pathname,
333
+ openBaseLoading: openBaseLoadingCallback,
334
+ useCreateStep: useCreateStep,
335
+ currentStep: currentStep,
336
+ maxStep: maxStep,
337
+ createStepFields: createStepFields,
338
+ // 모달 관련 함수들 추가
339
+ showModal: showModal,
340
+ closeModal: handleCloseModal,
341
+ closeTopModal: closeTopModal,
342
+ getModalData: getModalData,
343
+ updateModalData: handleUpdateModalData,
344
+ // 새창(팝업) 모드
345
+ popupMode: popupMode,
346
+ });
347
+ setButtons(newButtons);
348
+ }
349
+ catch (error) {
350
+ console.error('Error updating buttons:', error);
351
+ setButtons([]);
352
+ }
353
+ };
354
+ updateButtons();
355
+ }, [
356
+ // 실제로 런타임에 변할 수 있는 핵심 의존성만 포함
357
+ entityForm,
358
+ currentStep, // createStep에서 단계가 변경될 때
359
+ initialized, // 초기화 완료 시 버튼 재생성
360
+ cacheKey, // 캐시 키가 변경될 때 버튼 재생성
361
+ renderType, // 렌더 타입 변경 시
362
+ ]);
363
+ // headerArea 비동기 렌더링
364
+ useEffect(() => {
365
+ if (!entityForm || !entityForm.headerArea) {
366
+ setHeaderAreaContent(null);
367
+ return;
368
+ }
369
+ const updateHeaderArea = async () => {
370
+ try {
371
+ const content = await entityForm.headerArea(entityForm);
372
+ setHeaderAreaContent(content);
373
+ }
374
+ catch (error) {
375
+ console.error('Error rendering headerArea:', error);
376
+ setHeaderAreaContent(null);
377
+ }
378
+ };
379
+ updateHeaderArea();
380
+ }, [entityForm, cacheKey]);
381
+ const changeCurrentStep = (stepNumber) => {
382
+ (async () => {
383
+ const ef = entityFormRef.current;
384
+ const step = ef?.getCreateStep()?.[stepNumber];
385
+ if (step && ef) {
386
+ // 모든 탭을 유지하되, ViewTab에서 display:none으로 숨김 처리
387
+ const allTabs = await ef.getViewableTabs(false);
388
+ // 현재 단계에서 첫 번째로 표시 가능한 탭을 찾아서 이동
389
+ let firstVisibleTabId = '';
390
+ for (const tab of allTabs) {
391
+ const viewableFieldGroups = await ef.getViewableFieldGroups({
392
+ tabId: tab.id,
393
+ createStepFields: step.fields,
394
+ });
395
+ if (viewableFieldGroups.length > 0) {
396
+ firstVisibleTabId = tab.id;
397
+ break;
398
+ }
399
+ }
400
+ if (firstVisibleTabId) {
401
+ const tabIndex = allTabs.findIndex((tab) => tab.id === firstVisibleTabId);
402
+ setTabIndex(firstVisibleTabId);
403
+ setSelectedTabIndex(tabIndex);
404
+ }
405
+ setTabs(allTabs);
406
+ }
407
+ // 상태 업데이트
408
+ setCurrentStep(stepNumber);
409
+ setCacheKey(`${new Date().getTime()}`);
410
+ })();
411
+ };
412
+ // EntityForm을 리셋하고 초기화 상태로 되돌리는 함수
413
+ const resetEntityForm = useCallback(async (delay, preserveState = true) => {
414
+ // 현재 상태 보존
415
+ const currentTabId = preserveState ? tabIndex : undefined;
416
+ const currentSelectedIndex = preserveState ? selectedTabIndex : 0;
417
+ const currentScroll = preserveState ? window.scrollY : 0;
418
+ // 지연 시간이 있으면 대기
419
+ if (delay && delay > 0) {
420
+ await new Promise((resolve) => setTimeout(resolve, delay));
421
+ }
422
+ // BaseLoading 표시
423
+ setOpenBaseLoading(true);
424
+ try {
425
+ // 로딩이 표시될 시간을 주기 위한 짧은 대기
426
+ await new Promise((resolve) => setTimeout(resolve, 50));
427
+ // EntityForm 재초기화 - 이미 생성된 initializeEntityForm 함수 사용
428
+ if (props.entityForm) {
429
+ await initializeEntityForm({ preserveTabIndex: preserveState });
430
+ // 상태 복원
431
+ if (preserveState) {
432
+ // 스크롤 위치 복원
433
+ setTimeout(() => {
434
+ window.scrollTo({
435
+ top: currentScroll,
436
+ behavior: 'instant',
437
+ });
438
+ }, 50);
439
+ }
440
+ setCacheKey(`${new Date().getTime()}`);
441
+ }
442
+ }
443
+ catch (error) {
444
+ console.error('Error resetting EntityForm:', error);
445
+ setLoadingError(true);
446
+ }
447
+ finally {
448
+ // 로딩 종료
449
+ setOpenBaseLoading(false);
450
+ }
451
+ }, [
452
+ tabIndex,
453
+ selectedTabIndex,
454
+ props.entityForm,
455
+ initializeEntityForm,
456
+ setOpenBaseLoading,
457
+ setTabIndex,
458
+ setSelectedTabIndex,
459
+ setCacheKey,
460
+ setLoadingError,
461
+ ]);
462
+ return {
463
+ entityForm,
464
+ setEntityForm,
465
+ tabIndex,
466
+ setTabIndex,
467
+ cacheKey,
468
+ setCacheKey,
469
+ loadingError,
470
+ initialized,
471
+ errors,
472
+ setErrors,
473
+ notifications,
474
+ setNotifications,
475
+ title,
476
+ setTitle,
477
+ renderType,
478
+ setRenderType,
479
+ selectedTabIndex,
480
+ setSelectedTabIndex,
481
+ currentStep,
482
+ setCurrentStep: changeCurrentStep,
483
+ showStepper,
484
+ setShowStepper,
485
+ tabs,
486
+ setTabs,
487
+ isSubCollectionEntity,
488
+ isInlineMode,
489
+ readonly,
490
+ popupMode,
491
+ session,
492
+ useCreateStep,
493
+ maxStep,
494
+ createStepFields,
495
+ buttons,
496
+ headerAreaContent,
497
+ postSave,
498
+ postDelete,
499
+ updateTitle,
500
+ onClickSaveButton,
501
+ // 모달 관련 함수들
502
+ showModal,
503
+ closeModal: handleCloseModal,
504
+ closeTopModal,
505
+ getModalData,
506
+ updateModalData: handleUpdateModalData,
507
+ resetEntityForm,
508
+ // AutoSave 관련 함수들
509
+ triggerAutoSave,
510
+ clearAutoSave,
511
+ saveAutoSaveNow,
512
+ };
513
+ }
@@ -0,0 +1,28 @@
1
+ import { EntityForm } from '../../../config/EntityForm';
2
+ import { EntityButtonLinkProps, RenderType } from '../../../config/Config';
3
+ import { Session } from '../../../auth/types';
4
+ import type { RouterApi } from '../../../router';
5
+ /**
6
+ * Custom hook for handling save/delete logic of EntityForm.
7
+ * EntityForm 저장/삭제 로직을 처리하는 커스텀 훅
8
+ * @param params - 저장/삭제에 필요한 파라미터 객체
9
+ */
10
+ export declare const useEntityFormSave: ({ entityForm, isSubCollectionEntity, renderType, pathname, router, buttonLinks, postSave, setEntityForm, setNotifications, setTitleText, setCacheKey, setErrors, setOpenBaseLoading, session, }: {
11
+ entityForm: EntityForm;
12
+ isSubCollectionEntity: boolean;
13
+ renderType: RenderType | undefined;
14
+ pathname: string;
15
+ router: RouterApi;
16
+ buttonLinks?: EntityButtonLinkProps;
17
+ postSave?: (entityForm: EntityForm) => Promise<EntityForm>;
18
+ setEntityForm: (entityForm: EntityForm) => void;
19
+ setNotifications: (messages: string[]) => void;
20
+ setTitleText: (form?: EntityForm) => void;
21
+ setCacheKey: (key: string) => void;
22
+ setErrors: (errors: string[]) => void;
23
+ setOpenBaseLoading: (open: boolean) => void;
24
+ session?: Session;
25
+ }) => {
26
+ onClickSaveButton: () => Promise<void>;
27
+ handlePostDelete: (entityForm: EntityForm) => Promise<void>;
28
+ };
@@ -0,0 +1,89 @@
1
+ 'use client';
2
+ import { useCallback } from 'react';
3
+ import { ExtensionPoint, } from '../../../extensions/EntityFormExtension.types';
4
+ import { isEmpty } from '../../../utils';
5
+ import { openToast } from '../../../message';
6
+ /**
7
+ * Custom hook for handling save/delete logic of EntityForm.
8
+ * EntityForm 저장/삭제 로직을 처리하는 커스텀 훅
9
+ * @param params - 저장/삭제에 필요한 파라미터 객체
10
+ */
11
+ export const useEntityFormSave = ({ entityForm, isSubCollectionEntity, renderType, pathname, router, buttonLinks, postSave, setEntityForm, setNotifications, setTitleText, setCacheKey, setErrors, setOpenBaseLoading, session, }) => {
12
+ /**
13
+ * EntityForm 저장 버튼 클릭 시 호출되는 함수
14
+ * Handles save button click
15
+ */
16
+ const onClickSaveButton = useCallback(async () => {
17
+ setOpenBaseLoading(true);
18
+ setErrors([]);
19
+ setNotifications([]);
20
+ // EntityForm Extension 지원 (클라이언트만)
21
+ const hasClientExtensions = entityForm.hasClientExtensions &&
22
+ (entityForm.hasClientExtensions(ExtensionPoint.PRE_CREATE, ExtensionPoint.POST_CREATE) ||
23
+ entityForm.hasClientExtensions(ExtensionPoint.PRE_UPDATE, ExtensionPoint.POST_UPDATE));
24
+ let processedEntityForm = entityForm;
25
+ if (hasClientExtensions) {
26
+ const context = {
27
+ entityForm: entityForm,
28
+ ...(session ? { session } : {}),
29
+ ...(session?.getUser?.() != null ? { user: session.getUser() } : {}),
30
+ };
31
+ // Pre Extension 실행 (Create/Update 구분)
32
+ const extensionPoint = renderType === 'update' ? ExtensionPoint.PRE_UPDATE : ExtensionPoint.PRE_CREATE;
33
+ await entityForm.executeClientExtensions(extensionPoint, entityForm.fetchedEntity ?? {}, context);
34
+ processedEntityForm = entityForm;
35
+ }
36
+ const saveResult = await processedEntityForm.save(session);
37
+ if (isEmpty(saveResult.errors)) {
38
+ // Post Extension 실행
39
+ let finalEntityForm = saveResult.entityForm;
40
+ if (hasClientExtensions) {
41
+ const context = {
42
+ entityForm: finalEntityForm,
43
+ ...(session ? { session } : {}),
44
+ ...(session?.getUser?.() != null ? { user: session.getUser() } : {}),
45
+ };
46
+ const extensionPoint = renderType === 'update' ? ExtensionPoint.POST_UPDATE : ExtensionPoint.POST_CREATE;
47
+ await finalEntityForm.executeClientExtensions(extensionPoint, finalEntityForm.fetchedEntity ?? {}, context);
48
+ }
49
+ try {
50
+ setOpenBaseLoading(false);
51
+ if (postSave) {
52
+ await postSave(finalEntityForm);
53
+ }
54
+ }
55
+ catch (e) {
56
+ // eslint-disable-next-line no-console
57
+ console.error(e);
58
+ }
59
+ }
60
+ else {
61
+ const error = saveResult.errors?.[0] ?? '저장 중 오류가 발생 했습니다.';
62
+ setEntityForm(saveResult.entityForm);
63
+ setErrors([error]);
64
+ setOpenBaseLoading(false);
65
+ openToast({ message: `${error}`, color: 'danger', showCloseButton: false });
66
+ }
67
+ }, [
68
+ entityForm,
69
+ session,
70
+ postSave,
71
+ setEntityForm,
72
+ setErrors,
73
+ setNotifications,
74
+ setOpenBaseLoading,
75
+ ]);
76
+ /**
77
+ * EntityForm 삭제 후 처리
78
+ * Handles post-delete logic
79
+ */
80
+ const handlePostDelete = useCallback(async (entityForm) => {
81
+ if (postSave) {
82
+ await postSave(entityForm);
83
+ }
84
+ }, [postSave]);
85
+ return {
86
+ onClickSaveButton,
87
+ handlePostDelete,
88
+ };
89
+ };
@@ -0,0 +1,12 @@
1
+ import { EntityForm } from '../../../config/EntityForm';
2
+ import { ReactNode } from 'react';
3
+ /**
4
+ * EntityForm의 타이틀을 동적으로 계산해 반환하는 커스텀 훅
5
+ * @param entityForm - 기준 EntityForm
6
+ * @param customTitle - 커스텀 타이틀(옵션)
7
+ * @returns (form?: EntityForm) => Promise<ReactNode>
8
+ */
9
+ export declare const useEntityFormTitle: ({ entityForm, customTitle, }: {
10
+ entityForm: EntityForm;
11
+ customTitle?: string;
12
+ }) => (form?: EntityForm) => Promise<ReactNode>;