@solidxai/core-ui 0.1.9-beta.17 → 0.1.9-beta.19

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 (258) hide show
  1. package/dist/adapters/auth/handleLogout.d.ts +1 -1
  2. package/dist/adapters/auth/handleLogout.d.ts.map +1 -1
  3. package/dist/adapters/auth/handleLogout.js +20 -32
  4. package/dist/adapters/auth/handleLogout.js.map +1 -1
  5. package/dist/adapters/auth/handleLogout.ts +7 -14
  6. package/dist/components/auth/SolidLogin.js +2 -2
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +2 -2
  9. package/dist/components/auth/SolidRegister.js +1 -1
  10. package/dist/components/auth/SolidRegister.js.map +1 -1
  11. package/dist/components/auth/SolidRegister.tsx +1 -1
  12. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  13. package/dist/components/common/SettingsComponent.js +3 -0
  14. package/dist/components/common/SettingsComponent.js.map +1 -1
  15. package/dist/components/common/SettingsComponent.tsx +3 -0
  16. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  17. package/dist/components/common/SocialMediaLogin.js +1 -1
  18. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  19. package/dist/components/common/SocialMediaLogin.tsx +4 -0
  20. package/dist/components/common/SolidFaviconProvider.d.ts +3 -0
  21. package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -0
  22. package/dist/components/common/SolidFaviconProvider.js +102 -0
  23. package/dist/components/common/SolidFaviconProvider.js.map +1 -0
  24. package/dist/components/common/SolidFaviconProvider.tsx +55 -0
  25. package/dist/components/core/card/SolidCardView.js +1 -1
  26. package/dist/components/core/card/SolidCardView.js.map +1 -1
  27. package/dist/components/core/card/SolidCardView.tsx +1 -1
  28. package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
  29. package/dist/components/core/chatter/SolidMessageComposer.js +2 -1
  30. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  31. package/dist/components/core/chatter/SolidMessageComposer.tsx +2 -0
  32. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  33. package/dist/components/core/common/FilterComponent.js +4 -2
  34. package/dist/components/core/common/FilterComponent.js.map +1 -1
  35. package/dist/components/core/common/FilterComponent.tsx +5 -2
  36. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
  37. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +1 -10
  38. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
  39. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +1 -8
  40. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
  41. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +6 -11
  42. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  43. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +5 -31
  44. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +1 -1
  45. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
  46. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +2 -0
  47. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  48. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -0
  49. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  50. package/dist/components/core/common/SolidGlobalSearchElement.js +47 -13
  51. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  52. package/dist/components/core/common/SolidGlobalSearchElement.tsx +38 -4
  53. package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts.map +1 -1
  54. package/dist/components/core/common/SolidSaveCustomFilterForm.js +1 -1
  55. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
  56. package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +0 -1
  57. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts +16 -0
  58. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts.map +1 -0
  59. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js +31 -0
  60. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js.map +1 -0
  61. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.tsx +43 -0
  62. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts +3 -0
  63. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts.map +1 -0
  64. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js +141 -0
  65. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js.map +1 -0
  66. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.tsx +205 -0
  67. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts +4 -0
  68. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -0
  69. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +112 -0
  70. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -0
  71. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +146 -0
  72. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +11 -0
  73. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -0
  74. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +22 -0
  75. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -0
  76. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +36 -0
  77. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts +3 -0
  78. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts.map +1 -0
  79. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js +133 -0
  80. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js.map +1 -0
  81. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.ts +76 -0
  82. package/dist/components/core/form/SolidFormView.js +1 -1
  83. package/dist/components/core/form/SolidFormView.js.map +1 -1
  84. package/dist/components/core/form/SolidFormView.tsx +1 -1
  85. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
  86. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +12 -3
  87. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  88. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +21 -16
  89. package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
  90. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +15 -5
  91. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  92. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +21 -9
  93. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +12 -0
  94. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -0
  95. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +168 -0
  96. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -0
  97. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +241 -0
  98. package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
  99. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -0
  100. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
  101. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +2 -0
  102. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  103. package/dist/components/core/list/SolidListView.js +102 -87
  104. package/dist/components/core/list/SolidListView.js.map +1 -1
  105. package/dist/components/core/list/SolidListView.tsx +38 -19
  106. package/dist/components/core/list/SolidListViewColumn.d.ts +1 -0
  107. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  108. package/dist/components/core/list/SolidListViewColumn.js +25 -0
  109. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  110. package/dist/components/core/list/SolidListViewColumn.tsx +12 -0
  111. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  112. package/dist/components/core/list/SolidListViewConfigure.js +11 -10
  113. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  114. package/dist/components/core/list/SolidListViewConfigure.tsx +4 -2
  115. package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
  116. package/dist/components/core/list/SolidListViewHeaderButton.js +9 -3
  117. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  118. package/dist/components/core/list/SolidListViewHeaderButton.tsx +12 -7
  119. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
  120. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +19 -7
  121. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  122. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +19 -6
  123. package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
  124. package/dist/components/core/list/SolidListViewRowActionMenuItem.js +14 -5
  125. package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
  126. package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +17 -6
  127. package/dist/components/core/list/SolidListViewRowActionsMenu.d.ts.map +1 -1
  128. package/dist/components/core/list/SolidListViewRowActionsMenu.js +7 -1
  129. package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
  130. package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +5 -1
  131. package/dist/components/core/list/columns/SolidBooleanColumn.d.ts.map +1 -1
  132. package/dist/components/core/list/columns/SolidBooleanColumn.js +4 -6
  133. package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
  134. package/dist/components/core/list/columns/SolidBooleanColumn.tsx +1 -3
  135. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  136. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +3 -2
  137. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  138. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +3 -2
  139. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
  140. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +3 -2
  141. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  142. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -2
  143. package/dist/components/core/model/CreateModel.css +48 -0
  144. package/dist/components/core/model/CreateModel.d.ts +1 -0
  145. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  146. package/dist/components/core/model/CreateModel.js +69 -104
  147. package/dist/components/core/model/CreateModel.js.map +1 -1
  148. package/dist/components/core/model/CreateModel.tsx +92 -204
  149. package/dist/components/core/model/FieldMetaData.d.ts +1 -1
  150. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  151. package/dist/components/core/model/FieldMetaData.js +6 -22
  152. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  153. package/dist/components/core/model/FieldMetaData.tsx +6 -45
  154. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  155. package/dist/components/core/model/FieldMetaDataForm.js +196 -222
  156. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  157. package/dist/components/core/model/FieldMetaDataForm.tsx +0 -72
  158. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  159. package/dist/components/core/model/ModelMetaData.js +7 -7
  160. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  161. package/dist/components/core/model/ModelMetaData.tsx +7 -0
  162. package/dist/components/core/module/CreateModule.css +44 -0
  163. package/dist/components/core/module/CreateModule.d.ts +1 -0
  164. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  165. package/dist/components/core/module/CreateModule.js +40 -43
  166. package/dist/components/core/module/CreateModule.js.map +1 -1
  167. package/dist/components/core/module/CreateModule.tsx +243 -247
  168. package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
  169. package/dist/components/core/module/ModuleListViewData.js +47 -7
  170. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  171. package/dist/components/core/module/ModuleListViewData.tsx +58 -0
  172. package/dist/components/core/module/ModuleMetadataExplorer.css +638 -0
  173. package/dist/components/core/module/ModuleMetadataExplorer.d.ts +15 -0
  174. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -0
  175. package/dist/components/core/module/ModuleMetadataExplorer.js +666 -0
  176. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -0
  177. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1000 -0
  178. package/dist/components/core/module/ModulePackageDialog.css +540 -0
  179. package/dist/components/core/module/ModulePackageDialog.d.ts +16 -0
  180. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -0
  181. package/dist/components/core/module/ModulePackageDialog.js +625 -0
  182. package/dist/components/core/module/ModulePackageDialog.js.map +1 -0
  183. package/dist/components/core/module/ModulePackageDialog.tsx +906 -0
  184. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  185. package/dist/components/layout/AdminTopHeader.js +1 -1
  186. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  187. package/dist/components/layout/AdminTopHeader.tsx +2 -1
  188. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  189. package/dist/components/layout/user-profile-menu.js +57 -33
  190. package/dist/components/layout/user-profile-menu.js.map +1 -1
  191. package/dist/components/layout/user-profile-menu.tsx +11 -59
  192. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  193. package/dist/components/shad-cn-ui/SolidAutocomplete.js +15 -0
  194. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  195. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +13 -0
  196. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
  197. package/dist/components/shad-cn-ui/SolidButton.js +10 -2
  198. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
  199. package/dist/components/shad-cn-ui/SolidButton.tsx +10 -2
  200. package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -1
  201. package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
  202. package/dist/components/shad-cn-ui/SolidIcon.js +1 -0
  203. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  204. package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -0
  205. package/dist/components/shad-cn-ui/SolidPasswordInput.d.ts.map +1 -1
  206. package/dist/components/shad-cn-ui/SolidPasswordInput.js +1 -1
  207. package/dist/components/shad-cn-ui/SolidPasswordInput.js.map +1 -1
  208. package/dist/components/shad-cn-ui/SolidPasswordInput.tsx +1 -0
  209. package/dist/helpers/buttonEnvironment.d.ts +5 -0
  210. package/dist/helpers/buttonEnvironment.d.ts.map +1 -0
  211. package/dist/helpers/buttonEnvironment.js +30 -0
  212. package/dist/helpers/buttonEnvironment.js.map +1 -0
  213. package/dist/helpers/buttonEnvironment.ts +35 -0
  214. package/dist/helpers/buttonPresentation.d.ts +24 -0
  215. package/dist/helpers/buttonPresentation.d.ts.map +1 -0
  216. package/dist/helpers/buttonPresentation.js +28 -0
  217. package/dist/helpers/buttonPresentation.js.map +1 -0
  218. package/dist/helpers/buttonPresentation.ts +53 -0
  219. package/dist/helpers/fileTypeIcon.d.ts +12 -0
  220. package/dist/helpers/fileTypeIcon.d.ts.map +1 -0
  221. package/dist/helpers/fileTypeIcon.js +37 -0
  222. package/dist/helpers/fileTypeIcon.js.map +1 -0
  223. package/dist/helpers/fileTypeIcon.tsx +65 -0
  224. package/dist/helpers/registry.d.ts.map +1 -1
  225. package/dist/helpers/registry.js +10 -0
  226. package/dist/helpers/registry.js.map +1 -1
  227. package/dist/helpers/registry.ts +10 -0
  228. package/dist/helpers/waitForBackendAvailability.d.ts +7 -0
  229. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -0
  230. package/dist/helpers/waitForBackendAvailability.js +86 -0
  231. package/dist/helpers/waitForBackendAvailability.js.map +1 -0
  232. package/dist/helpers/waitForBackendAvailability.ts +37 -0
  233. package/dist/index.d.ts +3 -1
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +3 -1
  236. package/dist/index.js.map +1 -1
  237. package/dist/index.ts +19 -0
  238. package/dist/redux/api/moduleApi.d.ts +26 -1
  239. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  240. package/dist/redux/api/moduleApi.js +237 -1
  241. package/dist/redux/api/moduleApi.js.map +1 -1
  242. package/dist/redux/api/moduleApi.ts +181 -1
  243. package/dist/redux/store/defaultStoreConfig.d.ts +22 -0
  244. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  245. package/dist/redux/store/solidEntityApiPool.d.ts +1 -0
  246. package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
  247. package/dist/redux/store/solidEntityApiPool.js +4 -0
  248. package/dist/redux/store/solidEntityApiPool.js.map +1 -1
  249. package/dist/redux/store/solidEntityApiPool.ts +4 -0
  250. package/dist/resources/globals.css +56 -0
  251. package/dist/resources/shadcn-base.css +29 -4
  252. package/dist/routes/AppEventListener.d.ts.map +1 -1
  253. package/dist/routes/AppEventListener.js +58 -8
  254. package/dist/routes/AppEventListener.js.map +1 -1
  255. package/dist/routes/AppEventListener.tsx +69 -8
  256. package/dist/types/index.d.ts +1 -0
  257. package/dist/types/jsoneditor.d.ts +4 -0
  258. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CreateModel.js","sourceRoot":"","sources":["../../../../src/components/core/model/CreateModel.tsx"],"names":[],"mappings":"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","sourcesContent":["\n\nimport { useGetFieldDefaultMetaDataQuery } from \"../../../redux/api/fieldApi\";\nimport { useCreatemodelMutation, useDeletemodelMutation, useLazyGetModelsQuery, useUpdatemodelMutation } from \"../../../redux/api/modelApi\";\nimport { FetchBaseQueryError } from \"@reduxjs/toolkit/dist/query\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport FieldMetaData from \"./FieldMetaData\";\nimport ModelMetaData from \"./ModelMetaData\";\nimport { SolidFormStepper } from \"../../../components/common/SolidFormStepper\";\nimport { SolidBreadcrumb } from \"../../../components/common/SolidBreadcrumb\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { SolidButton, SolidDialog, SolidDivider, SolidPopover, SolidPopoverContent, SolidPopoverTrigger, SolidTabGroup } from \"../../shad-cn-ui\";\nimport { Settings, Trash2 } from \"lucide-react\";\nimport { SolidFormFooter } from \"../form/SolidFormFooter\";\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\nconst TABS = [\"model\", \"fields\"] as const;\ntype TabValue = typeof TABS[number];\n\nconst getTabErrorState = (tab?: TabValue): Record<TabValue, boolean> => ({\n model: tab === \"model\",\n fields: tab === \"fields\",\n});\n\nconst CreateModel = ({ data, params }: any) => {\n\n const dispatch = useDispatch();\n const router = useRouter();\n const pathname = usePathname();\n const [deleteEntity, setDeleteEntity] = useState(false);\n const [isLoadingData, setIsLoadingData] = useState(data ? true : false);\n const formikModelMetadataRef = useRef<any>();\n const formikFieldsMetadataRef = useRef();\n\n const [modelMetaData, setModelMetaData] = useState<any>();\n const [fieldMetaData, setFieldMetaData] = useState<any>([]);\n\n const { data: fieldDefaultMetaData, refetch } = useGetFieldDefaultMetaDataQuery(null);\n const [allModelsNames, setAllModelsNames] = useState([]);\n\n const [triggerGetModels, { data: allmodels, isLoading: isAllModelsLoaded, error: allModelsError }] =\n useLazyGetModelsQuery();\n\n\n const [\n createModel,\n { isLoading: isCreateModelLoading, isSuccess: isCreateModelSuccess, isError: isCreateModelError, error: createModelError, data: newModel },\n ] = useCreatemodelMutation();\n\n const [\n updateModel,\n { isLoading: isUpdatedModelUpdating, isSuccess: isUpdatedModelSuceess, isError: isUpdateModelError, error: updateModelError, data: updatedModel },\n ] = useUpdatemodelMutation();\n const [\n deleteModel,\n { isLoading: isModelDeleted, isSuccess: isDeleteModelSuceess, isError: isDeleteModelError, error: deleteModelError, data: DeletedModel },\n ] = useDeletemodelMutation();\n\n const [activeTab, setActiveTab] = useState<TabValue>(\"model\");\n const [tabErrors, setTabErrors] = useState<Record<TabValue, boolean>>(getTabErrorState());\n const [formErrors, setFormErrors] = useState<Record<string, string>>({});\n\n const nextTab = () => {\n const currentIndex = TABS.indexOf(activeTab);\n const nextValue = TABS[Math.min(currentIndex + 1, TABS.length - 1)];\n setActiveTab(nextValue);\n };\n\n const handleTabChange = (nextValue: TabValue) => {\n if (nextValue === activeTab) {\n return;\n }\n if (activeTab === \"model\") {\n formikModelMetadataRef.current?.handleSubmit();\n }\n setActiveTab(nextValue);\n };\n\n useEffect(() => {\n if (data) {\n const isLegacyTable = data.legacyTableType !== 'none'\n const hasExistingId = data.legacyTableType === 'existing_id'\n const modelData = {\n ...data, moduleId: data?.module?.id, parentModelId: data?.parentModel, isLegacyTable, hasExistingId\n }\n\n setIsLoadingData(false);\n setModelMetaData(modelData);\n const fieldData = data.fields.map((f: any) => {\n const fieldCopy = { ...f }; // Create a shallow copy of the field object\n fieldCopy.identifier = f.id; // Add the identifier property\n if (fieldCopy.type == \"mediaSingle\" || fieldCopy.type == \"mediaMultiple\") {\n fieldCopy.mediaMaxSizeKb = f.mediaMaxSizeKb / 1024; // Add the identifier property\n\n }\n return fieldCopy;\n })\n setFieldMetaData(fieldData.sort((a: any, b: any) => b.id - a.id))\n }\n }, [data])\n\n\n useEffect(() => {\n const queryData = {\n offset: 0,\n limit: 1000,\n };\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n triggerGetModels(queryString);\n }, [isDeleteModelSuceess]);\n\n useEffect(() => {\n if (allmodels) {\n if (data) {\n setAllModelsNames(allmodels?.records.filter((i: any) => i.id !== data.id).map((e: any) => e.singularName));\n\n } else {\n\n setAllModelsNames(allmodels?.records.map((e: any) => e.singularName));\n }\n }\n }, [allmodels, data]);\n\n\n const handleSubmit = async () => {\n\n if (formikModelMetadataRef.current) {\n await formikModelMetadataRef.current.submitForm(); // Call the handleSubmit function from the formik instance\n\n // @ts-ignore\n // formikModelMetadataRef.current.validateForm().then(() => {\n // if (Object.keys(formikModelMetadataRef?.current?.errors).length === 0) {\n\n // if (fieldMetaData.length > 0) {\n // handleFormSubmit();\n // } else {\n // if (activeIndex === 0) {\n // nextTab();\n // // showError({ error: \"Please add Atleast one field\" });\n // handleError([\"Please add Atleast one field\"])\n // } else {\n // handleError([\"Please add Atleast one field\"])\n // // showError({ error: \"Please add Atleast one field\" });\n // }\n // }\n // }\n // });\n\n formikModelMetadataRef.current.validateForm().then((errors: any) => {\n let firstErrorTab: TabValue | undefined;\n if (Object.keys(errors).length > 0) {\n setFormErrors(errors);\n const errorMessages = Object.values(errors);\n errorMessages.forEach((error) => {\n dispatch(showToast({ severity: 'error', summary: 'Error', detail: Array.isArray(error) ? error.join(', ') : String(error) }));\n });\n\n firstErrorTab = \"model\"; // Model Metadata tab has errors\n } else {\n setFormErrors({});\n }\n\n if (fieldMetaData.length === 0) {\n dispatch(showToast({ severity: 'error', summary: 'Error', detail: ERROR_MESSAGES.ADD_ATLEAST_ONE_FIELD }));\n firstErrorTab = firstErrorTab ?? \"fields\"; // If no prior error, set to Field tab\n }\n\n if (firstErrorTab !== undefined) {\n setTabErrors(getTabErrorState(firstErrorTab)); // Set error only on the first tab with an issue\n setActiveTab(firstErrorTab); // Switch to the tab with an error\n } else {\n setTabErrors(getTabErrorState());\n handleFormSubmit();\n }\n });\n }\n };\n\n\n const handleFormSubmit = async () => {\n\n let legacyTableConfig = {};\n\n let legacyTableType = 'none';\n if (modelMetaData?.isLegacyTable && modelMetaData?.hasExistingId) {\n legacyTableType = 'existing_id';\n } else if (modelMetaData?.isLegacyTable) {\n legacyTableType = 'generated_id';\n }\n legacyTableConfig = { legacyTableType };\n\n if (modelMetaData?.isLegacyTable) {\n const hasPrimaryKey = fieldMetaData.some(\n (field: any) => field.isPrimaryKey === true\n );\n\n if (!hasPrimaryKey) {\n dispatch(showToast({ severity: \"error\", summary: \"Primary Key Required\", detail: \"Legacy tables set at least one field marked as Primary Key. Please mark a field as Primary Key before proceeding.\", life: 5000 }));\n return;\n }\n }\n\n if (data) {\n const fieldData = fieldMetaData.map(({ createdAt, updatedAt, deletedAt, mediaStorageProvider, identifier, ...rest }: any) => {\n if (rest.mediaMaxSizeKb) {\n rest.mediaMaxSizeKb = rest.mediaMaxSizeKb ? rest.mediaMaxSizeKb * 1024 : 0\n }\n return rest\n });\n const { module, parentModel, createdAt, updatedAt, id, deletedAt, ...modelData } = modelMetaData;\n const updateData = { ...modelData, displayName: modelData.displayName.trim(), fields: fieldData, ...legacyTableConfig };\n updateModel({ id: data.id, data: updateData });\n }\n else {\n if (modelMetaData) {\n const fieldData = fieldMetaData.map(({ mediaStorageProvider, identifier, ...rest }: any) => {\n if (rest.mediaMaxSizeKb) {\n rest.mediaMaxSizeKb = rest.mediaMaxSizeKb ? rest.mediaMaxSizeKb * 1024 : 0\n }\n return rest\n });\n const { module, parentModel, ...modelData } = modelMetaData;\n const data = { ...modelData, displayName: modelData.displayName.trim(), fields: fieldData, ...legacyTableConfig };\n createModel(data);\n if (isCreateModelSuccess) {\n\n }\n }\n }\n };\n\n const deleteModelFunction = async () => {\n deleteModel(data?.id);\n }\n\n useEffect(() => {\n if (isCreateModelSuccess == true || isUpdatedModelSuceess == true || isDeleteModelSuceess == true) {\n // router.push(`/admin/app-builder/model/all`);\n router.back();\n }\n }, [isCreateModelSuccess, isUpdatedModelSuceess, isDeleteModelSuceess])\n\n const showError = async (errors: any) => {\n const errorMessages = Object.values(errors);\n\n if (errorMessages.length > 0) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));\n }\n };\n\n const isFetchBaseQueryErrorWithErrorResponse = (error: any): error is FetchBaseQueryError & { data: ErrorResponseData } => {\n return error && typeof error === 'object' && 'data' in error && 'message' in error.data;\n }\n\n // const handleError = (errorToast: any) => {\n // let errorMessage: any = ['An error occurred'];\n\n // if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n // errorMessage = errorToast.data.message;\n // } else {\n // errorMessage = ['Something went wrong'];\n // }\n\n // toast?.current?.show({\n // severity: 'error',\n // summary: 'Error',\n // detail: errorMessage,\n // life: 3000,\n // //@ts-ignore\n // content: (props) => (\n // <div className=\"flex flex-column align-items-left\" style={{ flex: \"1\" }}>\n // {Array.isArray(errorMessage) ? (\n // errorMessage.map((message, index) => (\n // <div className=\"flex align-items-center gap-2\" key={index}>\n // <span className=\"font-bold text-900\">{message.trim()}</span>\n // </div>\n // ))\n // ) : (\n // <div className=\"flex align-items-center gap-2\">\n // <span className=\"font-bold text-900\">{errorMessage?.trim()}</span>\n // </div>\n // )}\n // </div>\n // ),\n // });\n // };\n\n\n // Error Handler \n // Added useEffect to remove active tab class border color if error is there.\n\n useEffect(() => {\n const errors = [\n { isError: isCreateModelError, error: createModelError },\n { isError: isDeleteModelError, error: deleteModelError },\n { isError: isUpdateModelError, error: updateModelError },\n ];\n if (errors.length > 0) {\n // Handle any error\n errors.forEach(({ isError, error }) => {\n if (isError && error) {\n const errorMessage = error && typeof error === 'object' && 'data' in error && 'message' in (error as any).data\n ? (error as any).data.message\n : 'Something went wrong';\n const detail = Array.isArray(errorMessage) ? errorMessage.join(', ') : String(errorMessage);\n dispatch(showToast({ severity: 'error', summary: 'Error', detail }));\n }\n });\n }\n\n }, [isCreateModelError, isDeleteModelError, isUpdateModelError])\n const [formActionsMenuOpen, setFormActionsMenuOpen] = useState(false);\n const formActionDropdown = () => (\n <SolidPopover open={formActionsMenuOpen} onOpenChange={setFormActionsMenuOpen}>\n <SolidPopoverTrigger asChild>\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n aria-label=\"Model actions\"\n >\n <Settings size={16} />\n </SolidButton>\n </SolidPopoverTrigger>\n <SolidPopoverContent\n side=\"bottom\"\n align=\"end\"\n className=\"solid-form-actions-popover\"\n onClick={(event) => event.stopPropagation()}\n >\n <button\n type=\"button\"\n className=\"solid-row-action-button solid-row-action-button-danger\"\n onClick={() => {\n setFormActionsMenuOpen(false);\n setDeleteEntity(true);\n }}\n >\n <Trash2 size={14} className=\"solid-row-action-button-icon\" />\n <span className=\"solid-row-action-button-label\">Delete</span>\n </button>\n </SolidPopoverContent>\n </SolidPopover>\n );\n\n const [isDirty, setIsDirty] = useState(false);\n const isCreateMode = params.id === \"new\";\n const headerTitleBase = isCreateMode ? \"Create Model\" : \"Edit Model\";\n const headerTitle = `${headerTitleBase}${modelMetaData?.displayName ? ` - ${modelMetaData.displayName}` : \"\"}`;\n const canShowActionsMenu = !isCreateMode && data?.isSystem !== true;\n const handleCancel = () => router.back();\n\n\n return (\n <div className=\"solid-form-wrapper\">\n <div className=\"solid-form-section\" style={{ borderRight: params.embeded !== true ? '1px solid var(--primary-light-color)' : '' }} >\n <div>\n <div className=\"solid-form-header flex align-items-center justify-content-between gap-3 flex-wrap\">\n <div className=\"flex flex-column gap-1\">\n {/* <span className=\"text-sm text-color-secondary uppercase tracking-wider\">Model</span>\n <div className=\"form-wrapper-title solid-long-text-wrapper m-0\">{headerTitle}</div> */}\n </div>\n <div className=\"flex align-items-center gap-2\">\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n type=\"button\"\n onClick={handleCancel}\n className=\"bg-primary-reverse\"\n >\n Cancel\n </SolidButton>\n {isDirty && (\n <SolidButton size=\"sm\" type=\"button\" onClick={handleSubmit}>\n Save\n </SolidButton>\n )}\n {canShowActionsMenu && formActionDropdown()}\n </div>\n </div>\n {/* <SolidFormHeader /> */}\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n <SolidTabGroup\n className=\"relative\"\n panelClassName=\"px-0\"\n tabs={[\n {\n value: \"model\",\n label: <span className={tabErrors.model ? \"tab-error-heading\" : \"\"}>Model</span>,\n content: (\n <ModelMetaData\n modelMetaData={modelMetaData}\n setModelMetaData={setModelMetaData}\n allModelsNames={allModelsNames}\n deleteModelFunction={deleteModelFunction}\n nextTab={nextTab}\n formikModelMetadataRef={formikModelMetadataRef}\n params={params}\n formErrors={formErrors}\n setIsDirty={setIsDirty}\n ></ModelMetaData>\n ),\n },\n {\n value: \"fields\",\n label: <span className={tabErrors.fields ? \"tab-error-heading\" : \"\"}>Fields</span>,\n content: (\n <FieldMetaData\n modelMetaData={modelMetaData}\n fieldMetaData={fieldMetaData}\n setFieldMetaData={setFieldMetaData}\n deleteModelFunction={deleteModelFunction}\n nextTab={nextTab}\n formikFieldsMetadataRef={formikFieldsMetadataRef}\n params={params}\n setIsDirty={setIsDirty}\n ></FieldMetaData>\n ),\n },\n ]}\n value={activeTab}\n onValueChange={(value) => {\n const next = TABS.find((tab) => tab === value);\n if (next) {\n handleTabChange(next);\n }\n }}\n />\n </div>\n </div>\n <SolidFormFooter params={params}></SolidFormFooter>\n\n </div>\n {/* <div style={{ width: '22.5%' }}></div> */}\n <SolidDialog header=\"Delete Model\" headerClassName=\"py-2\" className=\"solid-confirm-dialog\" contentClassName=\"px-0 pb-0\" visible={deleteEntity} style={{ width: '20vw' }} onHide={() => { if (!deleteEntity) return; setDeleteEntity(false); }}>\n <SolidDivider className=\"m-0\" />\n <div className=\"p-4\">\n <p className=\"m-0 solid-primary-title\" style={{ fontSize: 16 }}>\n Are you sure you want to delete this Model?\n </p>\n <p className=\"\" style={{ color: 'var{--solid-grey-500}' }}>{modelMetaData?.singularName}</p>\n <div className=\"flex align-items-center gap-2 mt-3\">\n <SolidButton size=\"sm\" onClick={deleteModelFunction}>\n Delete\n </SolidButton>\n <SolidButton size=\"sm\" variant=\"outline\" onClick={() => setDeleteEntity(false)}>\n Cancel\n </SolidButton>\n </div>\n </div>\n </SolidDialog>\n\n </div>\n );\n};\n\nexport default CreateModel;\n"]}
