@solidxai/core-ui 0.1.9-beta.18 → 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.
- package/dist/adapters/auth/handleLogout.d.ts +1 -1
- package/dist/adapters/auth/handleLogout.d.ts.map +1 -1
- package/dist/adapters/auth/handleLogout.js +20 -32
- package/dist/adapters/auth/handleLogout.js.map +1 -1
- package/dist/adapters/auth/handleLogout.ts +7 -14
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +1 -10
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +1 -8
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +6 -11
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +5 -31
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +47 -13
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +38 -4
- package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts +16 -0
- package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js +31 -0
- package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.tsx +43 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts +3 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js +141 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.tsx +205 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts +4 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +112 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +146 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +11 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +22 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +36 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts +3 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js +133 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.ts +76 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +12 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +168 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +241 -0
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -0
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +2 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +74 -68
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +13 -4
- package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.js +0 -2
- package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.tsx +0 -1
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +10 -9
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +3 -1
- package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.js +3 -0
- package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.tsx +2 -0
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +3 -0
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +2 -0
- package/dist/components/core/list/SolidListViewRowActionsMenu.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionsMenu.js +7 -1
- package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +5 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.js +4 -6
- package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.tsx +1 -3
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +3 -2
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +3 -2
- package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js +3 -2
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -2
- package/dist/components/core/model/CreateModel.css +48 -0
- package/dist/components/core/model/CreateModel.d.ts +1 -0
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +69 -104
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +92 -204
- package/dist/components/core/model/FieldMetaData.d.ts +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +6 -22
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +6 -45
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +196 -222
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +0 -72
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +7 -7
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +7 -0
- package/dist/components/core/module/CreateModule.css +44 -0
- package/dist/components/core/module/CreateModule.d.ts +1 -0
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +40 -43
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +243 -247
- package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
- package/dist/components/core/module/ModuleListViewData.js +47 -7
- package/dist/components/core/module/ModuleListViewData.js.map +1 -1
- package/dist/components/core/module/ModuleListViewData.tsx +58 -0
- package/dist/components/core/module/ModuleMetadataExplorer.css +638 -0
- package/dist/components/core/module/ModuleMetadataExplorer.d.ts +15 -0
- package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -0
- package/dist/components/core/module/ModuleMetadataExplorer.js +666 -0
- package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -0
- package/dist/components/core/module/ModuleMetadataExplorer.tsx +1000 -0
- package/dist/components/core/module/ModulePackageDialog.css +540 -0
- package/dist/components/core/module/ModulePackageDialog.d.ts +16 -0
- package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -0
- package/dist/components/core/module/ModulePackageDialog.js +625 -0
- package/dist/components/core/module/ModulePackageDialog.js.map +1 -0
- package/dist/components/core/module/ModulePackageDialog.tsx +906 -0
- package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
- package/dist/components/layout/user-profile-menu.js +57 -33
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/components/layout/user-profile-menu.tsx +11 -59
- package/dist/helpers/buttonEnvironment.d.ts +5 -0
- package/dist/helpers/buttonEnvironment.d.ts.map +1 -0
- package/dist/helpers/buttonEnvironment.js +30 -0
- package/dist/helpers/buttonEnvironment.js.map +1 -0
- package/dist/helpers/buttonEnvironment.ts +35 -0
- package/dist/helpers/fileTypeIcon.d.ts +12 -0
- package/dist/helpers/fileTypeIcon.d.ts.map +1 -0
- package/dist/helpers/fileTypeIcon.js +37 -0
- package/dist/helpers/fileTypeIcon.js.map +1 -0
- package/dist/helpers/fileTypeIcon.tsx +65 -0
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +10 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +10 -0
- package/dist/helpers/waitForBackendAvailability.d.ts +7 -0
- package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -0
- package/dist/helpers/waitForBackendAvailability.js +86 -0
- package/dist/helpers/waitForBackendAvailability.js.map +1 -0
- package/dist/helpers/waitForBackendAvailability.ts +37 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/index.ts +18 -0
- package/dist/redux/api/moduleApi.d.ts +26 -1
- package/dist/redux/api/moduleApi.d.ts.map +1 -1
- package/dist/redux/api/moduleApi.js +237 -1
- package/dist/redux/api/moduleApi.js.map +1 -1
- package/dist/redux/api/moduleApi.ts +181 -1
- package/dist/redux/store/defaultStoreConfig.d.ts +22 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/solidEntityApiPool.d.ts +1 -0
- package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
- package/dist/redux/store/solidEntityApiPool.js +4 -0
- package/dist/redux/store/solidEntityApiPool.js.map +1 -1
- package/dist/redux/store/solidEntityApiPool.ts +4 -0
- package/dist/resources/globals.css +56 -0
- package/dist/resources/shadcn-base.css +5 -0
- package/dist/routes/AppEventListener.d.ts.map +1 -1
- package/dist/routes/AppEventListener.js +58 -8
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +69 -8
- package/dist/types/index.d.ts +1 -0
- package/dist/types/jsoneditor.d.ts +4 -0
- package/package.json +2 -1
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
2
|
import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
|
|
4
|
-
import { useCreatemodelMutation,
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
37
|
+
useGetFieldDefaultMetaDataQuery(null);
|
|
50
38
|
const [allModelsNames, setAllModelsNames] = useState([]);
|
|
51
39
|
|
|
52
|
-
const [triggerGetModels, { data: allmodels
|
|
40
|
+
const [triggerGetModels, { data: allmodels }] =
|
|
53
41
|
useLazyGetModelsQuery();
|
|
54
42
|
|
|
55
43
|
|
|
56
44
|
const [
|
|
57
45
|
createModel,
|
|
58
|
-
{
|
|
46
|
+
{ isSuccess: isCreateModelSuccess, isError: isCreateModelError, error: createModelError },
|
|
59
47
|
] = useCreatemodelMutation();
|
|
60
48
|
|
|
61
49
|
const [
|
|
62
50
|
updateModel,
|
|
63
|
-
{
|
|
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 =
|
|
76
|
-
const nextValue =
|
|
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
|
-
}, [
|
|
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
|
|
230
|
+
if (isCreateModelSuccess == true || isUpdatedModelSuceess == true) {
|
|
251
231
|
// router.push(`/admin/app-builder/model/all`);
|
|
252
232
|
router.back();
|
|
253
233
|
}
|
|
254
|
-
}, [isCreateModelSuccess, isUpdatedModelSuceess
|
|
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,
|
|
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
|
|
361
|
-
const
|
|
362
|
-
const
|
|
363
|
-
const
|
|
364
|
-
|
|
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="
|
|
398
|
-
|
|
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 =
|
|
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
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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
|
-
|
|
464
|
-
|
|
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,
|
|
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,
|
|
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: "
|
|
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
|
|
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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldMetaData.js","sourceRoot":"","sources":["../../../../src/components/core/model/FieldMetaData.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,IAAM,aAAa,GAAG,UAAC,EAAkI;QAAhI,UAAU,gBAAA,EAAE,aAAa,mBAAA,EAAE,aAAa,mBAAA,EAAE,gBAAgB,sBAAA,EAAE,mBAAmB,yBAAA,EAAE,OAAO,aAAA,EAAE,uBAAuB,6BAAA,EAAE,MAAM,YAAA;IAChJ,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACzB,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IAClD,IAAA,KAAwC,QAAQ,CAAC,KAAK,CAAC,EAAtD,eAAe,QAAA,EAAE,kBAAkB,QAAmB,CAAC;IACxD,IAAA,KAAkC,QAAQ,EAAE,EAA3C,YAAY,QAAA,EAAE,eAAe,QAAc,CAAC;IAC7C,IAAA,KAAoD,QAAQ,CAAC,IAAI,CAAC,EAAjE,qBAAqB,QAAA,EAAE,wBAAwB,QAAkB,CAAC;IACnE,IAAA,KAA0C,QAAQ,CAAC,KAAK,CAAC,EAAxD,gBAAgB,QAAA,EAAE,mBAAmB,QAAmB,CAAC;IAC1D,IAAA,KAAgC,QAAQ,CAAM,IAAI,CAAC,EAAlD,WAAW,QAAA,EAAE,cAAc,QAAuB,CAAC;IAC1D,IAAM,WAAW,GAAG,UAAC,KAAU;QAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;IAExB,CAAC,CAAC;IAEF,sCAAsC;IACtC,IAAM,YAAY,GAAG,UAAC,OAAY;QAChC,OAAO,CACL,4BAEG,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI;gBAC/D,KAAC,WAAW,IACV,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mBAAmB,gBAClB,YAAY,EACvB,QAAQ,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,EAC9B,OAAO,EAAE;wBACP,wBAAwB,CAAC,OAAO,CAAC,CAAC;wBAClC,eAAe,CAAC,IAAI,CAAC,CAAC;oBACxB,CAAC,GACD,GAEH,CACJ,CAAA;IACH,CAAC,CAAC;IACF,IAAM,YAAY,GAAG,UAAC,OAAY;QAChC,OAAO,CACL,4BAEG,OAAO,CAAC,WAAW;gBAClB,4BACE,wBAAI,OAAO,CAAC,WAAW,EACpB,OAAO,CAAC,kBAAkB,KAAK,IAAI;gCAClC,8BACE,cAAS,QAAE,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,uFAA+E,IACxI,IAEH,GACH,GAEJ,CACJ,CAAA;IACH,CAAC,CAAC;IAGF,2BAA2B;IAC3B,IAAM,SAAS,GAAG,UAAC,OAAY;QAC7B,wEAAwE;QACxE,gBAAgB,CAAC,UAAC,QAAa;YAC7B,IAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,IAAS,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAA1B,CAA0B,CAAC,CAAC;YAC/E,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,4CAA4C;YAC9D,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,8CAA8C;IAC9C,IAAM,cAAc,GAAG,UAAC,OAAY;QAClC,OAAO,CACL,4BACG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC;gBAClG,KAAC,WAAW,IACV,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,gBACrC,cAAc,EACzB,QAAQ,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,EAC9B,OAAO,EAAE,cAAQ,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,GACrE,GAGH,CACJ,CAAA;IACH,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAO,OAAY,EAAE,QAAa;;;YAC9C,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,UAAA,EAAE,OAAO,EAAE,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAClI;;;SACF,CAAC;IAGF,oCAAoC;IACpC,aAAa;IACb,qDAAqD;IACrD,OAAO;IACP,KAAK;IAGL,IAAM,eAAe,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IAE7E,OAAO,CACL,4BAEG,eAAe,CAAC,CAAC;YAChB,cAAK,SAAS,EAAC,gCAAgC,YAC7C,eAAK,SAAS,EAAC,wBAAwB,aACrC,cAAK,SAAS,EAAC,6BAA6B,YAC1C,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,GACd,EACN,eAAK,SAAS,EAAC,6BAA6B,aAC1C,YAAG,SAAS,EAAC,8BAA8B,uCAA2B,EACtE,YAAG,SAAS,EAAC,6BAA6B,gGAAoF,IAC1H,IACF,GACF;YACN,CAAC;gBACD,8BACE,cAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAEnD,aAAa,CAAC,QAAQ,KAAK,IAAI;gCAC9B,KAAC,WAAW,IACV,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,EAC5B,OAAO,EAAE;wCACP,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,cAAc,CAAA,EAAE;4CAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;yCACrH;6CAAM;4CACL,wBAAwB,CAAC,IAAI,CAAC,CAAC;4CAC/B,eAAe,CAAC,IAAI,CAAC,CAAA;yCACtB;oCACH,CAAC,oBAGW,GAEZ,EACN,cAAK,SAAS,EAAC,8EAA8E,YAC3F,MAAC,SAAS,IACR,KAAK,EAAE,aAAa,EACpB,OAAO,EAAC,IAAI,EACZ,IAAI,EAAC,OAAO,EACZ,YAAY,EAAC,sBAAsB,EACnC,YAAY,EAAE,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAA3D,CAA2D,aAEtF,KAAC,MAAM,IAAC,KAAK,EAAC,aAAa,EAAC,MAAM,EAAC,cAAc,EAAC,IAAI,EAAE,YAAY,GAAW,EAC/E,KAAC,MAAM,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,GAAU,EAC5C,KAAC,MAAM,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,GAAU,EAE3C,aAAa,CAAC,QAAQ,KAAK,IAAI;wCAC9B,KAAC,MAAM,IAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,EAEvE,aAAa,CAAC,QAAQ,KAAK,IAAI;wCAC9B,KAAC,MAAM,IAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,IAElE,GACR,EACN,KAAC,WAAW,IACV,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,UAAC,IAAI;gCACjB,IAAI,CAAC,IAAI,EAAE;oCACT,eAAe,CAAC,KAAK,CAAC,CAAC;iCACxB;4BACH,CAAC,EACD,SAAS,EAAC,iCAAiC,EAC3C,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,KAAK,YAEjB,KAAC,eAAe,IAAC,SAAS,EAAC,yBAAyB,YAClD,KAAC,iBAAiB,IAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,GAAsB,GACjY,GACN,EACd,MAAC,WAAW,IACV,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,UAAC,IAAI;gCACjB,IAAI,CAAC,IAAI,EAAE;oCACT,kBAAkB,CAAC,KAAK,CAAC,CAAC;iCAC3B;4BACH,CAAC,EACD,SAAS,EAAC,8DAA8D,EACxE,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,aAElD,MAAC,iBAAiB,IAAC,SAAS,EAAC,4BAA4B,aACvD,KAAC,gBAAgB,cACf,gBAAM,SAAS,EAAC,+BAA+B,aAC7C,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,iBAAiB,GAAG,EACvD,qCAAoB,IACf,GACU,EACnB,KAAC,gBAAgB,KAAG,IACF,EACpB,KAAC,eAAe,IAAC,SAAS,EAAC,iCAAiC,YAC1D,YAAG,SAAS,EAAC,6BAA6B,4HAAgH,GAC1I,EAClB,KAAC,iBAAiB,IAAC,SAAS,EAAC,6BAA6B,YACxD,KAAC,WAAW,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,cAAM,OAAA,kBAAkB,CAAC,KAAK,CAAC,EAAzB,CAAyB,mBAEjD,GACI,IACR,EACd,MAAC,WAAW,IACV,IAAI,EAAE,gBAAgB,EACtB,YAAY,EAAE,UAAC,IAAI;gCACjB,IAAI,CAAC,IAAI,EAAE;oCACT,mBAAmB,CAAC,KAAK,CAAC,CAAC;oCAC3B,cAAc,CAAC,IAAI,CAAC,CAAC;iCACtB;4BACH,CAAC,EACD,SAAS,EAAC,4DAA4D,EACtE,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,aAElD,MAAC,iBAAiB,IAAC,SAAS,EAAC,uDAAuD,aAClF,KAAC,gBAAgB,cACf,gBAAM,SAAS,EAAC,sDAAsD,aACpE,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,iBAAiB,GAAG,EACvD,0CAAyB,IACpB,GACU,EACnB,KAAC,gBAAgB,KAAG,IACF,EACpB,KAAC,oBAAoB,IAAC,SAAS,EAAC,yBAAyB,GAAG,EAC5D,MAAC,eAAe,IAAC,SAAS,EAAC,uDAAuD,aAChF,YAAG,SAAS,EAAC,wDAAwD,sDAEjE,EACJ,cAAI,SAAS,EAAC,8BAA8B,aAC1C,sEAEE,+DAA8C,IAC3C,EACL,0DAEE,oGAAmF,IAChF,IACF,IACW,EAClB,MAAC,iBAAiB,IAAC,SAAS,EAAC,6DAA6D,aACxF,KAAC,WAAW,IACV,IAAI,EAAC,IAAI,EACT,OAAO,EAAE;gDACP,IAAI,WAAW,EAAE;oDACf,SAAS,CAAC,WAAW,CAAC,CAAC;iDACxB;gDACD,mBAAmB,CAAC,KAAK,CAAC,CAAC;gDAC3B,cAAc,CAAC,IAAI,CAAC,CAAC;4CACvB,CAAC,mBAGW,EACd,KAAC,WAAW,IACV,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE;gDACP,mBAAmB,CAAC,KAAK,CAAC,CAAC;gDAC3B,cAAc,CAAC,IAAI,CAAC,CAAC;4CACvB,CAAC,uBAGW,IACI,IACR,IAEb,GAEJ,CAIJ,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,aAAa,CAAC","sourcesContent":["import { usePathname } from \"../../../hooks/usePathname\";\nimport { SolidDataTable as DataTable, Column } from \"../list/SolidDataTable\";\nimport { useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport FieldMetaDataForm from \"./FieldMetaDataForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { AlertTriangle, Info, Pencil, Plus, Trash2 } from \"lucide-react\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../shad-cn-ui\";\n\n\nconst FieldMetaData = ({ setIsDirty, modelMetaData, fieldMetaData, setFieldMetaData, deleteModelFunction, nextTab, formikFieldsMetadataRef, params }: any) => {\n const pathname = usePathname();\n const dispatch = useDispatch();\n const [visiblePopup, setVisiblePopup] = useState(false);\n const [isRequiredPopUp, setIsRequiredPopUp] = useState(false);\n const [currentPopup, setCurrentPopup] = useState();\n const [selectedFieldMetaData, setSelectedFieldMetaData] = useState(null);\n const [deleteAlertPopup, setDeleteAlertPopup] = useState(false);\n const [rowToDelete, setRowToDelete] = useState<any>(null);\n const onRowSelect = (event: any) => {\n setVisiblePopup(true);\n\n };\n\n // Template for the pencil icon column\n const editTemplate = (rowData: any) => {\n return (\n <>\n\n {rowData.isSystem !== true && rowData.isMarkedForRemoval !== true &&\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n aria-label=\"Edit field\"\n leftIcon={<Pencil size={14} />}\n onClick={() => {\n setSelectedFieldMetaData(rowData);\n setVisiblePopup(true);\n }}\n />\n }\n </>\n )\n };\n const bodyTemplate = (rowData: any) => {\n return (\n <>\n\n {rowData.displayName &&\n <>\n <p>{rowData.displayName}\n {rowData.isMarkedForRemoval === true &&\n <>\n <br></br> <span style={{ fontSize: '11px', color: 'red' }}>This field will be removed next time you generate code for this model.</span>\n </>\n }\n </p>\n </>\n }\n </>\n )\n };\n\n\n // Function to delete a row\n const deleteRow = (rowData: any) => {\n //show dialog bbefore deletion & which will have to option ok and cancel\n setFieldMetaData((prevData: any) => {\n const updatedData = prevData.filter((item: any) => item.name !== rowData.name);\n setIsDirty(true); // Ensure dirty state is updated immediately\n return updatedData;\n });\n };\n\n // Template for the trash (delete) icon column\n const deleteTemplate = (rowData: any) => {\n return (\n <>\n {(pathname.includes('create') || (rowData.isSystem !== true && rowData.isMarkedForRemoval !== true)) &&\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n style={{ color: \"var(--solid-danger, #ef4444)\" }}\n aria-label=\"Delete field\"\n leftIcon={<Trash2 size={14} />}\n onClick={() => { setRowToDelete(rowData); setDeleteAlertPopup(true) }}\n />\n\n }\n </>\n )\n };\n\n const showToaster = async (message: any, severity: any) => {\n const errorMessages = Object.values(message);\n if (errorMessages.length > 0) {\n dispatch(showToast({ severity, summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));\n }\n };\n\n\n // const rowClass = (data: any) => {\n // return {\n // 'bg-red-row': data.isMarkedForRemoval === true\n // };\n // };\n\n\n const needsModelSetup = !modelMetaData.moduleId || !modelMetaData.dataSource;\n\n return (\n <>\n\n {needsModelSetup ?\n <div className=\"solid-placeholder-card-wrapper\">\n <div className=\"solid-placeholder-card\">\n <div className=\"solid-placeholder-card-icon\">\n <Info size={18} />\n </div>\n <div className=\"solid-placeholder-card-body\">\n <p className=\"solid-placeholder-card-title\">Model setup incomplete</p>\n <p className=\"solid-placeholder-card-text\">Please select Module and Datasource from the models tab before managing fields.</p>\n </div>\n </div>\n </div>\n :\n <>\n <div className=\"absolute\" style={{ top: -3, right: 0 }}>\n {/* <h3>All Fields</h3> */}\n {modelMetaData.isSystem !== true &&\n <SolidButton\n size=\"sm\"\n leftIcon={<Plus size={14} />}\n onClick={() => {\n if (!modelMetaData?.dataSourceType) {\n dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.ERROR, detail: ERROR_MESSAGES.ORM_TYPE_REQUIRED }));\n } else {\n setSelectedFieldMetaData(null);\n setVisiblePopup(true)\n }\n }}\n >\n Add\n </SolidButton>\n }\n </div>\n <div className=\"solid-datatable-wrapper solid-list-table-area flex-1 min-h-0 overflow-hidden\">\n <DataTable\n value={fieldMetaData}\n dataKey=\"id\"\n size=\"small\"\n emptyMessage=\"No fields configured\"\n rowClassName={(rowData) => rowData.isMarkedForRemoval === true ? \"greyed-out-row\" : \"\"}\n >\n <Column field=\"displayName\" header=\"Display Name\" body={bodyTemplate}></Column>\n <Column field=\"name\" header=\"Name\"></Column>\n <Column field=\"type\" header=\"Type\"></Column>\n\n {modelMetaData.isSystem !== true &&\n <Column body={editTemplate} header=\"Edit\" style={{ width: '80px' }} />\n }\n {modelMetaData.isSystem !== true &&\n <Column body={deleteTemplate} header=\"Delete\" style={{ width: '90px' }} />\n }\n </DataTable>\n </div>\n <SolidDialog\n open={visiblePopup}\n onOpenChange={(open) => {\n if (!open) {\n setVisiblePopup(false);\n }\n }}\n className=\"solid-dialog solid-field-dialog\"\n style={{ width: \"30vw\" }}\n showHeader={false}\n >\n <SolidDialogBody className=\"solid-dialog-body-flush\">\n <FieldMetaDataForm setIsDirty={setIsDirty} modelMetaData={modelMetaData} fieldMetaData={selectedFieldMetaData} allFields={fieldMetaData} setFieldMetaData={setFieldMetaData} deleteModelFunction={deleteModelFunction} setVisiblePopup={setVisiblePopup} formikFieldsMetadataRef={formikFieldsMetadataRef} params={params} setIsRequiredPopUp={setIsRequiredPopUp} showToaster={showToaster}></FieldMetaDataForm>\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={isRequiredPopUp}\n onOpenChange={(open) => {\n if (!open) {\n setIsRequiredPopUp(false);\n }\n }}\n className=\"solid-dialog solid-confirm-dialog solid-field-confirm-dialog\"\n style={{ width: \"min(420px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-field-confirm-header\">\n <SolidDialogTitle>\n <span className=\"flex align-items-center gap-2\">\n <AlertTriangle size={18} className=\"text-yellow-500\" />\n <span>Warning</span>\n </span>\n </SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody className=\"solid-field-confirm-dialog-body\">\n <p className=\"solid-field-confirm-message\">If there is data against this model this operation might not work and manual intervention will be required.</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-field-confirm-actions\">\n <SolidButton size=\"sm\" onClick={() => setIsRequiredPopUp(false)}>\n Ok\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n <SolidDialog\n open={deleteAlertPopup}\n onOpenChange={(open) => {\n if (!open) {\n setDeleteAlertPopup(false);\n setRowToDelete(null);\n }\n }}\n className=\"solid-shadcn-confirm-dialog solid-field-delete-flow-dialog\"\n style={{ width: \"min(560px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head solid-field-delete-flow-head\">\n <SolidDialogTitle>\n <span className=\"flex align-items-center gap-2 justify-content-center\">\n <AlertTriangle size={18} className=\"text-yellow-500\" />\n <span>Remove Field</span>\n </span>\n </SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body solid-field-delete-flow-body\">\n <p className=\"solid-shadcn-dialog-text solid-field-delete-flow-intro\">\n Removing a field is a 2 step process.\n </p>\n <ol className=\"solid-field-delete-flow-list\">\n <li>\n Delete the field and save the model form.\n <span>This marks the field for removal.</span>\n </li>\n <li>\n Generate code for this model.\n <span>This removes the field from generated code, metadata tables, and JSON.</span>\n </li>\n </ol>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions solid-field-delete-flow-actions\">\n <SolidButton\n size=\"sm\"\n onClick={() => {\n if (rowToDelete) {\n deleteRow(rowToDelete);\n }\n setDeleteAlertPopup(false);\n setRowToDelete(null);\n }}\n >\n Ok\n </SolidButton>\n <SolidButton\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n setDeleteAlertPopup(false);\n setRowToDelete(null);\n }}\n >\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n\n </>\n }\n </>\n\n\n\n );\n};\nexport default FieldMetaData;\n"]}
|
|
1
|
+
{"version":3,"file":"FieldMetaData.js","sourceRoot":"","sources":["../../../../src/components/core/model/FieldMetaData.tsx"],"names":[],"mappings":"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","sourcesContent":["import { usePathname } from \"../../../hooks/usePathname\";\nimport { SolidDataTable as DataTable, Column } from \"../list/SolidDataTable\";\nimport { useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport FieldMetaDataForm from \"./FieldMetaDataForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { AlertTriangle, Info, Trash2 } from \"lucide-react\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../shad-cn-ui\";\n\n\nconst FieldMetaData = ({ setIsDirty, setFieldDeleted, modelMetaData, fieldMetaData, setFieldMetaData, deleteModelFunction, nextTab, formikFieldsMetadataRef, params }: any) => {\n const pathname = usePathname();\n const dispatch = useDispatch();\n const [visiblePopup, setVisiblePopup] = useState(false);\n const [isRequiredPopUp, setIsRequiredPopUp] = useState(false);\n const [currentPopup, setCurrentPopup] = useState();\n const [selectedFieldMetaData, setSelectedFieldMetaData] = useState(null);\n const [deleteAlertPopup, setDeleteAlertPopup] = useState(false);\n const [rowToDelete, setRowToDelete] = useState<any>(null);\n const onRowSelect = (event: any) => {\n setVisiblePopup(true);\n\n };\n\n\n const bodyTemplate = (rowData: any) => {\n return (\n <>\n\n {rowData.displayName &&\n <>\n <p>{rowData.displayName}\n {rowData.isMarkedForRemoval === true &&\n <>\n <br></br> <span style={{ fontSize: '11px', color: 'red' }}>This field will be removed next time you generate code for this model.</span>\n </>\n }\n </p>\n </>\n }\n </>\n )\n };\n\n\n // Function to delete a row\n const deleteRow = (rowData: any) => {\n //show dialog bbefore deletion & which will have to option ok and cancel\n setFieldMetaData((prevData: any) => {\n const updatedData = prevData.filter((item: any) => item.name !== rowData.name);\n setIsDirty(true); // Ensure dirty state is updated immediately\n if (setFieldDeleted) setFieldDeleted(true);\n return updatedData;\n });\n };\n\n // Template for the trash (delete) icon column\n const deleteTemplate = (rowData: any) => {\n return (\n <>\n {(pathname.includes('create') || (rowData.isSystem !== true && rowData.isMarkedForRemoval !== true)) &&\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n style={{ color: \"var(--solid-danger, #ef4444)\" }}\n aria-label=\"Delete field\"\n leftIcon={<Trash2 size={14} />}\n onClick={() => { setRowToDelete(rowData); setDeleteAlertPopup(true) }}\n />\n\n }\n </>\n )\n };\n\n const showToaster = async (message: any, severity: any) => {\n const errorMessages = Object.values(message);\n if (errorMessages.length > 0) {\n dispatch(showToast({ severity, summary: ERROR_MESSAGES.SEND_REPORT, detail: errorMessages.map(String).join(', '), life: 3000 }));\n }\n };\n\n\n // const rowClass = (data: any) => {\n // return {\n // 'bg-red-row': data.isMarkedForRemoval === true\n // };\n // };\n\n\n const needsModelSetup = !modelMetaData.moduleId || !modelMetaData.dataSource;\n\n return (\n <>\n\n {needsModelSetup ?\n <div className=\"solid-placeholder-card-wrapper\">\n <div className=\"solid-placeholder-card\">\n <div className=\"solid-placeholder-card-icon\">\n <Info size={18} />\n </div>\n <div className=\"solid-placeholder-card-body\">\n <p className=\"solid-placeholder-card-title\">Model setup incomplete</p>\n <p className=\"solid-placeholder-card-text\">Please select Module and Datasource from the models tab before managing fields.</p>\n </div>\n </div>\n </div>\n :\n <>\n\n <div className=\"solid-datatable-wrapper solid-list-table-area flex-1 min-h-0 overflow-hidden\">\n <DataTable\n value={fieldMetaData}\n dataKey=\"id\"\n size=\"small\"\n emptyMessage=\"No fields configured\"\n rowClassName={(rowData) => rowData.isMarkedForRemoval === true ? \"greyed-out-row\" : \"\"}\n >\n <Column field=\"displayName\" header=\"Display Name\" body={bodyTemplate}></Column>\n <Column field=\"name\" header=\"Name\"></Column>\n <Column field=\"type\" header=\"Type\"></Column>\n\n\n {modelMetaData.isSystem !== true &&\n <Column body={deleteTemplate} header=\"Delete\" style={{ width: '90px' }} />\n }\n </DataTable>\n </div>\n <SolidDialog\n open={visiblePopup}\n onOpenChange={(open) => {\n if (!open) {\n setVisiblePopup(false);\n }\n }}\n className=\"solid-dialog solid-field-dialog\"\n style={{ width: \"30vw\" }}\n showHeader={false}\n >\n <SolidDialogBody className=\"solid-dialog-body-flush\">\n <FieldMetaDataForm setIsDirty={setIsDirty} modelMetaData={modelMetaData} fieldMetaData={selectedFieldMetaData} allFields={fieldMetaData} setFieldMetaData={setFieldMetaData} deleteModelFunction={deleteModelFunction} setVisiblePopup={setVisiblePopup} formikFieldsMetadataRef={formikFieldsMetadataRef} params={params} setIsRequiredPopUp={setIsRequiredPopUp} showToaster={showToaster}></FieldMetaDataForm>\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={isRequiredPopUp}\n onOpenChange={(open) => {\n if (!open) {\n setIsRequiredPopUp(false);\n }\n }}\n className=\"solid-dialog solid-confirm-dialog solid-field-confirm-dialog\"\n style={{ width: \"min(420px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-field-confirm-header\">\n <SolidDialogTitle>\n <span className=\"flex align-items-center gap-2\">\n <AlertTriangle size={18} className=\"text-yellow-500\" />\n <span>Warning</span>\n </span>\n </SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody className=\"solid-field-confirm-dialog-body\">\n <p className=\"solid-field-confirm-message\">If there is data against this model this operation might not work and manual intervention will be required.</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-field-confirm-actions\">\n <SolidButton size=\"sm\" onClick={() => setIsRequiredPopUp(false)}>\n Ok\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n <SolidDialog\n open={deleteAlertPopup}\n onOpenChange={(open) => {\n if (!open) {\n setDeleteAlertPopup(false);\n setRowToDelete(null);\n }\n }}\n className=\"solid-shadcn-confirm-dialog solid-field-delete-flow-dialog\"\n style={{ width: \"min(560px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head solid-field-delete-flow-head\">\n <SolidDialogTitle>\n <span className=\"flex align-items-center gap-2\">\n <AlertTriangle size={18} className=\"text-yellow-500\" />\n <span>Remove Field</span>\n </span>\n </SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body solid-field-delete-flow-body\">\n <p className=\"solid-shadcn-dialog-text solid-field-delete-flow-intro\">\n Removing a field is a 2 step process.\n </p>\n <ol className=\"solid-field-delete-flow-list\">\n <li>\n Delete the field and save the model form.\n <span>This marks the field for removal.</span>\n </li>\n <li>\n Generate code for this model.\n <span>This removes the field from generated code, metadata tables, and JSON.</span>\n </li>\n </ol>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions solid-field-delete-flow-actions\">\n <SolidButton\n size=\"sm\"\n onClick={() => {\n if (rowToDelete) {\n deleteRow(rowToDelete);\n }\n setDeleteAlertPopup(false);\n setRowToDelete(null);\n }}\n >\n Ok\n </SolidButton>\n <SolidButton\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n setDeleteAlertPopup(false);\n setRowToDelete(null);\n }}\n >\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n\n </>\n }\n </>\n\n\n\n );\n};\nexport default FieldMetaData;\n"]}
|