@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
@@ -4,7 +4,7 @@ import { ERROR_MESSAGES } from "../../../constants/error-messages";
4
4
  import { getSingularAndPlural } from "../../../helpers/helpers";
5
5
  import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
6
6
  import { useDeleteMediaMutation } from "../../../redux/api/mediaApi";
7
- import { useCreatemoduleMutation, useDeletemoduleMutation, useUpdatemoduleMutation } from "../../../redux/api/moduleApi";
7
+ import { useCreatemoduleMutation, useUpdatemoduleMutation } from "../../../redux/api/moduleApi";
8
8
  import { useFormik } from "formik";
9
9
  import { usePathname } from "../../../hooks/usePathname";
10
10
  import { useRouter } from "../../../hooks/useRouter";
@@ -21,16 +21,15 @@ import {
21
21
  SolidInput,
22
22
  SolidMessage,
23
23
  SolidPanel,
24
- SolidPopover,
25
- SolidPopoverContent,
26
- SolidPopoverTrigger,
27
24
  SolidProgressBar,
25
+ SolidTabGroup,
28
26
  SolidTextarea,
29
27
  SolidIcon,
30
28
  } from "../../shad-cn-ui";
31
29
  import { useSolidAutocompleteField } from "../../../hooks/useSolidAutocompleteField";
32
- import { Settings, Trash2 } from "lucide-react";
33
30
  import { SolidFormFooter } from "../form/SolidFormFooter";
31
+ import { ModuleMetadataExplorer } from "./ModuleMetadataExplorer";
32
+ import "./CreateModule.css";
34
33
 
35
34
 
36
35
 
@@ -39,10 +38,6 @@ const CreateModule = ({ params, data }: any) => {
39
38
  const dispatch = useDispatch();
40
39
  const router = useRouter();
41
40
  const pathname = usePathname()
42
- const [isDialogVisible, setDialogVisible] = useState(false);
43
- const [isImageDialogVisible, setImageDialogVisible] = useState(false);
44
- const [isLoadingData, setIsLoadingData] = useState(data ? true : false);
45
-
46
41
  const [menuIconPreview, setmenuIconPreview] = useState<
47
42
  string | ArrayBuffer | null
48
43
  >(null);
@@ -70,11 +65,6 @@ const CreateModule = ({ params, data }: any) => {
70
65
 
71
66
  const { data: fieldDefaultMetaData, isLoading: isFieldDefaultMetaDataLoading, error: FieldDefaultMetaDataError, refetch: fieldDefaultMetaDataRefech } = useGetFieldDefaultMetaDataQuery(null);
72
67
 
73
- const [
74
- deleteModule,
75
- { isLoading: isModuleDeleted, isSuccess: isDeleteModuleSuceess, isError: isModuleDeleteError, error: ModuleDeleteError, data: DeletedModule },
76
- ] = useDeletemoduleMutation();
77
-
78
68
  const [
79
69
  deleteMedia,
80
70
  { isLoading: isMediaDeleted, isSuccess: isDeleteMediaSuceess, isError: isMediaDeleteError, error: mediaDeleteError, data: DeletedMedia },
@@ -219,10 +209,6 @@ const CreateModule = ({ params, data }: any) => {
219
209
  };
220
210
 
221
211
 
222
- const deteleAction = async () => {
223
- deleteModule(data.id);
224
- }
225
-
226
212
  const showError = async () => {
227
213
  const errors = await formik.validateForm(); // Trigger validation and get the updated errors
228
214
  const errorMessages = Object.values(errors);
@@ -259,10 +245,10 @@ const CreateModule = ({ params, data }: any) => {
259
245
  };
260
246
 
261
247
  useEffect(() => {
262
- if (isSuccess == true || isDeleteModuleSuceess == true || isModuleUpdateSuccess == true) {
248
+ if (isSuccess == true || isModuleUpdateSuccess == true) {
263
249
  router.push(`/admin/core/solid-core/module-metadata/list`);
264
250
  }
265
- }, [isSuccess, isDeleteModuleSuceess, isModuleUpdateSuccess])
251
+ }, [isSuccess, isModuleUpdateSuccess])
266
252
 
267
253
 
268
254
 
@@ -294,7 +280,6 @@ const CreateModule = ({ params, data }: any) => {
294
280
  const errors = [
295
281
  { isError, error },
296
282
  { isError: isModuleUpdateError, error: updateModuleError },
297
- { isError: isModuleDeleteError, error: ModuleDeleteError },
298
283
  { isError: isMediaDeleteError, error: mediaDeleteError },
299
284
  ];
300
285
 
@@ -308,60 +293,225 @@ const CreateModule = ({ params, data }: any) => {
308
293
  dispatch(showToast({ severity: 'error', summary: 'Error', detail }));
309
294
  }
310
295
  });
311
- }, [isError, isModuleUpdateError, isModuleDeleteError, isMediaDeleteError])
296
+ }, [isError, isModuleUpdateError, isMediaDeleteError])
312
297
 