1
+ {"version":3,"file":"CreateModel.js","sourceRoot":"","sources":["../../../../src/components/core/model/CreateModel.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { useGetFieldDefaultMetaDataQuery } from \"../../../redux/api/fieldApi\";\nimport { useCreatemodelMutation, useLazyGetModelsQuery, useUpdatemodelMutation } from \"../../../redux/api/modelApi\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport FieldMetaData from \"./FieldMetaData\";\nimport ModelMetaData from \"./ModelMetaData\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { SolidButton, SolidTabGroup } from \"../../shad-cn-ui\";\nimport { SolidFormFooter } from \"../form/SolidFormFooter\";\nimport { ModuleMetadataExplorer } from \"../module/ModuleMetadataExplorer\";\nimport \"./CreateModel.css\";\n\nconst TABS = [\"model\", \"fields\", \"explorer\"] as const;\ntype TabValue = typeof TABS[number];\n\nconst getTabErrorState = (tab?: TabValue): Record<TabValue, boolean> => ({\n model: tab === \"model\",\n fields: tab === \"fields\",\n explorer: false,\n});\n\nconst CreateModel = ({ data, params }: any) => {\n\n const dispatch = useDispatch();\n const router = useRouter();\n const isCreateMode = params.id === \"new\";\n const formikModelMetadataRef = useRef<any>();\n const formikFieldsMetadataRef = useRef();\n\n const [modelMetaData, setModelMetaData] = useState<any>();\n const [fieldMetaData, setFieldMetaData] = useState<any>([]);\n\n useGetFieldDefaultMetaDataQuery(null);\n const [allModelsNames, setAllModelsNames] = useState([]);\n\n const [triggerGetModels, { data: allmodels }] =\n useLazyGetModelsQuery();\n\n\n const [\n createModel,\n { isSuccess: isCreateModelSuccess, isError: isCreateModelError, error: createModelError },\n ] = useCreatemodelMutation();\n\n const [\n updateModel,\n { isSuccess: isUpdatedModelSuceess, isError: isUpdateModelError, error: updateModelError },\n ] = useUpdatemodelMutation();\n const [activeTab, setActiveTab] = useState<TabValue>(\"model\");\n const [tabErrors, setTabErrors] = useState<Record<TabValue, boolean>>(getTabErrorState());\n const [formErrors, setFormErrors] = useState<Record<string, string>>({});\n const deleteModelFunction = async () => {};\n const availableTabs: readonly TabValue[] = isCreateMode ? [\"model\", \"fields\"] : TABS;\n\n const nextTab = () => {\n const currentIndex = availableTabs.indexOf(activeTab as (typeof availableTabs)[number]);\n const nextValue = availableTabs[Math.min(Math.max(currentIndex, 0) + 1, availableTabs.length - 1)];\n setActiveTab(nextValue);\n };\n\n const handleTabChange = (nextValue: TabValue) => {\n if (nextValue === activeTab) {\n return;\n }\n if (activeTab === \"model\") {\n formikModelMetadataRef.current?.handleSubmit();\n }\n setActiveTab(nextValue);\n };\n\n useEffect(() => {\n if (data) {\n const isLegacyTable = data.legacyTableType !== 'none'\n const hasExistingId = data.legacyTableType === 'existing_id'\n const modelData = {\n ...data, moduleId: data?.module?.id, parentModelId: data?.parentModel, isLegacyTable, hasExistingId\n }\n\n setModelMetaData(modelData);\n const fieldData = data.fields.map((f: any) => {\n const fieldCopy = { ...f }; // Create a shallow copy of the field object\n fieldCopy.identifier = f.id; // Add the identifier property\n if (fieldCopy.type == \"mediaSingle\" || fieldCopy.type == \"mediaMultiple\") {\n fieldCopy.mediaMaxSizeKb = f.mediaMaxSizeKb / 1024; // Add the identifier property\n\n }\n return fieldCopy;\n })\n setFieldMetaData(fieldData.sort((a: any, b: any) => b.id - a.id))\n }\n }, [data])\n\n\n useEffect(() => {\n const queryData = {\n offset: 0,\n limit: 1000,\n };\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n triggerGetModels(queryString);\n }, []);\n\n useEffect(() => {\n if (allmodels) {\n if (data) {\n setAllModelsNames(allmodels?.records.filter((i: any) => i.id !== data.id).map((e: any) => e.singularName));\n\n } else {\n\n setAllModelsNames(allmodels?.records.map((e: any) => e.singularName));\n }\n }\n }, [allmodels, data]);\n\n\n const handleSubmit = async () => {\n\n if (formikModelMetadataRef.current) {\n await formikModelMetadataRef.current.submitForm(); // Call the handleSubmit function from the formik instance\n\n // @ts-ignore\n // formikModelMetadataRef.current.validateForm().then(() => {\n // if (Object.keys(formikModelMetadataRef?.current?.errors).length === 0) {\n\n // if (fieldMetaData.length > 0) {\n // handleFormSubmit();\n // } else {\n // if (activeIndex === 0) {\n // nextTab();\n // // showError({ error: \"Please add Atleast one field\" });\n // handleError([\"Please add Atleast one field\"])\n // } else {\n // handleError([\"Please add Atleast one field\"])\n // // showError({ error: \"Please add Atleast one field\" });\n // }\n // }\n // }\n // });\n\n formikModelMetadataRef.current.validateForm().then((errors: any) => {\n let firstErrorTab: TabValue | undefined;\n if (Object.keys(errors).length > 0) {\n setFormErrors(errors);\n const errorMessages = Object.values(errors);\n errorMessages.forEach((error) => {\n dispatch(showToast({ severity: 'error', summary: 'Error', detail: Array.isArray(error) ? error.join(', ') : String(error) }));\n });\n\n firstErrorTab = \"model\"; // Model Metadata tab has errors\n } else {\n setFormErrors({});\n }\n\n if (fieldMetaData.length === 0) {\n dispatch(showToast({ severity: 'error', summary: 'Error', detail: ERROR_MESSAGES.ADD_ATLEAST_ONE_FIELD }));\n firstErrorTab = firstErrorTab ?? \"fields\"; // If no prior error, set to Field tab\n }\n\n if (firstErrorTab !== undefined) {\n setTabErrors(getTabErrorState(firstErrorTab)); // Set error only on the first tab with an issue\n setActiveTab(firstErrorTab); // Switch to the tab with an error\n } else {\n setTabErrors(getTabErrorState());\n handleFormSubmit();\n }\n });\n }\n };\n\n\n const handleFormSubmit = async () => {\n\n let legacyTableConfig = {};\n\n let legacyTableType = 'none';\n if (modelMetaData?.isLegacyTable && modelMetaData?.hasExistingId) {\n legacyTableType = 'existing_id';\n } else if (modelMetaData?.isLegacyTable) {\n legacyTableType = 'generated_id';\n }\n legacyTableConfig = { legacyTableType };\n\n if (modelMetaData?.isLegacyTable) {\n const hasPrimaryKey = fieldMetaData.some(\n (field: any) => field.isPrimaryKey === true\n );\n\n if (!hasPrimaryKey) {\n dispatch(showToast({ severity: \"error\", summary: \"Primary Key Required\", detail: \"Legacy tables set at least one field marked as Primary Key. Please mark a field as Primary Key before proceeding.\", life: 5000 }));\n return;\n }\n }\n\n if (data) {\n const fieldData = fieldMetaData.map(({ createdAt, updatedAt, deletedAt, mediaStorageProvider, identifier, ...rest }: any) => {\n if (rest.mediaMaxSizeKb) {\n rest.mediaMaxSizeKb = rest.mediaMaxSizeKb ? rest.mediaMaxSizeKb * 1024 : 0\n }\n return rest\n });\n const { module, parentModel, createdAt, updatedAt, id, deletedAt, ...modelData } = modelMetaData;\n const updateData = { ...modelData, displayName: modelData.displayName.trim(), fields: fieldData, ...legacyTableConfig };\n updateModel({ id: data.id, data: updateData });\n }\n else {\n if (modelMetaData) {\n const fieldData = fieldMetaData.map(({ mediaStorageProvider, identifier, ...rest }: any) => {\n if (rest.mediaMaxSizeKb) {\n rest.mediaMaxSizeKb = rest.mediaMaxSizeKb ? rest.mediaMaxSizeKb * 1024 : 0\n }\n return rest\n });\n const { module, parentModel, ...modelData } = modelMetaData;\n const data = { ...modelData, displayName: modelData.displayName.trim(), fields: fieldData, ...legacyTableConfig };\n createModel(data);\n if (isCreateModelSuccess) {\n\n }\n }\n }\n };\n\n useEffect(() => {\n if (isCreateModelSuccess == true || isUpdatedModelSuceess == true) {\n // router.push(`/admin/app-builder/model/all`);\n router.back();\n }\n }, [isCreateModelSuccess, isUpdatedModelSuceess])\n\n useEffect(() => {\n const errors = [\n { isError: isCreateModelError, error: createModelError },\n { isError: isUpdateModelError, error: updateModelError },\n ];\n if (errors.length > 0) {\n // Handle any error\n errors.forEach(({ isError, error }) => {\n if (isError && error) {\n const errorMessage = error && typeof error === 'object' && 'data' in error && 'message' in (error as any).data\n ? (error as any).data.message\n : 'Something went wrong';\n const detail = Array.isArray(errorMessage) ? errorMessage.join(', ') : String(errorMessage);\n dispatch(showToast({ severity: 'error', summary: 'Error', detail }));\n }\n });\n }\n\n }, [isCreateModelError, isUpdateModelError])\n\n const [isDirty, setIsDirty] = useState(false);\n const [fieldDeleted, setFieldDeleted] = useState(false);\n const explorerModuleName = data?.module?.name ?? modelMetaData?.module?.name ?? \"\";\n const explorerModelSingularName = data?.singularName ?? modelMetaData?.singularName ?? \"\";\n const isReadOnlyModelExplorer = Boolean(\n modelMetaData?.isSystem ||\n data?.isSystem ||\n explorerModuleName.toLowerCase() === \"solid-core\"\n );\n const shouldShowTabSave = !isCreateMode ? activeTab === \"fields\" && fieldDeleted : activeTab !== \"explorer\" && isDirty;\n\n const modelTabContent = (\n <div className=\"solid-model-form-content is-tabbed\">\n <ModelMetaData\n modelMetaData={modelMetaData}\n setModelMetaData={setModelMetaData}\n allModelsNames={allModelsNames}\n deleteModelFunction={deleteModelFunction}\n nextTab={nextTab}\n formikModelMetadataRef={formikModelMetadataRef}\n params={params}\n formErrors={formErrors}\n setIsDirty={setIsDirty}\n />\n </div>\n );\n\n const fieldsTabContent = (\n <div className=\"solid-model-form-content is-tabbed\">\n <FieldMetaData\n modelMetaData={modelMetaData}\n fieldMetaData={fieldMetaData}\n setFieldMetaData={setFieldMetaData}\n deleteModelFunction={deleteModelFunction}\n nextTab={nextTab}\n formikFieldsMetadataRef={formikFieldsMetadataRef}\n params={params}\n setIsDirty={setIsDirty}\n setFieldDeleted={setFieldDeleted}\n />\n </div>\n );\n\n\n return (\n <div className=\"solid-form-wrapper\">\n <div className=\"solid-form-section\" style={{ borderRight: params.embeded !== true ? '1px solid var(--primary-light-color)' : '' }} >\n <div className=\"solid-model-form-workspace\">\n <SolidTabGroup\n className=\"solid-model-form-tabs\"\n listClassName=\"solid-model-form-tablist\"\n panelClassName=\"solid-model-form-tabpanel\"\n tabs={[\n {\n value: \"model\",\n label: <span className={`solid-model-form-tab-label ${tabErrors.model ? \"tab-error-heading\" : \"\"}`}>Model</span>,\n content: modelTabContent,\n },\n {\n value: \"fields\",\n label: <span className={`solid-model-form-tab-label ${tabErrors.fields ? \"tab-error-heading\" : \"\"}`}>Fields</span>,\n content: fieldsTabContent,\n },\n ...(!isCreateMode\n ? [\n {\n value: \"explorer\",\n label: <span className=\"solid-model-form-tab-label\">Explorer</span>,\n content: (\n <ModuleMetadataExplorer\n moduleName={explorerModuleName}\n modelSingularName={explorerModelSingularName}\n readOnly={isReadOnlyModelExplorer}\n allowSeed={false}\n />\n ),\n },\n ]\n : []),\n ]}\n value={activeTab}\n onValueChange={(value) => {\n const next = availableTabs.find((tab) => tab === value);\n if (next) {\n handleTabChange(next);\n }\n }}\n />\n </div>\n {shouldShowTabSave && (\n <div className=\"solid-model-form-actions\">\n <SolidButton type=\"button\" onClick={handleSubmit}>\n Save\n </SolidButton>\n </div>\n )}\n <SolidFormFooter params={params}></SolidFormFooter>\n </div>\n </div>\n );\n};\n\nexport default CreateModel;\n"]}
@@ -1,9 +1,6 @@
1
1
 
