@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,625 @@
1
+ 'use client';
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { useParams, usePathname, useRouter } from '../../../router';
4
+ import { getSessionStorageObject, isEmpty, isEqualCollection, setSessionStorageItem, } from '../../../misc';
5
+ import { SearchForm } from '../../../form/SearchForm';
6
+ import { ExtensionPoint, } from '../../../extensions/EntityFormExtension.types';
7
+ import { hash } from '../../../utils/simpleCrypt';
8
+ import { useSession } from '../../../auth';
9
+ import { isTrue } from '../../../utils/BooleanUtil';
10
+ import { getListFieldsFromCache } from '../../../config/ListGridViewFieldCache';
11
+ import { getGlobalPageSize } from './useQuickSearchBar';
12
+ import { isBlank } from '../../../utils/StringUtil';
13
+ import { showConfirm } from '../../../message';
14
+ import { useLoadingStore } from '../../../loading';
15
+ import { searchFormHashKey } from '../types/ViewListGrid.types';
16
+ import { parse, stringify } from '../../../utils/jsonUtils';
17
+ import { CustomOptionField, prefetchCustomOptions } from '../../fields/CustomOptionField';
18
+ import { prefetchSelectFieldOptions, SelectField } from '../../fields/SelectField';
19
+ import { useListGridUrlState } from './useListGridUrlState';
20
+ import { getQuickSearchFromSearchForm } from './searchFormUrlSync';
21
+ import { perfLog } from '../utils/performanceLogger';
22
+ export const useListGridLogic = (props) => {
23
+ const { listGrid } = props;
24
+ const manyToOne = props.options?.manyToOne;
25
+ let session = useSession();
26
+ if (props.session) {
27
+ session = props.session;
28
+ }
29
+ const listFields = listGrid.getListFields();
30
+ const objectFieldMap = useMemo(() => {
31
+ const map = new Map();
32
+ for (const field of listFields) {
33
+ if (field.getName().includes('.')) {
34
+ const objectNames = field.getName().split('.');
35
+ const objectName = objectNames[0];
36
+ const objectField = objectNames[1];
37
+ const objectFields = map.get(objectName) ?? [];
38
+ objectFields.push(objectField);
39
+ map.set(objectName, objectFields);
40
+ }
41
+ }
42
+ return map;
43
+ }, [listFields]);
44
+ const advancedSearchFields = listGrid.getAdvancedSearchFields();
45
+ if (props.options?.fields && props.options.fields.length > 0) {
46
+ const duplicatedFieldNames = [];
47
+ listFields.forEach((field) => duplicatedFieldNames.push(field.getName()));
48
+ props.options.fields.forEach((field) => {
49
+ if (!duplicatedFieldNames.includes(field.getName())) {
50
+ listFields.push(field);
51
+ }
52
+ });
53
+ }
54
+ const quickSearchProperty = listGrid.getQuickSearchProperty(true);
55
+ const enableHandleData = manyToOne === undefined && !isTrue(props.options?.readonly);
56
+ const isSubCollection = props.options?.subCollection !== undefined;
57
+ const isPopup = !!props.options?.popup;
58
+ const isMainEntity = manyToOne === undefined && !isSubCollection && !isPopup;
59
+ // URL state synchronization hook
60
+ const urlStateHook = useListGridUrlState({
61
+ ...(props.options?.urlSync !== undefined ? { urlSync: props.options.urlSync } : {}),
62
+ isMainEntity,
63
+ ...(quickSearchProperty?.name !== undefined
64
+ ? { quickSearchPropertyName: quickSearchProperty.name }
65
+ : {}),
66
+ ...(quickSearchProperty?.orFields !== undefined
67
+ ? { orFields: quickSearchProperty.orFields }
68
+ : {}),
69
+ });
70
+ // Track if URL was used for initial load (for proper sync behavior)
71
+ const initializedFromUrlRef = useRef(false);
72
+ const router = useRouter();
73
+ const path = usePathname() ?? '/';
74
+ const params = useParams();
75
+ const [entityForm, setEntityForm] = useState(listGrid.getEntityForm());
76
+ const [showAdvancedSearch, setShowAdvancedSearch] = useState(false);
77
+ const [searchForm, setSearchForm] = useState();
78
+ // Next.js 15+ params는 Proxy 객체이므로 일반 객체로 복사하여 사용
79
+ const paramsForHash = params ? { ...params } : {};
80
+ // props.options에서 해시 키 생성에 필요한 primitive 값만 추출 (함수, Proxy 객체 제외)
81
+ const optionsForHash = props.options
82
+ ? {
83
+ hideTitle: props.options.hideTitle,
84
+ readonly: props.options.readonly,
85
+ popup: props.options.popup,
86
+ filterable: props.options.filterable,
87
+ sortable: props.options.sortable,
88
+ cacheable: props.options.cacheable,
89
+ hidePageSize: props.options.hidePageSize,
90
+ hidePagination: props.options.hidePagination,
91
+ subCollectionName: props.options.subCollection?.name,
92
+ }
93
+ : {};
94
+ const hashKey = 'listgrid_' +
95
+ hash(searchFormHashKey, entityForm.name, entityForm.id, path, paramsForHash, optionsForHash);
96
+ const { setOpenBaseLoading } = useLoadingStore();
97
+ const [initializedSearchForm, setInitializedSearchForm] = useState();
98
+ const [search, setSearch] = useState('');
99
+ const [totalPage, setTotalPage] = useState(0);
100
+ const [totalCount, setTotalCount] = useState(0);
101
+ const [errors, setErrors] = useState([]);
102
+ const [notifications, setNotifications] = useState([]);
103
+ const [viewFields, setViewFields] = useState();
104
+ const [checkedItems, setCheckedItems] = useState([]);
105
+ const [dataTransferConfig, setDataTransferConfig] = useState(undefined);
106
+ const [managedId, setManagedId] = useState();
107
+ const [title, setTitle] = useState('');
108
+ const [managePriority, setManagePriority] = useState(false);
109
+ const [rows, setRows] = useState([]);
110
+ const [loading, setLoading] = useState(true);
111
+ const showMessages = useCallback((error, messages) => {
112
+ if (error) {
113
+ const refinedMessages = [];
114
+ for (const message of messages) {
115
+ if (message.includes('{"error":')) {
116
+ const json = parse(message);
117
+ if (json.error.message) {
118
+ refinedMessages.push(json.error.message);
119
+ }
120
+ if (json.error.fieldError) {
121
+ for (const field in json.error.fieldError) {
122
+ const fieldErr = json.error.fieldError[field];
123
+ if (fieldErr) {
124
+ refinedMessages.push(fieldErr);
125
+ }
126
+ }
127
+ }
128
+ }
129
+ else {
130
+ refinedMessages.push(message);
131
+ }
132
+ }
133
+ setErrors(refinedMessages);
134
+ setNotifications([]);
135
+ }
136
+ else {
137
+ setNotifications(messages);
138
+ setErrors([]);
139
+ }
140
+ }, []);
141
+ const fetchData = useCallback((form) => {
142
+ setLoading(true);
143
+ (async () => {
144
+ // CustomOptionField의 alias들을 수집하여 일괄 prefetch (N+1 문제 방지)
145
+ const customOptionAliases = listFields
146
+ .filter((field) => field instanceof CustomOptionField)
147
+ .map((field) => field.alias);
148
+ if (customOptionAliases.length > 0) {
149
+ await prefetchCustomOptions(customOptionAliases);
150
+ }
151
+ // SelectField의 loadOptions를 일괄 prefetch (N+1 문제 방지)
152
+ const selectFieldsWithLoadOptions = listFields.filter((field) => field instanceof SelectField && field.loadOptions !== undefined);
153
+ if (selectFieldsWithLoadOptions.length > 0) {
154
+ await prefetchSelectFieldOptions(selectFieldsWithLoadOptions, entityForm);
155
+ }
156
+ const listSearchForm = (form ?? searchForm)?.clone() ?? SearchForm.create();
157
+ // EntityForm Extension 지원
158
+ const hasClientExtensions = entityForm.hasClientExtensions &&
159
+ entityForm.hasClientExtensions(ExtensionPoint.PRE_FETCH_LIST, ExtensionPoint.POST_FETCH_LIST);
160
+ let finalSearchForm = listSearchForm;
161
+ // Client Pre Extension 실행
162
+ if (hasClientExtensions) {
163
+ const context = {
164
+ entityForm,
165
+ ...(session ? { session } : {}),
166
+ ...(session?.getUser?.() != null ? { user: session.getUser() } : {}),
167
+ };
168
+ finalSearchForm = await entityForm.executeClientExtensions(ExtensionPoint.PRE_FETCH_LIST, listSearchForm, context);
169
+ }
170
+ // 서버 extension 처리를 위해 항상 EntityForm 정보 전달
171
+ const apiStartTime = performance.now();
172
+ perfLog.apiStarted({
173
+ entityUrl: entityForm?.getUrl?.(),
174
+ page: finalSearchForm.getPage(),
175
+ pageSize: finalSearchForm.getPageSize(),
176
+ });
177
+ listGrid
178
+ .fetchData(finalSearchForm, {
179
+ entityFormName: entityForm.name,
180
+ extensionPoint: ExtensionPoint.POST_FETCH_LIST,
181
+ })
182
+ .then(async (result) => {
183
+ const apiDuration = performance.now() - apiStartTime;
184
+ if (!isEmpty(result.errors)) {
185
+ perfLog.apiError(apiDuration, {
186
+ entityUrl: entityForm?.getUrl?.(),
187
+ errors: result.errors,
188
+ });
189
+ setSearchForm(finalSearchForm);
190
+ showMessages(true, result.errors);
191
+ }
192
+ else {
193
+ let processedResult = result;
194
+ // Client Post Extension 실행
195
+ if (hasClientExtensions) {
196
+ const context = {
197
+ entityForm,
198
+ ...(session ? { session } : {}),
199
+ ...(session?.getUser?.() != null ? { user: session.getUser() } : {}),
200
+ };
201
+ processedResult = await entityForm.executeClientExtensions(ExtensionPoint.POST_FETCH_LIST, processedResult, context);
202
+ }
203
+ // 기존 onFetchListData Hook 지원 (하위 호환성)
204
+ if (!isEmpty(result.list) && entityForm?.onFetchListData !== undefined) {
205
+ for (const hook of entityForm.onFetchListData) {
206
+ processedResult = await hook(processedResult);
207
+ }
208
+ }
209
+ if (props.options?.onFetched) {
210
+ processedResult = await props.options?.onFetched(result);
211
+ }
212
+ let data = [];
213
+ if (objectFieldMap.size > 0) {
214
+ for (const item of processedResult.list) {
215
+ for (const field of listFields) {
216
+ const fieldName = field.getName();
217
+ if (fieldName.includes('.')) {
218
+ const parts = fieldName.split('.');
219
+ let value = item;
220
+ for (const part of parts) {
221
+ value = value?.[part];
222
+ }
223
+ item[fieldName] = value;
224
+ }
225
+ }
226
+ data.push(item);
227
+ }
228
+ }
229
+ else {
230
+ data = processedResult.list;
231
+ }
232
+ perfLog.apiCompleted(apiDuration, {
233
+ entityUrl: entityForm?.getUrl?.(),
234
+ rowCount: data.length,
235
+ totalCount: processedResult.totalCount,
236
+ page: processedResult.searchForm?.getPage(),
237
+ });
238
+ setRows(data);
239
+ setTotalPage(processedResult.totalPage);
240
+ setTotalCount(processedResult.totalCount);
241
+ setCheckedItems([]);
242
+ const newSearchForm = processedResult.searchForm;
243
+ // Preserve sorts from original request
244
+ // Server response may not properly return sorts (Java Map serialization issue)
245
+ const originalSorts = finalSearchForm.getSorts();
246
+ if (originalSorts.size > 0) {
247
+ // Clear server's sorts and apply original sorts
248
+ newSearchForm.clearSorts();
249
+ originalSorts.forEach((direction, fieldName) => {
250
+ newSearchForm.withSort(fieldName, direction);
251
+ });
252
+ }
253
+ // Preserve quickSearchFields from original request
254
+ // Server response may not include quickSearchFields (client-side concept)
255
+ const originalQuickSearchFields = finalSearchForm.getQuickSearchFields();
256
+ if (originalQuickSearchFields.length > 0) {
257
+ newSearchForm.handleQuickSearch(finalSearchForm.getQuickSearchValue() ?? '', originalQuickSearchFields);
258
+ }
259
+ // Preserve pageSize from original request
260
+ // Server response may not echo pageSize, causing it to fall back to default 20
261
+ newSearchForm.withPageSize(finalSearchForm.getPageSize());
262
+ setSearchForm(newSearchForm);
263
+ // Sync to URL if enabled
264
+ // Use finalSearchForm (what we requested) for URL sync to ensure
265
+ // page reset is reflected in URL, not server response which may have old page
266
+ if (urlStateHook.isEnabled) {
267
+ urlStateHook.syncToUrl(finalSearchForm);
268
+ }
269
+ else if (isMainEntity) {
270
+ // Only use sessionStorage when URL sync is disabled
271
+ // (e.g., subCollections or explicitly disabled)
272
+ setSessionStorageItem(hashKey, stringify(newSearchForm));
273
+ }
274
+ // Update search input from searchForm
275
+ const quickSearchValue = getQuickSearchFromSearchForm(newSearchForm, quickSearchProperty?.name, quickSearchProperty?.orFields);
276
+ if (quickSearchValue) {
277
+ setSearch(quickSearchValue);
278
+ }
279
+ }
280
+ setLoading(false);
281
+ });
282
+ })();
283
+ }, [
284
+ searchForm,
285
+ listGrid,
286
+ entityForm,
287
+ props.options,
288
+ objectFieldMap,
289
+ isMainEntity,
290
+ hashKey,
291
+ showMessages,
292
+ listFields,
293
+ urlStateHook,
294
+ quickSearchProperty?.name,
295
+ quickSearchProperty?.orFields,
296
+ ]);
297
+ const setOptionsFilters = useCallback(async (entityForm, searchForm) => {
298
+ searchForm = searchForm === undefined ? SearchForm.create() : searchForm;
299
+ if (props.options?.filters) {
300
+ const filters = await props.options.filters(entityForm);
301
+ if (filters?.length > 0) {
302
+ filters.forEach((value) => {
303
+ const condition = value.condition ?? 'AND';
304
+ const items = value.items;
305
+ if (items.length > 0) {
306
+ searchForm.withFilter(condition, ...items);
307
+ // Legacy mode only: Set search from AND filter when NOT in OR search mode
308
+ // When orFields exist (OR search mode), AND filters should NOT populate QuickSearch
309
+ if (condition === 'AND' && !quickSearchProperty?.orFields?.length) {
310
+ for (const item of items) {
311
+ if (item.name === quickSearchProperty?.name && item.value) {
312
+ setSearch(item.value);
313
+ break;
314
+ }
315
+ }
316
+ }
317
+ }
318
+ });
319
+ }
320
+ }
321
+ return searchForm;
322
+ }, [props.options, quickSearchProperty]);
323
+ const onChangeSearchForm = useCallback(async (entityForm, searchForm, reset, resetPage) => {
324
+ let newSearchForm = searchForm.clone();
325
+ if (isTrue(reset)) {
326
+ setSearch('');
327
+ // newSearchForm.clearFilterAndSort();
328
+ newSearchForm.withPage(0);
329
+ newSearchForm = await setOptionsFilters(entityForm, newSearchForm);
330
+ }
331
+ else {
332
+ // Use getQuickSearchFromSearchForm to properly handle OR vs AND filters
333
+ // When orFields exist (OR search mode), only OR-based quickSearch should be returned
334
+ const quickSearchValue = getQuickSearchFromSearchForm(newSearchForm, quickSearchProperty?.name, quickSearchProperty?.orFields);
335
+ setSearch(quickSearchValue);
336
+ if (isTrue(resetPage)) {
337
+ newSearchForm.withPage(0);
338
+ }
339
+ }
340
+ fetchData(newSearchForm);
341
+ }, [fetchData, quickSearchProperty, setOptionsFilters]);
342
+ const initializeSearchForm = useCallback(async () => {
343
+ // When URL sync is enabled, use URL as the source of truth
344
+ if (urlStateHook.isEnabled) {
345
+ if (urlStateHook.hasUrlParams) {
346
+ initializedFromUrlRef.current = true;
347
+ const originalSearchForm = listGrid.getSearchForm();
348
+ let searchForm = urlStateHook.getInitialSearchForm(originalSearchForm);
349
+ // Apply defaultPageSize from options or global pageSize if not set from URL
350
+ if (searchForm.getPageSize() === 20) {
351
+ const pageSize = props.options?.defaultPageSize ?? getGlobalPageSize();
352
+ searchForm.withPageSize(pageSize);
353
+ }
354
+ // Always apply options filters (business rules)
355
+ searchForm = await setOptionsFilters(entityForm, searchForm);
356
+ // Set search input from URL
357
+ const quickSearchValue = getQuickSearchFromSearchForm(searchForm, quickSearchProperty?.name, quickSearchProperty?.orFields);
358
+ if (quickSearchValue) {
359
+ setSearch(quickSearchValue);
360
+ }
361
+ return searchForm;
362
+ }
363
+ // URL sync enabled but no params - start with default searchForm
364
+ const originalSearchForm = listGrid.getSearchForm();
365
+ let searchForm = originalSearchForm.clone();
366
+ const pageSize = props.options?.defaultPageSize ?? getGlobalPageSize();
367
+ searchForm.withPageSize(pageSize);
368
+ searchForm = await setOptionsFilters(entityForm, searchForm);
369
+ return searchForm;
370
+ }
371
+ // URL sync disabled - use sessionStorage for main entities
372
+ let searchForm = isMainEntity
373
+ ? await getSessionStorageObject(hashKey, (value) => SearchForm.deserialize(value))
374
+ : undefined;
375
+ if (searchForm === undefined) {
376
+ const originalSearchForm = listGrid.getSearchForm();
377
+ searchForm = originalSearchForm.clone();
378
+ const pageSize = props.options?.defaultPageSize ?? getGlobalPageSize();
379
+ searchForm.withPageSize(pageSize);
380
+ }
381
+ searchForm = await setOptionsFilters(entityForm, searchForm);
382
+ return searchForm;
383
+ }, [
384
+ isMainEntity,
385
+ hashKey,
386
+ listGrid,
387
+ setOptionsFilters,
388
+ entityForm,
389
+ urlStateHook,
390
+ quickSearchProperty?.name,
391
+ ]);
392
+ const syncViewFieldsFromCache = useCallback(() => {
393
+ const cached = getListFieldsFromCache(entityForm.getUrl(), props.options?.subCollection?.name);
394
+ if (cached !== undefined && !isEmpty(cached)) {
395
+ if (viewFields === undefined || !isEqualCollection(viewFields, cached)) {
396
+ setViewFields(cached);
397
+ }
398
+ }
399
+ }, [entityForm, props.options?.subCollection?.name, viewFields]);
400
+ const initialize = useCallback(async () => {
401
+ if (typeof window === 'undefined')
402
+ return;
403
+ if (isMainEntity) {
404
+ entityForm.setRevisionEntityNameIfBlank(path);
405
+ }
406
+ await entityForm.initialize(session !== undefined ? { session } : {}).then((result) => {
407
+ setEntityForm(result.entityForm);
408
+ });
409
+ const searchForm = await initializeSearchForm();
410
+ setInitializedSearchForm(searchForm.clone());
411
+ syncViewFieldsFromCache();
412
+ setLoading(false);
413
+ setDataTransferConfig(await entityForm.getDataTransferConfig());
414
+ setTitle(props.title ?? (await entityForm.getTitle('목록', false)));
415
+ await onChangeSearchForm(entityForm, searchForm);
416
+ }, [
417
+ isMainEntity,
418
+ entityForm,
419
+ path,
420
+ session,
421
+ initializeSearchForm,
422
+ syncViewFieldsFromCache,
423
+ props.title,
424
+ onChangeSearchForm,
425
+ ]);
426
+ const deleteItems = useCallback(() => {
427
+ const neverDelete = isTrue(entityForm.neverDelete);
428
+ const message = `선택된 ${checkedItems.length}개의 항목을 ${neverDelete ? '사용 중지' : '삭제'}하시겠습니까?`;
429
+ const text = neverDelete
430
+ ? `<div className='text-sm'>사용 중지된 항목은 상세 정보에서<br/><u>상태 정보 > 사용 여부</u> 값을 변경해 되돌릴 수 있습니다.</div>`
431
+ : '이 작업은 되돌릴 수 없습니다.';
432
+ const confirmButtonText = neverDelete ? '사용 중지' : '삭제';
433
+ const confirmMessage = neverDelete ? '사용 중지 처리 되었습니다' : '삭제가 완료되었습니다';
434
+ if (checkedItems.length > 0) {
435
+ (async () => {
436
+ await showConfirm({
437
+ title: message,
438
+ message: text,
439
+ isHtml: neverDelete,
440
+ confirmButtonText: confirmButtonText,
441
+ cancelButtonText: `취소`,
442
+ onConfirm: async () => {
443
+ setLoading(true);
444
+ setOpenBaseLoading(true);
445
+ const result = props.options?.delete?.onDelete !== undefined
446
+ ? await props.options?.delete?.onDelete(entityForm, rows, checkedItems)
447
+ : await entityForm.deleteAll(checkedItems);
448
+ if (!isEmpty(result.errors)) {
449
+ showMessages(true, result.errors);
450
+ setOpenBaseLoading(false);
451
+ setLoading(false);
452
+ }
453
+ else {
454
+ showMessages(false, [result.messages?.[0] ?? confirmMessage]);
455
+ fetchData();
456
+ setOpenBaseLoading(false);
457
+ await props.options?.delete?.postDelete?.(entityForm, rows, [...checkedItems]);
458
+ }
459
+ },
460
+ });
461
+ })();
462
+ }
463
+ }, [
464
+ entityForm,
465
+ checkedItems,
466
+ router,
467
+ path,
468
+ props.options,
469
+ rows,
470
+ showMessages,
471
+ fetchData,
472
+ setOpenBaseLoading,
473
+ ]);
474
+ useEffect(() => {
475
+ initialize();
476
+ // eslint-disable-next-line react-hooks/exhaustive-deps
477
+ }, []);
478
+ // Listen for URL state changes (browser back/forward navigation AND initial hydration)
479
+ useEffect(() => {
480
+ // Skip if URL sync is disabled or searchForm not ready
481
+ if (!urlStateHook.isEnabled || !searchForm)
482
+ return;
483
+ // Check if URL has params
484
+ if (urlStateHook.hasUrlParams) {
485
+ const originalSearchForm = listGrid.getSearchForm();
486
+ const urlSearchForm = urlStateHook.getInitialSearchForm(originalSearchForm);
487
+ // Compare current page with URL page
488
+ const currentPage = searchForm.getPage();
489
+ const urlPage = urlSearchForm.getPage();
490
+ // Case 1: Initial URL load (nuqs hydration completed after initial mount)
491
+ // Case 2: Browser back/forward navigation
492
+ if (currentPage !== urlPage || !initializedFromUrlRef.current) {
493
+ initializedFromUrlRef.current = true;
494
+ // URL changed or first time URL params detected, update state
495
+ (async () => {
496
+ const newSearchForm = await setOptionsFilters(entityForm, urlSearchForm);
497
+ const quickSearchValue = getQuickSearchFromSearchForm(newSearchForm, quickSearchProperty?.name, quickSearchProperty?.orFields);
498
+ if (quickSearchValue) {
499
+ setSearch(quickSearchValue);
500
+ }
501
+ fetchData(newSearchForm);
502
+ })();
503
+ }
504
+ }
505
+ // eslint-disable-next-line react-hooks/exhaustive-deps
506
+ }, [urlStateHook.urlState, urlStateHook.hasUrlParams]);
507
+ const onSelect = (props.options?.onSelect ??
508
+ props.options?.manyToOne?.onSelect ??
509
+ (isSubCollection
510
+ ? (item, _setManagedId) => {
511
+ if (_setManagedId) {
512
+ _setManagedId(item.id);
513
+ }
514
+ else {
515
+ setManagedId(item.id);
516
+ }
517
+ }
518
+ : undefined));
519
+ const performQuickSearch = (search) => {
520
+ const newSearchForm = searchForm.clone();
521
+ const fieldName = quickSearchProperty.name;
522
+ const orFields = quickSearchProperty?.orFields;
523
+ if (!isBlank(search)) {
524
+ // If orFields exist, use multi-field OR search
525
+ if (orFields && orFields.length > 0) {
526
+ const allFields = [fieldName, ...orFields];
527
+ newSearchForm.handleQuickSearch(search, allFields);
528
+ }
529
+ else {
530
+ // Fallback to single field search for backward compatibility
531
+ newSearchForm.handleAndFilter(fieldName, search, 'LIKE');
532
+ }
533
+ }
534
+ else {
535
+ // Clear quick search
536
+ if (orFields && orFields.length > 0) {
537
+ newSearchForm.handleQuickSearch('', []);
538
+ }
539
+ newSearchForm.removeFilter(quickSearchProperty.name);
540
+ }
541
+ (async () => {
542
+ await onChangeSearchForm(entityForm, newSearchForm, false, true);
543
+ })();
544
+ };
545
+ const changePage = (page) => {
546
+ (async () => {
547
+ setRows([]);
548
+ await onChangeSearchForm(entityForm, searchForm.withPage(page));
549
+ })();
550
+ };
551
+ const sortRowsPriority = async (changed) => {
552
+ const newRows = [...changed];
553
+ setRows(newRows);
554
+ };
555
+ /**
556
+ * 진정한 초기 상태의 SearchForm을 반환
557
+ * sessionStorage나 URL 파라미터의 영향 없이 ListGrid 설정의 원본 상태
558
+ * Reset 시 이 함수를 사용해야 함
559
+ */
560
+ const getCleanSearchForm = useCallback(async () => {
561
+ const originalSearchForm = listGrid.getSearchForm();
562
+ let searchForm = originalSearchForm.clone();
563
+ const pageSize = props.options?.defaultPageSize ?? getGlobalPageSize();
564
+ searchForm.withPageSize(pageSize);
565
+ searchForm = await setOptionsFilters(entityForm, searchForm);
566
+ return searchForm;
567
+ }, [listGrid, entityForm, setOptionsFilters, props.options?.defaultPageSize]);
568
+ return {
569
+ listGrid,
570
+ manyToOne,
571
+ session,
572
+ listFields,
573
+ objectFieldMap,
574
+ advancedSearchFields,
575
+ quickSearchProperty,
576
+ enableHandleData,
577
+ isSubCollection,
578
+ isMainEntity,
579
+ router,
580
+ path,
581
+ params,
582
+ entityForm,
583
+ showAdvancedSearch,
584
+ setShowAdvancedSearch,
585
+ searchForm,
586
+ setSearchForm,
587
+ hashKey,
588
+ initializedSearchForm,
589
+ search,
590
+ setSearch,
591
+ totalPage,
592
+ totalCount,
593
+ errors,
594
+ notifications,
595
+ viewFields,
596
+ setViewFields,
597
+ checkedItems,
598
+ setCheckedItems,
599
+ dataTransferConfig,
600
+ setDataTransferConfig,
601
+ managedId,
602
+ setManagedId,
603
+ title,
604
+ setTitle,
605
+ managePriority,
606
+ setManagePriority,
607
+ rows,
608
+ setRows,
609
+ loading,
610
+ setLoading,
611
+ showMessages,
612
+ fetchData,
613
+ deleteItems,
614
+ onSelect,
615
+ performQuickSearch,
616
+ changePage,
617
+ sortRowsPriority,
618
+ onChangeSearchForm,
619
+ setOpenBaseLoading,
620
+ getCleanSearchForm,
621
+ // URL sync related
622
+ urlSyncEnabled: urlStateHook.isEnabled,
623
+ clearUrlParams: urlStateHook.clearUrlParams,
624
+ };
625
+ };
@@ -0,0 +1,45 @@
1
+ import { SearchForm } from '../../../form/SearchForm';
2
+ import { ListGridUrlState } from './urlStateParsers';
3
+ export interface UrlSyncOptions {
4
+ /** Enable URL sync (default: true for main entities) */
5
+ enabled?: boolean;
6
+ /** Include filters in URL (default: true) */
7
+ includeFilters?: boolean;
8
+ /** Include sort in URL (default: true) */
9
+ includeSort?: boolean;
10
+ /** Include pageSize in URL (default: true) */
11
+ includePageSize?: boolean;
12
+ /** Use sessionStorage as fallback (default: true) */
13
+ sessionStorageFallback?: boolean;
14
+ }
15
+ export interface UseListGridUrlStateOptions {
16
+ /** URL sync configuration */
17
+ urlSync?: UrlSyncOptions | boolean;
18
+ /** Whether this is a main entity (not subCollection) */
19
+ isMainEntity: boolean;
20
+ /** Quick search property name */
21
+ quickSearchPropertyName?: string;
22
+ /** Additional fields for OR condition quick search */
23
+ orFields?: string[];
24
+ /** Session storage SearchForm (for fallback) */
25
+ sessionSearchForm?: SearchForm;
26
+ }
27
+ export interface UseListGridUrlStateReturn {
28
+ /** Current URL state */
29
+ urlState: ListGridUrlState;
30
+ /** Whether URL sync is enabled */
31
+ isEnabled: boolean;
32
+ /** Whether URL has params (user navigated via deep link) */
33
+ hasUrlParams: boolean;
34
+ /** Sync SearchForm state to URL */
35
+ syncToUrl: (searchForm: SearchForm) => void;
36
+ /** Get initial SearchForm from URL or session */
37
+ getInitialSearchForm: (baseSearchForm: SearchForm) => SearchForm;
38
+ /** Clear all URL params */
39
+ clearUrlParams: () => void;
40
+ }
41
+ /**
42
+ * Custom hook for ListGrid URL state synchronization using nuqs
43
+ */
44
+ export declare function useListGridUrlState(options: UseListGridUrlStateOptions): UseListGridUrlStateReturn;
45
+ export default useListGridUrlState;