313
- const [formActionsMenuOpen, setFormActionsMenuOpen] = useState(false);
298
+ const [activeWorkspaceTab, setActiveWorkspaceTab] = useState("general");
314
299
 
315
300
  const isCreateMode = pathname.includes('new');
316
- const headerTitle = isCreateMode ? "Create Module" : "Edit Module";
317
- const canShowActionsMenu = !isCreateMode && data?.isSystem !== true;
301
+ const shouldShowGeneralSave = isCreateMode || activeWorkspaceTab === "general";
318
302
 
319
303
  const handleCancel = () => {
320
304
  router.back();
321
305
  };
322
306
 
323
- const formActionDropdown = () => (
324
- <SolidPopover open={formActionsMenuOpen} onOpenChange={setFormActionsMenuOpen}>
325
- <SolidPopoverTrigger asChild>
326
- <SolidButton
327
- variant="ghost"
328
- size="sm"
329
- className="solid-icon-button"
330
- aria-label="Module actions"
331
- >
332
- <Settings size={16} />
333
- </SolidButton>
334
- </SolidPopoverTrigger>
335
- <SolidPopoverContent
336
- side="bottom"
337
- align="end"
338
- className="solid-form-actions-popover"
339
- onClick={(event) => event.stopPropagation()}
307
+ const generalInfoContent = (
308
+ <div className={`solid-module-general-info-content ${!isCreateMode ? "is-tabbed" : ""}`}>
309
+ {!isCreateMode && shouldShowGeneralSave && formik.dirty && (
310
+ <div className="solid-module-general-info-actions">
311
+ <SolidButton
312
+ size="sm"
313
+ type="submit"
314
+ form="module-general-info-form"
315
+ onClick={() => showError()}
316
+ >
317
+ Save
318
+ </SolidButton>
319
+ </div>
320
+ )}
321
+ <form
322
+ id="module-general-info-form"
323
+ style={{ width: '100%', background: "#fff" }}
324
+ onSubmit={formik.handleSubmit}
340
325
  >
341
- <button
342
- type="button"
343
- className="solid-row-action-button solid-row-action-button-danger"
344
- onClick={() => {
345
- setFormActionsMenuOpen(false);
346
- deteleAction();
347
- }}
348
- >
349
- <Trash2 size={14} className="solid-row-action-button-icon" />
350
- <span className="solid-row-action-button-label">Delete</span>
351
- </button>
352
- </SolidPopoverContent>
353
- </SolidPopover>
326
+ <div className="solid-form-content">
327
+ <SolidPanel header={"Basic Info"} className="solid-column-panel">
328
+ <div className="formgrid grid mt-3">
329
+ <div className="field col-12 pb-3 lg:pb-0 lg:col-6">
330
+ <div className={styles.fieldWrapper}>
331
+ <label htmlFor="displayName" className={`${styles.fieldLabel} form-field-label`}>
332
+ Display Name <span className="text-red-500">*</span>
333
+ </label>
334
+ <SolidInput
335
+ disabled={!!data}
336
+ type="text"
337
+ id="displayName"
338
+ name="displayName"
339
+ onChange={(e) => {
340
+ formik.handleChange(e);
341
+ const { toKebabCase } = getSingularAndPlural(e.target.value);
342
+ if (pathname.includes('new')) {
343
+ formik.setFieldValue("name", toKebabCase);
344
+ }
345
+ }}
346
+ value={formik.values.displayName}
347
+ className={styles.fieldInput}
348
+ />
349
+ {isFormFieldValid(formik, "displayName") && (
350
+ <p className={styles.fieldError}>{formik?.errors?.displayName?.toString()}</p>
351
+ )}
352
+ </div>
353
+ </div>
354
+ <div className="field col-12 lg:col-6">
355
+ <div className={styles.fieldWrapper}>
356
+ <label htmlFor="name" className={`${styles.fieldLabel} form-field-label`}>
357
+ Name <span className="text-red-500">*</span>
358
+ </label>
359
+ <SolidInput
360
+ disabled
361
+ type="text"
362
+ id="name"
363
+ name="name"
364
+ onChange={formik.handleChange}
365
+ value={formik.values.name}
366
+ className={styles.fieldInput}
367
+ />
368
+ {isFormFieldValid(formik, "name") && (
369
+ <p className={styles.fieldError}>{formik?.errors?.name?.toString()}</p>
370
+ )}
371
+ </div>
372
+ </div>
373
+ </div>
374
+ <div className="formgrid grid mt-4">
375
+ <div className="field col-12 pb-3 ld:pb-0 lg:col-6">
376
+ <div className={styles.fieldWrapper}>
377
+ <label htmlFor="menuSequenceNumber" className={`${styles.fieldLabel} form-field-label`}>
378
+ Menu Sequence Number
379
+ </label>
380
+ <SolidInput
381
+ id="menuSequenceNumber"
382
+ type="number"
383
+ onChange={formik.handleChange}
384
+ min={0}
385
+ value={formik.values.menuSequenceNumber}
386
+ className={styles.fieldInput}
387
+ />
388
+ {isFormFieldValid(formik, "menuSequenceNumber") && (
389
+ <p className={styles.fieldError}>{formik?.errors?.menuSequenceNumber?.toString()}</p>
390
+ )}
391
+ </div>
392
+ </div>
393
+ <div className="field col-12 lg:col-6">
394
+ <div className={styles.fieldWrapper}>
395
+ <label htmlFor="description" className={`${styles.fieldLabel} form-field-label`}>
396
+ Description <span className="text-red-500">*</span>
397
+ </label>
398
+ <SolidTextarea
399
+ id="description"
400
+ name="description"
401
+ onChange={formik.handleChange}
402
+ value={formik.values.description}
403
+ className={styles.fieldTextarea}
404
+ rows={5}
405
+ cols={30}
406
+ />
407
+ {isFormFieldValid(formik, "description") && (
408
+ <p className={styles.fieldError}>{formik?.errors?.description?.toString()}</p>
409
+ )}
410
+ </div>
411
+ </div>
412
+ </div>
413
+ </SolidPanel>
414
+ <SolidPanel header={"Configurations"} className="solid-column-panel mt-4">
415
+ <div className="formgrid grid mt-3">
416
+ <div className="field col-12 pb-3 lg:pb-0 lg:col-6">
417
+ <div className={styles.fieldWrapper}>
418
+ <label htmlFor="defaultDataSource" className={`${styles.fieldLabel} form-field-label`}>
419
+ Default Data Source
420
+ </label>
421
+ <div className="solid-standard-autocomplete w-full">
422
+ <SolidAutocomplete
423
+ disabled={!!data}
424
+ value={defaultDataSourceField.selectedItem}
425
+ suggestions={defaultDataSourceField.filteredItems}
426
+ completeMethod={defaultDataSourceField.searchItems}
427
+ onChange={defaultDataSourceField.handleChange}
428
+ dropdown
429
+ field="label"
430
+ className="w-full"
431
+ />
432
+ </div>
433
+ {isFormFieldValid(formik, "defaultDataSource") && (
434
+ <p className={styles.fieldError}>{formik?.errors?.defaultDataSource?.toString()}</p>
435
+ )}
436
+ </div>
437
+ </div>
438
+ <div className="field col-12 lg:col-6">
439
+ <div className={`${styles.fieldWrapper} relative`}>
440
+ <label htmlFor="menuIconUrl" className={`${styles.fieldLabel} form-field-label`}>
441
+ Menu Icon <small className="text-red-500 helper-text">(only svg, png and jpeg are allowed)</small>
442
+ </label>
443
+ <div {...getRootPropsmenuIcon()} className="solid-dropzone-wrapper">
444
+ <input {...getInputPropsmenuIcon()} />
445
+ <DropzonePlaceholder />
446
+ </div>
447
+ {isFormFieldValid(formik, "menuIconUrl") && (
448
+ <SolidMessage severity="error" text={formik?.errors?.menuIconUrl?.toString()} className="mt-2" />
449
+ )}
450
+
451
+ {fileDetails && (
452
+ <div className="solid-file-upload-wrapper mt-4">
453
+ <div className="flex align-items-center gap-2">
454
+ <FileReaderExt fileDetails={fileDetails} />
455
+ <div className="w-full flex flex-column gap-1">
456
+ <div className="flex align-items-center justify-content-between">
457
+ <div className="font-bold solid-module-mobile-text-wrapper">{fileDetails.name}</div>
458
+ <button
459
+ type="button"
460
+ className="solid-file-icon-btn is-danger"
461
+ onClick={handleCancelUpload}
462
+ >
463
+ <SolidIcon name="si-times" aria-hidden />
464
+ </button>
465
+ </div>
466
+ {uploadCompleted ? (
467
+ <div className="flex align-items-center gap-2 text-sm">
468
+ {totalSize} of {totalSize}
469
+ <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
470
+ <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
471
+ </svg>
472
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
473
+ <mask id="mask0_2480_8635" style={{ maskType: 'alpha' }} maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20">
474
+ <rect width="20" height="20" fill="#D9D9D9" />
475
+ </mask>
476
+ <g mask="url(#mask0_2480_8635)">
477
+ <path d="M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 5.215 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z" fill="var(--primary-color, var(--primary))" />
478
+ </g>
479
+ </svg>
480
+ Completed
481
+ </div>
482
+ ) : (
483
+ <div className="flex align-items-center gap-2 text-sm">
484
+ {uploadedSize} of {totalSize}
485
+ <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
486
+ <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
487
+ </svg>
488
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
489
+ <path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
490
+ </svg>
491
+ Uploading ${uploadProgress}% Completed
492
+ </div>
493
+ )}
494
+ </div>
495
+ </div>
496
+ <SolidProgressBar value={uploadProgress} showValue={false} style={{ height: 4 }} className="mt-2" />
497
+ </div>
498
+ )}
499
+ </div>
500
+ </div>
501
+ </div>
502
+ </SolidPanel>
503
+ </div>
504
+ </form>
505
+ <SolidFormFooter params={params}></SolidFormFooter>
506
+ </div>
354
507
  );
355
508
 
356
509
  return (
357
510
  <div className="solid-form-wrapper">
358
511
  <div className="solid-form-section" style={{ borderRight: params.embeded !== true ? '1px solid var(--primary-light-color)' : '' }} >
359
- <form style={{ width: '100%', background: "#fff" }} onSubmit={formik.handleSubmit}>
512
+ {isCreateMode && (
360
513
  <div className="solid-form-header flex align-items-center justify-content-between gap-3 flex-wrap">
361
- <div className="flex flex-column gap-1">
362
- {/* <span className="text-sm text-color-secondary uppercase tracking-wider">Module</span> */}
363
- {/* <div className="form-wrapper-title m-0">{headerTitle}</div> */}
364
- </div>
514
+ <div className="flex flex-column gap-1" />
365
515
  <div className="flex align-items-center gap-2">
366
516
  <SolidButton
367
517
  variant="outline"
@@ -372,199 +522,45 @@ const CreateModule = ({ params, data }: any) => {
372
522
  >
373
523
  Cancel
374
524
  </SolidButton>
375
- {formik.dirty && (
376
- <SolidButton size="sm" type="submit" onClick={() => showError()}>
525
+ {shouldShowGeneralSave && formik.dirty && (
526
+ <SolidButton
527
+ size="sm"
528
+ type="submit"
529
+ form="module-general-info-form"
530
+ onClick={() => showError()}
531
+ >
377
532
  Save
378
533
  </SolidButton>
379
534
  )}
380
- {canShowActionsMenu && formActionDropdown()}
381
535
  </div>
382
536
  </div>
383
- {/* <SolidFormHeader /> */}
384
- <div className="solid-form-content">
385
- {/* <p className="form-wrapper-heading text-base">Basic Info</p> */}
386
- <SolidPanel header={"Basic Info"} className="solid-column-panel">
387
- <div className="formgrid grid mt-3">
388
- <div className="field col-12 pb-3 lg:pb-0 lg:col-6">
389
- <div className={styles.fieldWrapper}>
390
- <label htmlFor="displayName" className={`${styles.fieldLabel} form-field-label`}>
391
- Display Name <span className="text-red-500">*</span>
392
- </label>
393
- <SolidInput
394
- disabled={!!data}
395
- type="text"
396
- id="displayName"
397
- name="displayName"
398
- onChange={(e) => {
399
- formik.handleChange(e);
400
- const { toKebabCase } = getSingularAndPlural(e.target.value);
401
- if (pathname.includes('new')) {
402
- formik.setFieldValue("name", toKebabCase);
403
- }
404
- }}
405
- value={formik.values.displayName}
406
- className={styles.fieldInput}
407
- />
408
- {isFormFieldValid(formik, "displayName") && (
409
- <p className={styles.fieldError}>{formik?.errors?.displayName?.toString()}</p>
410
- )}
411
- </div>
412
- </div>
413
- <div className="field col-12 lg:col-6">
414
- <div className={styles.fieldWrapper}>
415
- <label htmlFor="name" className={`${styles.fieldLabel} form-field-label`}>
416
- Name <span className="text-red-500">*</span>
417
- </label>
418
- <SolidInput
419
- disabled
420
- type="text"
421
- id="name"
422
- name="name"
423
- onChange={formik.handleChange}
424
- value={formik.values.name}
425
- className={styles.fieldInput}
426
- />
427
- {isFormFieldValid(formik, "name") && (
428
- <p className={styles.fieldError}>{formik?.errors?.name?.toString()}</p>
429
- )}
430
- </div>
431
- </div>
432
- </div>
433
- <div className="formgrid grid mt-4">
434
- <div className="field col-12 pb-3 ld:pb-0 lg:col-6">
435
- <div className={styles.fieldWrapper}>
436
- <label htmlFor="menuSequenceNumber" className={`${styles.fieldLabel} form-field-label`}>
437
- Menu Sequence Number
438
- </label>
439
- <SolidInput
440
- id="menuSequenceNumber"
441
- type="number"
442
- onChange={formik.handleChange}
443
- min={0}
444
- value={formik.values.menuSequenceNumber}
445
- className={styles.fieldInput}
446
- />
447
- {isFormFieldValid(formik, "menuSequenceNumber") && (
448
- <p className={styles.fieldError}>{formik?.errors?.menuSequenceNumber?.toString()}</p>
449
- )}
450
- </div>
451
- </div>
452
- <div className="field col-12 lg:col-6">
453
- <div className={styles.fieldWrapper}>
454
- <label htmlFor="description" className={`${styles.fieldLabel} form-field-label`}>
455
- Description <span className="text-red-500">*</span>
456
- </label>
457
- <SolidTextarea
458
- id="description"
459
- name="description"
460
- onChange={formik.handleChange}
461
- value={formik.values.description}
462
- className={styles.fieldTextarea}
463
- rows={5}
464
- cols={30}
465
- />
466
- {isFormFieldValid(formik, "description") && (
467
- <p className={styles.fieldError}>{formik?.errors?.description?.toString()}</p>
468
- )}
469
- </div>
470
- </div>
471
- </div>
472
- </SolidPanel>
473
- {/* <Divider /> */}
474
- {/* <p className="form-wrapper-heading text-base" style={{ fontSize: 16 }}>Configurations</p> */}
475
- <SolidPanel header={"Configurations"} className="solid-column-panel mt-4">
476
- <div className="formgrid grid mt-3">
477
- <div className="field col-12 pb-3 lg:pb-0 lg:col-6">
478
- <div className={styles.fieldWrapper}>
479
- <label htmlFor="defaultDataSource" className={`${styles.fieldLabel} form-field-label`}>
480
- Default Data Source
481
- </label>
482
- <div className="solid-standard-autocomplete w-full">
483
- <SolidAutocomplete
484
- disabled={!!data}
485
- value={defaultDataSourceField.selectedItem}
486
- suggestions={defaultDataSourceField.filteredItems}
487
- completeMethod={defaultDataSourceField.searchItems}
488
- onChange={defaultDataSourceField.handleChange}
489
- dropdown
490
- field="label"
491
- className="w-full"
492
- />
493
- </div>
494
- {isFormFieldValid(formik, "defaultDataSource") && (
495
- <p className={styles.fieldError}>{formik?.errors?.defaultDataSource?.toString()}</p>
496
- )}
497
- </div>
498
- </div>
499
- <div className="field col-12 lg:col-6">
500
- <div className={`${styles.fieldWrapper} relative`}>
501
- <label htmlFor="menuIconUrl" className={`${styles.fieldLabel} form-field-label`}>
502
- Menu Icon <small className="text-red-500 helper-text">(only svg, png and jpeg are allowed)</small>
503
- </label>
504
- <div {...getRootPropsmenuIcon()} className="solid-dropzone-wrapper">
505
- <input {...getInputPropsmenuIcon()} />
506
- <DropzonePlaceholder />
507
- </div>
508
- {isFormFieldValid(formik, "menuIconUrl") && (
509
- <SolidMessage severity="error" text={formik?.errors?.menuIconUrl?.toString()} className="mt-2" />
510
- )}
511
-
512
- {fileDetails && (
513
- <div className="solid-file-upload-wrapper mt-4">
514
- <div className="flex align-items-center gap-2">
515
- <FileReaderExt fileDetails={fileDetails} />
516
- <div className="w-full flex flex-column gap-1">
517
- <div className="flex align-items-center justify-content-between">
518
- <div className="font-bold solid-module-mobile-text-wrapper">{fileDetails.name}</div>
519
- <button
520
- type="button"
521
- className="solid-file-icon-btn is-danger"
522
- onClick={handleCancelUpload}
523
- >
524
- <SolidIcon name="si-times" aria-hidden />
525
- </button>
526
- </div>
527
- {uploadCompleted ? (
528
- <div className="flex align-items-center gap-2 text-sm">
529
- {totalSize} of {totalSize}
530
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
531
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
532
- </svg>
533
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
534
- <mask id="mask0_2480_8635" style={{ maskType: 'alpha' }} maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20">
535
- <rect width="20" height="20" fill="#D9D9D9" />
536
- </mask>
537
- <g mask="url(#mask0_2480_8635)">
538
- <path d="M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 5.215 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z" fill="var(--primary-color, var(--primary))" />
539
- </g>
540
- </svg>
541
- Completed
542
- </div>
543
- ) : (
544
- <div className="flex align-items-center gap-2 text-sm">
545
- {uploadedSize} of {totalSize}
546
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
547
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
548
- </svg>
549
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
550
- <path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
551
- </svg>
552
- Uploading ${uploadProgress}% Completed
553
- </div>
554
- )}
555
- </div>
556
- </div>
557
- <SolidProgressBar value={uploadProgress} showValue={false} style={{ height: 4 }} className="mt-2" />
558
- </div>
559
- )}
560
- </div>
561
- </div>
562
- </div>
563
- </SolidPanel>
537
+ )}
538
+
539
+ {isCreateMode ? (
540
+ generalInfoContent
541
+ ) : (
542
+ <div className="solid-module-form-workspace">
543
+ <SolidTabGroup
544
+ value={activeWorkspaceTab}
545
+ onValueChange={setActiveWorkspaceTab}
546
+ className="solid-module-form-tabs"
547
+ listClassName="solid-module-form-tablist"
548
+ panelClassName="solid-module-form-tabpanel"
549
+ tabs={[
550
+ {
551
+ value: "general",
552
+ label: <span className="solid-module-form-tab-label">General Info</span>,
553
+ content: generalInfoContent,
554
+ },
555
+ {
556
+ value: "explorer",
557
+ label: <span className="solid-module-form-tab-label">Explorer</span>,
558
+ content: <ModuleMetadataExplorer moduleName={data?.name} moduleId={data?.id} />,
559
+ },
560
+ ]}
561
+ />
564
562
  </div>
565
- </form>
566
- {/* <div style={{ width: '22.5%' }}></div> */}
567
- <SolidFormFooter params={params}></SolidFormFooter>
563
+ )}
568
564
  </div>
569
565
  </div>
570
566
  );
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleListViewData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/module/ModuleListViewData.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAQD,eAAO,MAAM,kBAAkB,+CA0S9B,CAAC"}
1
+ {"version":3,"file":"ModuleListViewData.d.ts","sourceRoot":"","sources":["../../../../src/components/core/module/ModuleListViewData.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAQD,eAAO,MAAM,kBAAkB,+CAkW9B,CAAC"}