2
-
3
2
  import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
4
- import { useCreatemodelMutation, useDeletemodelMutation, useLazyGetModelsQuery, useUpdatemodelMutation } from "../../../redux/api/modelApi";
5
- import { FetchBaseQueryError } from "@reduxjs/toolkit/dist/query";
6
- import { usePathname } from "../../../hooks/usePathname";
3
+ import { useCreatemodelMutation, useLazyGetModelsQuery, useUpdatemodelMutation } from "../../../redux/api/modelApi";
7
4
  import { useRouter } from "../../../hooks/useRouter";
8
5
  import qs from "qs";
9
6
  import { useEffect, useRef, useState } from "react";
@@ -11,69 +8,57 @@ import { useDispatch } from "react-redux";
11
8
  import { showToast } from "../../../redux/features/toastSlice";
12
9
  import FieldMetaData from "./FieldMetaData";
13
10
  import ModelMetaData from "./ModelMetaData";
14
- import { SolidFormStepper } from "../../../components/common/SolidFormStepper";
15
- import { SolidBreadcrumb } from "../../../components/common/SolidBreadcrumb";
16
- import { SolidFormHeader } from "../../../components/common/SolidFormHeader";
17
11
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
18
- import { SolidButton, SolidDialog, SolidDivider, SolidPopover, SolidPopoverContent, SolidPopoverTrigger, SolidTabGroup } from "../../shad-cn-ui";
19
- import { Settings, Trash2 } from "lucide-react";
12
+ import { SolidButton, SolidTabGroup } from "../../shad-cn-ui";
20
13
  import { SolidFormFooter } from "../form/SolidFormFooter";
