@solidxai/core-ui 0.1.5-beta.9 → 0.1.7-beta.0
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.
- package/dist/components/auth/AuthTabs.d.ts +14 -0
- package/dist/components/auth/AuthTabs.d.ts.map +1 -0
- package/dist/components/auth/AuthTabs.js +19 -0
- package/dist/components/auth/AuthTabs.js.map +1 -0
- package/dist/components/auth/AuthTabs.tsx +38 -0
- package/dist/components/auth/GoogleAuthChecking.d.ts.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.js +10 -10
- package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.tsx +8 -9
- package/dist/components/auth/SolidChangeForcePassword.d.ts.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.js +9 -10
- package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.tsx +6 -9
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +8 -8
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +6 -8
- package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +57 -57
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +10 -11
- package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +57 -57
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +10 -11
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +12 -12
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +11 -16
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +19 -19
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +18 -23
- package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +15 -15
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.tsx +7 -8
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +87 -120
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +12 -42
- package/dist/components/common/GlobalToast.d.ts +2 -0
- package/dist/components/common/GlobalToast.d.ts.map +1 -0
- package/dist/components/common/GlobalToast.js +25 -0
- package/dist/components/common/GlobalToast.js.map +1 -0
- package/dist/components/common/GlobalToast.tsx +25 -0
- package/dist/components/common/SolidErrorStatePage.d.ts +12 -0
- package/dist/components/common/SolidErrorStatePage.d.ts.map +1 -0
- package/dist/components/common/SolidErrorStatePage.js +16 -0
- package/dist/components/common/SolidErrorStatePage.js.map +1 -0
- package/dist/components/common/SolidErrorStatePage.tsx +55 -0
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +19 -31
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +7 -19
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +41 -41
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +5 -6
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +9 -9
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +8 -9
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +8 -8
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +7 -9
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js +11 -11
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +10 -11
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +9 -9
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +8 -9
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +7 -7
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +6 -7
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +78 -21
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +65 -10
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +6 -8
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +5 -9
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +9 -11
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +5 -10
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js +5 -6
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +5 -8
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +10 -12
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +6 -11
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +11 -6
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +13 -1
- package/dist/components/core/form/SolidFormUserViewLayout.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.js +7 -8
- package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.tsx +5 -7
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +12 -21
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +11 -33
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +22 -15
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +14 -2
- package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js +4 -2
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.tsx +5 -5
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +37 -26
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -5
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +11 -11
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +9 -11
- package/dist/components/core/kanban/KanbanUserViewLayout.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanUserViewLayout.js +7 -8
- package/dist/components/core/kanban/KanbanUserViewLayout.js.map +1 -1
- package/dist/components/core/kanban/KanbanUserViewLayout.tsx +4 -6
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +5 -7
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +4 -9
- package/dist/components/core/list/PLAN.md +92 -0
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.d.ts.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +13 -13
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +5 -6
- package/dist/components/core/list/SolidDataTable.d.ts +58 -0
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -0
- package/dist/components/core/list/SolidDataTable.js +141 -0
- package/dist/components/core/list/SolidDataTable.js.map +1 -0
- package/dist/components/core/list/SolidDataTable.tsx +314 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +20 -67
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +9 -76
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +15 -25
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +12 -32
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +6 -17
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +5 -26
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +48 -55
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +4 -22
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +42 -44
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +13 -27
- package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
- package/dist/components/core/module/ModuleListViewData.js +11 -7
- package/dist/components/core/module/ModuleListViewData.js.map +1 -1
- package/dist/components/core/module/ModuleListViewData.tsx +10 -8
- package/dist/components/core/solid-ai/SolidAiChat.d.ts +3 -0
- package/dist/components/core/solid-ai/SolidAiChat.d.ts.map +1 -0
- package/dist/components/core/solid-ai/SolidAiChat.js +1043 -0
- package/dist/components/core/solid-ai/SolidAiChat.js.map +1 -0
- package/dist/components/core/solid-ai/SolidAiChat.module.css +1339 -0
- package/dist/components/core/solid-ai/SolidAiChat.tsx +1237 -0
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +32 -69
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +8 -47
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +24 -37
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +8 -46
- package/dist/components/core/users/UserListView.d.ts.map +1 -1
- package/dist/components/core/users/UserListView.js +9 -16
- package/dist/components/core/users/UserListView.js.map +1 -1
- package/dist/components/core/users/UserListView.tsx +5 -21
- package/dist/components/layout/AdminLayout.d.ts.map +1 -1
- package/dist/components/layout/AdminLayout.js +4 -2
- package/dist/components/layout/AdminLayout.js.map +1 -1
- package/dist/components/layout/AdminLayout.tsx +4 -2
- package/dist/components/layout/AdminTopHeader.d.ts +2 -0
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -0
- package/dist/components/layout/AdminTopHeader.js +80 -0
- package/dist/components/layout/AdminTopHeader.js.map +1 -0
- package/dist/components/layout/AdminTopHeader.tsx +165 -0
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +1 -2
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +0 -2
- package/dist/components/layout/Layout.d.ts.map +1 -1
- package/dist/components/layout/Layout.js +2 -1
- package/dist/components/layout/Layout.js.map +1 -1
- package/dist/components/layout/Layout.tsx +2 -0
- package/dist/components/layout/SolidAiStudioLayout.d.ts +10 -0
- package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -0
- package/dist/components/layout/SolidAiStudioLayout.js +159 -0
- package/dist/components/layout/SolidAiStudioLayout.js.map +1 -0
- package/dist/components/layout/SolidAiStudioLayout.tsx +333 -0
- package/dist/components/layout/navbar-one.d.ts.map +1 -1
- package/dist/components/layout/navbar-one.js +1 -2
- package/dist/components/layout/navbar-one.js.map +1 -1
- package/dist/components/layout/navbar-one.tsx +0 -2
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +50 -24
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +48 -30
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +24 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +224 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +339 -0
- package/dist/components/shad-cn-ui/SolidButton.d.ts +14 -0
- package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidButton.js +36 -0
- package/dist/components/shad-cn-ui/SolidButton.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidButton.tsx +54 -0
- package/dist/components/shad-cn-ui/SolidInput.d.ts +5 -0
- package/dist/components/shad-cn-ui/SolidInput.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidInput.js +35 -0
- package/dist/components/shad-cn-ui/SolidInput.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidInput.tsx +12 -0
- package/dist/components/shad-cn-ui/SolidNumberInput.d.ts +10 -0
- package/dist/components/shad-cn-ui/SolidNumberInput.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidNumberInput.js +33 -0
- package/dist/components/shad-cn-ui/SolidNumberInput.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidNumberInput.tsx +24 -0
- package/dist/components/shad-cn-ui/SolidSelect.d.ts +16 -0
- package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidSelect.js +26 -0
- package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidSelect.tsx +65 -0
- package/dist/components/shad-cn-ui/SolidTabs.d.ts +18 -0
- package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidTabs.js +22 -0
- package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidTabs.tsx +73 -0
- package/dist/components/shad-cn-ui/index.d.ts +7 -0
- package/dist/components/shad-cn-ui/index.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/index.js +7 -0
- package/dist/components/shad-cn-ui/index.js.map +1 -0
- package/dist/components/shad-cn-ui/index.ts +6 -0
- package/dist/helpers/studioSandbox.d.ts +31 -0
- package/dist/helpers/studioSandbox.d.ts.map +1 -0
- package/dist/helpers/studioSandbox.js +104 -0
- package/dist/helpers/studioSandbox.js.map +1 -0
- package/dist/helpers/studioSandbox.ts +117 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -0
- package/dist/redux/features/solidStudioSlice.d.ts +9 -0
- package/dist/redux/features/solidStudioSlice.d.ts.map +1 -0
- package/dist/redux/features/solidStudioSlice.js +72 -0
- package/dist/redux/features/solidStudioSlice.js.map +1 -0
- package/dist/redux/features/solidStudioSlice.ts +78 -0
- package/dist/redux/features/toastSlice.d.ts +15 -0
- package/dist/redux/features/toastSlice.d.ts.map +1 -0
- package/dist/redux/features/toastSlice.js +20 -0
- package/dist/redux/features/toastSlice.js.map +1 -0
- package/dist/redux/features/toastSlice.ts +35 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +2 -1
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +2 -0
- package/dist/resources/images/errors/error-astronaut-404.png +0 -0
- package/dist/resources/shadcn-base.css +4171 -0
- package/dist/routes/SolidLayoutRegistry.d.ts +51 -0
- package/dist/routes/SolidLayoutRegistry.d.ts.map +1 -0
- package/dist/routes/SolidLayoutRegistry.js +108 -0
- package/dist/routes/SolidLayoutRegistry.js.map +1 -0
- package/dist/routes/SolidLayoutRegistry.tsx +157 -0
- package/dist/routes/guards/AdminGuard.d.ts +2 -0
- package/dist/routes/guards/AdminGuard.d.ts.map +1 -0
- package/dist/routes/guards/AdminGuard.js +16 -0
- package/dist/routes/guards/AdminGuard.js.map +1 -0
- package/dist/routes/guards/AdminGuard.tsx +17 -0
- package/dist/routes/pages/studio/StudioHomePage.d.ts +2 -0
- package/dist/routes/pages/studio/StudioHomePage.d.ts.map +1 -0
- package/dist/routes/pages/studio/StudioHomePage.js +22 -0
- package/dist/routes/pages/studio/StudioHomePage.js.map +1 -0
- package/dist/routes/pages/studio/StudioHomePage.tsx +106 -0
- package/dist/routes/pages/studio/StudioLandingPage.d.ts +2 -0
- package/dist/routes/pages/studio/StudioLandingPage.d.ts.map +1 -0
- package/dist/routes/pages/studio/StudioLandingPage.js +78 -0
- package/dist/routes/pages/studio/StudioLandingPage.js.map +1 -0
- package/dist/routes/pages/studio/StudioLandingPage.tsx +320 -0
- package/package.json +1 -1
|
@@ -21,7 +21,7 @@ import { useSearchParams } from "../../../hooks/useSearchParams";
|
|
|
21
21
|
import { ListViewRowActionPopup } from "./ListViewRowActionPopup";
|
|
22
22
|
import { FilterIcon } from '../../../components/modelsComponents/filterIcon';
|
|
23
23
|
import { OverlayPanel } from "primereact/overlaypanel";
|
|
24
|
-
import {
|
|
24
|
+
import { showToast } from "../../../redux/features/toastSlice";
|
|
25
25
|
import { Divider } from "primereact/divider";
|
|
26
26
|
import CompactImage from '../../../resources/images/layout/images/compact.png';
|
|
27
27
|
import CozyImage from '../../../resources/images/layout/images/cozy.png';
|
|
@@ -554,8 +554,6 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
554
554
|
const [listViewRowActionPopupState, setListViewRowActionPopupState] = useState(false);
|
|
555
555
|
const [listViewRowActionData, setListRowActionData] = useState<any>();
|
|
556
556
|
|
|
557
|
-
const toast = useRef<Toast>(null);
|
|
558
|
-
|
|
559
557
|
// Get the list view data.
|
|
560
558
|
const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading, error },] = useLazyGetSolidEntitiesQuery();
|
|
561
559
|
|
|
@@ -1074,12 +1072,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1074
1072
|
|
|
1075
1073
|
useEffect(() => {
|
|
1076
1074
|
if (recoverByIdIsSuccess && recoverByIdData) {
|
|
1077
|
-
|
|
1078
|
-
severity: "success",
|
|
1079
|
-
summary: "Success",
|
|
1080
|
-
detail: recoverByIdData.data.message,
|
|
1081
|
-
life: 3000,
|
|
1082
|
-
});
|
|
1075
|
+
dispatch(showToast({ severity: "success", summary: "Success", detail: recoverByIdData.data.message, life: 3000 }));
|
|
1083
1076
|
return;
|
|
1084
1077
|
}
|
|
1085
1078
|
if (recoverByIdIsError && recoverByIdError) {
|
|
@@ -1100,46 +1093,13 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1100
1093
|
? [errorMessages]
|
|
1101
1094
|
: [];
|
|
1102
1095
|
if (messages.length > 0) {
|
|
1103
|
-
|
|
1104
|
-
severity: "error",
|
|
1105
|
-
summary: ERROR_MESSAGES.SEND_REPORT,
|
|
1106
|
-
sticky: true,
|
|
1107
|
-
//@ts-ignore
|
|
1108
|
-
content: (props) => (
|
|
1109
|
-
<div
|
|
1110
|
-
className="flex flex-column align-items-left"
|
|
1111
|
-
style={{ flex: "1" }}
|
|
1112
|
-
>
|
|
1113
|
-
{messages.map((m, index) => (
|
|
1114
|
-
<div className="flex align-items-center gap-2" key={index}>
|
|
1115
|
-
<span className="font-bold text-900">{String(m)}</span>
|
|
1116
|
-
</div>
|
|
1117
|
-
))}
|
|
1118
|
-
</div>
|
|
1119
|
-
),
|
|
1120
|
-
});
|
|
1096
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SEND_REPORT, detail: messages.join(', ') }));
|
|
1121
1097
|
}
|
|
1122
1098
|
};
|
|
1123
1099
|
|
|
1124
1100
|
const showFieldError = async (error: any) => {
|
|
1125
1101
|
if (error) {
|
|
1126
|
-
|
|
1127
|
-
severity: "error",
|
|
1128
|
-
summary: ERROR_MESSAGES.SEND_REPORT,
|
|
1129
|
-
// sticky: true,
|
|
1130
|
-
life: 3000,
|
|
1131
|
-
//@ts-ignore
|
|
1132
|
-
content: (props) => (
|
|
1133
|
-
<div
|
|
1134
|
-
className="flex flex-column align-items-left"
|
|
1135
|
-
style={{ flex: "1" }}
|
|
1136
|
-
>
|
|
1137
|
-
<div className="flex align-items-center gap-2">
|
|
1138
|
-
<span className="font-bold text-900">{String(error)}</span>
|
|
1139
|
-
</div>
|
|
1140
|
-
</div>
|
|
1141
|
-
),
|
|
1142
|
-
});
|
|
1102
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SEND_REPORT, detail: String(error), life: 3000 }));
|
|
1143
1103
|
}
|
|
1144
1104
|
};
|
|
1145
1105
|
|
|
@@ -1152,21 +1112,11 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1152
1112
|
deleteManySolidEntities(deleteList)
|
|
1153
1113
|
.unwrap()
|
|
1154
1114
|
.then(() => {
|
|
1155
|
-
|
|
1156
|
-
severity: 'success',
|
|
1157
|
-
summary: 'Deleted',
|
|
1158
|
-
detail: ERROR_MESSAGES.RECORD_DELETE,
|
|
1159
|
-
life: 3000
|
|
1160
|
-
});
|
|
1115
|
+
dispatch(showToast({ severity: 'success', summary: 'Deleted', detail: ERROR_MESSAGES.RECORD_DELETE, life: 3000 }));
|
|
1161
1116
|
setDialogVisible(false);
|
|
1162
1117
|
})
|
|
1163
1118
|
.catch((error) => {
|
|
1164
|
-
|
|
1165
|
-
severity: 'error',
|
|
1166
|
-
summary: 'Delete Failed',
|
|
1167
|
-
detail: error?.data?.message,
|
|
1168
|
-
life: 4000
|
|
1169
|
-
});
|
|
1119
|
+
dispatch(showToast({ severity: 'error', summary: 'Delete Failed', detail: error?.data?.message, life: 4000 }));
|
|
1170
1120
|
});
|
|
1171
1121
|
};
|
|
1172
1122
|
|
|
@@ -1283,28 +1233,12 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1283
1233
|
|
|
1284
1234
|
if (response?.data?.statusCode === 200) {
|
|
1285
1235
|
setDeleteEntity(false);
|
|
1286
|
-
|
|
1287
|
-
severity: "success",
|
|
1288
|
-
summary: ERROR_MESSAGES.DELETED,
|
|
1289
|
-
detail: ERROR_MESSAGES.ENTITY_DELETE,
|
|
1290
|
-
life: 3000,
|
|
1291
|
-
});
|
|
1236
|
+
dispatch(showToast({ severity: "success", summary: ERROR_MESSAGES.DELETED, detail: ERROR_MESSAGES.ENTITY_DELETE, life: 3000 }));
|
|
1292
1237
|
} else {
|
|
1293
|
-
|
|
1294
|
-
severity: "error",
|
|
1295
|
-
summary: ERROR_MESSAGES.DELETE_FAIELD,
|
|
1296
|
-
detail: response?.error?.data?.error,
|
|
1297
|
-
sticky: true, // stays until user closes
|
|
1298
|
-
});
|
|
1238
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: response?.error?.data?.error }));
|
|
1299
1239
|
}
|
|
1300
1240
|
} catch (error: any) {
|
|
1301
|
-
|
|
1302
|
-
severity: "error",
|
|
1303
|
-
summary: ERROR_MESSAGES.DELETE_FAIELD,
|
|
1304
|
-
detail: ERROR_MESSAGES.SOMETHING_WRONG,
|
|
1305
|
-
sticky: true, // stays until user closes
|
|
1306
|
-
|
|
1307
|
-
});
|
|
1241
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: ERROR_MESSAGES.SOMETHING_WRONG }));
|
|
1308
1242
|
}
|
|
1309
1243
|
};
|
|
1310
1244
|
|
|
@@ -1366,7 +1300,6 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1366
1300
|
<div className={`h-full flex-grow-1 ${styles.ListContentWrapper}`}>
|
|
1367
1301
|
{solidListViewInitialMetaData && queryDataLoaded &&
|
|
1368
1302
|
<div className="page-header flex-column lg:flex-row">
|
|
1369
|
-
<Toast ref={toast} />
|
|
1370
1303
|
{/* <div> */}
|
|
1371
1304
|
<div className="flex justify-content-between w-full">
|
|
1372
1305
|
<div className="flex gap-3 align-items-center w-full ">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateModel.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/CreateModel.tsx"],"names":[],"mappings":"AA+BA,QAAA,MAAM,WAAW,qBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"CreateModel.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/CreateModel.tsx"],"names":[],"mappings":"AA+BA,QAAA,MAAM,WAAW,qBAAsB,GAAG,4CAkezC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -58,16 +58,16 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
58
58
|
};
|
|
59
59
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
60
60
|
import { CancelButton, SolidCancelButton } from "../../../components/common/CancelButton";
|
|
61
|
-
import { handleError } from "../../../helpers/ToastContainer";
|
|
62
61
|
import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
|
|
63
62
|
import { useCreatemodelMutation, useDeletemodelMutation, useLazyGetModelsQuery, useUpdatemodelMutation } from "../../../redux/api/modelApi";
|
|
64
63
|
import { usePathname } from "../../../hooks/usePathname";
|
|
65
64
|
import { useRouter } from "../../../hooks/useRouter";
|
|
66
65
|
import { Button } from "primereact/button";
|
|
67
66
|
import { TabPanel, TabView } from "primereact/tabview";
|
|
68
|
-
import { Toast } from "primereact/toast";
|
|
69
67
|
import qs from "qs";
|
|
70
68
|
import { useEffect, useRef, useState } from "react";
|
|
69
|
+
import { useDispatch } from "react-redux";
|
|
70
|
+
import { showToast } from "../../../redux/features/toastSlice";
|
|
71
71
|
import FieldMetaData from "./FieldMetaData";
|
|
72
72
|
import ModelMetaData from "./ModelMetaData";
|
|
73
73
|
import { BackButton } from "../../../components/common/BackButton";
|
|
@@ -78,7 +78,7 @@ import { SolidFormHeader } from "../../../components/common/SolidFormHeader";
|
|
|
78
78
|
import { ERROR_MESSAGES } from "../../../constants/error-messages";
|
|
79
79
|
var CreateModel = function (_a) {
|
|
80
80
|
var data = _a.data, params = _a.params;
|
|
81
|
-
var
|
|
81
|
+
var dispatch = useDispatch();
|
|
82
82
|
var router = useRouter();
|
|
83
83
|
var pathname = usePathname();
|
|
84
84
|
var _b = useState(false), deleteEntity = _b[0], setDeleteEntity = _b[1];
|
|
@@ -170,7 +170,7 @@ var CreateModel = function (_a) {
|
|
|
170
170
|
setFormErrors(errors);
|
|
171
171
|
var errorMessages = Object.values(errors);
|
|
172
172
|
errorMessages.forEach(function (error) {
|
|
173
|
-
|
|
173
|
+
dispatch(showToast({ severity: 'error', summary: 'Error', detail: Array.isArray(error) ? error.join(', ') : String(error) }));
|
|
174
174
|
});
|
|
175
175
|
firstErrorTab = 0; // Model Metadata tab has errors
|
|
176
176
|
}
|
|
@@ -178,7 +178,7 @@ var CreateModel = function (_a) {
|
|
|
178
178
|
setFormErrors({});
|
|
179
179
|
}
|
|
180
180
|
if (fieldMetaData.length === 0) {
|
|
181
|
-
|
|
181
|
+
dispatch(showToast({ severity: 'error', summary: 'Error', detail: ERROR_MESSAGES.ADD_ATLEAST_ONE_FIELD }));
|
|
182
182
|
firstErrorTab = firstErrorTab !== null && firstErrorTab !== void 0 ? firstErrorTab : 1; // If no prior error, set to Field tab
|
|
183
183
|
}
|
|
184
184
|
if (firstErrorTab !== undefined) {
|
|
@@ -196,8 +196,7 @@ var CreateModel = function (_a) {
|
|
|
196
196
|
}); };
|
|
197
197
|
var handleFormSubmit = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
198
198
|
var legacyTableConfig, hasPrimaryKey, fieldData, module_1, parentModel, createdAt, updatedAt, id, deletedAt, modelData, updateData, fieldData, module_2, parentModel, modelData, data_1;
|
|
199
|
-
|
|
200
|
-
return __generator(this, function (_b) {
|
|
199
|
+
return __generator(this, function (_a) {
|
|
201
200
|
legacyTableConfig = {};
|
|
202
201
|
if ((modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.isLegacyTable) && (modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.isLegacyTableWithId)) {
|
|
203
202
|
// UI: Both checked → Backend: both true
|
|
@@ -223,12 +222,7 @@ var CreateModel = function (_a) {
|
|
|
223
222
|
if ((modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.isLegacyTable) || (modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.isLegacyTableWithId)) {
|
|
224
223
|
hasPrimaryKey = fieldMetaData.some(function (field) { return field.isPrimaryKey === true; });
|
|
225
224
|
if (!hasPrimaryKey) {
|
|
226
|
-
(
|
|
227
|
-
severity: "error",
|
|
228
|
-
summary: "Primary Key Required",
|
|
229
|
-
detail: "Legacy tables set at least one field marked as Primary Key. Please mark a field as Primary Key before proceeding.",
|
|
230
|
-
life: 5000,
|
|
231
|
-
});
|
|
225
|
+
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 }));
|
|
232
226
|
return [2 /*return*/];
|
|
233
227
|
}
|
|
234
228
|
}
|
|
@@ -277,18 +271,10 @@ var CreateModel = function (_a) {
|
|
|
277
271
|
}, [isCreateModelSuccess, isUpdatedModelSuceess, isDeleteModelSuceess]);
|
|
278
272
|
var showError = function (errors) { return __awaiter(void 0, void 0, void 0, function () {
|
|
279
273
|
var errorMessages;
|
|
280
|
-
|
|
281
|
-
return __generator(this, function (_b) {
|
|
274
|
+
return __generator(this, function (_a) {
|
|
282
275
|
errorMessages = Object.values(errors);
|
|
283
276
|
if (errorMessages.length > 0) {
|
|
284
|
-
(
|
|
285
|
-
severity: "error",
|
|
286
|
-
summary: ERROR_MESSAGES.SEND_REPORT,
|
|
287
|
-
// sticky: true,
|
|
288
|
-
life: 3000,
|
|
289
|
-
//@ts-ignore
|
|
290
|
-
content: function (props) { return (_jsx("div", { className: "flex flex-column align-items-left", style: { flex: "1" }, children: errorMessages.map(function (m, index) { return (_jsx("div", { className: "flex align-items-center gap-2", children: _jsx("span", { className: "font-bold text-900", children: String(m) }) }, index)); }) })); },
|
|
291
|
-
});
|
|
277
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));
|
|
292
278
|
}
|
|
293
279
|
return [2 /*return*/];
|
|
294
280
|
});
|
|
@@ -350,7 +336,11 @@ var CreateModel = function (_a) {
|
|
|
350
336
|
errors.forEach(function (_a) {
|
|
351
337
|
var isError = _a.isError, error = _a.error;
|
|
352
338
|
if (isError && error) {
|
|
353
|
-
|
|
339
|
+
var errorMessage = error && typeof error === 'object' && 'data' in error && 'message' in error.data
|
|
340
|
+
? error.data.message
|
|
341
|
+
: 'Something went wrong';
|
|
342
|
+
var detail = Array.isArray(errorMessage) ? errorMessage.join(', ') : String(errorMessage);
|
|
343
|
+
dispatch(showToast({ severity: 'error', summary: 'Error', detail: detail }));
|
|
354
344
|
}
|
|
355
345
|
});
|
|
356
346
|
}
|
|
@@ -374,7 +364,7 @@ var CreateModel = function (_a) {
|
|
|
374
364
|
} }), _jsx(OverlayPanel, { ref: op, className: "solid-custom-overlay", children: _jsx("div", { className: "flex flex-column gap-1 p-1", children: _jsx(Button, { text: true, type: "button", className: "w-8rem text-left gap-2", label: "Delete", size: "small", iconPos: "left", severity: "danger", icon: 'pi pi-trash', onClick: function () { return setDeleteEntity(true); } }) }) })] }));
|
|
375
365
|
};
|
|
376
366
|
var _u = useState(false), isDirty = _u[0], setIsDirty = _u[1];
|
|
377
|
-
return (_jsxs("div", { className: "solid-form-wrapper", children: [
|
|
367
|
+
return (_jsxs("div", { className: "solid-form-wrapper", children: [_jsxs("div", { style: { width: '100%', borderRight: '1px solid var(--primary-light-color' }, children: [_jsx("div", { className: "solid-form-header", children: params.id === "new" ?
|
|
378
368
|
_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex align-items-center gap-3", children: [_jsx(BackButton, {}), _jsxs("div", { className: "form-wrapper-title solid-long-text-wrapper ", children: ["Create Model ", (modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.displayName) ? "- ".concat(modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.displayName) : ""] })] }), _jsxs("div", { className: "gap-3 flex", children: [isDirty &&
|
|
379
369
|
_jsx(Button, { label: "Save", size: "small", onClick: handleSubmit, type: "submit" }), _jsx(CancelButton, {})] })] })
|
|
380
370
|
:
|
|
@@ -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 { CancelButton, SolidCancelButton } from \"../../../components/common/CancelButton\";\nimport { handleError } from \"../../../helpers/ToastContainer\";\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 { Button } from \"primereact/button\";\nimport { TabPanel, TabView } from \"primereact/tabview\";\nimport { Toast } from \"primereact/toast\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport FieldMetaData from \"./FieldMetaData\";\nimport ModelMetaData from \"./ModelMetaData\";\nimport { BackButton } from \"../../../components/common/BackButton\";\nimport { SolidFormStepper } from \"../../../components/common/SolidFormStepper\";\nimport { Dialog } from \"primereact/dialog\";\nimport { Divider } from \"primereact/divider\";\nimport { OverlayPanel } from \"primereact/overlaypanel\";\nimport { SolidBreadcrumb } from \"../../../components/common/SolidBreadcrumb\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\nconst CreateModel = ({ data, params }: any) => {\n\n const toast = useRef<Toast>(null);\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 [activeIndex, setActiveIndex] = useState<number>(0);\n const [tabErrors, setTabErrors] = useState<{ [key: number]: boolean }>({});\n const [formErrors, setFormErrors] = useState<Record<string, string>>({});\n\n const nextTab = () => {\n setActiveIndex(activeIndex + 1);\n };\n\n useEffect(() => {\n if (data) {\n const isLegacyTable = data.isLegacyTableWithId || data.isLegacyTable\n const isLegacyTableWithId = data.isLegacyTable ;\n const modelData = {\n ...data, moduleId: data?.module?.id, parentModelId: data?.parentModel,isLegacyTable,isLegacyTableWithId\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: number | undefined;\n if (Object.keys(errors).length > 0) {\n setFormErrors(errors);\n const errorMessages = Object.values(errors);\n errorMessages.forEach((error) => {\n handleError([error]); // Call handleError for each error separately\n });\n\n firstErrorTab = 0; // Model Metadata tab has errors\n } else {\n setFormErrors({});\n }\n\n if (fieldMetaData.length === 0) {\n handleError([ERROR_MESSAGES.ADD_ATLEAST_ONE_FIELD]);\n firstErrorTab = firstErrorTab ?? 1; // If no prior error, set to Field tab\n }\n\n if (firstErrorTab !== undefined) {\n setTabErrors({ [firstErrorTab]: true }); // Set error only on the first tab with an issue\n setActiveIndex(firstErrorTab); // Switch to the tab with an error\n } else {\n handleFormSubmit();\n }\n });\n }\n };\n\n\n const handleFormSubmit = async () => {\n\n let legacyTableConfig = {};\n \n if (modelMetaData?.isLegacyTable && modelMetaData?.isLegacyTableWithId) {\n // UI: Both checked → Backend: both true\n legacyTableConfig = {\n isLegacyTable: true,\n isLegacyTableWithId: false\n };\n } else if (modelMetaData?.isLegacyTable && !modelMetaData?.isLegacyTableWithId) {\n // UI: Only isLegacyTable checked → Backend: only isLegacyTableWithId true\n legacyTableConfig = {\n isLegacyTable: false,\n isLegacyTableWithId: true\n };\n } else {\n // UI: Neither checked → Backend: both false\n legacyTableConfig = {\n isLegacyTable: false,\n isLegacyTableWithId: false\n };\n }\n\n if (modelMetaData?.isLegacyTable || modelMetaData?.isLegacyTableWithId) {\n const hasPrimaryKey = fieldMetaData.some(\n (field: any) => field.isPrimaryKey === true\n );\n \n if (!hasPrimaryKey) {\n toast?.current?.show({\n severity: \"error\",\n summary: \"Primary Key Required\",\n detail: \"Legacy tables set at least one field marked as Primary Key. Please mark a field as Primary Key before proceeding.\",\n life: 5000,\n });\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 toast?.current?.show({\n severity: \"error\",\n summary: ERROR_MESSAGES.SEND_REPORT,\n // sticky: true,\n life: 3000,\n //@ts-ignore\n content: (props) => (\n <div\n className=\"flex flex-column align-items-left\"\n style={{ flex: \"1\" }}\n >\n {errorMessages.map((m, index) => (\n <div className=\"flex align-items-center gap-2\" key={index}>\n <span className=\"font-bold text-900\">{String(m)}</span>\n </div>\n ))}\n </div>\n ),\n });\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 useEffect(() => {\n const tabHeaders = document.querySelectorAll(\".p-tabview-nav li\");\n if (tabHeaders.length > 0) {\n if (tabErrors[0]) {\n tabHeaders[0].classList.remove(\"p-highlight\");\n }\n if (tabErrors[1]) {\n tabHeaders[1].classList.remove(\"p-highlight\");\n }\n }\n }, [tabErrors]);\n\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 handleError(error); // Call the centralized error handler\n }\n });\n }\n\n }, [isCreateModelError, isDeleteModelError, isUpdateModelError])\n const op = useRef(null);\n\n const formActionDropdown = () => {\n return (\n <div>\n <Button\n outlined\n severity=\"secondary\"\n type=\"button\"\n icon={'pi pi-cog'}\n size=\"small\"\n className=\"surface-card p-0 hidden md:flex\"\n style={{\n height: 33.06,\n width: 33.06\n }}\n onClick={(e) =>\n // @ts-ignore \n op.current.toggle(e)\n }\n />\n <Button\n outlined\n type=\"button\"\n icon={'pi pi-cog'}\n size=\"small\"\n className=\"surface-card p-0 solid-icon-button md:hidden\"\n // style={{\n // height: 33.06,\n // width: 33.06\n // }}\n onClick={(e) =>\n // @ts-ignore \n op.current.toggle(e)\n }\n />\n <OverlayPanel ref={op} className=\"solid-custom-overlay\">\n <div className=\"flex flex-column gap-1 p-1\">\n {/* <Button\n text\n type=\"button\"\n className=\"w-8rem text-left gap-2 text-color\"\n label=\"Duplicate\"\n size=\"small\"\n iconPos=\"left\"\n icon={<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 11.9997C5.63333 11.9997 5.31944 11.8691 5.05833 11.608C4.79722 11.3469 4.66667 11.033 4.66667 10.6663V2.66634C4.66667 2.29967 4.79722 1.98579 5.05833 1.72467C5.31944 1.46356 5.63333 1.33301 6 1.33301H12C12.3667 1.33301 12.6806 1.46356 12.9417 1.72467C13.2028 1.98579 13.3333 2.29967 13.3333 2.66634V10.6663C13.3333 11.033 13.2028 11.3469 12.9417 11.608C12.6806 11.8691 12.3667 11.9997 12 11.9997H6ZM6 10.6663H12V2.66634H6V10.6663ZM3.33333 14.6663C2.96667 14.6663 2.65278 14.5358 2.39167 14.2747C2.13056 14.0136 2 13.6997 2 13.333V3.99967H3.33333V13.333H10.6667V14.6663H3.33333Z\" fill=\"black\" fill-opacity=\"0.88\" />\n </svg>}\n /> */}\n <Button\n text\n type=\"button\"\n className=\"w-8rem text-left gap-2\"\n label=\"Delete\"\n size=\"small\"\n iconPos=\"left\"\n severity=\"danger\"\n icon={'pi pi-trash'}\n onClick={() => setDeleteEntity(true)}\n />\n </div>\n </OverlayPanel>\n </div>\n )\n }\n\n const [isDirty, setIsDirty] = useState(false);\n\n\n return (\n <div className=\"solid-form-wrapper\">\n <Toast ref={toast} />\n <div style={{ width: '100%', borderRight: '1px solid var(--primary-light-color' }}>\n <div className=\"solid-form-header\">\n {params.id === \"new\" ?\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title solid-long-text-wrapper \">Create Model {modelMetaData?.displayName ? `- ${modelMetaData?.displayName}` : \"\"}</div>\n </div>\n <div className=\"gap-3 flex\">\n {isDirty &&\n <Button label=\"Save\" size=\"small\" onClick={handleSubmit} type=\"submit\" />\n }\n <CancelButton />\n </div>\n </>\n :\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title solid-long-text-wrapper \">Edit Model {modelMetaData?.displayName ? `- ${modelMetaData?.displayName}` : \"\"}</div>\n </div>\n <div className=\"gap-3 flex\">\n {data?.isSystem !== true &&\n <>\n <div>\n {isDirty &&\n <>\n <Button label=\"Save\" size=\"small\" type=\"submit\" className=\"hidden lg:flex\" onClick={handleSubmit} />\n <Button icon=\"pi pi-check\" size=\"small\" type=\"submit\" className=\" lg:hidden solid-icon-button\" onClick={handleSubmit} />\n </>\n }\n </div>\n {/* <div>\n <Button outlined label=\"Delete\" size=\"small\" severity=\"danger\" type=\"button\" onClick={() => setDeleteEntity(true)} />\n </div> */}\n </>\n }\n {/* <CancelButton /> */}\n <SolidCancelButton />\n {formActionDropdown()}\n </div>\n </>\n }\n </div>\n <SolidFormHeader />\n {/* <div className=\"solid-form-stepper\">\n <SolidFormStepper />\n </div> */}\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n <TabView\n activeIndex={activeIndex}\n onTabChange={(e) => {\n if (activeIndex == 0) {\n formikModelMetadataRef.current.handleSubmit();\n setActiveIndex(e.index)\n\n }\n if (activeIndex == 1) {\n setActiveIndex(e.index)\n }\n\n }}\n panelContainerClassName=\"px-0\"\n className=\"relative\"\n >\n <TabPanel header=\"Model\"\n headerClassName={tabErrors[0] ? \"tab-error-heading \" : \"\"}>\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 </TabPanel>\n <TabPanel header=\"Fields\"\n headerClassName={tabErrors[1] ? \"tab-error-heading \" : \"\"}>\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 </TabPanel>\n </TabView>\n </div>\n </div>\n {/* <div style={{ width: '22.5%' }}></div> */}\n <Dialog header=\"Delete Field\" headerClassName=\"py-2\" className=\"solid-confirm-dialog\" contentClassName=\"px-0 pb-0\" visible={deleteEntity} style={{ width: '20vw' }} onHide={() => { if (!deleteEntity) return; setDeleteEntity(false); }}>\n <Divider 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 Field ?\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 <Button label=\"Delete\" size=\"small\" onClick={deleteModelFunction} />\n <Button label=\"Cancel\" size=\"small\" onClick={() => setDeleteEntity(false)} outlined />\n </div>\n </div>\n </Dialog>\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":["\n\nimport { CancelButton, SolidCancelButton } from \"../../../components/common/CancelButton\";\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 { Button } from \"primereact/button\";\nimport { TabPanel, TabView } from \"primereact/tabview\";\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 { BackButton } from \"../../../components/common/BackButton\";\nimport { SolidFormStepper } from \"../../../components/common/SolidFormStepper\";\nimport { Dialog } from \"primereact/dialog\";\nimport { Divider } from \"primereact/divider\";\nimport { OverlayPanel } from \"primereact/overlaypanel\";\nimport { SolidBreadcrumb } from \"../../../components/common/SolidBreadcrumb\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\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 [activeIndex, setActiveIndex] = useState<number>(0);\n const [tabErrors, setTabErrors] = useState<{ [key: number]: boolean }>({});\n const [formErrors, setFormErrors] = useState<Record<string, string>>({});\n\n const nextTab = () => {\n setActiveIndex(activeIndex + 1);\n };\n\n useEffect(() => {\n if (data) {\n const isLegacyTable = data.isLegacyTableWithId || data.isLegacyTable\n const isLegacyTableWithId = data.isLegacyTable ;\n const modelData = {\n ...data, moduleId: data?.module?.id, parentModelId: data?.parentModel,isLegacyTable,isLegacyTableWithId\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: number | 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 = 0; // 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 ?? 1; // If no prior error, set to Field tab\n }\n\n if (firstErrorTab !== undefined) {\n setTabErrors({ [firstErrorTab]: true }); // Set error only on the first tab with an issue\n setActiveIndex(firstErrorTab); // Switch to the tab with an error\n } else {\n handleFormSubmit();\n }\n });\n }\n };\n\n\n const handleFormSubmit = async () => {\n\n let legacyTableConfig = {};\n \n if (modelMetaData?.isLegacyTable && modelMetaData?.isLegacyTableWithId) {\n // UI: Both checked → Backend: both true\n legacyTableConfig = {\n isLegacyTable: true,\n isLegacyTableWithId: false\n };\n } else if (modelMetaData?.isLegacyTable && !modelMetaData?.isLegacyTableWithId) {\n // UI: Only isLegacyTable checked → Backend: only isLegacyTableWithId true\n legacyTableConfig = {\n isLegacyTable: false,\n isLegacyTableWithId: true\n };\n } else {\n // UI: Neither checked → Backend: both false\n legacyTableConfig = {\n isLegacyTable: false,\n isLegacyTableWithId: false\n };\n }\n\n if (modelMetaData?.isLegacyTable || modelMetaData?.isLegacyTableWithId) {\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 useEffect(() => {\n const tabHeaders = document.querySelectorAll(\".p-tabview-nav li\");\n if (tabHeaders.length > 0) {\n if (tabErrors[0]) {\n tabHeaders[0].classList.remove(\"p-highlight\");\n }\n if (tabErrors[1]) {\n tabHeaders[1].classList.remove(\"p-highlight\");\n }\n }\n }, [tabErrors]);\n\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 op = useRef(null);\n\n const formActionDropdown = () => {\n return (\n <div>\n <Button\n outlined\n severity=\"secondary\"\n type=\"button\"\n icon={'pi pi-cog'}\n size=\"small\"\n className=\"surface-card p-0 hidden md:flex\"\n style={{\n height: 33.06,\n width: 33.06\n }}\n onClick={(e) =>\n // @ts-ignore \n op.current.toggle(e)\n }\n />\n <Button\n outlined\n type=\"button\"\n icon={'pi pi-cog'}\n size=\"small\"\n className=\"surface-card p-0 solid-icon-button md:hidden\"\n // style={{\n // height: 33.06,\n // width: 33.06\n // }}\n onClick={(e) =>\n // @ts-ignore \n op.current.toggle(e)\n }\n />\n <OverlayPanel ref={op} className=\"solid-custom-overlay\">\n <div className=\"flex flex-column gap-1 p-1\">\n {/* <Button\n text\n type=\"button\"\n className=\"w-8rem text-left gap-2 text-color\"\n label=\"Duplicate\"\n size=\"small\"\n iconPos=\"left\"\n icon={<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 11.9997C5.63333 11.9997 5.31944 11.8691 5.05833 11.608C4.79722 11.3469 4.66667 11.033 4.66667 10.6663V2.66634C4.66667 2.29967 4.79722 1.98579 5.05833 1.72467C5.31944 1.46356 5.63333 1.33301 6 1.33301H12C12.3667 1.33301 12.6806 1.46356 12.9417 1.72467C13.2028 1.98579 13.3333 2.29967 13.3333 2.66634V10.6663C13.3333 11.033 13.2028 11.3469 12.9417 11.608C12.6806 11.8691 12.3667 11.9997 12 11.9997H6ZM6 10.6663H12V2.66634H6V10.6663ZM3.33333 14.6663C2.96667 14.6663 2.65278 14.5358 2.39167 14.2747C2.13056 14.0136 2 13.6997 2 13.333V3.99967H3.33333V13.333H10.6667V14.6663H3.33333Z\" fill=\"black\" fill-opacity=\"0.88\" />\n </svg>}\n /> */}\n <Button\n text\n type=\"button\"\n className=\"w-8rem text-left gap-2\"\n label=\"Delete\"\n size=\"small\"\n iconPos=\"left\"\n severity=\"danger\"\n icon={'pi pi-trash'}\n onClick={() => setDeleteEntity(true)}\n />\n </div>\n </OverlayPanel>\n </div>\n )\n }\n\n const [isDirty, setIsDirty] = useState(false);\n\n\n return (\n <div className=\"solid-form-wrapper\">\n <div style={{ width: '100%', borderRight: '1px solid var(--primary-light-color' }}>\n <div className=\"solid-form-header\">\n {params.id === \"new\" ?\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title solid-long-text-wrapper \">Create Model {modelMetaData?.displayName ? `- ${modelMetaData?.displayName}` : \"\"}</div>\n </div>\n <div className=\"gap-3 flex\">\n {isDirty &&\n <Button label=\"Save\" size=\"small\" onClick={handleSubmit} type=\"submit\" />\n }\n <CancelButton />\n </div>\n </>\n :\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title solid-long-text-wrapper \">Edit Model {modelMetaData?.displayName ? `- ${modelMetaData?.displayName}` : \"\"}</div>\n </div>\n <div className=\"gap-3 flex\">\n {data?.isSystem !== true &&\n <>\n <div>\n {isDirty &&\n <>\n <Button label=\"Save\" size=\"small\" type=\"submit\" className=\"hidden lg:flex\" onClick={handleSubmit} />\n <Button icon=\"pi pi-check\" size=\"small\" type=\"submit\" className=\" lg:hidden solid-icon-button\" onClick={handleSubmit} />\n </>\n }\n </div>\n {/* <div>\n <Button outlined label=\"Delete\" size=\"small\" severity=\"danger\" type=\"button\" onClick={() => setDeleteEntity(true)} />\n </div> */}\n </>\n }\n {/* <CancelButton /> */}\n <SolidCancelButton />\n {formActionDropdown()}\n </div>\n </>\n }\n </div>\n <SolidFormHeader />\n {/* <div className=\"solid-form-stepper\">\n <SolidFormStepper />\n </div> */}\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n <TabView\n activeIndex={activeIndex}\n onTabChange={(e) => {\n if (activeIndex == 0) {\n formikModelMetadataRef.current.handleSubmit();\n setActiveIndex(e.index)\n\n }\n if (activeIndex == 1) {\n setActiveIndex(e.index)\n }\n\n }}\n panelContainerClassName=\"px-0\"\n className=\"relative\"\n >\n <TabPanel header=\"Model\"\n headerClassName={tabErrors[0] ? \"tab-error-heading \" : \"\"}>\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 </TabPanel>\n <TabPanel header=\"Fields\"\n headerClassName={tabErrors[1] ? \"tab-error-heading \" : \"\"}>\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 </TabPanel>\n </TabView>\n </div>\n </div>\n {/* <div style={{ width: '22.5%' }}></div> */}\n <Dialog header=\"Delete Field\" headerClassName=\"py-2\" className=\"solid-confirm-dialog\" contentClassName=\"px-0 pb-0\" visible={deleteEntity} style={{ width: '20vw' }} onHide={() => { if (!deleteEntity) return; setDeleteEntity(false); }}>\n <Divider 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 Field ?\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 <Button label=\"Delete\" size=\"small\" onClick={deleteModelFunction} />\n <Button label=\"Cancel\" size=\"small\" onClick={() => setDeleteEntity(false)} outlined />\n </div>\n </div>\n </Dialog>\n </div>\n );\n};\n\nexport default CreateModel;\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
import { CancelButton, SolidCancelButton } from "../../../components/common/CancelButton";
|
|
4
|
-
import { handleError } from "../../../helpers/ToastContainer";
|
|
5
4
|
import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
|
|
6
5
|
import { useCreatemodelMutation, useDeletemodelMutation, useLazyGetModelsQuery, useUpdatemodelMutation } from "../../../redux/api/modelApi";
|
|
7
6
|
import { FetchBaseQueryError } from "@reduxjs/toolkit/dist/query";
|
|
@@ -9,9 +8,10 @@ import { usePathname } from "../../../hooks/usePathname";
|
|
|
9
8
|
import { useRouter } from "../../../hooks/useRouter";
|
|
10
9
|
import { Button } from "primereact/button";
|
|
11
10
|
import { TabPanel, TabView } from "primereact/tabview";
|
|
12
|
-
import { Toast } from "primereact/toast";
|
|
13
11
|
import qs from "qs";
|
|
14
12
|
import { useEffect, useRef, useState } from "react";
|
|
13
|
+
import { useDispatch } from "react-redux";
|
|
14
|
+
import { showToast } from "../../../redux/features/toastSlice";
|
|
15
15
|
import FieldMetaData from "./FieldMetaData";
|
|
16
16
|
import ModelMetaData from "./ModelMetaData";
|
|
17
17
|
import { BackButton } from "../../../components/common/BackButton";
|
|
@@ -31,7 +31,7 @@ interface ErrorResponseData {
|
|
|
31
31
|
|
|
32
32
|
const CreateModel = ({ data, params }: any) => {
|
|
33
33
|
|
|
34
|
-
const
|
|
34
|
+
const dispatch = useDispatch();
|
|
35
35
|
const router = useRouter();
|
|
36
36
|
const pathname = usePathname();
|
|
37
37
|
const [deleteEntity, setDeleteEntity] = useState(false);
|
|
@@ -149,7 +149,7 @@ const CreateModel = ({ data, params }: any) => {
|
|
|
149
149
|
setFormErrors(errors);
|
|
150
150
|
const errorMessages = Object.values(errors);
|
|
151
151
|
errorMessages.forEach((error) => {
|
|
152
|
-
|
|
152
|
+
dispatch(showToast({ severity: 'error', summary: 'Error', detail: Array.isArray(error) ? error.join(', ') : String(error) }));
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
firstErrorTab = 0; // Model Metadata tab has errors
|
|
@@ -158,7 +158,7 @@ const CreateModel = ({ data, params }: any) => {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
if (fieldMetaData.length === 0) {
|
|
161
|
-
|
|
161
|
+
dispatch(showToast({ severity: 'error', summary: 'Error', detail: ERROR_MESSAGES.ADD_ATLEAST_ONE_FIELD }));
|
|
162
162
|
firstErrorTab = firstErrorTab ?? 1; // If no prior error, set to Field tab
|
|
163
163
|
}
|
|
164
164
|
|
|
@@ -203,12 +203,7 @@ const CreateModel = ({ data, params }: any) => {
|
|
|
203
203
|
);
|
|
204
204
|
|
|
205
205
|
if (!hasPrimaryKey) {
|
|
206
|
-
|
|
207
|
-
severity: "error",
|
|
208
|
-
summary: "Primary Key Required",
|
|
209
|
-
detail: "Legacy tables set at least one field marked as Primary Key. Please mark a field as Primary Key before proceeding.",
|
|
210
|
-
life: 5000,
|
|
211
|
-
});
|
|
206
|
+
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 }));
|
|
212
207
|
return;
|
|
213
208
|
}
|
|
214
209
|
}
|
|
@@ -257,25 +252,7 @@ const CreateModel = ({ data, params }: any) => {
|
|
|
257
252
|
const errorMessages = Object.values(errors);
|
|
258
253
|
|
|
259
254
|
if (errorMessages.length > 0) {
|
|
260
|
-
|
|
261
|
-
severity: "error",
|
|
262
|
-
summary: ERROR_MESSAGES.SEND_REPORT,
|
|
263
|
-
// sticky: true,
|
|
264
|
-
life: 3000,
|
|
265
|
-
//@ts-ignore
|
|
266
|
-
content: (props) => (
|
|
267
|
-
<div
|
|
268
|
-
className="flex flex-column align-items-left"
|
|
269
|
-
style={{ flex: "1" }}
|
|
270
|
-
>
|
|
271
|
-
{errorMessages.map((m, index) => (
|
|
272
|
-
<div className="flex align-items-center gap-2" key={index}>
|
|
273
|
-
<span className="font-bold text-900">{String(m)}</span>
|
|
274
|
-
</div>
|
|
275
|
-
))}
|
|
276
|
-
</div>
|
|
277
|
-
),
|
|
278
|
-
});
|
|
255
|
+
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));
|
|
279
256
|
}
|
|
280
257
|
};
|
|
281
258
|
|
|
@@ -342,7 +319,11 @@ const CreateModel = ({ data, params }: any) => {
|
|
|
342
319
|
// Handle any error
|
|
343
320
|
errors.forEach(({ isError, error }) => {
|
|
344
321
|
if (isError && error) {
|
|
345
|
-
|
|
322
|
+
const errorMessage = error && typeof error === 'object' && 'data' in error && 'message' in (error as any).data
|
|
323
|
+
? (error as any).data.message
|
|
324
|
+
: 'Something went wrong';
|
|
325
|
+
const detail = Array.isArray(errorMessage) ? errorMessage.join(', ') : String(errorMessage);
|
|
326
|
+
dispatch(showToast({ severity: 'error', summary: 'Error', detail }));
|
|
346
327
|
}
|
|
347
328
|
});
|
|
348
329
|
}
|
|
@@ -419,7 +400,6 @@ const CreateModel = ({ data, params }: any) => {
|
|
|
419
400
|
|
|
420
401
|
return (
|
|
421
402
|
<div className="solid-form-wrapper">
|
|
422
|
-
<Toast ref={toast} />
|
|
423
403
|
<div style={{ width: '100%', borderRight: '1px solid var(--primary-light-color' }}>
|
|
424
404
|
<div className="solid-form-header">
|
|
425
405
|
{params.id === "new" ?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldMetaData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/FieldMetaData.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FieldMetaData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/model/FieldMetaData.tsx"],"names":[],"mappings":"AAcA,QAAA,MAAM,aAAa,kIAAmI,GAAG,4CAiOxJ,CAAC;AACF,eAAe,aAAa,CAAC"}
|
|
@@ -43,6 +43,8 @@ import { Dialog } from "primereact/dialog";
|
|
|
43
43
|
import { useMountEffect } from "primereact/hooks";
|
|
44
44
|
import { Messages } from "primereact/messages";
|
|
45
45
|
import { useRef, useState } from "react";
|
|
46
|
+
import { useDispatch } from "react-redux";
|
|
47
|
+
import { showToast } from "../../../redux/features/toastSlice";
|
|
46
48
|
import FieldMetaDataForm from "./FieldMetaDataForm";
|
|
47
49
|
import { ERROR_MESSAGES } from "../../../constants/error-messages";
|
|
48
50
|
var FieldMetaData = function (_a) {
|
|
@@ -61,7 +63,7 @@ var FieldMetaData = function (_a) {
|
|
|
61
63
|
});
|
|
62
64
|
}
|
|
63
65
|
});
|
|
64
|
-
var
|
|
66
|
+
var dispatch = useDispatch();
|
|
65
67
|
var _b = useState(false), visiblePopup = _b[0], setVisiblePopup = _b[1];
|
|
66
68
|
var _c = useState(false), isRequiredPopUp = _c[0], setIsRequiredPopUp = _c[1];
|
|
67
69
|
var _d = useState(), currentPopup = _d[0], setCurrentPopup = _d[1];
|
|
@@ -100,17 +102,10 @@ var FieldMetaData = function (_a) {
|
|
|
100
102
|
};
|
|
101
103
|
var showToaster = function (message, severity) { return __awaiter(void 0, void 0, void 0, function () {
|
|
102
104
|
var errorMessages;
|
|
103
|
-
|
|
104
|
-
return __generator(this, function (_b) {
|
|
105
|
+
return __generator(this, function (_a) {
|
|
105
106
|
errorMessages = Object.values(message);
|
|
106
107
|
if (errorMessages.length > 0) {
|
|
107
|
-
(
|
|
108
|
-
severity: severity,
|
|
109
|
-
summary: ERROR_MESSAGES.SEND_REPORT,
|
|
110
|
-
life: 3000,
|
|
111
|
-
//@ts-ignore
|
|
112
|
-
content: function (props) { return (_jsx("div", { className: "flex flex-column align-items-left", style: { flex: "1" }, children: errorMessages.map(function (m, index) { return (_jsx("div", { className: "flex align-items-center gap-2", children: _jsx("span", { className: "font-bold text-900", children: String(m) }) }, index)); }) })); },
|
|
113
|
-
});
|
|
108
|
+
dispatch(showToast({ severity: severity, summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));
|
|
114
109
|
}
|
|
115
110
|
return [2 /*return*/];
|
|
116
111
|
});
|
|
@@ -127,14 +122,8 @@ var FieldMetaData = function (_a) {
|
|
|
127
122
|
_jsx(Button, { label: "Add",
|
|
128
123
|
// icon="pi pi-external-link"
|
|
129
124
|
onClick: function () {
|
|
130
|
-
var _a;
|
|
131
125
|
if (!(modelMetaData === null || modelMetaData === void 0 ? void 0 : modelMetaData.dataSourceType)) {
|
|
132
|
-
(
|
|
133
|
-
severity: 'error',
|
|
134
|
-
summary: ERROR_MESSAGES.ERROR,
|
|
135
|
-
detail: ERROR_MESSAGES.ORM_TYPE_REQUIRED,
|
|
136
|
-
sticky: true,
|
|
137
|
-
});
|
|
126
|
+
dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.ERROR, detail: ERROR_MESSAGES.ORM_TYPE_REQUIRED }));
|
|
138
127
|
}
|
|
139
128
|
else {
|
|
140
129
|
setSelectedFieldMetaData(null);
|