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