14
+ import { ModuleMetadataExplorer } from "../module/ModuleMetadataExplorer";
15
+ import "./CreateModel.css";
21
16
 
22
- interface ErrorResponseData {
23
- message: string;
24
- statusCode: number;
25
- error: string;
26
- }
27
-
28
- const TABS = ["model", "fields"] as const;
17
+ const TABS = ["model", "fields", "explorer"] as const;
29
18
  type TabValue = typeof TABS[number];
30
19
 
31
20
  const getTabErrorState = (tab?: TabValue): Record<TabValue, boolean> => ({
32
21
  model: tab === "model",
33
22
  fields: tab === "fields",
23
+ explorer: false,
34
24
  });
35
25
 
36
26
  const CreateModel = ({ data, params }: any) => {
37
27
 
38
28
  const dispatch = useDispatch();
39
29
  const router = useRouter();
40
- const pathname = usePathname();
41
- const [deleteEntity, setDeleteEntity] = useState(false);
42
- const [isLoadingData, setIsLoadingData] = useState(data ? true : false);
30
+ const isCreateMode = params.id === "new";
43
31
  const formikModelMetadataRef = useRef<any>();
44
32
  const formikFieldsMetadataRef = useRef();
45
33
 
46
34
  const [modelMetaData, setModelMetaData] = useState<any>();
47
35
  const [fieldMetaData, setFieldMetaData] = useState<any>([]);
48
36
 
49
- const { data: fieldDefaultMetaData, refetch } = useGetFieldDefaultMetaDataQuery(null);
37
+ useGetFieldDefaultMetaDataQuery(null);
50
38
  const [allModelsNames, setAllModelsNames] = useState([]);
51
39
 
52
- const [triggerGetModels, { data: allmodels, isLoading: isAllModelsLoaded, error: allModelsError }] =
40
+ const [triggerGetModels, { data: allmodels }] =
53
41
  useLazyGetModelsQuery();
54
42
 
55
43
 
56
44
  const [
57
45
  createModel,
58
- { isLoading: isCreateModelLoading, isSuccess: isCreateModelSuccess, isError: isCreateModelError, error: createModelError, data: newModel },
46
+ { isSuccess: isCreateModelSuccess, isError: isCreateModelError, error: createModelError },
59
47
  ] = useCreatemodelMutation();
60
48
 
61
49
  const [
62
50
  updateModel,
63
- { isLoading: isUpdatedModelUpdating, isSuccess: isUpdatedModelSuceess, isError: isUpdateModelError, error: updateModelError, data: updatedModel },
51
+ { isSuccess: isUpdatedModelSuceess, isError: isUpdateModelError, error: updateModelError },
64
52
  ] = useUpdatemodelMutation();
65
- const [
66
- deleteModel,
67
- { isLoading: isModelDeleted, isSuccess: isDeleteModelSuceess, isError: isDeleteModelError, error: deleteModelError, data: DeletedModel },
68
- ] = useDeletemodelMutation();
69
-
70
53
  const [activeTab, setActiveTab] = useState<TabValue>("model");
71
54
  const [tabErrors, setTabErrors] = useState<Record<TabValue, boolean>>(getTabErrorState());
72
55
  const [formErrors, setFormErrors] = useState<Record<string, string>>({});
56
+ const deleteModelFunction = async () => {};
57
+ const availableTabs: readonly TabValue[] = isCreateMode ? ["model", "fields"] : TABS;
73
58
 
74
59
  const nextTab = () => {
75
- const currentIndex = TABS.indexOf(activeTab);
76
- const nextValue = TABS[Math.min(currentIndex + 1, TABS.length - 1)];
60
+ const currentIndex = availableTabs.indexOf(activeTab as (typeof availableTabs)[number]);
61
+ const nextValue = availableTabs[Math.min(Math.max(currentIndex, 0) + 1, availableTabs.length - 1)];
77
62
  setActiveTab(nextValue);
78
63
  };
79
64
 
@@ -95,7 +80,6 @@ const CreateModel = ({ data, params }: any) => {
95
80
  ...data, moduleId: data?.module?.id, parentModelId: data?.parentModel, isLegacyTable, hasExistingId
96
81
  }
97
82
 
98
- setIsLoadingData(false);
99
83
  setModelMetaData(modelData);
100
84
  const fieldData = data.fields.map((f: any) => {
101
85
  const fieldCopy = { ...f }; // Create a shallow copy of the field object
@@ -120,7 +104,7 @@ const CreateModel = ({ data, params }: any) => {
120
104
  encodeValuesOnly: true
121
105
  });
122
106
  triggerGetModels(queryString);
123
- }, [isDeleteModelSuceess]);
107
+ }, []);
124
108
 
125
109
  useEffect(() => {
126
110
  if (allmodels) {
@@ -242,70 +226,16 @@ const CreateModel = ({ data, params }: any) => {
242
226
  }
243
227
  };
244
228
 
245
- const deleteModelFunction = async () => {
246
- deleteModel(data?.id);
247
- }
248
-
249
229
  useEffect(() => {
250
- if (isCreateModelSuccess == true || isUpdatedModelSuceess == true || isDeleteModelSuceess == true) {
230
+ if (isCreateModelSuccess == true || isUpdatedModelSuceess == true) {
251
231
  // router.push(`/admin/app-builder/model/all`);
252
232
  router.back();
253
233
  }
254
- }, [isCreateModelSuccess, isUpdatedModelSuceess, isDeleteModelSuceess])
255
-
256
- const showError = async (errors: any) => {
257
- const errorMessages = Object.values(errors);
258
-
259
- if (errorMessages.length > 0) {
260
- dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));
261
- }
262
- };
263
-
264
- const isFetchBaseQueryErrorWithErrorResponse = (error: any): error is FetchBaseQueryError & { data: ErrorResponseData } => {
265
- return error && typeof error === 'object' && 'data' in error && 'message' in error.data;
266
- }
267
-
268
- // const handleError = (errorToast: any) => {
269
- // let errorMessage: any = ['An error occurred'];
270
-
271
- // if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {
272
- // errorMessage = errorToast.data.message;
273
- // } else {
274
- // errorMessage = ['Something went wrong'];
275
- // }
276
-
277
- // toast?.current?.show({
278
- // severity: 'error',
279
- // summary: 'Error',
280
- // detail: errorMessage,
281
- // life: 3000,
282
- // //@ts-ignore
283
- // content: (props) => (
284
- // <div className="flex flex-column align-items-left" style={{ flex: "1" }}>
285
- // {Array.isArray(errorMessage) ? (
286
- // errorMessage.map((message, index) => (
287
- // <div className="flex align-items-center gap-2" key={index}>
288
- // <span className="font-bold text-900">{message.trim()}</span>
289
- // </div>
290
- // ))
291
- // ) : (
292
- // <div className="flex align-items-center gap-2">
293
- // <span className="font-bold text-900">{errorMessage?.trim()}</span>
294
- // </div>
295
- // )}
296
- // </div>
297
- // ),
298
- // });
299
- // };
300
-
301
-
302
- // Error Handler
303
- // Added useEffect to remove active tab class border color if error is there.
234
+ }, [isCreateModelSuccess, isUpdatedModelSuceess])
304
235
 
305
236
  useEffect(() => {
306
237
  const errors = [
307
238
  { isError: isCreateModelError, error: createModelError },
308
- { isError: isDeleteModelError, error: deleteModelError },
309
239
  { isError: isUpdateModelError, error: updateModelError },
310
240
  ];
311
241
  if (errors.length > 0) {
@@ -321,148 +251,106 @@ const CreateModel = ({ data, params }: any) => {
321
251
  });
322
252
  }
323
253
 
324
- }, [isCreateModelError, isDeleteModelError, isUpdateModelError])
325
- const [formActionsMenuOpen, setFormActionsMenuOpen] = useState(false);
326
- const formActionDropdown = () => (
327
- <SolidPopover open={formActionsMenuOpen} onOpenChange={setFormActionsMenuOpen}>
328
- <SolidPopoverTrigger asChild>
329
- <SolidButton
330
- variant="ghost"
331
- size="sm"
332
- className="solid-icon-button"
333
- aria-label="Model actions"
334
- >
335
- <Settings size={16} />
336
- </SolidButton>
337
- </SolidPopoverTrigger>
338
- <SolidPopoverContent
339
- side="bottom"
340
- align="end"
341
- className="solid-form-actions-popover"
342
- onClick={(event) => event.stopPropagation()}
343
- >
344
- <button
345
- type="button"
346
- className="solid-row-action-button solid-row-action-button-danger"
347
- onClick={() => {
348
- setFormActionsMenuOpen(false);
349
- setDeleteEntity(true);
350
- }}
351
- >
352
- <Trash2 size={14} className="solid-row-action-button-icon" />
353
- <span className="solid-row-action-button-label">Delete</span>
354
- </button>
355
- </SolidPopoverContent>
356
- </SolidPopover>
357
- );
254
+ }, [isCreateModelError, isUpdateModelError])
358
255
 
359
256
  const [isDirty, setIsDirty] = useState(false);
360
- const isCreateMode = params.id === "new";
361
- const headerTitleBase = isCreateMode ? "Create Model" : "Edit Model";
362
- const headerTitle = `${headerTitleBase}${modelMetaData?.displayName ? ` - ${modelMetaData.displayName}` : ""}`;
363
- const canShowActionsMenu = !isCreateMode && data?.isSystem !== true;
364
- const handleCancel = () => router.back();
257
+ const [fieldDeleted, setFieldDeleted] = useState(false);
258
+ const explorerModuleName = data?.module?.name ?? modelMetaData?.module?.name ?? "";
259
+ const explorerModelSingularName = data?.singularName ?? modelMetaData?.singularName ?? "";
260
+ const isReadOnlyModelExplorer = Boolean(
261
+ modelMetaData?.isSystem ||
262
+ data?.isSystem ||
263
+ explorerModuleName.toLowerCase() === "solid-core"
264
+ );
265
+ const shouldShowTabSave = !isCreateMode ? activeTab === "fields" && fieldDeleted : activeTab !== "explorer" && isDirty;
266
+
267
+ const modelTabContent = (
268
+ <div className="solid-model-form-content is-tabbed">
269
+ <ModelMetaData
270
+ modelMetaData={modelMetaData}
271
+ setModelMetaData={setModelMetaData}
272
+ allModelsNames={allModelsNames}
273
+ deleteModelFunction={deleteModelFunction}
274
+ nextTab={nextTab}
275
+ formikModelMetadataRef={formikModelMetadataRef}
276
+ params={params}
277
+ formErrors={formErrors}
278
+ setIsDirty={setIsDirty}
279
+ />
280
+ </div>
281
+ );
282
+
283
+ const fieldsTabContent = (
284
+ <div className="solid-model-form-content is-tabbed">
285
+ <FieldMetaData
286
+ modelMetaData={modelMetaData}
287
+ fieldMetaData={fieldMetaData}
288
+ setFieldMetaData={setFieldMetaData}
289
+ deleteModelFunction={deleteModelFunction}
290
+ nextTab={nextTab}
291
+ formikFieldsMetadataRef={formikFieldsMetadataRef}
292
+ params={params}
293
+ setIsDirty={setIsDirty}
294
+ setFieldDeleted={setFieldDeleted}
295
+ />
296
+ </div>
297
+ );
365
298
 
366
299
 
367
300
  return (
368
301
  <div className="solid-form-wrapper">
369
302
  <div className="solid-form-section" style={{ borderRight: params.embeded !== true ? '1px solid var(--primary-light-color)' : '' }} >
370
- <div>
371
- <div className="solid-form-header flex align-items-center justify-content-between gap-3 flex-wrap">
372
- <div className="flex flex-column gap-1">
373
- {/* <span className="text-sm text-color-secondary uppercase tracking-wider">Model</span>
374
- <div className="form-wrapper-title solid-long-text-wrapper m-0">{headerTitle}</div> */}
375
- </div>
376
- <div className="flex align-items-center gap-2">
377
- <SolidButton
378
- variant="outline"
379
- size="sm"
380
- type="button"
381
- onClick={handleCancel}
382
- className="bg-primary-reverse"
383
- >
384
- Cancel
385
- </SolidButton>
386
- {isDirty && (
387
- <SolidButton size="sm" type="button" onClick={handleSubmit}>
388
- Save
389
- </SolidButton>
390
- )}
391
- {canShowActionsMenu && formActionDropdown()}
392
- </div>
393
- </div>
394
- {/* <SolidFormHeader /> */}
395
- <div className="px-4 py-3 md:p-4 solid-form-content">
303
+ <div className="solid-model-form-workspace">
396
304
  <SolidTabGroup
397
- className="relative"
398
- panelClassName="px-0"
305
+ className="solid-model-form-tabs"
306
+ listClassName="solid-model-form-tablist"
307
+ panelClassName="solid-model-form-tabpanel"
399
308
  tabs={[
400
309
  {
401
310
  value: "model",
402
- label: <span className={tabErrors.model ? "tab-error-heading" : ""}>Model</span>,
403
- content: (
404
- <ModelMetaData
405
- modelMetaData={modelMetaData}
406
- setModelMetaData={setModelMetaData}
407
- allModelsNames={allModelsNames}
408
- deleteModelFunction={deleteModelFunction}
409
- nextTab={nextTab}
410
- formikModelMetadataRef={formikModelMetadataRef}
411
- params={params}
412
- formErrors={formErrors}
413
- setIsDirty={setIsDirty}
414
- ></ModelMetaData>
415
- ),
311
+ label: <span className={`solid-model-form-tab-label ${tabErrors.model ? "tab-error-heading" : ""}`}>Model</span>,
312
+ content: modelTabContent,
416
313
  },
417
314
  {
418
315
  value: "fields",
419
- label: <span className={tabErrors.fields ? "tab-error-heading" : ""}>Fields</span>,
420
- content: (
421
- <FieldMetaData
422
- modelMetaData={modelMetaData}
423
- fieldMetaData={fieldMetaData}
424
- setFieldMetaData={setFieldMetaData}
425
- deleteModelFunction={deleteModelFunction}
426
- nextTab={nextTab}
427
- formikFieldsMetadataRef={formikFieldsMetadataRef}
428
- params={params}
429
- setIsDirty={setIsDirty}
430
- ></FieldMetaData>
431
- ),
316
+ label: <span className={`solid-model-form-tab-label ${tabErrors.fields ? "tab-error-heading" : ""}`}>Fields</span>,
317
+ content: fieldsTabContent,
432
318
  },
319
+ ...(!isCreateMode
320
+ ? [
321
+ {
322
+ value: "explorer",
323
+ label: <span className="solid-model-form-tab-label">Explorer</span>,
324
+ content: (
325
+ <ModuleMetadataExplorer
326
+ moduleName={explorerModuleName}
327
+ modelSingularName={explorerModelSingularName}
328
+ readOnly={isReadOnlyModelExplorer}
329
+ allowSeed={false}
330
+ />
331
+ ),
332
+ },
333
+ ]
334
+ : []),
433
335
  ]}
434
336
  value={activeTab}
435
337
  onValueChange={(value) => {
436
- const next = TABS.find((tab) => tab === value);
338
+ const next = availableTabs.find((tab) => tab === value);
437
339
  if (next) {
438
340
  handleTabChange(next);
439
341
  }
440
342
  }}
441
343
  />
442
- </div>
443
344
  </div>
444
- <SolidFormFooter params={params}></SolidFormFooter>
445
-
446
- </div>
447
- {/* <div style={{ width: '22.5%' }}></div> */}
448
- <SolidDialog header="Delete Model" headerClassName="py-2" className="solid-confirm-dialog" contentClassName="px-0 pb-0" visible={deleteEntity} style={{ width: '20vw' }} onHide={() => { if (!deleteEntity) return; setDeleteEntity(false); }}>
449
- <SolidDivider className="m-0" />
450
- <div className="p-4">
451
- <p className="m-0 solid-primary-title" style={{ fontSize: 16 }}>
452
- Are you sure you want to delete this Model?
453
- </p>
454
- <p className="" style={{ color: 'var{--solid-grey-500}' }}>{modelMetaData?.singularName}</p>
455
- <div className="flex align-items-center gap-2 mt-3">
456
- <SolidButton size="sm" onClick={deleteModelFunction}>
457
- Delete
458
- </SolidButton>
459
- <SolidButton size="sm" variant="outline" onClick={() => setDeleteEntity(false)}>
460
- Cancel
345
+ {shouldShowTabSave && (
346
+ <div className="solid-model-form-actions">
347
+ <SolidButton type="button" onClick={handleSubmit}>
348
+ Save
461
349
  </SolidButton>
462
350
  </div>
463
- </div>
464
- </SolidDialog>
465
-
351
+ )}
352
+ <SolidFormFooter params={params}></SolidFormFooter>
353
+ </div>
466
354
  </div>
467
355
  );
468
356
  };
@@ -1,3 +1,3 @@
1
- declare const FieldMetaData: ({ setIsDirty, modelMetaData, fieldMetaData, setFieldMetaData, deleteModelFunction, nextTab, formikFieldsMetadataRef, params }: any) => import("react/jsx-runtime").JSX.Element;
1
+ declare const FieldMetaData: ({ setIsDirty, setFieldDeleted, modelMetaData, fieldMetaData, setFieldMetaData, deleteModelFunction, nextTab, formikFieldsMetadataRef, params }: any) => import("react/jsx-runtime").JSX.Element;
2
2
  export default FieldMetaData;
3
3
  //# sourceMappingURL=FieldMetaData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldMetaData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/FieldMetaData.tsx"],"names":[],"mappings":"AAoBA,QAAA,MAAM,aAAa,kIAAmI,GAAG,4CA8QxJ,CAAC;AACF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"FieldMetaData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/FieldMetaData.tsx"],"names":[],"mappings":"AAoBA,QAAA,MAAM,aAAa,mJAAoJ,GAAG,4CAuOzK,CAAC;AACF,eAAe,aAAa,CAAC"}
@@ -42,10 +42,10 @@ import { useDispatch } from "react-redux";
42
42
  import { showToast } from "../../../redux/features/toastSlice";
43
43
  import FieldMetaDataForm from "./FieldMetaDataForm";
44
44
  import { ERROR_MESSAGES } from "../../../constants/error-messages";
45
- import { AlertTriangle, Info, Pencil, Plus, Trash2 } from "lucide-react";
45
+ import { AlertTriangle, Info, Trash2 } from "lucide-react";
46
46
  import { SolidButton, SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogFooter, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, } from "../../shad-cn-ui";
47
47
  var FieldMetaData = function (_a) {
48
- var setIsDirty = _a.setIsDirty, modelMetaData = _a.modelMetaData, fieldMetaData = _a.fieldMetaData, setFieldMetaData = _a.setFieldMetaData, deleteModelFunction = _a.deleteModelFunction, nextTab = _a.nextTab, formikFieldsMetadataRef = _a.formikFieldsMetadataRef, params = _a.params;
48
+ var setIsDirty = _a.setIsDirty, setFieldDeleted = _a.setFieldDeleted, modelMetaData = _a.modelMetaData, fieldMetaData = _a.fieldMetaData, setFieldMetaData = _a.setFieldMetaData, deleteModelFunction = _a.deleteModelFunction, nextTab = _a.nextTab, formikFieldsMetadataRef = _a.formikFieldsMetadataRef, params = _a.params;
49
49
  var pathname = usePathname();
50
50
  var dispatch = useDispatch();
51
51
  var _b = useState(false), visiblePopup = _b[0], setVisiblePopup = _b[1];
@@ -57,14 +57,6 @@ var FieldMetaData = function (_a) {
57
57
  var onRowSelect = function (event) {
58
58
  setVisiblePopup(true);
59
59
  };
60
- // Template for the pencil icon column
61
- var editTemplate = function (rowData) {
62
- return (_jsx(_Fragment, { children: rowData.isSystem !== true && rowData.isMarkedForRemoval !== true &&
63
- _jsx(SolidButton, { variant: "ghost", size: "sm", className: "solid-icon-button", "aria-label": "Edit field", leftIcon: _jsx(Pencil, { size: 14 }), onClick: function () {
64
- setSelectedFieldMetaData(rowData);
65
- setVisiblePopup(true);
66
- } }) }));
67
- };
68
60
  var bodyTemplate = function (rowData) {
69
61
  return (_jsx(_Fragment, { children: rowData.displayName &&
70
62
  _jsx(_Fragment, { children: _jsxs("p", { children: [rowData.displayName, rowData.isMarkedForRemoval === true &&
@@ -76,6 +68,8 @@ var FieldMetaData = function (_a) {
76
68
  setFieldMetaData(function (prevData) {
77
69
  var updatedData = prevData.filter(function (item) { return item.name !== rowData.name; });
78
70
  setIsDirty(true); // Ensure dirty state is updated immediately
71
+ if (setFieldDeleted)
72
+ setFieldDeleted(true);
79
73
  return updatedData;
80
74
  });
81
75
  };
@@ -103,17 +97,7 @@ var FieldMetaData = function (_a) {
103
97
  return (_jsx(_Fragment, { children: needsModelSetup ?
104
98
  _jsx("div", { className: "solid-placeholder-card-wrapper", children: _jsxs("div", { className: "solid-placeholder-card", children: [_jsx("div", { className: "solid-placeholder-card-icon", children: _jsx(Info, { size: 18 }) }), _jsxs("div", { className: "solid-placeholder-card-body", children: [_jsx("p", { className: "solid-placeholder-card-title", children: "Model setup incomplete" }), _jsx("p", { className: "solid-placeholder-card-text", children: "Please select Module and Datasource from the models tab before managing fields." })] })] }) })
105
99
  :
106
- _jsxs(_Fragment, { children: [_jsx("div", { className: "absolute", style: { top: -3, right: 0 }, children: modelMetaData.isSystem !== true &&
107
- _jsx(SolidButton, { size: "sm", leftIcon: _jsx(Plus, { size: 14 }), onClick: function () {
108
- if (!(modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.dataSourceType)) {
109
- dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.ERROR, detail: ERROR_MESSAGES.ORM_TYPE_REQUIRED }));
110
- }
111
- else {
112
- setSelectedFieldMetaData(null);
113
- setVisiblePopup(true);
114
- }
115
- }, children: "Add" }) }), _jsx("div", { className: "solid-datatable-wrapper solid-list-table-area flex-1 min-h-0 overflow-hidden", children: _jsxs(DataTable, { value: fieldMetaData, dataKey: "id", size: "small", emptyMessage: "No fields configured", rowClassName: function (rowData) { return rowData.isMarkedForRemoval === true ? "greyed-out-row" : ""; }, children: [_jsx(Column, { field: "displayName", header: "Display Name", body: bodyTemplate }), _jsx(Column, { field: "name", header: "Name" }), _jsx(Column, { field: "type", header: "Type" }), modelMetaData.isSystem !== true &&
116
- _jsx(Column, { body: editTemplate, header: "Edit", style: { width: '80px' } }), modelMetaData.isSystem !== true &&
100
+ _jsxs(_Fragment, { children: [_jsx("div", { className: "solid-datatable-wrapper solid-list-table-area flex-1 min-h-0 overflow-hidden", children: _jsxs(DataTable, { value: fieldMetaData, dataKey: "id", size: "small", emptyMessage: "No fields configured", rowClassName: function (rowData) { return rowData.isMarkedForRemoval === true ? "greyed-out-row" : ""; }, children: [_jsx(Column, { field: "displayName", header: "Display Name", body: bodyTemplate }), _jsx(Column, { field: "name", header: "Name" }), _jsx(Column, { field: "type", header: "Type" }), modelMetaData.isSystem !== true &&
117
101
  _jsx(Column, { body: deleteTemplate, header: "Delete", style: { width: '90px' } })] }) }), _jsx(SolidDialog, { open: visiblePopup, onOpenChange: function (open) {
118
102
  if (!open) {
119
103
  setVisiblePopup(false);
@@ -127,7 +111,7 @@ var FieldMetaData = function (_a) {
127
111
  setDeleteAlertPopup(false);
128
112
  setRowToDelete(null);
129
113
  }
130
- }, className: "solid-shadcn-confirm-dialog solid-field-delete-flow-dialog", style: { width: "min(560px, calc(100vw - 2rem))" }, children: [_jsxs(SolidDialogHeader, { className: "solid-shadcn-dialog-head solid-field-delete-flow-head", children: [_jsx(SolidDialogTitle, { children: _jsxs("span", { className: "flex align-items-center gap-2 justify-content-center", children: [_jsx(AlertTriangle, { size: 18, className: "text-yellow-500" }), _jsx("span", { children: "Remove Field" })] }) }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogSeparator, { className: "solid-shadcn-dialog-sep" }), _jsxs(SolidDialogBody, { className: "solid-shadcn-dialog-body solid-field-delete-flow-body", children: [_jsx("p", { className: "solid-shadcn-dialog-text solid-field-delete-flow-intro", children: "Removing a field is a 2 step process." }), _jsxs("ol", { className: "solid-field-delete-flow-list", children: [_jsxs("li", { children: ["Delete the field and save the model form.", _jsx("span", { children: "This marks the field for removal." })] }), _jsxs("li", { children: ["Generate code for this model.", _jsx("span", { children: "This removes the field from generated code, metadata tables, and JSON." })] })] })] }), _jsxs(SolidDialogFooter, { className: "solid-shadcn-dialog-actions solid-field-delete-flow-actions", children: [_jsx(SolidButton, { size: "sm", onClick: function () {
114
+ }, className: "solid-shadcn-confirm-dialog solid-field-delete-flow-dialog", style: { width: "min(560px, calc(100vw - 2rem))" }, children: [_jsxs(SolidDialogHeader, { className: "solid-shadcn-dialog-head solid-field-delete-flow-head", children: [_jsx(SolidDialogTitle, { children: _jsxs("span", { className: "flex align-items-center gap-2", children: [_jsx(AlertTriangle, { size: 18, className: "text-yellow-500" }), _jsx("span", { children: "Remove Field" })] }) }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogSeparator, { className: "solid-shadcn-dialog-sep" }), _jsxs(SolidDialogBody, { className: "solid-shadcn-dialog-body solid-field-delete-flow-body", children: [_jsx("p", { className: "solid-shadcn-dialog-text solid-field-delete-flow-intro", children: "Removing a field is a 2 step process." }), _jsxs("ol", { className: "solid-field-delete-flow-list", children: [_jsxs("li", { children: ["Delete the field and save the model form.", _jsx("span", { children: "This marks the field for removal." })] }), _jsxs("li", { children: ["Generate code for this model.", _jsx("span", { children: "This removes the field from generated code, metadata tables, and JSON." })] })] })] }), _jsxs(SolidDialogFooter, { className: "solid-shadcn-dialog-actions solid-field-delete-flow-actions", children: [_jsx(SolidButton, { size: "sm", onClick: function () {
131
115
  if (rowToDelete) {
132
116
  deleteRow(rowToDelete);
133
117
  }