@solidxai/core-ui 0.1.1 → 0.1.3

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 (981) hide show
  1. package/dist/adapters/auth/getSession.js.map +1 -1
  2. package/dist/adapters/auth/handleLogout.js.map +1 -1
  3. package/dist/adapters/auth/index.js.map +1 -1
  4. package/dist/adapters/auth/refreshAccessToken.js.map +1 -1
  5. package/dist/adapters/auth/sessionProvider.js.map +1 -1
  6. package/dist/adapters/auth/signIn.js.map +1 -1
  7. package/dist/adapters/auth/signInWithOAuthAccessCode.js.map +1 -1
  8. package/dist/adapters/auth/signInWithOtp.js.map +1 -1
  9. package/dist/adapters/auth/signOut.js.map +1 -1
  10. package/dist/adapters/auth/storage.js.map +1 -1
  11. package/dist/adapters/auth/types.js.map +1 -1
  12. package/dist/adapters/env.js.map +1 -1
  13. package/dist/components/Svg/DevDocs.js.map +1 -1
  14. package/dist/components/Svg/DocsSvg.js.map +1 -1
  15. package/dist/components/Svg/ExcelSvg.js.map +1 -1
  16. package/dist/components/Svg/FieldSvg.js.map +1 -1
  17. package/dist/components/Svg/FileSvg.js.map +1 -1
  18. package/dist/components/Svg/HomePageModuleSvg.js.map +1 -1
  19. package/dist/components/Svg/ModelSvg.js.map +1 -1
  20. package/dist/components/Svg/ModuleSvg.js.map +1 -1
  21. package/dist/components/Svg/PDFSvg.js.map +1 -1
  22. package/dist/components/Svg/RightArrowSvg.js.map +1 -1
  23. package/dist/components/Svg/SettingsSvg.js.map +1 -1
  24. package/dist/components/auth/AuthLayout.js.map +1 -1
  25. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  26. package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
  27. package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
  28. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  29. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  30. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  31. package/dist/components/auth/SolidLogin.js.map +1 -1
  32. package/dist/components/auth/SolidRegister.js.map +1 -1
  33. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  34. package/dist/components/common/AutoCompleteField.js.map +1 -1
  35. package/dist/components/common/BackButton.js.map +1 -1
  36. package/dist/components/common/CancelButton.js.map +1 -1
  37. package/dist/components/common/CodeEditor.js.map +1 -1
  38. package/dist/components/common/CreateButton.js.map +1 -1
  39. package/dist/components/common/DownloadProgressToast.js.map +1 -1
  40. package/dist/components/common/DropzonePlaceholder.js.map +1 -1
  41. package/dist/components/common/DropzoneUpload.js.map +1 -1
  42. package/dist/components/common/FileReaderExt.js.map +1 -1
  43. package/dist/components/common/GeneralSettings.js.map +1 -1
  44. package/dist/components/common/HeaderDynamicTitles.js.map +1 -1
  45. package/dist/components/common/Image.js.map +1 -1
  46. package/dist/components/common/Link.js.map +1 -1
  47. package/dist/components/common/MarkdownViewer.js.map +1 -1
  48. package/dist/components/common/MultipleSelectAutoCompleteField.js.map +1 -1
  49. package/dist/components/common/NotFound.js.map +1 -1
  50. package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -1
  51. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  52. package/dist/components/common/SolidAdmin.d.ts.map +1 -1
  53. package/dist/components/common/SolidAdmin.js +3 -3
  54. package/dist/components/common/SolidAdmin.js.map +1 -1
  55. package/dist/components/common/SolidAdmin.tsx +186 -10
  56. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  57. package/dist/components/common/SolidErrorPage.d.ts.map +1 -1
  58. package/dist/components/common/SolidErrorPage.js +3 -2
  59. package/dist/components/common/SolidErrorPage.js.map +1 -1
  60. package/dist/components/common/SolidErrorPage.tsx +31 -14
  61. package/dist/components/common/SolidExport.js.map +1 -1
  62. package/dist/components/common/SolidExportStepper.js.map +1 -1
  63. package/dist/components/common/SolidFieldTooltip.js.map +1 -1
  64. package/dist/components/common/SolidFormHeader.js.map +1 -1
  65. package/dist/components/common/SolidFormStepper.js.map +1 -1
  66. package/dist/components/common/SolidModuleHome.js.map +1 -1
  67. package/dist/components/common/SolidNotFoundPage.d.ts.map +1 -1
  68. package/dist/components/common/SolidNotFoundPage.js +2 -2
  69. package/dist/components/common/SolidNotFoundPage.js.map +1 -1
  70. package/dist/components/common/SolidNotFoundPage.tsx +23 -14
  71. package/dist/components/common/SolidPopupContainer.js.map +1 -1
  72. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js.map +1 -1
  73. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js.map +1 -1
  74. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js.map +1 -1
  75. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js.map +1 -1
  76. package/dist/components/common/SolidSettings/SolidUploadedImage.js.map +1 -1
  77. package/dist/components/common/SolidThemeLink.js.map +1 -1
  78. package/dist/components/common/SolidThemeProvider.js.map +1 -1
  79. package/dist/components/common/StepperArrows/ActiveArrowStep.js.map +1 -1
  80. package/dist/components/common/StepperArrows/ActiveBeforeStepArrow.js.map +1 -1
  81. package/dist/components/common/StepperArrows/InactiveStepArrow.js.map +1 -1
  82. package/dist/components/common/error.js.map +1 -1
  83. package/dist/components/common/useHandleFormCustomButtonClick.js.map +1 -1
  84. package/dist/components/common/useHandleListCustomButtonClick.js.map +1 -1
  85. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  86. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  87. package/dist/components/core/chatter/SolidChatterCustomMessage.js.map +1 -1
  88. package/dist/components/core/chatter/SolidChatterDateDivider.js.map +1 -1
  89. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  90. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  91. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  92. package/dist/components/core/common/AvatarWidget.js.map +1 -1
  93. package/dist/components/core/common/DateFieldViewComponent.js.map +1 -1
  94. package/dist/components/core/common/FilterComponent.js.map +1 -1
  95. package/dist/components/core/common/PDFViewer.js.map +1 -1
  96. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
  97. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
  98. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  99. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js.map +1 -1
  100. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  101. package/dist/components/core/common/SolidGenericImport/DocumentSvg.js.map +1 -1
  102. package/dist/components/core/common/SolidGenericImport/SolidGenericImport.js.map +1 -1
  103. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  104. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
  105. package/dist/components/core/common/SolidGenericImport/SolidImportStepper.js.map +1 -1
  106. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  107. package/dist/components/core/common/SolidGenericImport/SolidImportTransactionStatus.js.map +1 -1
  108. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js.map +1 -1
  109. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  110. package/dist/components/core/common/SolidGlobalSearchElement.js +116 -55
  111. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  112. package/dist/components/core/common/SolidGlobalSearchElement.tsx +117 -30
  113. package/dist/components/core/common/SolidImageViewer.d.ts +10 -0
  114. package/dist/components/core/common/SolidImageViewer.d.ts.map +1 -0
  115. package/dist/components/core/common/SolidImageViewer.js +59 -0
  116. package/dist/components/core/common/SolidImageViewer.js.map +1 -0
  117. package/dist/components/core/common/SolidImageViewer.tsx +84 -0
  118. package/dist/components/core/common/SolidLayoutViews.js.map +1 -1
  119. package/dist/components/core/common/SolidListViewOptions.js.map +1 -1
  120. package/dist/components/core/common/SolidLoaders/SolidCircularLoader.js.map +1 -1
  121. package/dist/components/core/common/SolidPasswordHelperText.js.map +1 -1
  122. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
  123. package/dist/components/core/common/SolidSearchBox.js.map +1 -1
  124. package/dist/components/core/common/SolidViewLayoutManager.js.map +1 -1
  125. package/dist/components/core/common/SolidXAiIframe.js.map +1 -1
  126. package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
  127. package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -1
  128. package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -1
  129. package/dist/components/core/dashboard/SolidDashboardHeader.js.map +1 -1
  130. package/dist/components/core/dashboard/SolidDashboardLoading.js.map +1 -1
  131. package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -1
  132. package/dist/components/core/dashboard/SolidDashboardRenderError.js.map +1 -1
  133. package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -1
  134. package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -1
  135. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -1
  136. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js.map +1 -1
  137. package/dist/components/core/dashboard/chart-renderers/init-chartjs.js.map +1 -1
  138. package/dist/components/core/dashboard/dashboard-utils.js.map +1 -1
  139. package/dist/components/core/extension/solid-core/CustomIcon/StatusIcon.js.map +1 -1
  140. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js.map +1 -1
  141. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.js.map +1 -1
  142. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.js.map +1 -1
  143. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  144. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
  145. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js.map +1 -1
  146. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
  147. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  148. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  149. package/dist/components/core/filter/SolidBooleanFilterElement.js.map +1 -1
  150. package/dist/components/core/filter/SolidFilterFields.js.map +1 -1
  151. package/dist/components/core/filter/SolidManyToManyFilterElement.js.map +1 -1
  152. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  153. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
  154. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
  155. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  156. package/dist/components/core/filter/fields/SolidBigintField.js.map +1 -1
  157. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  158. package/dist/components/core/filter/fields/SolidComputedField.js.map +1 -1
  159. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  160. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  161. package/dist/components/core/filter/fields/SolidDecimalField.js.map +1 -1
  162. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  163. package/dist/components/core/filter/fields/SolidFloatField.js.map +1 -1
  164. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  165. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  166. package/dist/components/core/filter/fields/SolidLongTextField.js.map +1 -1
  167. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  168. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  169. package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
  170. package/dist/components/core/filter/fields/SolidRichTextField.js.map +1 -1
  171. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  172. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  173. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  174. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  175. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  176. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  177. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  178. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  179. package/dist/components/core/form/SolidFormFieldRender.js.map +1 -1
  180. package/dist/components/core/form/SolidFormFieldRenderExtension.js.map +1 -1
  181. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  182. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  183. package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
  184. package/dist/components/core/form/SolidFormView.js.map +1 -1
  185. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  186. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  187. package/dist/components/core/form/SolidFormViewShimmerLoading.js.map +1 -1
  188. package/dist/components/core/form/fields/ISolidField.js.map +1 -1
  189. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  190. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  191. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  192. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  193. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  194. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  195. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  196. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  197. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  198. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  199. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  200. package/dist/components/core/form/fields/SolidRelationField.js.map +1 -1
  201. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  202. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  203. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  204. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  205. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  206. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  207. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  208. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  209. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +150 -72
  210. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  211. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +157 -46
  212. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
  213. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  214. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js.map +1 -1
  215. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js.map +1 -1
  216. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  217. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
  218. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js.map +1 -1
  219. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.d.ts.map +1 -1
  220. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js +80 -79
  221. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
  222. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +92 -85
  223. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js.map +1 -1
  224. package/dist/components/core/form/widgets/CustomHtml.js.map +1 -1
  225. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  226. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  227. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  228. package/dist/components/core/kanban/KanbanUserViewLayout.js.map +1 -1
  229. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  230. package/dist/components/core/kanban/SolidKanbanView.js +79 -82
  231. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  232. package/dist/components/core/kanban/SolidKanbanView.tsx +11 -18
  233. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  234. package/dist/components/core/kanban/SolidKanbanViewFields.js.map +1 -1
  235. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
  236. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js.map +1 -1
  237. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js.map +1 -1
  238. package/dist/components/core/kanban/SolidVarInputsFilterElement.js.map +1 -1
  239. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js.map +1 -1
  240. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -1
  241. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js.map +1 -1
  242. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -1
  243. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -1
  244. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js.map +1 -1
  245. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -1
  246. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js.map +1 -1
  247. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -1
  248. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -1
  249. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js.map +1 -1
  250. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  251. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  252. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js.map +1 -1
  253. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js.map +1 -1
  254. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -1
  255. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -1
  256. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  257. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -1
  258. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js.map +1 -1
  259. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
  260. package/dist/components/core/list/ListViewRowActionPopup.js.map +1 -1
  261. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
  262. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
  263. package/dist/components/core/list/SolidListView.d.ts +62 -1
  264. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  265. package/dist/components/core/list/SolidListView.js +137 -119
  266. package/dist/components/core/list/SolidListView.js.map +1 -1
  267. package/dist/components/core/list/SolidListView.tsx +207 -122
  268. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  269. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  270. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  271. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  272. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
  273. package/dist/components/core/list/SolidListViewShimmerLoading.js.map +1 -1
  274. package/dist/components/core/list/SolidListingHeader.js.map +1 -1
  275. package/dist/components/core/list/SolidManyToOneFilterElement.js.map +1 -1
  276. package/dist/components/core/list/SolidSelectionDynamicFilterElement.js.map +1 -1
  277. package/dist/components/core/list/SolidSelectionStaticFilterElement.js.map +1 -1
  278. package/dist/components/core/list/SolidTableRowCell.js.map +1 -1
  279. package/dist/components/core/list/SolidVarInputsFilterElement.js.map +1 -1
  280. package/dist/components/core/list/columns/SolidBigintColumn.js.map +1 -1
  281. package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
  282. package/dist/components/core/list/columns/SolidComputedColumn.js.map +1 -1
  283. package/dist/components/core/list/columns/SolidDateColumn.js.map +1 -1
  284. package/dist/components/core/list/columns/SolidDatetimeColumn.js.map +1 -1
  285. package/dist/components/core/list/columns/SolidDecimalColumn.js.map +1 -1
  286. package/dist/components/core/list/columns/SolidExternalIdColumn.js.map +1 -1
  287. package/dist/components/core/list/columns/SolidFloatColumn.js.map +1 -1
  288. package/dist/components/core/list/columns/SolidIdColumn.js.map +1 -1
  289. package/dist/components/core/list/columns/SolidIntColumn.js.map +1 -1
  290. package/dist/components/core/list/columns/SolidLongTextColumn.js.map +1 -1
  291. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  292. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +16 -17
  293. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  294. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +46 -44
  295. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
  296. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +6 -4
  297. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  298. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +7 -5
  299. package/dist/components/core/list/columns/SolidRelationColumn.js.map +1 -1
  300. package/dist/components/core/list/columns/SolidRichTextColumn.js.map +1 -1
  301. package/dist/components/core/list/columns/SolidSelectionDynamicColumn.js.map +1 -1
  302. package/dist/components/core/list/columns/SolidSelectionStaticColumn.js.map +1 -1
  303. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  304. package/dist/components/core/list/columns/SolidTimeColumn.js.map +1 -1
  305. package/dist/components/core/list/columns/SolidUuidColumn.js.map +1 -1
  306. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
  307. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  308. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
  309. package/dist/components/core/list/listViewRegistry.d.ts +7 -0
  310. package/dist/components/core/list/listViewRegistry.d.ts.map +1 -0
  311. package/dist/components/core/list/listViewRegistry.js +17 -0
  312. package/dist/components/core/list/listViewRegistry.js.map +1 -0
  313. package/dist/components/core/list/listViewRegistry.ts +24 -0
  314. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js.map +1 -1
  315. package/dist/components/core/list/widgets/SolidManyToOneRelationAvatarListWidget.js.map +1 -1
  316. package/dist/components/core/list/widgets/SolidShortTextAvatarWidget.js.map +1 -1
  317. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -1
  318. package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
  319. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  320. package/dist/components/core/model/CreateModel.js.map +1 -1
  321. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  322. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  323. package/dist/components/core/model/FieldSelector.js.map +1 -1
  324. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  325. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  326. package/dist/components/core/module/CreateModule.js.map +1 -1
  327. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  328. package/dist/components/core/solid-ai/SolidAiMainWrapper.js.map +1 -1
  329. package/dist/components/core/solid-ai/SolidXAIIcon.js.map +1 -1
  330. package/dist/components/core/users/CreateUser.js.map +1 -1
  331. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  332. package/dist/components/core/users/UserListView.js.map +1 -1
  333. package/dist/components/layout/AdminLayout.js.map +1 -1
  334. package/dist/components/layout/AdminSidebar.js.map +1 -1
  335. package/dist/components/layout/AppConfig.js.map +1 -1
  336. package/dist/components/layout/AppSidebar.js.map +1 -1
  337. package/dist/components/layout/ButtonLoader.js.map +1 -1
  338. package/dist/components/layout/CustomPagination.js.map +1 -1
  339. package/dist/components/layout/DashboardHeader.js.map +1 -1
  340. package/dist/components/layout/FilterMenu.js.map +1 -1
  341. package/dist/components/layout/Footer.js.map +1 -1
  342. package/dist/components/layout/GlobalSearch.js.map +1 -1
  343. package/dist/components/layout/Header.js.map +1 -1
  344. package/dist/components/layout/Layout.js.map +1 -1
  345. package/dist/components/layout/ListingHeader.js.map +1 -1
  346. package/dist/components/layout/Loader.js.map +1 -1
  347. package/dist/components/layout/UserSidebar.js.map +1 -1
  348. package/dist/components/layout/context/layoutcontext.js.map +1 -1
  349. package/dist/components/layout/navbar-one.d.ts.map +1 -1
  350. package/dist/components/layout/navbar-one.js.map +1 -1
  351. package/dist/components/layout/navbar-one.tsx +0 -11
  352. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  353. package/dist/components/layout/navbar-two.js.map +1 -1
  354. package/dist/components/layout/user-profile-menu.js.map +1 -1
  355. package/dist/components/layout/user-profile.js.map +1 -1
  356. package/dist/components/modelsComponents/filterIcon.js.map +1 -1
  357. package/dist/constants/error-messages.js.map +1 -1
  358. package/dist/helpers/AppTitle.js.map +1 -1
  359. package/dist/helpers/ToastContainer.js.map +1 -1
  360. package/dist/helpers/autoCompleteVirtualScroll.js.map +1 -1
  361. package/dist/helpers/countries.js.map +1 -1
  362. package/dist/helpers/downloadFileWithProgress.js.map +1 -1
  363. package/dist/helpers/downloadMediaFile.js.map +1 -1
  364. package/dist/helpers/eventBus.js.map +1 -1
  365. package/dist/helpers/fetchS3Url.d.ts +19 -0
  366. package/dist/helpers/fetchS3Url.d.ts.map +1 -0
  367. package/dist/helpers/fetchS3Url.js +60 -0
  368. package/dist/helpers/fetchS3Url.js.map +1 -0
  369. package/dist/helpers/fetchS3Url.ts +33 -0
  370. package/dist/helpers/getAcceptedFileTypes.js.map +1 -1
  371. package/dist/helpers/getRandomColors.js.map +1 -1
  372. package/dist/helpers/helpers.js.map +1 -1
  373. package/dist/helpers/hydrateRelationRules.js +1 -1
  374. package/dist/helpers/hydrateRelationRules.js.map +1 -1
  375. package/dist/helpers/hydrateRelationRules.ts +1 -1
  376. package/dist/helpers/logger.js.map +1 -1
  377. package/dist/helpers/permissions.js.map +1 -1
  378. package/dist/helpers/registry.js.map +1 -1
  379. package/dist/helpers/resendOtpHelper.js.map +1 -1
  380. package/dist/helpers/revalidate.js.map +1 -1
  381. package/dist/helpers/rolesHelper.js.map +1 -1
  382. package/dist/helpers/routePaths.js.map +1 -1
  383. package/dist/helpers/showToast.js.map +1 -1
  384. package/dist/helpers/solidIcons.js.map +1 -1
  385. package/dist/helpers/updatePasswordField.js.map +1 -1
  386. package/dist/hooks/usePathname.js.map +1 -1
  387. package/dist/hooks/useRouter.js.map +1 -1
  388. package/dist/hooks/useSearchParams.js.map +1 -1
  389. package/dist/hooks/useSession.js.map +1 -1
  390. package/dist/http/solidHttp.js.map +1 -1
  391. package/dist/index.d.ts +7 -2
  392. package/dist/index.d.ts.map +1 -1
  393. package/dist/index.js +5 -3
  394. package/dist/index.js.map +1 -1
  395. package/dist/index.ts +9 -3
  396. package/dist/layouts/AdminLayoutWrapper.js.map +1 -1
  397. package/dist/layouts/AuthLayoutWrapper.js.map +1 -1
  398. package/dist/redux/api/aiInteractionApi.js.map +1 -1
  399. package/dist/redux/api/authApi.js.map +1 -1
  400. package/dist/redux/api/dashboardApi.js.map +1 -1
  401. package/dist/redux/api/dashboardQuestionApi.js.map +1 -1
  402. package/dist/redux/api/exportTemplateApi.js.map +1 -1
  403. package/dist/redux/api/fetchBaseQuery.js.map +1 -1
  404. package/dist/redux/api/fieldApi.js.map +1 -1
  405. package/dist/redux/api/importTransactionApi.js.map +1 -1
  406. package/dist/redux/api/mediaApi.js.map +1 -1
  407. package/dist/redux/api/mediaStorageProviderApi.js.map +1 -1
  408. package/dist/redux/api/modelApi.js.map +1 -1
  409. package/dist/redux/api/moduleApi.js.map +1 -1
  410. package/dist/redux/api/permissionApi.js.map +1 -1
  411. package/dist/redux/api/pincodeApi.js.map +1 -1
  412. package/dist/redux/api/roleApi.js.map +1 -1
  413. package/dist/redux/api/solidActionApi.js.map +1 -1
  414. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  415. package/dist/redux/api/solidEntityApi.js.map +1 -1
  416. package/dist/redux/api/solidMenuApi.js.map +1 -1
  417. package/dist/redux/api/solidServiceApi.js.map +1 -1
  418. package/dist/redux/api/solidSettingsApi.js.map +1 -1
  419. package/dist/redux/api/solidViewApi.js.map +1 -1
  420. package/dist/redux/api/stateApi.js.map +1 -1
  421. package/dist/redux/api/testApi.js.map +1 -1
  422. package/dist/redux/api/userApi.js.map +1 -1
  423. package/dist/redux/features/authSlice.js.map +1 -1
  424. package/dist/redux/features/dataViewSlice.js.map +1 -1
  425. package/dist/redux/features/navbarSlice.js.map +1 -1
  426. package/dist/redux/features/popupSlice.js.map +1 -1
  427. package/dist/redux/features/themeSlice.js.map +1 -1
  428. package/dist/redux/features/userSlice.js.map +1 -1
  429. package/dist/redux/hooks/useSolidPopup.js.map +1 -1
  430. package/dist/redux/store/StoreProvider.js.map +1 -1
  431. package/dist/redux/store/createSolidStore.js.map +1 -1
  432. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  433. package/dist/resources/globals.css +0 -21
  434. package/dist/resources/images/errors/error.svg +74 -0
  435. package/dist/routes/AppEventListener.js.map +1 -1
  436. package/dist/routes/guards/AuthGuard.js.map +1 -1
  437. package/dist/routes/pages/ErrorPage.js.map +1 -1
  438. package/dist/routes/pages/NotFoundPage.js.map +1 -1
  439. package/dist/routes/pages/admin/AdminPage.js.map +1 -1
  440. package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
  441. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  442. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  443. package/dist/routes/pages/admin/core/ListPage.js +17 -2
  444. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  445. package/dist/routes/pages/admin/core/ListPage.tsx +22 -2
  446. package/dist/routes/pages/admin/core/ModuleHomePage.js.map +1 -1
  447. package/dist/routes/pages/admin/core/SettingsPage.js.map +1 -1
  448. package/dist/routes/pages/auth/ConfirmForgotPasswordPage.js.map +1 -1
  449. package/dist/routes/pages/auth/ForgotPasswordPage.js.map +1 -1
  450. package/dist/routes/pages/auth/InitiateForgotPasswordPage.js.map +1 -1
  451. package/dist/routes/pages/auth/InitiateForgotPasswordThankYouPage.js.map +1 -1
  452. package/dist/routes/pages/auth/InitiateGoogleOauthPage.js.map +1 -1
  453. package/dist/routes/pages/auth/InitiateLoginPage.js.map +1 -1
  454. package/dist/routes/pages/auth/InitiateRegisterPage.js.map +1 -1
  455. package/dist/routes/pages/auth/LoginPage.js.map +1 -1
  456. package/dist/routes/pages/auth/RegisterPage.js.map +1 -1
  457. package/dist/routes/pages/auth/ResetPasswordPage.js.map +1 -1
  458. package/dist/routes/pages/auth/SsoPage.js.map +1 -1
  459. package/dist/routes/solidRoutes.js.map +1 -1
  460. package/dist/routes/types.js.map +1 -1
  461. package/dist/styles.js.map +1 -1
  462. package/package.json +7 -5
  463. package/src/adapters/auth/getSession.ts +0 -49
  464. package/src/adapters/auth/handleLogout.ts +0 -39
  465. package/src/adapters/auth/index.ts +0 -10
  466. package/src/adapters/auth/refreshAccessToken.ts +0 -34
  467. package/src/adapters/auth/sessionProvider.tsx +0 -5
  468. package/src/adapters/auth/signIn.ts +0 -70
  469. package/src/adapters/auth/signInWithOAuthAccessCode.ts +0 -80
  470. package/src/adapters/auth/signInWithOtp.ts +0 -77
  471. package/src/adapters/auth/signOut.ts +0 -15
  472. package/src/adapters/auth/storage.ts +0 -28
  473. package/src/adapters/auth/types.ts +0 -9
  474. package/src/adapters/env.ts +0 -29
  475. package/src/components/Svg/DevDocs.tsx +0 -9
  476. package/src/components/Svg/DocsSvg.tsx +0 -9
  477. package/src/components/Svg/ExcelSvg.tsx +0 -15
  478. package/src/components/Svg/FieldSvg.tsx +0 -9
  479. package/src/components/Svg/FileSvg.tsx +0 -18
  480. package/src/components/Svg/HomePageModuleSvg.tsx +0 -179
  481. package/src/components/Svg/ModelSvg.tsx +0 -9
  482. package/src/components/Svg/ModuleSvg.tsx +0 -9
  483. package/src/components/Svg/PDFSvg.tsx +0 -15
  484. package/src/components/Svg/RightArrowSvg.tsx +0 -9
  485. package/src/components/Svg/SettingsSvg.tsx +0 -9
  486. package/src/components/auth/AuthLayout.tsx +0 -226
  487. package/src/components/auth/ForgotPasswordThankYou.tsx +0 -31
  488. package/src/components/auth/GoogleAuthChecking.tsx +0 -60
  489. package/src/components/auth/SolidChangeForcePassword.tsx +0 -213
  490. package/src/components/auth/SolidForgotPassword.tsx +0 -116
  491. package/src/components/auth/SolidInitialLoginOtp.tsx +0 -231
  492. package/src/components/auth/SolidInitiateRegisterOtp.tsx +0 -208
  493. package/src/components/auth/SolidLogin.tsx +0 -418
  494. package/src/components/auth/SolidRegister.tsx +0 -442
  495. package/src/components/auth/SolidResetPassword.tsx +0 -186
  496. package/src/components/common/AuthBanner.tsx +0 -41
  497. package/src/components/common/AutoCompleteField.tsx +0 -79
  498. package/src/components/common/BackButton.tsx +0 -73
  499. package/src/components/common/CancelButton.tsx +0 -62
  500. package/src/components/common/CodeEditor.tsx +0 -38
  501. package/src/components/common/CreateButton.tsx +0 -18
  502. package/src/components/common/DownloadProgressToast.tsx +0 -55
  503. package/src/components/common/DropzonePlaceholder.tsx +0 -31
  504. package/src/components/common/DropzoneUpload.tsx +0 -11
  505. package/src/components/common/FileReaderExt.tsx +0 -20
  506. package/src/components/common/GeneralSettings.tsx +0 -1215
  507. package/src/components/common/HeaderDynamicTitles.tsx +0 -13
  508. package/src/components/common/Image.tsx +0 -13
  509. package/src/components/common/Link.tsx +0 -13
  510. package/src/components/common/MarkdownViewer.tsx +0 -84
  511. package/src/components/common/MultipleSelectAutoCompleteField.tsx +0 -64
  512. package/src/components/common/NotFound.tsx +0 -22
  513. package/src/components/common/SingleSelectAutoCompleteField.tsx +0 -73
  514. package/src/components/common/SocialMediaLogin.tsx +0 -55
  515. package/src/components/common/SolidAdmin.tsx +0 -29
  516. package/src/components/common/SolidBreadcrumb.tsx +0 -130
  517. package/src/components/common/SolidErrorPage.tsx +0 -37
  518. package/src/components/common/SolidExport.tsx +0 -563
  519. package/src/components/common/SolidExportStepper.tsx +0 -135
  520. package/src/components/common/SolidFieldTooltip.tsx +0 -23
  521. package/src/components/common/SolidFormHeader.tsx +0 -25
  522. package/src/components/common/SolidFormStepper.tsx +0 -336
  523. package/src/components/common/SolidModuleHome.tsx +0 -128
  524. package/src/components/common/SolidNotFoundPage.tsx +0 -37
  525. package/src/components/common/SolidPopupContainer.tsx +0 -37
  526. package/src/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +0 -45
  527. package/src/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +0 -45
  528. package/src/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +0 -20
  529. package/src/components/common/SolidSettings/SettingsImageRemoveButton.tsx +0 -15
  530. package/src/components/common/SolidSettings/SolidUploadedImage.tsx +0 -16
  531. package/src/components/common/SolidThemeLink.tsx +0 -6
  532. package/src/components/common/SolidThemeProvider.tsx +0 -44
  533. package/src/components/common/StepperArrows/ActiveArrowStep.tsx +0 -18
  534. package/src/components/common/StepperArrows/ActiveBeforeStepArrow.tsx +0 -18
  535. package/src/components/common/StepperArrows/InactiveStepArrow.tsx +0 -19
  536. package/src/components/common/error.tsx +0 -30
  537. package/src/components/common/solid-export.css +0 -85
  538. package/src/components/common/solidModuleHome.module.css +0 -135
  539. package/src/components/common/useHandleFormCustomButtonClick.ts +0 -40
  540. package/src/components/common/useHandleListCustomButtonClick.ts +0 -40
  541. package/src/components/core/chatter/SolidChatter.tsx +0 -248
  542. package/src/components/core/chatter/SolidChatterAuditMessage.tsx +0 -35
  543. package/src/components/core/chatter/SolidChatterCustomMessage.tsx +0 -46
  544. package/src/components/core/chatter/SolidChatterDateDivider.tsx +0 -16
  545. package/src/components/core/chatter/SolidChatterHeader.tsx +0 -218
  546. package/src/components/core/chatter/SolidChatterMessageBox.tsx +0 -163
  547. package/src/components/core/chatter/SolidMessageComposer.tsx +0 -146
  548. package/src/components/core/chatter/chatter.module.css +0 -74
  549. package/src/components/core/common/AvatarWidget.tsx +0 -55
  550. package/src/components/core/common/DateFieldViewComponent.tsx +0 -36
  551. package/src/components/core/common/FilterComponent.tsx +0 -457
  552. package/src/components/core/common/PDFViewer.tsx +0 -117
  553. package/src/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +0 -59
  554. package/src/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +0 -89
  555. package/src/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +0 -179
  556. package/src/components/core/common/SolidAccountSettings/SolidNotifications.tsx +0 -129
  557. package/src/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +0 -304
  558. package/src/components/core/common/SolidCreateButton.tsx +0 -59
  559. package/src/components/core/common/SolidGenericImport/DocumentSvg.tsx +0 -15
  560. package/src/components/core/common/SolidGenericImport/SolidGenericImport.tsx +0 -64
  561. package/src/components/core/common/SolidGenericImport/SolidImport.module.css +0 -40
  562. package/src/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +0 -116
  563. package/src/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +0 -123
  564. package/src/components/core/common/SolidGenericImport/SolidImportStepper.tsx +0 -217
  565. package/src/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +0 -196
  566. package/src/components/core/common/SolidGenericImport/SolidImportTransactionStatus.tsx +0 -157
  567. package/src/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +0 -29
  568. package/src/components/core/common/SolidGlobalSearchElement.tsx +0 -1488
  569. package/src/components/core/common/SolidLayoutViews.tsx +0 -87
  570. package/src/components/core/common/SolidListViewOptions.tsx +0 -31
  571. package/src/components/core/common/SolidLoaders/SolidCircularLoader.tsx +0 -7
  572. package/src/components/core/common/SolidLoaders/SolidLoaders.module.css +0 -20
  573. package/src/components/core/common/SolidPasswordHelperText.tsx +0 -33
  574. package/src/components/core/common/SolidSaveCustomFilterForm.tsx +0 -75
  575. package/src/components/core/common/SolidSearchBox.tsx +0 -17
  576. package/src/components/core/common/SolidViewLayoutManager.ts +0 -421
  577. package/src/components/core/common/SolidXAiIframe.tsx +0 -77
  578. package/src/components/core/dashboard/SolidDashboard.module.css +0 -79
  579. package/src/components/core/dashboard/SolidDashboard.tsx +0 -332
  580. package/src/components/core/dashboard/SolidDashboardBody.tsx +0 -117
  581. package/src/components/core/dashboard/SolidDashboardFilterRequired.tsx +0 -28
  582. package/src/components/core/dashboard/SolidDashboardHeader.tsx +0 -10
  583. package/src/components/core/dashboard/SolidDashboardLoading.tsx +0 -55
  584. package/src/components/core/dashboard/SolidDashboardNotAvailable.tsx +0 -32
  585. package/src/components/core/dashboard/SolidDashboardRenderError.tsx +0 -29
  586. package/src/components/core/dashboard/SolidDashboardVariable.tsx +0 -256
  587. package/src/components/core/dashboard/SolidQuestionRenderer.tsx +0 -78
  588. package/src/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +0 -18
  589. package/src/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +0 -54
  590. package/src/components/core/dashboard/chart-renderers/init-chartjs.ts +0 -25
  591. package/src/components/core/dashboard/dashboard-utils.ts +0 -39
  592. package/src/components/core/extension/solid-core/CustomIcon/StatusIcon.tsx +0 -17
  593. package/src/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +0 -36
  594. package/src/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.ts +0 -18
  595. package/src/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.ts +0 -18
  596. package/src/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +0 -105
  597. package/src/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +0 -205
  598. package/src/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +0 -131
  599. package/src/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +0 -201
  600. package/src/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +0 -131
  601. package/src/components/core/field/FieldListViewData.tsx +0 -313
  602. package/src/components/core/filter/SolidBooleanFilterElement.tsx +0 -30
  603. package/src/components/core/filter/SolidFilterFields.tsx +0 -131
  604. package/src/components/core/filter/SolidManyToManyFilterElement.tsx +0 -64
  605. package/src/components/core/filter/SolidManyToOneFilterElement.tsx +0 -61
  606. package/src/components/core/filter/SolidSelectionDynamicFilterElement.tsx +0 -50
  607. package/src/components/core/filter/SolidSelectionStaticFilterElement.tsx +0 -32
  608. package/src/components/core/filter/SolidVarInputsFilterElement.tsx +0 -209
  609. package/src/components/core/filter/fields/SolidBigintField.tsx +0 -9
  610. package/src/components/core/filter/fields/SolidBooleanField.tsx +0 -68
  611. package/src/components/core/filter/fields/SolidComputedField.tsx +0 -23
  612. package/src/components/core/filter/fields/SolidDateField.tsx +0 -63
  613. package/src/components/core/filter/fields/SolidDatetimeField.tsx +0 -54
  614. package/src/components/core/filter/fields/SolidDecimalField.tsx +0 -9
  615. package/src/components/core/filter/fields/SolidExternalIdField.tsx +0 -52
  616. package/src/components/core/filter/fields/SolidFloatField.tsx +0 -9
  617. package/src/components/core/filter/fields/SolidIdField.tsx +0 -46
  618. package/src/components/core/filter/fields/SolidIntField.tsx +0 -61
  619. package/src/components/core/filter/fields/SolidLongTextField.tsx +0 -9
  620. package/src/components/core/filter/fields/SolidMediaMultipleField.tsx +0 -60
  621. package/src/components/core/filter/fields/SolidMediaSingleField.tsx +0 -62
  622. package/src/components/core/filter/fields/SolidRelationField.tsx +0 -17
  623. package/src/components/core/filter/fields/SolidRichTextField.tsx +0 -9
  624. package/src/components/core/filter/fields/SolidSelectionDynamicField.tsx +0 -52
  625. package/src/components/core/filter/fields/SolidSelectionStaticField.tsx +0 -54
  626. package/src/components/core/filter/fields/SolidShortTextField.tsx +0 -60
  627. package/src/components/core/filter/fields/SolidTimeField.tsx +0 -48
  628. package/src/components/core/filter/fields/SolidUuidField.tsx +0 -51
  629. package/src/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +0 -62
  630. package/src/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +0 -84
  631. package/src/components/core/form/SolidFormActionHeader.tsx +0 -516
  632. package/src/components/core/form/SolidFormFieldRender.tsx +0 -53
  633. package/src/components/core/form/SolidFormFieldRenderExtension.tsx +0 -26
  634. package/src/components/core/form/SolidFormFooter.tsx +0 -164
  635. package/src/components/core/form/SolidFormLayouts.tsx +0 -104
  636. package/src/components/core/form/SolidFormUserViewLayout.tsx +0 -75
  637. package/src/components/core/form/SolidFormView.tsx +0 -1869
  638. package/src/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +0 -53
  639. package/src/components/core/form/SolidFormViewNormalHeaderButton.tsx +0 -53
  640. package/src/components/core/form/SolidFormViewShimmerLoading.tsx +0 -109
  641. package/src/components/core/form/fields/ISolidField.tsx +0 -72
  642. package/src/components/core/form/fields/SolidBooleanField.tsx +0 -445
  643. package/src/components/core/form/fields/SolidDateField.tsx +0 -247
  644. package/src/components/core/form/fields/SolidDateTimeField.tsx +0 -229
  645. package/src/components/core/form/fields/SolidDecimalField.tsx +0 -171
  646. package/src/components/core/form/fields/SolidEmailField.tsx +0 -176
  647. package/src/components/core/form/fields/SolidIntegerField.tsx +0 -282
  648. package/src/components/core/form/fields/SolidJsonField.tsx +0 -185
  649. package/src/components/core/form/fields/SolidLongTextField.tsx +0 -618
  650. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +0 -662
  651. package/src/components/core/form/fields/SolidMediaSingleField.tsx +0 -546
  652. package/src/components/core/form/fields/SolidPasswordField.tsx +0 -391
  653. package/src/components/core/form/fields/SolidRelationField.tsx +0 -56
  654. package/src/components/core/form/fields/SolidRichTextField.tsx +0 -188
  655. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +0 -340
  656. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +0 -462
  657. package/src/components/core/form/fields/SolidShortTextField.tsx +0 -399
  658. package/src/components/core/form/fields/SolidTimeField.tsx +0 -245
  659. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +0 -453
  660. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +0 -1009
  661. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +0 -636
  662. package/src/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +0 -38
  663. package/src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +0 -64
  664. package/src/components/core/form/fields/solidFields.module.css +0 -7
  665. package/src/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +0 -135
  666. package/src/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +0 -144
  667. package/src/components/core/form/fields/widgets/SolidIconEditWidget.tsx +0 -265
  668. package/src/components/core/form/fields/widgets/SolidIconViewWidget.tsx +0 -32
  669. package/src/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +0 -50
  670. package/src/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +0 -222
  671. package/src/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +0 -70
  672. package/src/components/core/form/solidFormViewShimmerLoading.module.css +0 -4
  673. package/src/components/core/form/widgets/CustomHtml.tsx +0 -20
  674. package/src/components/core/kanban/KanbanBoard.tsx +0 -116
  675. package/src/components/core/kanban/KanbanCard.tsx +0 -280
  676. package/src/components/core/kanban/KanbanColumn.tsx +0 -138
  677. package/src/components/core/kanban/KanbanUserViewLayout.tsx +0 -73
  678. package/src/components/core/kanban/SolidKanbanView.tsx +0 -866
  679. package/src/components/core/kanban/SolidKanbanViewConfigure.tsx +0 -152
  680. package/src/components/core/kanban/SolidKanbanViewFields.tsx +0 -164
  681. package/src/components/core/kanban/SolidManyToOneFilterElement.tsx +0 -59
  682. package/src/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +0 -50
  683. package/src/components/core/kanban/SolidSelectionStaticFilterElement.tsx +0 -32
  684. package/src/components/core/kanban/SolidVarInputsFilterElement.tsx +0 -184
  685. package/src/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +0 -9
  686. package/src/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +0 -16
  687. package/src/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +0 -23
  688. package/src/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +0 -14
  689. package/src/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +0 -13
  690. package/src/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +0 -9
  691. package/src/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +0 -12
  692. package/src/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +0 -9
  693. package/src/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +0 -14
  694. package/src/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +0 -20
  695. package/src/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +0 -9
  696. package/src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +0 -140
  697. package/src/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +0 -164
  698. package/src/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +0 -13
  699. package/src/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +0 -9
  700. package/src/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +0 -14
  701. package/src/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +0 -14
  702. package/src/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +0 -121
  703. package/src/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +0 -12
  704. package/src/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +0 -13
  705. package/src/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +0 -16
  706. package/src/components/core/list/ListViewRowActionPopup.tsx +0 -40
  707. package/src/components/core/list/SolidColumnSelector/SolidListColumnSelector.module.css +0 -12
  708. package/src/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +0 -233
  709. package/src/components/core/list/SolidEmptyListViewPlaceholder.tsx +0 -115
  710. package/src/components/core/list/SolidListView.tsx +0 -2009
  711. package/src/components/core/list/SolidListViewColumn.tsx +0 -165
  712. package/src/components/core/list/SolidListViewConfigure.tsx +0 -342
  713. package/src/components/core/list/SolidListViewHeaderButton.tsx +0 -32
  714. package/src/components/core/list/SolidListViewHeaderContextMenuButton.tsx +0 -32
  715. package/src/components/core/list/SolidListViewRowButtonContextMenu.tsx +0 -40
  716. package/src/components/core/list/SolidListViewShimmerLoading.tsx +0 -78
  717. package/src/components/core/list/SolidListViewWrapper.module.css +0 -49
  718. package/src/components/core/list/SolidListingHeader.tsx +0 -41
  719. package/src/components/core/list/SolidManyToOneFilterElement.tsx +0 -60
  720. package/src/components/core/list/SolidSelectionDynamicFilterElement.tsx +0 -50
  721. package/src/components/core/list/SolidSelectionStaticFilterElement.tsx +0 -32
  722. package/src/components/core/list/SolidTableRowCell.tsx +0 -35
  723. package/src/components/core/list/SolidVarInputsFilterElement.tsx +0 -184
  724. package/src/components/core/list/columns/SolidBigintColumn.tsx +0 -9
  725. package/src/components/core/list/columns/SolidBooleanColumn.tsx +0 -94
  726. package/src/components/core/list/columns/SolidComputedColumn.tsx +0 -27
  727. package/src/components/core/list/columns/SolidDateColumn.tsx +0 -90
  728. package/src/components/core/list/columns/SolidDatetimeColumn.tsx +0 -79
  729. package/src/components/core/list/columns/SolidDecimalColumn.tsx +0 -9
  730. package/src/components/core/list/columns/SolidExternalIdColumn.tsx +0 -80
  731. package/src/components/core/list/columns/SolidFloatColumn.tsx +0 -9
  732. package/src/components/core/list/columns/SolidIdColumn.tsx +0 -79
  733. package/src/components/core/list/columns/SolidIntColumn.tsx +0 -87
  734. package/src/components/core/list/columns/SolidLongTextColumn.tsx +0 -9
  735. package/src/components/core/list/columns/SolidMediaMultipleColumn.tsx +0 -301
  736. package/src/components/core/list/columns/SolidMediaSingleColumn.tsx +0 -170
  737. package/src/components/core/list/columns/SolidRelationColumn.tsx +0 -21
  738. package/src/components/core/list/columns/SolidRichTextColumn.tsx +0 -9
  739. package/src/components/core/list/columns/SolidSelectionDynamicColumn.tsx +0 -80
  740. package/src/components/core/list/columns/SolidSelectionStaticColumn.tsx +0 -81
  741. package/src/components/core/list/columns/SolidShortTextColumn.tsx +0 -160
  742. package/src/components/core/list/columns/SolidTimeColumn.tsx +0 -78
  743. package/src/components/core/list/columns/SolidUuidColumn.tsx +0 -79
  744. package/src/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +0 -106
  745. package/src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +0 -117
  746. package/src/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +0 -110
  747. package/src/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +0 -30
  748. package/src/components/core/list/widgets/SolidManyToOneRelationAvatarListWidget.tsx +0 -30
  749. package/src/components/core/list/widgets/SolidShortTextAvatarWidget.tsx +0 -70
  750. package/src/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +0 -21
  751. package/src/components/core/locales/SolidChatterLocaleTabView.tsx +0 -91
  752. package/src/components/core/locales/SolidLocale.tsx +0 -127
  753. package/src/components/core/locales/solid-locale.css +0 -36
  754. package/src/components/core/model/CreateModel.tsx +0 -536
  755. package/src/components/core/model/FieldMetaData.tsx +0 -262
  756. package/src/components/core/model/FieldMetaDataForm.tsx +0 -3553
  757. package/src/components/core/model/FieldSelector.tsx +0 -62
  758. package/src/components/core/model/ModelListViewData.tsx +0 -384
  759. package/src/components/core/model/ModelMetaData.tsx +0 -949
  760. package/src/components/core/module/CreateModule.tsx +0 -613
  761. package/src/components/core/module/ModuleListViewData.tsx +0 -431
  762. package/src/components/core/solid-ai/SolidAiMainWrapper.tsx +0 -8
  763. package/src/components/core/solid-ai/SolidXAIIcon.tsx +0 -37
  764. package/src/components/core/users/CreateUser.tsx +0 -468
  765. package/src/components/core/users/CreateUserRole.tsx +0 -213
  766. package/src/components/core/users/UserListView.tsx +0 -376
  767. package/src/components/layout/AdminLayout.tsx +0 -55
  768. package/src/components/layout/AdminSidebar.tsx +0 -64
  769. package/src/components/layout/AppConfig.tsx +0 -104
  770. package/src/components/layout/AppSidebar.tsx +0 -216
  771. package/src/components/layout/ButtonLoader.tsx +0 -7
  772. package/src/components/layout/CustomPagination.tsx +0 -55
  773. package/src/components/layout/DashboardHeader.tsx +0 -89
  774. package/src/components/layout/FilterMenu.tsx +0 -122
  775. package/src/components/layout/Footer.tsx +0 -13
  776. package/src/components/layout/GlobalSearch.tsx +0 -36
  777. package/src/components/layout/Header.tsx +0 -8
  778. package/src/components/layout/Layout.tsx +0 -205
  779. package/src/components/layout/ListingHeader.tsx +0 -205
  780. package/src/components/layout/Loader.tsx +0 -16
  781. package/src/components/layout/UserSidebar.tsx +0 -52
  782. package/src/components/layout/context/layoutcontext.tsx +0 -52
  783. package/src/components/layout/navbar-one.tsx +0 -239
  784. package/src/components/layout/navbar-two-menu.tsx +0 -71
  785. package/src/components/layout/navbar-two.tsx +0 -37
  786. package/src/components/layout/user-profile-menu.tsx +0 -212
  787. package/src/components/layout/user-profile.tsx +0 -7
  788. package/src/components/modelsComponents/filterIcon.tsx +0 -9
  789. package/src/constants/error-messages.ts +0 -238
  790. package/src/declarations.d.ts +0 -22
  791. package/src/helpers/AppTitle.tsx +0 -12
  792. package/src/helpers/ToastContainer.tsx +0 -94
  793. package/src/helpers/autoCompleteVirtualScroll.ts +0 -41
  794. package/src/helpers/countries.tsx +0 -260
  795. package/src/helpers/downloadFileWithProgress.ts +0 -86
  796. package/src/helpers/downloadMediaFile.tsx +0 -22
  797. package/src/helpers/eventBus.ts +0 -40
  798. package/src/helpers/getAcceptedFileTypes.tsx +0 -22
  799. package/src/helpers/getRandomColors.tsx +0 -68
  800. package/src/helpers/helpers.ts +0 -61
  801. package/src/helpers/hydrateRelationRules.ts +0 -122
  802. package/src/helpers/logger.ts +0 -33
  803. package/src/helpers/permissions.ts +0 -7
  804. package/src/helpers/registry.ts +0 -337
  805. package/src/helpers/resendOtpHelper.tsx +0 -5
  806. package/src/helpers/revalidate.ts +0 -8
  807. package/src/helpers/rolesHelper.ts +0 -4
  808. package/src/helpers/routePaths.ts +0 -25
  809. package/src/helpers/showToast.ts +0 -13
  810. package/src/helpers/solidIcons.tsx +0 -1831
  811. package/src/helpers/updatePasswordField.ts +0 -42
  812. package/src/hooks/usePathname.ts +0 -6
  813. package/src/hooks/useRouter.ts +0 -35
  814. package/src/hooks/useSearchParams.ts +0 -10
  815. package/src/hooks/useSession.ts +0 -52
  816. package/src/http/solidHttp.ts +0 -63
  817. package/src/index.ts +0 -460
  818. package/src/layouts/AdminLayoutWrapper.tsx +0 -10
  819. package/src/layouts/AuthLayoutWrapper.tsx +0 -10
  820. package/src/redux/api/aiInteractionApi.ts +0 -59
  821. package/src/redux/api/authApi.ts +0 -131
  822. package/src/redux/api/dashboardApi.ts +0 -56
  823. package/src/redux/api/dashboardQuestionApi.ts +0 -17
  824. package/src/redux/api/exportTemplateApi.tsx +0 -59
  825. package/src/redux/api/fetchBaseQuery.tsx +0 -65
  826. package/src/redux/api/fieldApi.ts +0 -86
  827. package/src/redux/api/importTransactionApi.tsx +0 -69
  828. package/src/redux/api/mediaApi.ts +0 -55
  829. package/src/redux/api/mediaStorageProviderApi.ts +0 -55
  830. package/src/redux/api/modelApi.ts +0 -80
  831. package/src/redux/api/moduleApi.ts +0 -72
  832. package/src/redux/api/permissionApi.ts +0 -32
  833. package/src/redux/api/pincodeApi.tsx +0 -56
  834. package/src/redux/api/roleApi.ts +0 -58
  835. package/src/redux/api/solidActionApi.ts +0 -66
  836. package/src/redux/api/solidChatterMessageApi.ts +0 -25
  837. package/src/redux/api/solidEntityApi.tsx +0 -164
  838. package/src/redux/api/solidMenuApi.ts +0 -71
  839. package/src/redux/api/solidServiceApi.ts +0 -31
  840. package/src/redux/api/solidSettingsApi.tsx +0 -83
  841. package/src/redux/api/solidViewApi.ts +0 -73
  842. package/src/redux/api/stateApi.tsx +0 -56
  843. package/src/redux/api/testApi.ts +0 -21
  844. package/src/redux/api/userApi.ts +0 -135
  845. package/src/redux/features/authSlice.ts +0 -19
  846. package/src/redux/features/dataViewSlice.ts +0 -26
  847. package/src/redux/features/navbarSlice.ts +0 -21
  848. package/src/redux/features/popupSlice.ts +0 -37
  849. package/src/redux/features/themeSlice.ts +0 -17
  850. package/src/redux/features/userSlice.ts +0 -28
  851. package/src/redux/hooks/useSolidPopup.ts +0 -20
  852. package/src/redux/store/StoreProvider.tsx +0 -52
  853. package/src/redux/store/createSolidStore.ts +0 -55
  854. package/src/redux/store/defaultStoreConfig.ts +0 -62
  855. package/src/resources/fonts/SF-Pro-Display-Black.otf +0 -0
  856. package/src/resources/fonts/SF-Pro-Display-Bold.otf +0 -0
  857. package/src/resources/fonts/SF-Pro-Display-Heavy.otf +0 -0
  858. package/src/resources/fonts/SF-Pro-Display-Light.otf +0 -0
  859. package/src/resources/fonts/SF-Pro-Display-Medium.otf +0 -0
  860. package/src/resources/fonts/SF-Pro-Display-Regular.otf +0 -0
  861. package/src/resources/fonts/SF-Pro-Display-Semibold.otf +0 -0
  862. package/src/resources/fonts/SF-Pro-Display-Thin.otf +0 -0
  863. package/src/resources/fonts/SF-Pro-Display-Ultralight.otf +0 -0
  864. package/src/resources/globals.css +0 -3597
  865. package/src/resources/images/AvatarDemo.png +0 -0
  866. package/src/resources/images/Background.svg +0 -3
  867. package/src/resources/images/Footerbg.png +0 -0
  868. package/src/resources/images/LoginBanner.png +0 -0
  869. package/src/resources/images/Navigation/Level.svg +0 -5
  870. package/src/resources/images/Navigation/Presure.svg +0 -7
  871. package/src/resources/images/Navigation/SolidSettinsIcon.svg +0 -1
  872. package/src/resources/images/Navigation/Temperature.svg +0 -13
  873. package/src/resources/images/Profile/Avatar.png +0 -0
  874. package/src/resources/images/SolidXLogo.svg +0 -21
  875. package/src/resources/images/activity.svg +0 -3
  876. package/src/resources/images/app-builder.png +0 -0
  877. package/src/resources/images/auth/solid-left-layout-bg.png +0 -0
  878. package/src/resources/images/auth/solid-login-light.png +0 -0
  879. package/src/resources/images/auth/solid-right-layout-bg.png +0 -0
  880. package/src/resources/images/clog-wheel.png +0 -0
  881. package/src/resources/images/dark-mode.png +0 -0
  882. package/src/resources/images/dashboard/Ellipse 1.svg +0 -10
  883. package/src/resources/images/dashboard/Rectangle 17.svg +0 -10
  884. package/src/resources/images/dashboard/Rectangle 25.svg +0 -11
  885. package/src/resources/images/dashboard/image 5.svg +0 -9
  886. package/src/resources/images/eye-icon.png +0 -0
  887. package/src/resources/images/fb.svg +0 -3
  888. package/src/resources/images/fileReader/image-jpg.png +0 -0
  889. package/src/resources/images/fileTypes/File.png +0 -0
  890. package/src/resources/images/fileTypes/Mp3.png +0 -0
  891. package/src/resources/images/fileTypes/Mp4.png +0 -0
  892. package/src/resources/images/filter-icon.png +0 -0
  893. package/src/resources/images/form/user.png +0 -0
  894. package/src/resources/images/iam.png +0 -0
  895. package/src/resources/images/icons/icon-activity.svg +0 -3
  896. package/src/resources/images/icons/icon-calender.svg +0 -3
  897. package/src/resources/images/icons/icon-graph.svg +0 -3
  898. package/src/resources/images/icons/icon-kanban.svg +0 -3
  899. package/src/resources/images/icons/icon-list.svg +0 -3
  900. package/src/resources/images/icons/icon-users.svg +0 -3
  901. package/src/resources/images/icons/jump-to-icon.png +0 -0
  902. package/src/resources/images/insta.svg +0 -3
  903. package/src/resources/images/layout/images/comfortable.png +0 -0
  904. package/src/resources/images/layout/images/compact.png +0 -0
  905. package/src/resources/images/layout/images/cozy.png +0 -0
  906. package/src/resources/images/layout/images/kanban.png +0 -0
  907. package/src/resources/images/li.svg +0 -3
  908. package/src/resources/images/loginhero.png +0 -0
  909. package/src/resources/images/logo.png +0 -0
  910. package/src/resources/images/mail-icon.png +0 -0
  911. package/src/resources/images/menu/app-builder.svg +0 -19
  912. package/src/resources/images/menu/iam.svg +0 -14
  913. package/src/resources/images/menu/logicloop-black.svg +0 -28
  914. package/src/resources/images/menu/logicloop-blue.svg +0 -32
  915. package/src/resources/images/menu/logicloop-white.svg +0 -32
  916. package/src/resources/images/menu/queues.svg +0 -14
  917. package/src/resources/images/menu/radix.svg +0 -9
  918. package/src/resources/images/menu/rl-lead-middleware.svg +0 -19
  919. package/src/resources/images/menu/solid-address-master.svg +0 -10
  920. package/src/resources/images/menu/srmd-tracker-black.svg +0 -16
  921. package/src/resources/images/menu/srmd-tracker-original.svg +0 -32
  922. package/src/resources/images/menu/srmd-tracker-white.svg +0 -17
  923. package/src/resources/images/menu/srmd-tracker.svg +0 -16
  924. package/src/resources/images/menu-icon.png +0 -0
  925. package/src/resources/images/menu-toggle.png +0 -0
  926. package/src/resources/images/password-icon.png +0 -0
  927. package/src/resources/images/profile.png +0 -0
  928. package/src/resources/images/radix-logo-white.png +0 -0
  929. package/src/resources/images/radix-logo.png +0 -0
  930. package/src/resources/images/search-icon.png +0 -0
  931. package/src/resources/images/signupBanner.png +0 -0
  932. package/src/resources/images/tw.svg +0 -3
  933. package/src/resources/images/user-icon.png +0 -0
  934. package/src/resources/solid-primereact.css +0 -2986
  935. package/src/resources/solid-responsive.css +0 -791
  936. package/src/resources/stylesheets/_config.scss +0 -54
  937. package/src/resources/stylesheets/_content.scss +0 -95
  938. package/src/resources/stylesheets/_footer.scss +0 -10
  939. package/src/resources/stylesheets/_main.scss +0 -49
  940. package/src/resources/stylesheets/_menu.scss +0 -183
  941. package/src/resources/stylesheets/_mixins.scss +0 -13
  942. package/src/resources/stylesheets/_responsive.scss +0 -101
  943. package/src/resources/stylesheets/_topbar.scss +0 -152
  944. package/src/resources/stylesheets/_typography.scss +0 -65
  945. package/src/resources/stylesheets/_utils.scss +0 -29
  946. package/src/resources/stylesheets/_variables.scss +0 -3
  947. package/src/resources/stylesheets/layout.scss +0 -11
  948. package/src/resources/themes/solid-dark-purple/theme.css +0 -6208
  949. package/src/resources/themes/solid-light-purple/solid-login-light.png +0 -0
  950. package/src/resources/themes/solid-light-purple/theme.css +0 -6263
  951. package/src/routes/AppEventListener.tsx +0 -28
  952. package/src/routes/guards/AuthGuard.tsx +0 -17
  953. package/src/routes/pages/ErrorPage.tsx +0 -6
  954. package/src/routes/pages/NotFoundPage.tsx +0 -5
  955. package/src/routes/pages/admin/AdminPage.tsx +0 -5
  956. package/src/routes/pages/admin/core/FormPage.tsx +0 -7
  957. package/src/routes/pages/admin/core/KanbanPage.tsx +0 -10
  958. package/src/routes/pages/admin/core/ListPage.tsx +0 -10
  959. package/src/routes/pages/admin/core/ModuleHomePage.tsx +0 -7
  960. package/src/routes/pages/admin/core/SettingsPage.tsx +0 -5
  961. package/src/routes/pages/auth/ConfirmForgotPasswordPage.tsx +0 -5
  962. package/src/routes/pages/auth/ForgotPasswordPage.tsx +0 -5
  963. package/src/routes/pages/auth/InitiateForgotPasswordPage.tsx +0 -5
  964. package/src/routes/pages/auth/InitiateForgotPasswordThankYouPage.tsx +0 -5
  965. package/src/routes/pages/auth/InitiateGoogleOauthPage.tsx +0 -5
  966. package/src/routes/pages/auth/InitiateLoginPage.tsx +0 -5
  967. package/src/routes/pages/auth/InitiateRegisterPage.tsx +0 -5
  968. package/src/routes/pages/auth/LoginPage.tsx +0 -10
  969. package/src/routes/pages/auth/RegisterPage.tsx +0 -5
  970. package/src/routes/pages/auth/ResetPasswordPage.tsx +0 -5
  971. package/src/routes/pages/auth/SsoPage.tsx +0 -79
  972. package/src/routes/solidRoutes.tsx +0 -89
  973. package/src/routes/types.ts +0 -34
  974. package/src/styles.ts +0 -4
  975. package/src/types/css-modules.d.ts +0 -4
  976. package/src/types/handlebars.d.ts +0 -4
  977. package/src/types/index.d.ts +0 -76
  978. package/src/types/layout.d.ts +0 -94
  979. package/src/types/next-auth.d.ts +0 -0
  980. package/src/types/next.d.ts +0 -46
  981. package/src/types/solid-core.d.ts +0 -319
@@ -1,3553 +0,0 @@
1
-
2
- import CodeEditor from "../../../components/common/CodeEditor";
3
- import { SingleSelectAutoCompleteField } from "../../../components/common/SingleSelectAutoCompleteField";
4
- import { getSingularAndPlural } from "../../../helpers/helpers";
5
- import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
6
- import { useLazyGetMediaStorageProvidersQuery } from "../../../redux/api/mediaStorageProviderApi";
7
- import { useLazyGetModelsQuery, useUpdateUserKeyMutation } from "../../../redux/api/modelApi";
8
- import { useLazyGetmodulesQuery } from "../../../redux/api/moduleApi";
9
- import { useFormik } from "formik";
10
- import { capitalize } from "lodash";
11
- import { usePathname } from "../../../hooks/usePathname";
12
- import { AutoComplete } from "primereact/autocomplete";
13
- import { Button } from "primereact/button";
14
- import { Calendar } from "primereact/calendar";
15
- import { Checkbox } from "primereact/checkbox";
16
- import { Dialog } from "primereact/dialog";
17
- import { Dropdown, DropdownChangeEvent } from "primereact/dropdown";
18
- import { InputNumber } from "primereact/inputnumber";
19
- import { InputText } from "primereact/inputtext";
20
- import { InputTextarea } from "primereact/inputtextarea";
21
- import { Message } from "primereact/message";
22
- import { MultiSelect } from "primereact/multiselect";
23
- import { RadioButton } from "primereact/radiobutton";
24
- import { SelectButton } from "primereact/selectbutton";
25
- import { TabPanel, TabView } from "primereact/tabview";
26
- import { Toast } from "primereact/toast";
27
- import { classNames } from "primereact/utils";
28
- import qs from "qs";
29
- import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
30
- import * as Yup from "yup";
31
- import FieldSelector from "./FieldSelector";
32
- import { ERROR_MESSAGES } from "../../../constants/error-messages";
33
- import { getVirtualScrollerOptions } from "../../../helpers/autoCompleteVirtualScroll";
34
-
35
-
36
-
37
- enum SolidFieldType {
38
- // numeric types
39
- int = 'int',
40
- bigint = 'bigint',
41
- float = 'float',
42
- // double = 'double',
43
- decimal = 'decimal',
44
-
45
- // text types
46
- shortText = 'shortText',
47
- longtext = 'longText',
48
- richText = 'richText',
49
- json = 'json',
50
-
51
- // boolean types
52
- boolean = 'boolean',
53
-
54
- // date
55
- date = 'date',
56
- datetime = 'datetime',
57
- time = 'time',
58
-
59
- // relation
60
- relation = 'relation',
61
-
62
- // media
63
- mediaSingle = 'mediaSingle',
64
- mediaMultiple = 'mediaMultiple',
65
-
66
- email = 'email',
67
- password = 'password',
68
-
69
- // selection
70
- selectionStatic = 'selectionStatic',
71
- selectionDynamic = 'selectionDynamic',
72
-
73
- computed = 'computed',
74
-
75
- uuid = 'uuid'
76
- }
77
-
78
- const SelectionStaticValues = ({ enumValue, onUpdate, onDelete, onAdd }: any) => {
79
- const [value, display] = enumValue.split(":");
80
-
81
- const handleValueChange = (newValue: string) => {
82
- onUpdate(`${newValue}:${display || ""}`);
83
- };
84
-
85
- const handleDisplayChange = (newDisplay: string) => {
86
- onUpdate(`${value || ""}:${newDisplay}`);
87
- };
88
-
89
- return (
90
- <div className="flex align-items-center gap-2 mt-2">
91
-
92
- {/* Input field for Value */}
93
- <InputText
94
- value={value || ""}
95
- onChange={(e) => handleValueChange(e.target.value)}
96
- placeholder="Value"
97
- className="w-full"
98
- />
99
-
100
- {/* Input field for Display */}
101
- <InputText
102
- value={display || ""}
103
- onChange={(e) => handleDisplayChange(e.target.value)}
104
- placeholder="Display"
105
- className="w-full"
106
- />
107
-
108
-
109
-
110
- {/* Plus Button to add a new row */}
111
- <Button
112
- icon="pi pi-plus"
113
- size="small"
114
- onClick={onAdd}
115
- type="button"
116
- />
117
-
118
- {/* Trash Button to delete the row */}
119
- <Button
120
- icon="pi pi-trash"
121
- size="small"
122
- onClick={onDelete}
123
- outlined
124
- severity="danger"
125
- type="button"
126
- />
127
- </div>
128
- );
129
-
130
- }
131
-
132
- interface SelectComputedFieldTriggerValuesProps {
133
- index: number;
134
- row: {
135
- moduleName: string;
136
- modelName: string;
137
- operations: string[];
138
- };
139
- onChange: (index: number, updatedRow: any) => void;
140
- onDelete: (index: number) => void;
141
- isLastRow: boolean;
142
- disableDelete: boolean;
143
- formik: any;
144
- isFormFieldValid: (formik: any, field: string) => boolean;
145
- searchModuleName: (event: any) => Promise<any[]>;
146
- searchModelName: (event: any) => Promise<any[]>;
147
- modelMetaData?: any,
148
- errors?: any,
149
- touched?: any,
150
- }
151
-
152
- const triggerOperationOptions = [
153
- { label: "beforeInsert", value: "before-insert" },
154
- { label: "afterInsert", value: "after-insert" },
155
- { label: "beforeUpdate", value: "before-update" },
156
- { label: "afterUpdate", value: "after-update" },
157
- { label: "beforeRemove", value: "before-delete" },
158
- { label: "afterRemove", value: "after-delete" },
159
- ];
160
-
161
- const formatDisplayName = (value: string): string => {
162
- return value
163
- .split('-')
164
- .map(word => word.charAt(0).toUpperCase() + word.slice(1))
165
- .join(' ');
166
- };
167
-
168
-
169
- const SelectComputedFieldTriggerValues: React.FC<SelectComputedFieldTriggerValuesProps> = ({
170
- index,
171
- row,
172
- onChange,
173
- onDelete,
174
- disableDelete,
175
- formik,
176
- isFormFieldValid,
177
- searchModuleName,
178
- searchModelName,
179
- modelMetaData,
180
- errors,
181
- touched,
182
- }: any) => {
183
- const [filteredOperations, setFilteredOperations] = useState<{ label: string; value: string }[]>([]);
184
-
185
- useEffect(() => {
186
- if (!row.moduleName && modelMetaData?.module?.name) {
187
- formik.setFieldValue(`computedFieldTriggerConfig[${index}].moduleName`, modelMetaData?.module?.name);
188
- }
189
- if (!row.modelName && modelMetaData?.singularName) {
190
- formik.setFieldValue(`computedFieldTriggerConfig[${index}].modelName`, modelMetaData?.singularName);
191
- }
192
- }, [modelMetaData?.module?.name, modelMetaData?.singularName]);
193
-
194
- const searchOperations = (event: any) => {
195
- const query = event.query.toLowerCase();
196
- setFilteredOperations(
197
- triggerOperationOptions.filter((item) =>
198
- item.label.toLowerCase().includes(query)
199
- )
200
- );
201
- };
202
-
203
- return (
204
- <div className="flex align-items-start gap-3 mt-2 flex-wrap md:flex-nowrap">
205
-
206
- <div className="">
207
- <label
208
- htmlFor="moduleName"
209
- className="form-field-label"
210
- >
211
- Module
212
- </label>
213
- <div className="mt-2">
214
- <SingleSelectAutoCompleteField
215
- key={`moduleName-${index}`}
216
- formik={formik}
217
- isFormFieldValid={isFormFieldValid}
218
- fieldName={`computedFieldTriggerConfig[${index}].moduleName`}
219
- fieldNameId={`computedFieldTriggerConfig[${index}].moduleName`}
220
- labelKey="displayName"
221
- valueKey="name"
222
- searchData={searchModuleName}
223
- existingData={
224
- row.moduleName
225
- ? {
226
- name: row.moduleName,
227
- displayName: row.displayName || formatDisplayName(row.moduleName),
228
- }
229
- : modelMetaData?.module?.name
230
- ? {
231
- name: modelMetaData.module.name,
232
- displayName: modelMetaData.module.displayName || formatDisplayName(modelMetaData.module.name),
233
- }
234
- : null
235
- }
236
- />
237
- </div>
238
- {errors?.moduleName && (
239
- <Message severity="error" text={errors.moduleName} />
240
- )}
241
- </div>
242
-
243
- <div className="">
244
- <label
245
- htmlFor="modelName"
246
- className="form-field-label"
247
- >
248
- Model
249
- </label>
250
- <div className="mt-2">
251
- <SingleSelectAutoCompleteField
252
- key={`modelName-${index}`}
253
- formik={formik}
254
- isFormFieldValid={isFormFieldValid}
255
- fieldName={`computedFieldTriggerConfig[${index}].modelName`}
256
- fieldNameId={`computedFieldTriggerConfig[${index}].modelName`}
257
- labelKey="displayName"
258
- valueKey="singularName"
259
- searchData={searchModelName}
260
- existingData={
261
- row.modelName
262
- ? {
263
- singularName: row.modelName,
264
- displayName: row.displayName || formatDisplayName(row.modelName),
265
- }
266
- : modelMetaData?.singularName
267
- ? {
268
- singularName: modelMetaData?.singularName,
269
- displayName: modelMetaData?.displayName || formatDisplayName(modelMetaData.displayName),
270
- }
271
- : null
272
- }
273
- />
274
- </div>
275
- {errors?.modelName && (
276
- <Message severity="error" text={errors.modelName} />
277
- )}
278
- </div>
279
-
280
-
281
- {/* operations */}
282
- <div>
283
- <label
284
- htmlFor="operations"
285
- className="form-field-label"
286
- >
287
- Operations
288
- </label>
289
- <div className="mt-2">
290
- <AutoComplete
291
- multiple
292
- dropdown
293
- value={triggerOperationOptions.filter(opt => (row.operations || []).includes(opt.value))}
294
- suggestions={filteredOperations}
295
- completeMethod={searchOperations}
296
- field="label"
297
- onChange={(e) =>
298
- onChange(index, {
299
- ...row,
300
- operations: e.value.map((val: any) => val.value),
301
- })
302
- }
303
- placeholder="Select operations"
304
- className="solid-standard-autocomplete max-w-16rem"
305
- />
306
- </div>
307
- {errors?.operations && (
308
- <Message severity="error" text={errors.operations} />
309
- )}
310
- </div>
311
-
312
- {/* Trash Button to delete the row */}
313
- <Button
314
- icon="pi pi-trash"
315
- size="small"
316
- onClick={() => onDelete(index)}
317
- disabled={disableDelete}
318
- outlined
319
- severity="danger"
320
- type="button"
321
- />
322
- </div>
323
- );
324
-
325
- }
326
-
327
- const fieldBasedPayloadFormating = (values: any, currentFields: string[], fieldMetaData: any) => {
328
- // const booleanFields: string | any[] = [
329
- // "isSystem",
330
- // "defaultValue",
331
- // "required",
332
- // "unique",
333
- // "encrypt",
334
- // "index",
335
- // "private",
336
- // "relationCreateInverse"];
337
- const transformedPayload = currentFields.reduce((acc: any, key: any) => {
338
- acc[key] = values[key]; // Set key and its value as the same string
339
- // if (booleanFields.includes(acc[key])) {
340
- // acc[key] = values[key] == "false" ? "" : true
341
- // }
342
- return acc;
343
- }, {});
344
- transformedPayload.displayName = transformedPayload.displayName.trim()
345
-
346
- transformedPayload.identifier = fieldMetaData ? fieldMetaData.identifier : Date.now();
347
- if (fieldMetaData?.id) {
348
- transformedPayload.id = fieldMetaData.id
349
- }
350
- if (currentFields.includes("mediaStorageProviderId")) {
351
- transformedPayload.mediaStorageProvider = values.mediaStorageProvider
352
- }
353
- if (currentFields.includes("selectionDynamicProviderCtxt")) {
354
- const prettified = JSON.stringify(JSON.parse(values.selectionDynamicProviderCtxt), null, 2);
355
-
356
- transformedPayload.selectionDynamicProviderCtxt = prettified
357
- }
358
-
359
- if (currentFields.includes("computedFieldValueProviderCtxt")) {
360
- const prettified = JSON.stringify(JSON.parse(values.computedFieldValueProviderCtxt), null, 2);
361
- transformedPayload.computedFieldValueProviderCtxt = prettified
362
- }
363
-
364
- if (currentFields.includes("computedFieldTriggerConfig")) {
365
- // const prettified = JSON.stringify(values.computedFieldTriggerConfig, null, 2);
366
- transformedPayload.computedFieldTriggerConfig = values.computedFieldTriggerConfig
367
- }
368
-
369
- if (currentFields.includes("relationCreateInverse")) {
370
- transformedPayload.relationCreateInverse = values.relationCreateInverse == false ? false : true
371
- }
372
- if (transformedPayload.relationType == "many-to-one") {
373
- transformedPayload.relationCascade = values.relationCascade;
374
- }
375
-
376
- if (transformedPayload.relationType == "many-to-many") {
377
- transformedPayload.isRelationManyToManyOwner = true;
378
- }
379
- return transformedPayload
380
-
381
- }
382
-
383
- function fetchCurrentFields(solidFieldType: any, fieldDefaultMetaData: any) {
384
-
385
- if (solidFieldType) {
386
- const allowedFields = fieldDefaultMetaData?.data?.fieldTypes.filter((e: any) => e.fieldType === solidFieldType);
387
- if (allowedFields.length > 0) {
388
- return allowedFields[0].fields
389
- }
390
-
391
- }
392
- return [
393
- "name",
394
- "displayName",
395
- "type",
396
- "ormType",
397
- "required",
398
- "unique",
399
- "index",
400
- "private",
401
- "encrypt",
402
- "isUserKey"
403
- ];
404
-
405
- }
406
-
407
- const createValidationSchema = (currentFields: any, selectedType: any, allFields: any, fieldMetaData: any, encryptState: any) => {
408
-
409
- let reservedNames;
410
-
411
- if (fieldMetaData) {
412
- reservedNames = allFields.length > 0 ? allFields.filter((i: any) => i.id !== fieldMetaData.id).map((f: any) => f.name) : [];
413
- } else {
414
-
415
- reservedNames = allFields.length > 0 ? allFields.map((f: any) => f.name) : [];
416
- }
417
-
418
-
419
-
420
- const schema = {
421
- name: Yup.string()
422
- // .matches(/^[a-z]+(-[a-z]+)*$/,"Invalid format. Use lowercase letters and hyphens only")
423
- .notOneOf(reservedNames, ERROR_MESSAGES.FIELD_ALREADY_USE('Name', 'name'))
424
- .required(ERROR_MESSAGES.FIELD_REUQIRED('Name')),
425
- displayName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Display Name')),
426
- description: Yup.string().nullable(),
427
- type: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Type')),
428
- isSystem: Yup.boolean(),
429
- // Conditionally add validation rules based on `currentFields`
430
- ...(currentFields.includes("ormType") && {
431
- ormType: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Orm Type')),
432
- }),
433
- ...(currentFields.includes("length") && {
434
- length: Yup.number().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Length', 'interger')).nullable(),
435
- }),
436
- // ...(currentFields.includes("defaultValue") && {
437
- // defaultValue: Yup.string().required("Default Value is required"),
438
- // }),
439
- // Conditionally validate defaultValue based on SolidFieldType
440
- ...(currentFields.includes("defaultValue") && {
441
- defaultValue: Yup.mixed().nullable().when("type", (type: any) => {
442
- switch (selectedType.value) {
443
- case "int":
444
- case "bigint":
445
- return Yup.number().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Default value', 'integer'))
446
- .integer(ERROR_MESSAGES.FIELD_MUST_BE_AN('Default value', 'integer'));
447
- case "float":
448
- case "decimal":
449
- return Yup.number().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Default value', 'integer'))
450
- case "shortText":
451
- case "longText":
452
- case "richText":
453
- case "json":
454
- return Yup.string().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Default value', 'boolean'))
455
- case "boolean":
456
- return Yup.boolean().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Default value', 'boolean'))
457
- case "date":
458
- case "datetime":
459
- case "time":
460
- return Yup.date().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Default value', 'Date'))
461
- default:
462
- return Yup.mixed().nullable(); // Default fallback if no match
463
- }
464
- }),
465
- }),
466
-
467
- // Add more conditional fields as needed
468
-
469
- ...(currentFields.includes("regexPattern") && {
470
- regexPattern: Yup.string(),
471
- regexPatternNotMatchingErrorMsg: Yup.string(),
472
- }),
473
- ...(currentFields.includes("required") && {
474
- required: Yup.boolean(),
475
- }),
476
- ...(currentFields.includes("unique") && {
477
- unique: Yup.boolean(),
478
- }),
479
- ...(currentFields.includes("encrypt") && {
480
- encrypt: Yup.boolean(),
481
- }),
482
- ...(currentFields.includes("encryptionType") && encryptState == true && {
483
- encryptionType: Yup.string().required(
484
- ERROR_MESSAGES.FIELD_REUQIRED('Encryption Type Value')
485
- ),
486
- }),
487
- ...(currentFields.includes("decryptWhen") && encryptState == true && {
488
-
489
- decryptWhen: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Decrypt When Value')),
490
- }),
491
- ...(currentFields.includes("index") && {
492
- index: Yup.boolean(),
493
- }),
494
- // ...(currentFields.includes("min") && {
495
- // min: Yup.number().required("Min is required"),
496
- // }),
497
- ...(currentFields.includes("min") && {
498
- min: Yup.mixed().nullable()
499
- .when("type", (type: any) => {
500
- switch (selectedType.value) {
501
- case "int":
502
- return Yup.number().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Min', 'interger'))
503
- .integer(ERROR_MESSAGES.FIELD_MUST_BE_AN('Min', 'interger'));
504
- case "decimal":
505
- case "shortText":
506
- case "longText":
507
- case "richText":
508
- case "json":
509
- return Yup.number().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Min', 'interger'));
510
- default:
511
- return Yup.mixed().nullable().nullable(); // Default fallback if no match
512
- }
513
- }),
514
- }),
515
- // ...(currentFields.includes("max") && {
516
- // max: Yup.number().required("Max is required"),
517
- // }),
518
- ...(currentFields.includes("max") && {
519
- max: Yup.mixed()
520
- .when("type", (type: any) => {
521
- switch (selectedType.value) {
522
- case "int":
523
- return Yup.number().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Max', 'interger'))
524
- .integer(ERROR_MESSAGES.FIELD_MUST_BE_AN('Max', 'interger'))
525
- .test(
526
- ERROR_MESSAGES.GREATER_THAN_MIN,
527
- ERROR_MESSAGES.FIELD_MUST_BE_AN('Max', 'greater than Min'),
528
- function (value) {
529
- const { min } = this.parent; // Access sibling field 'min'
530
- // if (min != null && value == null) {
531
- // // Trigger error if Min is filled but Max is empty
532
- // return this.createError({
533
- // message: "Max is required if Min is specified",
534
- // });
535
- // }
536
- return value == null || value > min; // Validate only if Max exists
537
- }
538
- );
539
-
540
-
541
- case "decimal":
542
- case "shortText":
543
- case "longText":
544
- case "richText":
545
- case "json":
546
- return Yup.number().nullable().typeError(ERROR_MESSAGES.FIELD_MUST_BE_AN('Max', 'interger'))
547
- .test(
548
- ERROR_MESSAGES.GREATER_THAN_MIN,
549
- ERROR_MESSAGES.FIELD_MUST_BE_AN('Max', 'greater than Min'),
550
- function (value) {
551
- const { min } = this.parent; // Access sibling field 'min'
552
- // if (min != null && value == null) {
553
- // // Trigger error if Min is filled but Max is empty
554
- // return this.createError({
555
- // message: "Max is required if Min is specified",
556
- // });
557
- // }
558
- return value == null || value > min; // Validate only if Max exists
559
- }
560
- );
561
-
562
-
563
- default:
564
- return Yup.mixed().nullable().nullable(); // Default fallback if no match
565
- }
566
- }),
567
- }),
568
- ...(currentFields.includes("private") && {
569
- private: Yup.boolean(),
570
- }),
571
- ...(currentFields.includes("mediaTypes") && {
572
- mediaTypes: Yup.mixed().required(ERROR_MESSAGES.FIELD_MUST_BE_AN('Media Types', 'Arrays')).required(ERROR_MESSAGES.FIELD_REUQIRED('Media Types')),
573
- }),
574
-
575
- ...(currentFields.includes("mediaMaxSizeKb") && {
576
- mediaMaxSizeKb: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED('Media Max Size')),
577
- }),
578
- ...(currentFields.includes("mediaStorageProviderId") && {
579
- mediaStorageProviderId: Yup.number().required(
580
- ERROR_MESSAGES.FIELD_REUQIRED('Media Storage Provider')
581
- ),
582
- }),
583
- ...(currentFields.includes("mediaStorageProviderId") && {
584
- mediaStorageProvider: Yup.object().required(
585
- ERROR_MESSAGES.FIELD_REUQIRED('Media Storage Provider')
586
- ),
587
- }),
588
-
589
- ...(currentFields.includes("mediaEmbedded") && {
590
- mediaEmbedded: Yup.boolean(),
591
- }),
592
- ...(currentFields.includes("relationType") && {
593
- relationType: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Relation Type ')),
594
- }),
595
- ...(currentFields.includes("relationCoModelSingularName") && {
596
- relationCoModelSingularName: Yup.string().required(
597
- ERROR_MESSAGES.FIELD_REUQIRED('Relation Model Singular Name')
598
- ),
599
- }),
600
- ...(currentFields.includes("relationCoModelFieldName") && {
601
- relationCoModelFieldName: Yup.string()
602
- // .required(
603
- // "Relation Model Field Name is required"
604
- // ),
605
- }),
606
- ...(currentFields.includes("relationCreateInverse") && {
607
- relationCreateInverse: Yup.boolean(),
608
- }),
609
- ...(currentFields.includes("relationCoModelFieldName") && {
610
- relationCoModelFieldName: Yup.string().when("relationCreateInverse", (relationCreateInverse: any, schema) => {
611
- if (relationCreateInverse.length > 0 && relationCreateInverse[0] == true) {
612
- return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Relation Co Model Field Name'))
613
- } else {
614
- return schema.notRequired();
615
- }
616
- }),
617
- }),
618
-
619
- // ...(currentFields.includes("relationCascade") && {
620
- // relationCascade: Yup.string().required(
621
- // "Relation Cascade Value is required"
622
- // ),
623
- // }),
624
-
625
- // Conditionally validate relationCascade based on relationType
626
- ...(currentFields.includes("relation") && {
627
- relationCascade: Yup.string().when("relationType", (relationType: any, schema) => {
628
- return relationType === "one-to-one"
629
- ? schema.required(ERROR_MESSAGES.RELATION_CASCADE)
630
- : schema.notRequired();
631
- }),
632
- }),
633
-
634
-
635
- ...(currentFields.includes("relationModelModuleName") && {
636
- relationModelModuleName: Yup.string().required(
637
- ERROR_MESSAGES.FIELD_REUQIRED('Relation Model Module Name Value')
638
- ),
639
- }),
640
-
641
- ...(currentFields.includes("relationFieldFixedFilter") && {
642
- relationFieldFixedFilter: Yup.string().nullable(),
643
- }),
644
-
645
- ...(currentFields.includes("selectionDynamicProvider") && {
646
- selectionDynamicProvider: Yup.string().required(
647
- ERROR_MESSAGES.FIELD_REUQIRED('Selection Dynamic Provider Value ')
648
- ),
649
- }),
650
- ...(currentFields.includes("selectionDynamicProviderCtxt") && {
651
- selectionDynamicProviderCtxt: Yup.string().required(
652
- ERROR_MESSAGES.FIELD_REUQIRED('Selection Dynamic Provider Context Value')
653
- ).test(
654
- ERROR_MESSAGES.IS_VALID_JSON,
655
- ERROR_MESSAGES.COMPUTED_FIELD_VALIDATE_JSON,
656
- (value) => {
657
- if (!value) return false; // Ensure it's required
658
- try {
659
- JSON.parse(value); // Check if it's valid JSON
660
- return true;
661
- } catch {
662
- return false;
663
- }
664
- }
665
- ),
666
- }),
667
-
668
- ...(currentFields.includes("selectionStaticValues") && {
669
- selectionStaticValues: Yup.array().of(
670
- Yup.string().matches(/^[\w\s\d-]+:[\w\s-]+$/, ERROR_MESSAGES.FIELD_REUQIRED('Label and Value'))
671
- ),
672
- }),
673
- ...(currentFields.includes("computedFieldValueProvider") && {
674
- computedFieldValueProvider: Yup.string().required(
675
- ERROR_MESSAGES.FIELD_REUQIRED('Computed Field Function Value')
676
- ),
677
- }),
678
- ...(currentFields.includes("computedFieldValueProviderCtxt") && {
679
- computedFieldValueProviderCtxt: Yup.string().required(
680
- ERROR_MESSAGES.FIELD_REUQIRED('"Computed Field Value Provider Context Value')
681
- ).test(
682
- ERROR_MESSAGES.IS_VALID_JSON,
683
- ERROR_MESSAGES.COMPUTED_FIELD_VALIDATE_JSON,
684
- (value) => {
685
- if (!value) return false; // Ensure it's required
686
- try {
687
- JSON.parse(value); // Check if it's valid JSON
688
- return true;
689
- } catch {
690
- return false;
691
- }
692
- }
693
- ),
694
-
695
- }),
696
- ...(currentFields.includes("computedFieldValueType") && {
697
- computedFieldValueType: Yup.string().required(
698
- ERROR_MESSAGES.FIELD_REUQIRED('Computed Field Value Type')
699
- ),
700
- }),
701
- ...(currentFields.includes("computedFieldTriggerConfig") && {
702
- computedFieldTriggerConfig: Yup.array()
703
- .of(
704
- Yup.object().shape({
705
- moduleName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Module name')),
706
- modelName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED('Model name')),
707
- operations: Yup.array().of(Yup.string()).min(1, ERROR_MESSAGES.SELECT_ONE_OPERATION),
708
- })
709
- )
710
- .min(1, ERROR_MESSAGES.FIELD_REUQIRED('At least one trigger config'))
711
- .required(ERROR_MESSAGES.FIELD_REUQIRED('Computed Field Trigger Config')),
712
- }),
713
-
714
- // ...(currentFields.includes("columnName") && { columnName: Yup.string().nullable().matches(/^[a-z0-9_]+$/, ERROR_MESSAGES.SNAKE_CASE('column')), }),
715
- ...(currentFields.includes("isPrimaryKey") && { isPrimaryKey: Yup.boolean(), }),
716
-
717
- ...(currentFields.includes("required") && {
718
- required: Yup.boolean().when("isPrimaryKey", (isPrimaryKey: any, schema) => {
719
- if (isPrimaryKey.length > 0 && isPrimaryKey[0] === true) {
720
- return schema.oneOf([true], "Required must be true when field is marked as Primary Key");
721
- }
722
- return schema;
723
- }),
724
- }),
725
-
726
- ...(currentFields.includes("unique") && {
727
- unique: Yup.boolean().when("isPrimaryKey", (isPrimaryKey: any, schema) => {
728
- if (isPrimaryKey.length > 0 && isPrimaryKey[0] === true) {
729
- return schema.oneOf([true], "Unique must be true when field is marked as Primary Key");
730
- }
731
- return schema;
732
- }).when("required", (required: any, schema) => {
733
- // Disallow unique field that is not required
734
- if (required.length > 0 && required[0] === false) {
735
- return schema.oneOf([false], "Unique fields must also be marked as Required");
736
- }
737
- return schema;
738
- }),
739
- }),
740
-
741
-
742
- // ...(currentFields.includes("externalIdProvider") && {
743
- // externalIdProvider: Yup.string().required(
744
- // "ExternalId Provider Value is required"
745
- // ),
746
- // }),
747
- // ...(currentFields.includes("externalIdProviderCtxt") && {
748
- // externalIdProviderCtxt: Yup.string().required(
749
- // "EexternalId Provider Context Value is required"
750
- // ),
751
- // }),
752
- };
753
-
754
- return Yup.object(schema);
755
- };
756
-
757
- const FieldMetaDataForm = ({ setIsDirty, modelMetaData, fieldMetaData, setFieldMetaData, allFields, deleteModelFunction, setVisiblePopup, params, setIsRequiredPopUp, showToaster }: any) => {
758
- const booleanOptions = ["false", "true"];
759
- const [isBackPopupVisible, setIsBackPopupVisible] = useState(false);
760
- const [showColumnName, setShowColumnName] = useState<any>(false);
761
-
762
- const pathname = usePathname();
763
-
764
- const toast = useRef<Toast>(null);
765
- const { data: fieldDefaultMetaData, isLoading, error, refetch } = useGetFieldDefaultMetaDataQuery(null);
766
- const [currentFields, setCurrentFields] = useState(
767
- fetchCurrentFields(fieldMetaData && fieldMetaData.type, fieldDefaultMetaData)
768
- );
769
-
770
- const [triggerGetMediaStorageProvider, { data: MediaStorageProviderData, isFetching: isMediaStorageProviderFetching, error: MediaStorageProviderError }] = useLazyGetMediaStorageProvidersQuery();
771
- const [triggerGetModules, { data: moduleData, isFetching: isModuleFetching, error: moduleError }] = useLazyGetmodulesQuery();
772
- const [triggerGetModels, { data: modelData, isFetching: ismodelFetching, error: modelError }] = useLazyGetModelsQuery();
773
- const [
774
- updateUserKey,
775
- { isLoading: isUpdateUserKeyLoading, isSuccess: isUpdateUserKeySuccess, isError: isUpdateUserKeyError, error: UpdateUserKeyError, data: newModel },
776
- ] = useUpdateUserKeyMutation();
777
-
778
-
779
- const [markdownText, setMarkdownText] = useState<string>();
780
- const [encryptState, setEncryptState] = useState<any>(false);
781
-
782
- const [showTypeFilter, setShowTypeFilter] = useState(fieldMetaData ? false : true);
783
- const [selectedType, setSelectedType] = useState(fieldMetaData?.type && { label: fieldMetaData?.type, value: fieldMetaData?.type });
784
- const [selectedComputedFieldValueType, setSelectedComputedFieldValueType] = useState(fieldMetaData?.computedFieldValueType && { label: fieldMetaData.computedFieldValueType, value: fieldMetaData.computedFieldValueType });
785
- const [selectionDynamicProvider, setSelectionDynamicProvider] = useState(fieldMetaData?.selectionDynamicProvider && { label: fieldMetaData.selectionDynamicProvider, value: fieldMetaData.selectionDynamicProvider });
786
- // const [externalIdProvider, setExternalIdProvider] = useState(fieldMetaData?.externalIdProvider && { label: fieldMetaData.externalIdProvider, value: fieldMetaData.externalIdProvider });
787
- const [selectionStaticValues, setSelectionStaticValues] = useState(fieldMetaData && fieldMetaData.selectionStaticValues && fieldMetaData.selectionStaticValues.length > 0 && fieldMetaData?.selectionStaticValues.filter((line: any) => line.trim() !== "").join("\n"));
788
- const [filteredComputedFieldValueTypes, setFilteredComputedFieldValueTypes] = useState([]);
789
- const [
790
- filteredSelectionDynamicProvider,
791
- setFilteredSelectionDynamicProvider,
792
- ] = useState([]);
793
-
794
- const [ormTypeOptions, setOrmTypeOptions] = useState([]);
795
- const [selectedOrmType, setSelectedOrmType] = useState<any>(fieldMetaData?.ormType);
796
-
797
- const [askForUserKeyField, setAskForUserKeyField] = useState(false);
798
- const [userKeyFieldData, setUserKeyFieldData] = useState([]);
799
-
800
- const [
801
- filteredExternalIdProvider,
802
- setFilteredExternalIdProvider,
803
- ] = useState([]);
804
-
805
- const [filteredSelectionEncryptionType, setFilteredSelectionEncryptionType] = useState([]);
806
-
807
- const [filteredSelectionDecryptWhen, setFilteredSelectionDecryptWhen] = useState([]);
808
-
809
- const items = Array.from({ length: 100000 }).map((_, i) => ({
810
- label: `Item #${i}`,
811
- value: i,
812
- }));
813
-
814
- const validationSchema = React.useMemo(
815
- () => createValidationSchema(currentFields, selectedType, allFields, fieldMetaData, encryptState),
816
- [currentFields, encryptState]
817
- );
818
-
819
- const [typeSelected, setTypeSelected] = useState(false);
820
-
821
-
822
- const searchMediaTypes = async (event: any) => {
823
- const query = event.query;
824
- try {
825
- const suggestionData: any = fieldDefaultMetaData.data.mediaTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
826
- return suggestionData;
827
- } catch (error) {
828
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
829
- return []
830
- }
831
- };
832
-
833
- const searchMediaStorageProvIderId = async (event: any) => {
834
- try {
835
- const query = event.query;
836
- const queryData = {
837
- limit: 10,
838
- offset: 0,
839
- // filters: {
840
- // name: {
841
- // $containsi: query,
842
- // },
843
- // },
844
- };
845
-
846
- const queryString = qs.stringify(queryData, {
847
- encodeValuesOnly: true,
848
- });
849
-
850
- const result = await triggerGetMediaStorageProvider(queryString).unwrap();
851
-
852
- if (result && result.records) {
853
- const updatedSuggestion = [...result.records];
854
- return updatedSuggestion
855
- } else {
856
- return []
857
- }
858
- } catch (error) {
859
- return []
860
- }
861
- };
862
-
863
-
864
- const searchModel = async (event: any) => {
865
- const query = event.query;
866
- const queryData = {
867
- limit: 10,
868
- offset: 0,
869
- // filters: {
870
- // title: {
871
- // $containsi: query
872
- // }
873
- // }
874
- };
875
-
876
- const queryString = qs.stringify(queryData, {
877
- encodeValuesOnly: true
878
- });
879
-
880
- // Trigger the API call manually
881
- const result = await triggerGetModels(queryString).unwrap(); // Unwrap to access the data
882
-
883
- // Map the API response to AutoComplete format
884
- if (result && result.records) {
885
- const filteredMenu = result.records.map((m: any) => (
886
- {
887
- label: m.name,
888
- value: m.id,
889
- name: m.name,
890
- id: m.id,
891
- }
892
- ));
893
-
894
- // Update the suggestions in state
895
- return filteredMenu
896
- } else {
897
- // Handle the case where no data is returned
898
- return []
899
- }
900
- };
901
-
902
-
903
-
904
-
905
- const searchOrmTypes = async (event: any) => {
906
- const query = event.query;
907
- try {
908
-
909
- const ormType = fieldDefaultMetaData.data.ormType[modelMetaData?.dataSourceType];
910
- const _filteredOrmType = ormType[formik.values.type].ormTypes.map((e: any) => ({ label: e, value: e }))
911
-
912
- const suggestionData: any = _filteredOrmType.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
913
- return suggestionData
914
- } catch (error) {
915
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
916
- return []
917
- }
918
- };
919
-
920
-
921
-
922
-
923
- const searchRelationModelModuleNames = async (event: any) => {
924
- try {
925
- const query = event.query;
926
- const queryData = {
927
- limit: 10,
928
- offset: 0,
929
- filters: {
930
- name: {
931
- $containsi: query,
932
- },
933
- },
934
- };
935
-
936
- const queryString = qs.stringify(queryData, {
937
- encodeValuesOnly: true,
938
- });
939
-
940
- const result = await triggerGetModules(queryString).unwrap(); // Unwrap to access the data
941
-
942
- if (result && result.records) {
943
- const updatedSuggestion = [...result.records];
944
- return updatedSuggestion
945
- } else {
946
- return []
947
- }
948
- } catch (error) {
949
- return []
950
- }
951
- };
952
-
953
- const searchrelationCoModelSingularNames = async (event: any) => {
954
- try {
955
- const query = event.query;
956
- const queryData: any = {
957
- limit: 10,
958
- offset: 0,
959
- filters: {
960
- module: {
961
- name: {
962
- $containsi: formik.values.relationModelModuleName
963
- }
964
- }
965
- }
966
- };
967
- if (query) {
968
- queryData.filters.singularName = {
969
- $containsi: query,
970
- };
971
- }
972
- const queryString = qs.stringify(queryData, {
973
- encodeValuesOnly: true,
974
- });
975
-
976
- const result = await triggerGetModels(queryString).unwrap(); // Unwrap to access the data
977
-
978
- if (result && result.records) {
979
- const updatedSuggestion = [...result.records];
980
- return updatedSuggestion
981
- } else {
982
- return []
983
- }
984
- } catch (error) {
985
- return []
986
- }
987
- };
988
-
989
- const searchModuleName = async (event: any) => {
990
- try {
991
- const query = event.query;
992
- const queryData = {
993
- limit: 10,
994
- offset: 0,
995
- filters: {
996
- name: {
997
- $containsi: query,
998
- },
999
- },
1000
- };
1001
-
1002
- const queryString = qs.stringify(queryData, {
1003
- encodeValuesOnly: true,
1004
- });
1005
-
1006
- const result = await triggerGetModules(queryString).unwrap(); // Unwrap to access the data
1007
-
1008
- if (result && result.records) {
1009
- const updatedSuggestion = [...result.records];
1010
- return updatedSuggestion
1011
- } else {
1012
- return []
1013
- }
1014
- } catch (error) {
1015
- return []
1016
- }
1017
- };
1018
-
1019
- const getSearchModelNameHandler = useCallback(
1020
- (moduleName: string) => {
1021
- return async (event: any) => {
1022
- try {
1023
- const query = event.query;
1024
- const queryData: any = {
1025
- limit: 10,
1026
- offset: 0,
1027
- filters: {
1028
- module: {
1029
- name: {
1030
- $containsi: moduleName,
1031
- },
1032
- },
1033
- },
1034
- };
1035
-
1036
- if (query) {
1037
- queryData.filters.singularName = {
1038
- $containsi: query,
1039
- };
1040
- }
1041
-
1042
- const queryString = qs.stringify(queryData, { encodeValuesOnly: true });
1043
- const result = await triggerGetModels(queryString).unwrap();
1044
- return result?.records ?? [];
1045
- } catch (error) {
1046
- return [];
1047
- }
1048
- };
1049
- },
1050
- [] // or include dependencies like triggerGetModels if needed
1051
- );
1052
-
1053
- const searchUserKeyField = () => {
1054
- return userKeyFieldData;
1055
- }
1056
-
1057
- const searchComputedFieldValueType = async (event: any) => {
1058
- const query = event.query;
1059
- try {
1060
-
1061
- const _filteredTypes: any = fieldDefaultMetaData.data.computedFieldValueTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
1062
-
1063
- setFilteredComputedFieldValueTypes(_filteredTypes);
1064
- } catch (error) {
1065
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
1066
- setFilteredComputedFieldValueTypes([]);
1067
- }
1068
- };
1069
-
1070
-
1071
-
1072
- const searchSelectionDynamicProvider = async (event: any) => {
1073
- const query = event.query;
1074
- try {
1075
- const filterredData: any = fieldDefaultMetaData.data.selectionDynamicProviders.filter((t: any) => t.provider.toLowerCase().startsWith(query.toLowerCase()));
1076
- const transformedData = filterredData.map((e: any) => ({ label: e.provider, value: e.provider, help: e.help }));
1077
- return transformedData
1078
- } catch (error) {
1079
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
1080
- return []
1081
- }
1082
- };
1083
-
1084
-
1085
-
1086
- const searchComputedProvider = async (event: any) => {
1087
- const query = event.query;
1088
- try {
1089
- const filterredData: any = fieldDefaultMetaData.data.computedProviders.filter((t: any) => t.provider.toLowerCase().startsWith(query.toLowerCase()));
1090
- const transformedData = filterredData.map((e: any) => ({ label: e.provider, value: e.provider, help: e.help }));
1091
- return transformedData
1092
- } catch (error) {
1093
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
1094
- return []
1095
- }
1096
- };
1097
-
1098
- const searchExternalIdProvider = async (event: any) => {
1099
- const query = event.query;
1100
- try {
1101
- const filterredData: any = fieldDefaultMetaData.data.externalIdProviders.filter((t: any) => t.provider.toLowerCase().startsWith(query.toLowerCase()));
1102
- const transformedData = filterredData.map((e: any) => ({ label: e.provider, value: e.provider, help: e.help }));
1103
- return transformedData
1104
- } catch (error) {
1105
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
1106
- return []
1107
- }
1108
- };
1109
-
1110
-
1111
-
1112
- const searchSelectionEncryptionType = async (event: any) => {
1113
- const query = event.query;
1114
- try {
1115
-
1116
- const _filteredTypes: any = fieldDefaultMetaData.data.encryptionTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
1117
-
1118
- setFilteredSelectionEncryptionType(_filteredTypes);
1119
- return _filteredTypes
1120
- } catch (error) {
1121
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
1122
- setFilteredSelectionEncryptionType([]);
1123
- return []
1124
- }
1125
- };
1126
-
1127
- const searchSelectionDecryptWhen = async (event: any) => {
1128
- const query = event.query;
1129
- try {
1130
-
1131
- const _filteredTypes: any = fieldDefaultMetaData.data.decryptWhenTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
1132
-
1133
- setFilteredSelectionDecryptWhen(_filteredTypes);
1134
- return _filteredTypes
1135
- } catch (error) {
1136
- console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
1137
- setFilteredSelectionDecryptWhen([]);
1138
- return []
1139
- }
1140
- };
1141
-
1142
-
1143
- const isFormFieldValid = (formik: any, fieldName: string) => {
1144
- return formik.touched[fieldName] && formik.errors[fieldName];
1145
- };
1146
-
1147
-
1148
- const mediaStorageProviderId = [
1149
- { label: "mediaStorageProviderId", value: "mediaStorageProviderId" },
1150
- { label: "id2", value: "2" },
1151
- ];
1152
-
1153
- const selctionValueTypes = [
1154
- { label: "String", value: "string" },
1155
- { label: "Int", value: "int" },
1156
- ];
1157
-
1158
-
1159
- const relationCreateInverses = [
1160
- { label: "True", value: "true" },
1161
- { label: "False", value: "false" },
1162
- ];
1163
-
1164
- const [selectedPasswordPolicy, setSelectedPasswordPolicy] = useState<any>(fieldMetaData?.regexPattern);
1165
- const passwordPolicyOptions = [
1166
- { label: 'Lowercase and Uppercase Alphabets Required', value: '^(?=.*[a-z])(?=.*[A-Z]).*$' },
1167
- { label: 'Lowercase and Uppercase Alphabets and Numbers Required', value: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).*$' },
1168
- { label: 'Lowercase and Uppercase Alphabets, Numbers, and Special Characters Required', value: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&]).*$' },
1169
- { label: 'custom', value: 'custom' },
1170
-
1171
- ];
1172
-
1173
- const mediaTypesOptions = [
1174
- { label: 'Image (Supports JPEG, PNG, WEBP, etc.)', value: 'image' },
1175
- { label: 'Audio (Supports MP3, WAV, AAC, etc.)', value: 'audio' },
1176
- { label: 'Video (Supports MP4, AVI, MKV, etc.)', value: 'video' },
1177
- { label: 'File (Supports PDF, DOCX, TXT, etc.)', value: 'file' }
1178
- ];
1179
-
1180
-
1181
- const parseComputedFieldTriggerConfig = (input: any) => {
1182
- try {
1183
- if (typeof input === "string") {
1184
- const parsed = JSON.parse(input);
1185
- return Array.isArray(parsed) ? parsed : [parsed];
1186
- } else if (Array.isArray(input)) {
1187
- return input;
1188
- } else if (typeof input === "object" && input !== null) {
1189
- return [input];
1190
- }
1191
- } catch {
1192
- return [{ moduleName: "", modelName: "", operations: [] }];
1193
- }
1194
-
1195
- return [{ moduleName: "", modelName: "", operations: [] }];
1196
- };
1197
-
1198
-
1199
- const initialValues = {
1200
- name: fieldMetaData ? fieldMetaData?.name : null,
1201
- displayName: fieldMetaData ? fieldMetaData?.displayName : null,
1202
- description: fieldMetaData ? fieldMetaData?.description : null,
1203
- type: fieldMetaData ? fieldMetaData?.type : null,
1204
- ormType: fieldMetaData ? fieldMetaData?.ormType : null,
1205
- length: fieldMetaData ? fieldMetaData?.length : null,
1206
- defaultValue: fieldMetaData ? fieldMetaData?.defaultValue : null,
1207
- regexPattern: fieldMetaData ? fieldMetaData?.regexPattern : null,
1208
- regexPatternNotMatchingErrorMsg: fieldMetaData ? fieldMetaData?.regexPatternNotMatchingErrorMsg : "Invalid regex pattern",
1209
- required: fieldMetaData ? fieldMetaData?.required : false,
1210
- unique: fieldMetaData ? fieldMetaData?.unique : false,
1211
- encrypt: fieldMetaData ? fieldMetaData?.encrypt : false,
1212
- encryptionType: fieldMetaData ? fieldMetaData?.encryptionType : null,
1213
- decryptWhen: fieldMetaData ? fieldMetaData?.decryptWhen : null,
1214
- index: fieldMetaData ? fieldMetaData?.index : false,
1215
- min: fieldMetaData ? fieldMetaData?.min : null,
1216
- max: fieldMetaData ? fieldMetaData?.max : null,
1217
- private: fieldMetaData ? fieldMetaData?.private : false,
1218
- mediaTypes: fieldMetaData ? fieldMetaData?.mediaTypes : null,
1219
- mediaMaxSizeKb: fieldMetaData ? fieldMetaData?.mediaMaxSizeKb : null,
1220
- mediaStorageProviderId: fieldMetaData ? fieldMetaData?.mediaStorageProvider?.id : null,
1221
- mediaStorageProvider: fieldMetaData ? fieldMetaData?.mediaStorageProvider : null,
1222
- mediaEmbedded: fieldMetaData ? (fieldMetaData?.mediaEmbedded && fieldMetaData?.mediaEmbedded.toString()) : "true",
1223
- relationType: fieldMetaData ? fieldMetaData?.relationType : null,
1224
- relationCoModelSingularName: fieldMetaData ? fieldMetaData?.relationCoModelSingularName : null,
1225
- relationCoModelFieldName: fieldMetaData ? fieldMetaData?.relationCoModelFieldName : null,
1226
- relationCreateInverse: fieldMetaData ? fieldMetaData?.relationCreateInverse : false,
1227
- relationCascade: fieldMetaData ? fieldMetaData?.relationCascade : 'cascade',
1228
- relationModelModuleName: fieldMetaData ? fieldMetaData?.relationModelModuleName : modelMetaData?.module.name,
1229
- relationFieldFixedFilter: fieldMetaData ? fieldMetaData?.relationFieldFixedFilter : "",
1230
- selectionDynamicProvider: fieldMetaData ? fieldMetaData?.selectionDynamicProvider : null,
1231
- selectionDynamicProviderCtxt: fieldMetaData ? fieldMetaData?.selectionDynamicProviderCtxt : "",
1232
- selectionStaticValues: fieldMetaData ? fieldMetaData?.selectionStaticValues : [""],
1233
- selectionValueType: fieldMetaData ? fieldMetaData?.selectionValueType : null,
1234
- computedFieldValueProvider: fieldMetaData ? fieldMetaData?.computedFieldValueProvider : null,
1235
- computedFieldValueType: fieldMetaData ? fieldMetaData?.computedFieldValueType : null,
1236
- computedFieldTriggerConfig: parseComputedFieldTriggerConfig(fieldMetaData?.computedFieldTriggerConfig),
1237
- computedFieldValueProviderCtxt: fieldMetaData ? fieldMetaData?.computedFieldValueProviderCtxt : "",
1238
- // externalIdProvider: fieldMetaData ? fieldMetaData?.externalIdProvider : null,
1239
- // externalIdProviderCtxt: fieldMetaData ? fieldMetaData?.externalIdProviderCtxt : "",
1240
- isSystem: fieldMetaData ? fieldMetaData?.isSystem : false,
1241
- columnName: fieldMetaData ? fieldMetaData?.columnName : null,
1242
- isUserKey: fieldMetaData ? fieldMetaData?.isUserKey : false,
1243
- relationCoModelColumnName: fieldMetaData ? fieldMetaData?.relationCoModelColumnName : null,
1244
- relationJoinTableName: fieldMetaData ? fieldMetaData?.relationJoinTableName : null,
1245
- userKey: fieldMetaData ? fieldMetaData?.userKey : null,
1246
- enableAuditTracking: fieldMetaData ? fieldMetaData?.enableAuditTracking : true,
1247
- isPrimaryKey: fieldMetaData ? fieldMetaData?.isPrimaryKey : false,
1248
- isMultiSelect: fieldMetaData ? fieldMetaData?.isMultiSelect : false,
1249
- };
1250
-
1251
-
1252
- const formik = useFormik({
1253
- initialValues,
1254
- validationSchema,
1255
- enableReinitialize: true,
1256
- onSubmit: async (values) => {
1257
- try {
1258
- setFieldMetaData((prevItems: any) => {
1259
- const newFieldData = { ...values, isSystem: values.isSystem == true ? true : '' }
1260
- const formtatedFieldPayload = fieldBasedPayloadFormating(newFieldData, currentFields, fieldMetaData);
1261
- const existingIndex = prevItems.findIndex((item: any) => item.identifier === formtatedFieldPayload.identifier);
1262
- let updatedItems;
1263
- if (existingIndex !== -1) {
1264
- updatedItems = [...prevItems];
1265
- updatedItems[existingIndex] = formtatedFieldPayload;
1266
- return updatedItems
1267
- }
1268
- else {
1269
- updatedItems = [...prevItems, formtatedFieldPayload];
1270
- if (params?.id !== 'new' && formtatedFieldPayload?.required && !formtatedFieldPayload?.defaultValue) {
1271
- setIsRequiredPopUp(true);
1272
- }
1273
- // return [...prevItems, formtatedFieldPayload]
1274
- }
1275
- return updatedItems;
1276
- });
1277
- if (values.userKey) {
1278
- const data = {
1279
- modelName: values.relationCoModelSingularName,
1280
- fieldName: values.userKey
1281
- }
1282
- updateUserKey(data);
1283
- }
1284
- // nextTab()
1285
- setVisiblePopup(false);
1286
-
1287
- } catch (err) {
1288
- console.error(ERROR_MESSAGES.CREATE_MODEL, err);
1289
- }
1290
- },
1291
- validateOnBlur: false // Disable validation on blur
1292
-
1293
-
1294
-
1295
- });
1296
-
1297
- const showError = async () => {
1298
- const errors = await formik.validateForm(); // Trigger validation and get the updated errors
1299
- const errorMessages = Object.values(errors);
1300
-
1301
-
1302
- if (errorMessages.length > 0) {
1303
- toast?.current?.show({
1304
- severity: "error",
1305
- summary: ERROR_MESSAGES.SEND_REPORT,
1306
- // sticky: true,
1307
- life: 3000,
1308
- //@ts-ignore
1309
- content: (props) => (
1310
- <div
1311
- className="flex flex-column align-items-left"
1312
- style={{ flex: "1" }}
1313
- >
1314
- {errorMessages.map((m, index) => (
1315
- <div className="flex align-items-center gap-2" key={index}>
1316
- <span className="font-bold text-900">{String(m)}</span>
1317
- </div>
1318
- ))}
1319
- </div>
1320
- ),
1321
- });
1322
- }
1323
- };
1324
-
1325
- useEffect(() => {
1326
- if (isUpdateUserKeySuccess) {
1327
- showToaster([newModel?.data?.message], "success");
1328
- } if (isUpdateUserKeyError) {
1329
- showToaster(UpdateUserKeyError, 'error')
1330
- }
1331
- }, [isUpdateUserKeySuccess, isUpdateUserKeyError])
1332
-
1333
- const handleTypeSelect = (e: any, label: string) => {
1334
-
1335
- setShowTypeFilter(false);
1336
- setSelectedType({ label: label, value: e });
1337
- formik.setFieldValue("type", e);
1338
- if (e == "email") {
1339
- formik.setFieldValue("regexPattern", "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$");
1340
- } else {
1341
- formik.setFieldValue("regexPattern", "");
1342
- }
1343
- const ormType = fieldDefaultMetaData.data.ormType[modelMetaData?.dataSourceType];
1344
- const availableOrmTypes = ormType[e];
1345
- // setFilteredOrmTypes(availableOrmTypes.ormTypes.map((e: any) => ({
1346
- // label: e,
1347
- // value: e,
1348
- // })));
1349
- // setSelectedOrmType({ label: availableOrmTypes.ormTypes[0], value: availableOrmTypes.ormTypes[0] });
1350
- setOrmTypeOptions(availableOrmTypes.ormTypes)
1351
- formik.setFieldValue("ormType", availableOrmTypes.ormTypes[0].label);
1352
- setSelectedOrmType(availableOrmTypes.ormTypes[0].label)
1353
- setCurrentFields(
1354
- fetchCurrentFields(e, fieldDefaultMetaData)
1355
- );
1356
- // setTypeSelected(true);
1357
- }
1358
-
1359
-
1360
- useEffect((() => {
1361
- setOrmTypeOptions(fieldDefaultMetaData && formik.values.type && fieldDefaultMetaData.data.ormType[modelMetaData?.dataSourceType][formik.values.type].ormTypes);
1362
- }), [formik])
1363
-
1364
-
1365
- useEffect(() => {
1366
- if (fieldMetaData && fieldMetaData.columnName) {
1367
- setShowColumnName(true)
1368
- }
1369
- }, [fieldMetaData])
1370
-
1371
- useEffect(() => {
1372
- const fetchFields = async () => {
1373
- const queryData: any = {
1374
- limit: 100,
1375
- offset: 0,
1376
- filters: {
1377
- singularName: {
1378
- $eq: formik.values.relationCoModelSingularName
1379
- }
1380
- },
1381
- populate: ['fields']
1382
- };
1383
- const queryString = qs.stringify(queryData, {
1384
- encodeValuesOnly: true,
1385
- });
1386
- const result = await triggerGetModels(queryString).unwrap();
1387
-
1388
- if (result && result.records) {
1389
- if (!result?.records[0]?.userKeyField) {
1390
- setAskForUserKeyField(true);
1391
- const validUserKeyFields = result?.records[0]?.fields?.filter(
1392
- (field: any) => field?.unique === true && field?.type === 'shortText'
1393
- );
1394
- setUserKeyFieldData(validUserKeyFields)
1395
- } else {
1396
- setAskForUserKeyField(false);
1397
- setUserKeyFieldData([]);
1398
- }
1399
- }
1400
- }
1401
- if (formik.values.relationCoModelSingularName) {
1402
- fetchFields();
1403
- }
1404
- }, [formik.values.relationCoModelSingularName])
1405
-
1406
- const updateEnumValues = (index: number, updatedString: string) => {
1407
- const updatedValues = formik.values.selectionStaticValues.map((enumValue: string, i: number) =>
1408
- i === index ? updatedString : enumValue
1409
- );
1410
- formik.setFieldValue("selectionStaticValues", updatedValues);
1411
- };
1412
-
1413
- const addEnumValue = () => {
1414
- formik.setFieldValue("selectionStaticValues", [...formik.values.selectionStaticValues, ":"]);
1415
- };
1416
-
1417
- const deleteEnumValue = (index: number) => {
1418
- if (formik.values.selectionStaticValues.length > 1) {
1419
- const updatedRows = formik.values.selectionStaticValues.filter((_: string, rowIndex: number) => rowIndex !== index);
1420
- formik.setFieldValue("selectionStaticValues", updatedRows);
1421
- } else {
1422
-
1423
- }
1424
- };
1425
-
1426
- useEffect(() => {
1427
- if (formik.dirty) {
1428
- setIsDirty(true);
1429
- }
1430
- }, [formik.dirty]);
1431
-
1432
- const handleChange = (index: number, updatedRow: any) => {
1433
- const updatedRows = [...formik.values.computedFieldTriggerConfig];
1434
- updatedRows[index] = updatedRow;
1435
- formik.setFieldValue("computedFieldTriggerConfig", updatedRows);
1436
- };
1437
-
1438
- const handleAdd = () => {
1439
- const updatedRows = [
1440
- ...formik.values.computedFieldTriggerConfig,
1441
- { moduleName: '', modelName: '', operations: [] }
1442
- ];
1443
- formik.setFieldValue("computedFieldTriggerConfig", updatedRows);
1444
- };
1445
-
1446
- const handleDelete = (index: number) => {
1447
- const updatedRows = formik.values.computedFieldTriggerConfig.filter((_: any, i: number) => i !== index);
1448
- formik.setFieldValue("computedFieldTriggerConfig", updatedRows.length > 0 ? updatedRows : [{ moduleName: '', modelName: '', operations: [] }]);
1449
- };
1450
-
1451
- console.log("formik.values.computedFieldTriggerConfig", formik.values.computedFieldTriggerConfig);
1452
-
1453
- const computedFieldSearchHandlers = useMemo(() => {
1454
- return formik.values.computedFieldTriggerConfig.map(row =>
1455
- getSearchModelNameHandler(row.moduleName)
1456
- );
1457
- }, [formik.values.computedFieldTriggerConfig]);
1458
-
1459
-
1460
- return (
1461
- <div>
1462
- <Toast ref={toast} />
1463
- <div>
1464
- <form onSubmit={formik.handleSubmit}>
1465
- <div className="solid-field-metadata-form-header">
1466
- {pathname.includes('create') ?
1467
- <>
1468
- <div className="flex align-items-center gap-3">
1469
- {showTypeFilter === false ?
1470
- <>
1471
- <Button
1472
- text
1473
- icon='pi pi-arrow-left'
1474
- size="small"
1475
- type="button"
1476
- aria-label="Back"
1477
- className='max-w-2rem bg-primary-reverse text-color solid-icon-button'
1478
- onClick={() => {
1479
- if (!formik.values.displayName) {
1480
- setShowTypeFilter(true)
1481
- } else {
1482
- setIsBackPopupVisible(true)
1483
- }
1484
- }
1485
- }
1486
- />
1487
- <div className="form-wrapper-title solid-mobile-text-wrapper text-base">{capitalize(modelMetaData?.displayName)}</div>
1488
- </>
1489
- :
1490
- <div className="flex text-2xl font-bold align-items-center ml-4" style={{ color: '#000' }}>
1491
- <div className="form-wrapper-title solid-mobile-text-wrapper text-base">Model - {capitalize(modelMetaData?.displayName)}</div>
1492
- </div>
1493
- }
1494
- </div>
1495
- <div className="flex align-items-center gap-3 close-popup">
1496
- <Button icon="pi pi-times" rounded text aria-label="Cancel" type="reset" size="small" onClick={() => setVisiblePopup(false)}
1497
- className='max-w-2rem bg-primary-reverse text-color' />
1498
- </div>
1499
- </>
1500
- :
1501
- <>
1502
- <div className="flex align-items-center gap-3">
1503
- {!fieldMetaData?.id &&
1504
- <Button
1505
- text
1506
- icon='pi pi-arrow-left'
1507
- size="small"
1508
- type="button"
1509
- aria-label="Back"
1510
- className='max-w-2rem bg-primary-reverse text-color solid-icon-button'
1511
- onClick={() => {
1512
- if (!formik.values.displayName) {
1513
- setShowTypeFilter(true)
1514
- } else {
1515
- setIsBackPopupVisible(true)
1516
- }
1517
- }
1518
- } />
1519
- }
1520
- {fieldMetaData ?
1521
-
1522
- <div className="form-wrapper-title solid-mobile-text-wrapper text-base">Edit {capitalize(fieldMetaData?.displayName)}</div>
1523
- :
1524
- <div className="form-wrapper-title solid-mobile-text-wrapper text-base">Add New {selectedType?.label && !showTypeFilter && capitalize(selectedType.label)} Field to {capitalize(modelMetaData?.displayName)}</div>
1525
- }
1526
- </div>
1527
- <div className="flex align-items-center gap-3 close-popup">
1528
- <Button icon="pi pi-times" text aria-label="Cancel" type="reset" size="small" onClick={() => setVisiblePopup(false)}
1529
- className='max-w-2rem bg-primary-reverse text-color'
1530
- />
1531
- </div>
1532
- </>
1533
- }
1534
- </div>
1535
- {showTypeFilter === true ?
1536
- <FieldSelector
1537
- handleTypeSelect={handleTypeSelect}
1538
- modelMetaData={modelMetaData}
1539
- ></FieldSelector>
1540
- :
1541
- <div className="p-4" style={{ maxHeight: '80vh', overflowY: 'auto', overflowX: 'hidden' }}>
1542
- <div className="p-d-flex p-jc-center creat-field-for form-dem">
1543
- <div className="p-fluid" style={{ position: 'relative' }}>
1544
- {/* <div className="mb-3">
1545
- <div className="form-wrapper-title">{fieldMetaData ? `Edit ${capitalize(selectedType.label)} Field` : `Add a new ${capitalize(selectedType.label)} Field`}</div>
1546
- </div> */}
1547
- <TabView panelContainerClassName="px-0">
1548
- <TabPanel
1549
- header="Basic Info"
1550
- className={(formik.touched.hasOwnProperty("name") && formik.errors.hasOwnProperty("name")) || (formik.touched.hasOwnProperty("displayName") && formik.errors.hasOwnProperty("displayName")) || (formik.touched.hasOwnProperty("displayName") && formik.errors.hasOwnProperty("ormType")) ? "tab-error-heading" : ""}
1551
- // rightIcon="pi pi-info-circle ml-2"
1552
- >
1553
- <div className="formgrid grid">
1554
- {currentFields.includes("displayName") && (
1555
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-2">
1556
- <label htmlFor="displayName" className="form-field-label">
1557
- Display Name
1558
- </label>
1559
- <InputText
1560
- type="text"
1561
- disabled={fieldMetaData?.id}
1562
- id="displayName"
1563
- name="displayName"
1564
- onChange={(e) => {
1565
- formik.setFieldValue("displayName", e.target.value);
1566
- const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
1567
- formik.setFieldValue("name", toCamelCase);
1568
- if (showColumnName) {
1569
- formik.setFieldValue("columnName", toSnakeCase);
1570
- }
1571
-
1572
- }}
1573
- value={formik.values.displayName}
1574
- className={classNames("", {
1575
- "p-invalid": isFormFieldValid(
1576
- formik,
1577
- "displayName"
1578
- ),
1579
- })}
1580
- />
1581
- {isFormFieldValid(formik, "displayName") && (
1582
- <Message
1583
- severity="error"
1584
- text={formik?.errors?.displayName?.toString()}
1585
- />
1586
- )}
1587
- </div>
1588
- )}
1589
-
1590
-
1591
- {currentFields.includes("name") && (
1592
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3 md:mt-0">
1593
- <label htmlFor="name" className="form-field-label">
1594
- Name
1595
- </label>
1596
- <InputText
1597
- disabled={fieldMetaData?.id}
1598
- type="text"
1599
- id="name"
1600
- name="name"
1601
- onChange={formik.handleChange}
1602
- value={formik.values.name}
1603
- className={classNames("", {
1604
- "p-invalid": isFormFieldValid(formik, "name"),
1605
- })}
1606
- />
1607
- {isFormFieldValid(formik, "name") && (
1608
- <Message
1609
- severity="error"
1610
- text={formik?.errors?.name?.toString()}
1611
- />
1612
- )}
1613
- </div>
1614
- )}
1615
- {currentFields.includes("description") && (
1616
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3 md:mt-4">
1617
- <label htmlFor="description" className="form-field-label">
1618
- Description
1619
- </label>
1620
- <InputTextarea
1621
- aria-describedby="Description of your field"
1622
- id="description"
1623
- name="description"
1624
- onChange={formik.handleChange}
1625
- value={formik.values.description}
1626
- rows={5}
1627
- cols={30}
1628
- className={classNames("", {
1629
- "p-invalid": isFormFieldValid(
1630
- formik,
1631
- "description"
1632
- ),
1633
- })}
1634
- />
1635
- {isFormFieldValid(formik, "description") && (
1636
- <Message
1637
- severity="error"
1638
- text={formik?.errors?.description?.toString()}
1639
- />
1640
- )}
1641
- </div>
1642
- )}
1643
-
1644
- {currentFields.includes("columnName") && (
1645
- <div className="field col-12 md:col-6 mt-4">
1646
- <div className="flex align-items-center gap-2">
1647
- <Checkbox onChange={e => {
1648
- setShowColumnName(e.checked);
1649
- if (e.checked === true) {
1650
- const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(formik.values.displayName);
1651
- if (pathname.includes('create')) {
1652
- formik.setFieldValue("columnName", toSnakeCase);
1653
- }
1654
- } else {
1655
- formik.setFieldValue("columnName", null);
1656
- }
1657
-
1658
- }} checked={showColumnName} disabled={fieldMetaData?.id}></Checkbox>
1659
- <label htmlFor="ingredient1" className="form-field-label">
1660
- Set Column Name
1661
- </label>
1662
- </div>
1663
- {showColumnName &&
1664
- <div className="field col-12 flex-flex-column gap-2 mt-4">
1665
- <label htmlFor="columnName" className="form-field-label">
1666
- Column Name
1667
- </label>
1668
- <InputText
1669
- disabled={fieldMetaData?.id}
1670
- type="text"
1671
- id="columnName"
1672
- name="columnName"
1673
- onChange={formik.handleChange}
1674
- value={formik.values.columnName}
1675
- className={classNames("", {
1676
- "p-invalid": isFormFieldValid(formik, "columnName"),
1677
- })}
1678
- />
1679
- {isFormFieldValid(formik, "columnName") && (
1680
- <Message
1681
- severity="error"
1682
- text={formik?.errors?.columnName?.toString()}
1683
- />
1684
- )}
1685
- </div>
1686
- }
1687
- </div>
1688
- )}
1689
-
1690
-
1691
- {/* {currentFields.includes("type") && (
1692
- <div className="md:col-6 sm:col-12">
1693
- <div className="field col-6 flex-flex-column gap-2">
1694
- <label htmlFor="type" className="form-field-label">
1695
- Type
1696
- </label>
1697
- <AutoComplete
1698
- value={selectedType}
1699
- suggestions={filteredTypes}
1700
- invalid={isFormFieldValid(formik, "type")}
1701
- completeMethod={searchTypes}
1702
- virtualScrollerOptions={{ itemSize: 38 }}
1703
- field="label"
1704
- className="small-input"
1705
- dropdown
1706
- onChange={(e) => {
1707
- formik.setFieldTouched('type', true); // Manually mark as touched
1708
- setSelectedType(e.value);
1709
- formik.setFieldValue("type", e.value.value);
1710
- if (e.value.value == "email") {
1711
- formik.setFieldValue("regexPattern", "/^[a-zA-Z0-9. _%+-]+@[a-zA-Z0-9. -]+\\. [a-zA-Z]{2,}$/");
1712
- } else {
1713
- formik.setFieldValue("regexPattern", "");
1714
- }
1715
- const _filteredOrmType: any = fieldDefaultMetaData.data.ormType.filter((t: any) => t.solidType == e.value.value);
1716
- setSelectedOrmType(_filteredOrmType[0].value)
1717
- formik.setFieldValue("ormType", _filteredOrmType[0].value);
1718
-
1719
- setCurrentFields(
1720
- fetchCurrentFields(e.value.value, fieldDefaultMetaData)
1721
- );
1722
- }}
1723
-
1724
-
1725
- />
1726
-
1727
- {isFormFieldValid(formik, "type") && (
1728
- <Message
1729
- severity="error"
1730
- text={formik?.errors?.type?.toString()}
1731
- />
1732
- )}
1733
- </div>
1734
- </div>
1735
- )} */}
1736
-
1737
- </div>
1738
-
1739
- </TabPanel>
1740
-
1741
- <TabPanel header="Advanced Config"
1742
-
1743
- // rightIcon="pi pi-cog ml-2"
1744
- >
1745
- {formik?.values?.type?.length > 0 && (
1746
- <div className="formgrid grid">
1747
- {currentFields.includes("length") && (
1748
- <div className="field col-6 flex-flex-column gap-2">
1749
- <label htmlFor="length" className="form-field-label">
1750
- Length
1751
- </label>
1752
- <InputNumber
1753
- // type="text"
1754
- id="length"
1755
- name="length"
1756
- onValueChange={formik.handleChange}
1757
- value={formik.values.length}
1758
- className={classNames("", {
1759
- "p-invalid": isFormFieldValid(
1760
- formik,
1761
- "length"
1762
- ),
1763
- })}
1764
- />
1765
- {isFormFieldValid(formik, "length") && (
1766
- <Message
1767
- severity="error"
1768
- text={formik?.errors?.length?.toString()}
1769
- />
1770
- )}
1771
- </div>
1772
- )}
1773
- {currentFields.includes("defaultValue") && (
1774
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
1775
- <label
1776
- htmlFor="defaultValue"
1777
- className="form-field-label"
1778
- >
1779
- Default Value
1780
- </label>
1781
- {/* <InputText
1782
- type="text"
1783
- id="defaultValue"
1784
- name="defaultValue"
1785
- onChange={formik.handleChange}
1786
- value={formik.values.defaultValue}
1787
- className={classNames("", {
1788
- "p-invalid": isFormFieldValid(
1789
- formik,
1790
- "defaultValue"
1791
- ),
1792
- })}
1793
- /> */}
1794
- {(selectedType.value === "shortText" || selectedType.value === "longText" || selectedType.value === "richText" || selectedType.value === "json" || selectedType.value === "password" || selectedType.value === "selectionStatic") &&
1795
- <InputText
1796
- type="text"
1797
- id="defaultValue"
1798
- name="defaultValue"
1799
- onChange={formik.handleChange}
1800
- value={formik.values.defaultValue}
1801
- className={classNames("", {
1802
- "p-invalid": isFormFieldValid(
1803
- formik,
1804
- "defaultValue"
1805
- ),
1806
- })}
1807
- />
1808
- }
1809
- {(selectedType.value === "float" || selectedType.value === "decimal") &&
1810
- <InputNumber
1811
- id="defaultValue"
1812
- name="defaultValue"
1813
- minFractionDigits={2}
1814
- maxFractionDigits={5}
1815
- value={formik.values.defaultValue}
1816
- onValueChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Ensure correct value change handling
1817
- className={classNames("", {
1818
- "p-invalid": isFormFieldValid(formik, "defaultValue"),
1819
- })}
1820
- />
1821
- }
1822
- {(selectedType.value === "int" || selectedType.value === "bigint") &&
1823
- <InputNumber
1824
- id="defaultValue"
1825
- name="defaultValue"
1826
- value={formik.values.defaultValue}
1827
- onValueChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Ensure correct value change handling
1828
- className={classNames("", {
1829
- "p-invalid": isFormFieldValid(formik, "defaultValue"),
1830
- })}
1831
- />
1832
- }
1833
- {selectedType.value === "boolean" &&
1834
- <SelectButton
1835
- value={formik.values.defaultValue ? formik.values.defaultValue : "false"}
1836
- onChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Custom handling for boolean input
1837
- options={booleanOptions}
1838
- className={classNames("", {
1839
- "p-invalid": isFormFieldValid(formik, "defaultValue"),
1840
- })}
1841
- />
1842
- }
1843
- {(selectedType.value === "date" || selectedType.value === "datetime" || selectedType.value === "time") &&
1844
- <Calendar
1845
- id="defaultValue"
1846
- name="defaultValue"
1847
- value={formik.values.defaultValue ? new Date(formik.values.defaultValue) : null}
1848
- onChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Use setFieldValue for proper handling
1849
- showTime={formik.values.type === "datetime"} // Show time picker for datetime
1850
- timeOnly={formik.values.type === "time"} // Time-only for time
1851
- dateFormat="yy-mm-dd"
1852
- hourFormat="24" // 24-hour format for time
1853
- className={classNames("", {
1854
- "p-invalid": isFormFieldValid(formik, "defaultValue"),
1855
- })}
1856
- />
1857
- }
1858
- {isFormFieldValid(formik, "defaultValue") && (
1859
- <Message
1860
- severity="error"
1861
- text={formik?.errors?.defaultValue?.toString()}
1862
- />
1863
- )}
1864
- </div>
1865
- )}
1866
-
1867
- {currentFields.includes("mediaTypes") && (
1868
- <div className="field col-12 md:col-6 flex-flex-column gap-2">
1869
- <label
1870
- htmlFor="mediaTypes"
1871
- className="form-field-label"
1872
- >
1873
- Media Type
1874
- </label>
1875
- {/* <MultipleSelectAutoCompleteField
1876
- key="mediaTypes"
1877
- formik={formik}
1878
- isFormFieldValid={isFormFieldValid}
1879
- fieldName="mediaTypes"
1880
- fieldNameId="mediaTypes"
1881
- labelKey="label"
1882
- valueKey="value"
1883
- searchData={searchMediaTypes}
1884
- existingData={formik.values.mediaTypes}
1885
- /> */}
1886
-
1887
- {/* {selectedType.value === "mediaSingle" &&
1888
- <SingleSelectAutoCompleteField
1889
- key="mediaTypes"
1890
- formik={formik}
1891
- isFormFieldValid={isFormFieldValid}
1892
- fieldName="mediaTypes"
1893
- fieldNameId="mediaTypes"
1894
- labelKey="label"
1895
- valueKey="value"
1896
- searchData={searchMediaTypes}
1897
- existingData={formik.values.mediaTypes}
1898
- />
1899
- } */}
1900
-
1901
- {isFormFieldValid(formik, "mediaTypes") && (
1902
- <Message
1903
- severity="error"
1904
- text={formik?.errors?.mediaTypes?.toString()}
1905
- />
1906
- )}
1907
- <MultiSelect value={formik.values.mediaTypes} onChange={(e) => formik.setFieldValue("mediaTypes", e.value)} options={mediaTypesOptions} optionLabel="label"
1908
- placeholder="Select Media Types" maxSelectedLabels={3} display="chip" className="" />
1909
-
1910
-
1911
- {/* <Dropdown
1912
- id="mediaTypes"
1913
- name="mediaTypes"
1914
- multiple
1915
- value={formik.values.mediaTypes}
1916
- options={fieldDefaultMetaData.data.mediaTypes}
1917
- onChange={(e) =>
1918
- formik.setFieldValue("mediaTypes", e.value)
1919
- }
1920
- placeholder="Select a Media Type"
1921
- className={classNames("", {
1922
- "p-invalid": isFormFieldValid(
1923
- formik,
1924
- "mediaTypes"
1925
- ),
1926
- })}
1927
- /> */}
1928
-
1929
-
1930
- </div>
1931
- )}
1932
- {currentFields.includes("mediaMaxSizeKb") && (
1933
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3 md:mt-0">
1934
- <label
1935
- htmlFor="mediaMaxSizeKb"
1936
- className="form-field-label"
1937
- >
1938
- Media Max Size (Mb)
1939
- </label>
1940
- <InputNumber
1941
- id="mediaMaxSizeKb"
1942
- name="mediaMaxSizeKb"
1943
- onValueChange={formik.handleChange}
1944
- value={formik.values.mediaMaxSizeKb}
1945
- className={classNames("", {
1946
- "p-invalid": isFormFieldValid(
1947
- formik,
1948
- "mediaMaxSizeKb"
1949
- ),
1950
- })}
1951
- />
1952
-
1953
- {isFormFieldValid(formik, "mediaMaxSizeKb") && (
1954
- <Message
1955
- severity="error"
1956
- text={formik?.errors?.mediaMaxSizeKb?.toString()}
1957
- />
1958
- )}
1959
- </div>
1960
- )}
1961
- {currentFields.includes("mediaStorageProviderId") && (
1962
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
1963
- <label
1964
- htmlFor="mediaStorageProviderId"
1965
- className="form-field-label"
1966
- >
1967
- Media Storage Provider
1968
- </label>
1969
-
1970
- <SingleSelectAutoCompleteField
1971
- key="mediaStorageProviderId"
1972
- formik={formik}
1973
- isFormFieldValid={isFormFieldValid}
1974
- relationField={true}
1975
- fieldName="mediaStorageProvider"
1976
- fieldNameId="mediaStorageProviderId"
1977
- labelKey="name"
1978
- valueKey="value"
1979
- searchData={searchMediaStorageProvIderId}
1980
- existingData={formik.values.mediaStorageProvider}
1981
- />
1982
-
1983
- {isFormFieldValid(
1984
- formik,
1985
- "mediaStorageProvider"
1986
- ) && (
1987
- <Message
1988
- severity="error"
1989
- text={formik?.errors?.mediaStorageProviderId?.toString()}
1990
- />
1991
- )}
1992
- </div>
1993
- )}
1994
-
1995
- {currentFields.includes("mediaEmbedded") && (
1996
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
1997
- <label
1998
- htmlFor="mediaEmbedded"
1999
- className="form-field-label"
2000
- >
2001
- Media Embedded
2002
- </label>
2003
- {/* <InputText
2004
- type="text"
2005
- id="mediaEmbedded"
2006
- name="mediaEmbedded"
2007
- onChange={formik.handleChange}
2008
- value={formik.values.mediaEmbedded}
2009
- className={classNames("", {
2010
- "p-invalid": isFormFieldValid(
2011
- formik,
2012
- "mediaEmbedded"
2013
- ),
2014
- })}
2015
- /> */}
2016
- <SelectButton
2017
- value={formik.values.mediaEmbedded}
2018
- // onChange={formik.handleChange}
2019
- onChange={(e) => {
2020
- formik.setFieldValue("mediaEmbedded", e.value);
2021
- }}
2022
- options={booleanOptions}
2023
- className={classNames("", {
2024
- "p-invalid": isFormFieldValid(
2025
- formik,
2026
- "mediaEmbedded"
2027
- ),
2028
- })}
2029
- />
2030
- {isFormFieldValid(formik, "mediaEmbedded") && (
2031
- <Message
2032
- severity="error"
2033
- text={formik?.errors?.mediaEmbedded?.toString()}
2034
- />
2035
- )}
2036
- </div>
2037
- )}
2038
- {currentFields.includes("relationType") && (
2039
- <div className="field col-12 flex-flex-column gap-2 mt-3">
2040
- {/* <label
2041
- htmlFor="relationType"
2042
- className="form-field-label"
2043
- >
2044
- Relation Type
2045
- </label>
2046
- <Dropdown
2047
- id="relationType"
2048
- name="relationType"
2049
- value={formik.values.relationType}
2050
- options={fieldDefaultMetaData.data.relationTypes}
2051
- onChange={(e) =>
2052
- formik.setFieldValue("relationType", e.value)
2053
- }
2054
- placeholder="Select a Data Source"
2055
- className={classNames("", {
2056
- "p-invalid": isFormFieldValid(
2057
- formik,
2058
- "relationType"
2059
- ),
2060
- })}
2061
- /> */}
2062
-
2063
- <label
2064
- htmlFor="relationType"
2065
- className="form-field-label "
2066
- >
2067
- Relation Type
2068
- </label>
2069
- <SelectButton
2070
- value={formik.values.relationType}
2071
- options={fieldDefaultMetaData.data.relationTypes}
2072
- onChange={(e) => {
2073
- formik.setFieldValue("relationType", e.value);
2074
- if (e.value === "one-to-many") {
2075
- formik.setFieldValue("relationCreateInverse", true);
2076
- }
2077
- }
2078
- }
2079
- className={classNames("", {
2080
- "p-invalid": isFormFieldValid(formik, "relationType"),
2081
- })}
2082
- optionLabel="label"
2083
- />
2084
-
2085
- {/* <div className="align-items-center">
2086
- <div className="flex mt-3">
2087
- {fieldDefaultMetaData?.data?.relationTypes.map((i: any) => (
2088
- <div key={i.value} className="mr-3">
2089
- <RadioButton
2090
- inputId="ingredient1"
2091
- name="pizza"
2092
- value={i.value}
2093
- onChange={(e) => formik.setFieldValue("relationType", e.value)}
2094
- checked={formik.values.relationType === i.value}
2095
- />
2096
- <label htmlFor="ingredient1" className="form-field-label ml-2">{i.value}</label>
2097
- </div>
2098
- ))}
2099
- </div>
2100
- </div> */}
2101
-
2102
- {isFormFieldValid(formik, "relationType") && (
2103
- <Message
2104
- severity="error"
2105
- text={formik?.errors?.relationType?.toString()}
2106
- />
2107
- )}
2108
- </div>
2109
- )}
2110
- {currentFields.includes("relationType") && (formik.values.relationType === "many-to-one" || formik.values.relationType === "one-to-many") && (
2111
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2112
- <label
2113
- htmlFor="relationCascade"
2114
- className="form-field-label"
2115
- >
2116
- Relation Cascade
2117
- </label>
2118
- <Dropdown
2119
- id="relationCascade"
2120
- name="relationCascade"
2121
- value={formik.values.relationCascade}
2122
- options={fieldDefaultMetaData.data.cascadeTypes}
2123
- onChange={(e) =>
2124
- formik.setFieldValue(
2125
- "relationCascade",
2126
- e.value
2127
- )
2128
- }
2129
- placeholder="Cascade"
2130
- className={classNames("w-full", {
2131
- "p-invalid": isFormFieldValid(
2132
- formik,
2133
- "relationCascade"
2134
- ),
2135
- })}
2136
- />
2137
- {isFormFieldValid(formik, "relationCascade") && (
2138
- <Message
2139
- severity="error"
2140
- text={formik?.errors?.relationCascade?.toString()}
2141
- />
2142
- )}
2143
- </div>
2144
- )}
2145
-
2146
- {currentFields.includes("relationModelModuleName") && (
2147
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2148
- <label
2149
- htmlFor="relationModelModuleName"
2150
- className="form-field-label"
2151
- >
2152
- Co-Module Name
2153
- </label>
2154
-
2155
- <SingleSelectAutoCompleteField
2156
- key="relationModelModuleName"
2157
- formik={formik}
2158
- isFormFieldValid={isFormFieldValid}
2159
- fieldName="relationModelModuleName"
2160
- fieldNameId="relationModelModuleName"
2161
- labelKey="name"
2162
- valueKey="name"
2163
- searchData={searchRelationModelModuleNames}
2164
- existingData={formik.values.relationModelModuleName}
2165
- additionalAction={(e: any) => {
2166
- formik.setFieldValue("relationCoModelSingularName", "");
2167
- formik.setFieldValue("relationCoModelColumnName", "");
2168
- formik.setFieldValue("relationJoinTableName", "");
2169
- }}
2170
- />
2171
-
2172
- {/* <AutoComplete
2173
- value={selectedRelationModelModuleName}
2174
- suggestions={filteredRelationModelModuleNames}
2175
- invalid={isFormFieldValid(
2176
- formik,
2177
- "relationModelModuleName"
2178
- )}
2179
- completeMethod={searchRelationModelModuleNames}
2180
- virtualScrollerOptions={{ itemSize: 38 }}
2181
- field="label"
2182
- className="small-input"
2183
- dropdown
2184
- onChange={(e) => {
2185
- setSelectedRelationModelModuleName(e.value);
2186
- formik.setFieldValue(
2187
- "relationModelModuleName",
2188
- e.value
2189
- );
2190
- }}
2191
- /> */}
2192
-
2193
- {isFormFieldValid(
2194
- formik,
2195
- "relationModelModuleName"
2196
- ) && (
2197
- <Message
2198
- severity="error"
2199
- text={formik?.errors?.relationModelModuleName?.toString()}
2200
- />
2201
- )}
2202
- </div>
2203
- )}
2204
-
2205
- {currentFields.includes(
2206
- "relationCoModelSingularName"
2207
- ) && (
2208
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2209
- <label
2210
- htmlFor="relationCoModelSingularName"
2211
- className="form-field-label"
2212
- >
2213
- Co-Model Name
2214
- </label>
2215
-
2216
-
2217
- <SingleSelectAutoCompleteField
2218
- key="relationCoModelSingularName"
2219
- formik={formik}
2220
- isFormFieldValid={isFormFieldValid}
2221
- fieldName="relationCoModelSingularName"
2222
- fieldNameId="relationCoModelSingularName"
2223
- labelKey="displayName"
2224
- valueKey="singularName"
2225
- searchData={searchrelationCoModelSingularNames}
2226
- existingData={formik.values.relationCoModelSingularName}
2227
- />
2228
-
2229
- {isFormFieldValid(
2230
- formik,
2231
- "relationCoModelSingularName"
2232
- ) && (
2233
- <Message
2234
- severity="error"
2235
- text={formik?.errors?.relationCoModelSingularName?.toString()}
2236
- />
2237
- )}
2238
- {formik.values.relationType === "one-to-many" &&
2239
- <p className="fieldSubTitle">This is the child model.</p>
2240
- }
2241
- {formik.values.relationType === "many-to-one" &&
2242
- <p className="fieldSubTitle">This is the parent model.</p>
2243
- }
2244
- </div>
2245
- )}
2246
- {currentFields.includes("relationCoModelColumnName") && (formik.values.relationType === "many-to-many" || formik.values.relationType === "many-to-one") && (
2247
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2248
- <label
2249
- htmlFor="relationCoModelColumnName"
2250
- className="form-field-label"
2251
- >
2252
- Relation Co-Model Column Name
2253
- </label>
2254
- <InputText
2255
- type="text"
2256
- id="relationCoModelColumnName"
2257
- name="relationCoModelColumnName"
2258
- onChange={formik.handleChange}
2259
- disabled={fieldMetaData?.id}
2260
- value={formik.values.relationCoModelColumnName}
2261
- className={classNames("", {
2262
- "p-invalid": isFormFieldValid(
2263
- formik,
2264
- "relationCoModelColumnName"
2265
- ),
2266
- })}
2267
- />
2268
- {isFormFieldValid(formik, "relationCoModelColumnName") && (
2269
- <Message
2270
- severity="error"
2271
- text={formik?.errors?.relationCoModelColumnName?.toString()}
2272
- />
2273
- )}
2274
- <p className="fieldSubTitle">Allows you to control the column name of the foreign key. Eg. when adding a country field to state model, by default foreign key column in the state table will be called country_id, use this field to create a foreign key with a different name. </p>
2275
-
2276
- </div>
2277
- )}
2278
- {askForUserKeyField && (
2279
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2280
- <label
2281
- htmlFor="userKey"
2282
- className="form-field-label"
2283
- >
2284
- Set User Key
2285
- </label>
2286
-
2287
- <SingleSelectAutoCompleteField
2288
- key="userKey"
2289
- formik={formik}
2290
- isFormFieldValid={isFormFieldValid}
2291
- fieldName="userKey"
2292
- fieldNameId="userKey"
2293
- labelKey="displayName"
2294
- valueKey="name"
2295
- searchData={searchUserKeyField}
2296
- existingData={formik.values.userKey}
2297
- />
2298
- <p className="fieldSubTitle">The co-model you have selected does not have a user key specified. Use the above dropdown to choose from one of the "unique" fields in this co-model to be set as its userkey. User keys are required in co-models being used in many-to-one or one-to-many relations as in SolidX when a many-to-one field is rendered it uses an autocomplete dropdown, and the user key value is what is displayed as the label in the dropdown.</p>
2299
- {isFormFieldValid(
2300
- formik,
2301
- "userKey"
2302
- ) && (
2303
- <Message
2304
- severity="error"
2305
- text={formik?.errors?.userKey?.toString()}
2306
- />
2307
- )}
2308
- </div>
2309
- )}
2310
-
2311
- {currentFields.includes(
2312
- "relationFieldFixedFilter"
2313
- ) && (
2314
- <div className="field col-12 flex-flex-column gap-2 mt-3">
2315
- <label
2316
- htmlFor="relationFieldFixedFilter"
2317
- className="form-field-label"
2318
- >
2319
- Relation Field Fixed Filter
2320
- </label>
2321
-
2322
- <InputTextarea
2323
- aria-describedby="Fixed Filter"
2324
- id="relationFieldFixedFilter"
2325
- name="relationFieldFixedFilter"
2326
- onChange={formik.handleChange}
2327
- value={formik.values.relationFieldFixedFilter}
2328
- rows={5}
2329
- cols={30}
2330
- className={classNames("", {
2331
- "p-invalid": isFormFieldValid(
2332
- formik,
2333
- "relationFieldFixedFilter"
2334
- ),
2335
- })}
2336
- />
2337
- {/*
2338
- <InputText
2339
- type="text"
2340
- id="relationFieldFixedFilter"
2341
- name="relationFieldFixedFilter"
2342
- onChange={formik.handleChange}
2343
- disabled={fieldMetaData?.id}
2344
- value={formik.values.relationFieldFixedFilter}
2345
- className={classNames("", {
2346
- "p-invalid": isFormFieldValid(
2347
- formik,
2348
- "relationFieldFixedFilter"
2349
- ),
2350
- })}
2351
- /> */}
2352
- {isFormFieldValid(formik, "relationFieldFixedFilter") && (
2353
- <Message
2354
- severity="error"
2355
- text={formik?.errors?.relationFieldFixedFilter?.toString()}
2356
- />
2357
- )}
2358
- <p className="fieldSubTitle">Many to one fields are rendered as autocomplete dropdown on the SolidX ui. Use the fixed filter to load a pre-filtered set of records from the co-model. Please note user input entered in the autocomplete is used to apply a dynamic filter.</p>
2359
-
2360
- </div>
2361
- )}
2362
-
2363
- {currentFields.includes("relationCreateInverse") && (
2364
- <div className="field col-12 md:col-6 flex flex-column gap-2 mt-3">
2365
- <label htmlFor="relationCreateInverse" className="form-field-label">
2366
- Relation Create Inverse
2367
- </label>
2368
- <div className="flex align-items-center">
2369
- <Checkbox
2370
- inputId="relationCreateInverse"
2371
- name="relationCreateInverse"
2372
- checked={formik.values.relationCreateInverse}
2373
- disabled={formik.values.relationType === "one-to-many" ? true : false}
2374
- onChange={(e) => formik.setFieldValue("relationCreateInverse", e.checked)}
2375
- />
2376
- <label htmlFor="relationCreateInverse" className="ml-2">Create Inverse</label>
2377
- </div>
2378
- {isFormFieldValid(formik, "relationCreateInverse") && (
2379
- <Message severity="error" text={formik?.errors?.relationCreateInverse?.toString()} />
2380
- )}
2381
- </div>
2382
- )}
2383
-
2384
- {currentFields.includes("relationCoModelFieldName") && formik.values.relationCreateInverse && !formik.values.relationCoModelSingularName && (
2385
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2386
- <Message text="Please select Co-model" />
2387
- </div>
2388
- )}
2389
- {currentFields.includes("relationCoModelFieldName") && formik.values.relationCreateInverse && formik.values.relationCoModelSingularName && (
2390
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2391
- <label
2392
- htmlFor="relationCoModelFieldName"
2393
- className="form-field-label"
2394
- >
2395
- Field Name In {formik.values.relationCoModelSingularName} Model
2396
- </label>
2397
- <InputText
2398
- type="text"
2399
- id="relationCoModelFieldName"
2400
- name="relationCoModelFieldName"
2401
- onChange={formik.handleChange}
2402
- disabled={fieldMetaData?.id}
2403
- value={formik.values.relationCoModelFieldName}
2404
- className={classNames("", {
2405
- "p-invalid": isFormFieldValid(
2406
- formik,
2407
- "relationCoModelFieldName"
2408
- ),
2409
- })}
2410
- />
2411
- {formik.values.relationType === "one-to-many" &&
2412
- <p className="fieldSubTitle">This is a field that is created in the child model. In this case a <span style={{ fontWeight: "700" }}>{formik.values.relationCoModelFieldName ?? formik.values.relationCoModelSingularName}</span> field will be created in the {formik.values.relationCoModelSingularName} when setting create inverse true.</p>
2413
- }
2414
- {formik.values.relationType === "many-to-one" &&
2415
- <p className="fieldSubTitle">This is a field that is created in the parent model. In this case a <span style={{ fontWeight: "700" }}>{formik.values.relationCoModelFieldName ?? `${formik.values.relationCoModelSingularName}s`}</span> field will be created in the {formik.values.relationCoModelSingularName} when setting create inverse true.</p>
2416
- }
2417
- {formik.values.relationType === "many-to-many" &&
2418
- <p className="fieldSubTitle">In this case a {formik.values.relationCoModelFieldName} field will be created in the <span style={{ fontWeight: "700" }}>{formik.values.relationCoModelSingularName ?? '{{}}'}</span> when setting create inverse true.</p>
2419
- }
2420
- {isFormFieldValid(formik, "relationCoModelFieldName") && (
2421
- <Message
2422
- severity="error"
2423
- text={formik?.errors?.relationCoModelFieldName?.toString()}
2424
- />
2425
- )}
2426
- </div>
2427
- )}
2428
-
2429
- {/* {currentFields.includes("joinColumnName") && formik.values.relationType === "many-to-many" && (
2430
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2431
- <label
2432
- htmlFor="joinColumnName"
2433
- className="form-field-label"
2434
- >
2435
- Join Column Name
2436
- </label>
2437
- <InputText
2438
- type="text"
2439
- id="joinColumnName"
2440
- name="joinColumnName"
2441
- onChange={formik.handleChange}
2442
- value={formik.values.joinColumnName}
2443
- className={classNames("", {
2444
- "p-invalid": isFormFieldValid(
2445
- formik,
2446
- "joinColumnName"
2447
- ),
2448
- })}
2449
- />
2450
- {isFormFieldValid(formik, "joinColumnName") && (
2451
- <Message
2452
- severity="error"
2453
- text={formik?.errors?.joinColumnName?.toString()}
2454
- />
2455
- )}
2456
-
2457
- </div>
2458
- )} */}
2459
-
2460
-
2461
-
2462
- {currentFields.includes("relationJoinTableName") && formik.values.relationType === "many-to-many" && (
2463
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2464
- <label
2465
- htmlFor="relationJoinTableName"
2466
- className="form-field-label"
2467
- >
2468
- Relation Join Table Name
2469
- </label>
2470
- <InputText
2471
- type="text"
2472
- id="relationJoinTableName"
2473
- name="relationJoinTableName"
2474
- onChange={formik.handleChange}
2475
- disabled={fieldMetaData?.id}
2476
- value={formik.values.relationJoinTableName}
2477
- className={classNames("", {
2478
- "p-invalid": isFormFieldValid(
2479
- formik,
2480
- "relationJoinTableName"
2481
- ),
2482
- })}
2483
- />
2484
- {isFormFieldValid(formik, "relationJoinTableName") && (
2485
- <Message
2486
- severity="error"
2487
- text={formik?.errors?.relationJoinTableName?.toString()}
2488
- />
2489
- )}
2490
-
2491
- </div>
2492
- )}
2493
-
2494
- {currentFields.includes("selectionDynamicProvider") && (
2495
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2496
- <label
2497
- htmlFor="selectionDynamicProvider"
2498
- className="form-field-label"
2499
- >
2500
- Selection Dynamic Provider
2501
- </label>
2502
-
2503
- <SingleSelectAutoCompleteField
2504
- key="selectionDynamicProvider"
2505
- formik={formik}
2506
- isFormFieldValid={isFormFieldValid}
2507
- // relationField={false}
2508
- fieldName="selectionDynamicProvider"
2509
- fieldNameId={null}
2510
- labelKey="label"
2511
- valueKey="value"
2512
- searchData={searchSelectionDynamicProvider}
2513
- existingData={formik.values.selectionDynamicProvider}
2514
- additionalAction={(e: any) => setMarkdownText(e.target.value.help)}
2515
- />
2516
-
2517
-
2518
- {/* <AutoComplete
2519
- value={selectionDynamicProvider}
2520
- suggestions={filteredSelectionDynamicProvider}
2521
- invalid={isFormFieldValid(
2522
- formik,
2523
- "selectionDynamicProvider"
2524
- )}
2525
- completeMethod={searchSelectionDynamicProvider}
2526
- virtualScrollerOptions={{ itemSize: 38 }}
2527
- field="label"
2528
- className="small-input"
2529
- dropdown
2530
- onChange={(e) => {
2531
- setSelectionDynamicProvider(e.value);
2532
- formik.setFieldValue(
2533
- "selectionDynamicProvider",
2534
- e.value.value
2535
- );
2536
- }}
2537
- /> */}
2538
-
2539
- {isFormFieldValid(
2540
- formik,
2541
- "selectionDynamicProvider"
2542
- ) && (
2543
- <Message
2544
- severity="error"
2545
- text={formik?.errors?.selectionDynamicProvider?.toString()}
2546
- />
2547
- )}
2548
- </div>
2549
- )}
2550
- {currentFields.includes("selectionValueType") && (
2551
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2552
- <label
2553
- htmlFor="selectionValueType"
2554
- className="form-field-label"
2555
- >
2556
- Select Value Type
2557
- </label>
2558
- <Dropdown
2559
- id="selectionValueType"
2560
- name="selectionValueType"
2561
- value={formik.values.selectionValueType}
2562
- options={selctionValueTypes}
2563
- onChange={(e) =>
2564
- formik.setFieldValue(
2565
- "selectionValueType",
2566
- e.value
2567
- )
2568
- }
2569
- placeholder="Select Value Type"
2570
- className={classNames("", {
2571
- "p-invalid": isFormFieldValid(
2572
- formik,
2573
- "selectionValueType"
2574
- ),
2575
- })}
2576
- />
2577
- {isFormFieldValid(
2578
- formik,
2579
- "selectionValueType"
2580
- ) && (
2581
- <Message
2582
- severity="error"
2583
- text={formik?.errors?.selectionValueType?.toString()}
2584
- />
2585
- )}
2586
- </div>
2587
- )}
2588
-
2589
- {currentFields.includes("selectionStaticValues") && (
2590
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2591
- <label
2592
- htmlFor="selectionStaticValues"
2593
- className="form-field-label"
2594
- >
2595
- Selection Static Values
2596
- </label>
2597
- {/* <InputTextarea
2598
- value={selectionStaticValues}
2599
- placeholder="male:Male"
2600
- onChange={(e) => {
2601
- const data = e.target.value
2602
- .split("\n")
2603
- .filter((line) => line.trim() !== "");
2604
-
2605
- setSelectionStaticValues(e.target.value);
2606
- formik.setFieldValue(
2607
- "selectionStaticValues",
2608
- data
2609
- );
2610
- }}
2611
- rows={5}
2612
- cols={30}
2613
- /> */}
2614
- {formik.values.selectionStaticValues.map((enumValue: string, index: number) => (
2615
- <SelectionStaticValues
2616
- key={index}
2617
- enumValue={enumValue}
2618
- onUpdate={(updatedString: any) => updateEnumValues(index, updatedString)}
2619
- onDelete={() => deleteEnumValue(index)}
2620
- onAdd={addEnumValue}
2621
- />
2622
- ))
2623
- }
2624
- {isFormFieldValid(
2625
- formik,
2626
- "selectionStaticValues"
2627
- ) && (
2628
- <Message
2629
- severity="error"
2630
- text={formik?.errors?.selectionStaticValues?.toString()}
2631
- />
2632
- )}
2633
- </div>
2634
- )}
2635
-
2636
- {currentFields.includes("computedFieldValueType") && (
2637
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2638
- <label
2639
- htmlFor="computedFieldValueType"
2640
- className="form-field-label"
2641
- >
2642
- Computed Field Value Type
2643
- </label>
2644
- <AutoComplete
2645
-
2646
- value={selectedComputedFieldValueType}
2647
- invalid={isFormFieldValid(formik, "computedFieldValueType")}
2648
- suggestions={filteredComputedFieldValueTypes}
2649
- completeMethod={searchComputedFieldValueType}
2650
- // virtualScrollerOptions={{ itemSize: 38 }}
2651
- virtualScrollerOptions={getVirtualScrollerOptions({
2652
- itemsLength: filteredComputedFieldValueTypes.length,
2653
- })}
2654
- field="label"
2655
- dropdown
2656
- className="solid-standard-autocomplete"
2657
- onChange={(e) => {
2658
- setSelectedComputedFieldValueType(e.value);
2659
- formik.setFieldValue("computedFieldValueType", e.value.value);
2660
- }}
2661
- />
2662
-
2663
- {/* <Dropdown
2664
- id="mediaTypes"
2665
- name="mediaTypes"
2666
- value={formik.values.mediaTypes}
2667
- options={fieldDefaultMetaData.data.mediaTypes}
2668
- onChange={(e) =>
2669
- formik.setFieldValue("mediaTypes", e.value)
2670
- }
2671
- placeholder="Select a Data Source"
2672
- className={classNames("", {
2673
- "p-invalid": isFormFieldValid(
2674
- formik,
2675
- "mediaTypes"
2676
- ),
2677
- })}
2678
- /> */}
2679
- {isFormFieldValid(formik, "computedFieldValueType") && (
2680
- <Message
2681
- severity="error"
2682
- text={formik?.errors?.computedFieldValueType?.toString()}
2683
- />
2684
- )}
2685
- </div>
2686
- )}
2687
-
2688
- {currentFields.includes(
2689
- "computedFieldValueProvider"
2690
- ) && (
2691
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2692
- <label
2693
- htmlFor="computedFieldValueProvider"
2694
- className="form-field-label"
2695
- >
2696
- Computed Field Provider
2697
- </label>
2698
- <SingleSelectAutoCompleteField
2699
- key="computedFieldValueProvider"
2700
- formik={formik}
2701
- isFormFieldValid={isFormFieldValid}
2702
- // relationField={false}
2703
- fieldName="computedFieldValueProvider"
2704
- fieldNameId={null}
2705
- labelKey="label"
2706
- valueKey="value"
2707
- searchData={searchComputedProvider}
2708
- existingData={formik.values.computedFieldValueProvider}
2709
- additionalAction={(e: any) => setMarkdownText(e.target.value.help)}
2710
-
2711
- />
2712
- {isFormFieldValid(
2713
- formik,
2714
- "computedFieldValueProvider"
2715
- ) && (
2716
- <Message
2717
- severity="error"
2718
- text={formik?.errors?.computedFieldValueProvider?.toString()}
2719
- />
2720
- )}
2721
- </div>
2722
- )}
2723
- {currentFields.includes(
2724
- "computedFieldTriggerConfig"
2725
- ) && (
2726
- <div className="field col-12 flex-flex-column gap-2 mt-3">
2727
- {fieldMetaData?.computedFieldTriggerConfig === null
2728
- &&
2729
- <div className="mb-3">
2730
- <Message severity="error" text={`You seem to be using an old configuration of ComputedFieldProvider. Please change your current computed field provider i.e ${fieldMetaData?.computedFieldValueProvider} to implement IEntityComputedFieldProvider before continuing.`} />
2731
- </div>
2732
- }
2733
- <div className="flex align-items-center gap-2">
2734
- <label
2735
- htmlFor="computedFieldTriggerConfig"
2736
- className="form-field-label"
2737
- >
2738
- Computed Field Trigger Config
2739
- </label>
2740
- <div>
2741
- <Button
2742
- icon="pi pi-plus"
2743
- size="small"
2744
- onClick={handleAdd}
2745
- type="button"
2746
- className="ml-2"
2747
- />
2748
- </div>
2749
- </div>
2750
- {
2751
- formik.values.computedFieldTriggerConfig.map((row: any, index: number) => (
2752
- <SelectComputedFieldTriggerValues
2753
- key={index}
2754
- index={index}
2755
- row={row}
2756
- onChange={handleChange}
2757
- onDelete={handleDelete}
2758
- isLastRow={index === formik.values.computedFieldTriggerConfig.length - 1}
2759
- disableDelete={formik.values.computedFieldTriggerConfig.length === 1}
2760
- formik={formik}
2761
- isFormFieldValid={isFormFieldValid}
2762
- searchModuleName={searchModuleName}
2763
- searchModelName={computedFieldSearchHandlers[index]}
2764
- modelMetaData={modelMetaData}
2765
- errors={formik.errors.computedFieldTriggerConfig?.[index]}
2766
- />
2767
- ))}
2768
- {typeof formik.errors.computedFieldTriggerConfig === 'string' && (
2769
- <Message
2770
- severity="error"
2771
- text={formik.errors.computedFieldTriggerConfig}
2772
- />
2773
- )}
2774
- </div>
2775
- )}
2776
- {/* {currentFields.includes("externalIdProvider") && (
2777
- <div className="md:col-6 sm:col-12">
2778
- <div className="field col-6 flex-flex-column gap-2">
2779
- <label
2780
- htmlFor="externalIdProvider"
2781
- className="form-field-label"
2782
- >
2783
- External Id Provider
2784
- </label>
2785
- <SingleSelectAutoCompleteField
2786
- key="externalIdProvider"
2787
- formik={formik}
2788
- isFormFieldValid={isFormFieldValid}
2789
- // relationField={false}
2790
- fieldName="externalIdProvider"
2791
- fieldNameId={null}
2792
- labelKey="label"
2793
- valueKey="value"
2794
- searchData={searchExternalIdProvider}
2795
- existingData={formik.values.externalIdProvider}
2796
- additionalAction={(e: any) => setMarkdownText(e.target.value.help)}
2797
- />
2798
-
2799
-
2800
- {isFormFieldValid(
2801
- formik,
2802
- "externalIdProvider"
2803
- ) && (
2804
- <Message
2805
- severity="error"
2806
- text={formik?.errors?.externalIdProvider?.toString()}
2807
- />
2808
- )}
2809
- </div>
2810
- </div>
2811
- )} */}
2812
-
2813
- {currentFields.includes("selectionDynamicProviderCtxt") && (
2814
- // {/* {markdownText &&
2815
- // <div className="md:col-12 sm:col-12">
2816
- // <div className="field col-6 flex-flex-column gap-2">
2817
- // <label htmlFor="name" className="form-field-label">
2818
- // Markdown
2819
- // </label>
2820
- // <MarkdownViewer data={markdownText}></MarkdownViewer>
2821
- // </div>
2822
- // </div>
2823
- // } */}
2824
-
2825
- <div className="field col-12 flex-flex-column gap-2 mt-4">
2826
- <label htmlFor="selectionDynamicProviderCtxt" className="form-field-label">
2827
- Selection Dynamic Provider Context
2828
- </label>
2829
- <CodeEditor
2830
- formik={formik}
2831
- field="selectionDynamicProviderCtxt" >
2832
- </CodeEditor>
2833
- <div className=" form-field-label mt-4">{markdownText}</div>
2834
-
2835
- {isFormFieldValid(
2836
- formik,
2837
- "selectionDynamicProviderCtxt"
2838
- ) && (
2839
- <Message
2840
- severity="error"
2841
- text={formik?.errors?.selectionDynamicProviderCtxt?.toString()}
2842
- />
2843
- )}
2844
- </div>
2845
- // {/* {currentFields.includes("markdown") && ( */}
2846
-
2847
- )}
2848
-
2849
- {currentFields.includes("computedFieldValueProviderCtxt") && (
2850
- <div className="field col-12 flex-flex-column gap-2 mt-4">
2851
- <label htmlFor="computedFieldValueProviderCtxt" className="form-field-label">
2852
- Computed Field Value Provider Context
2853
- </label>
2854
- <CodeEditor
2855
- formik={formik}
2856
- field="computedFieldValueProviderCtxt" >
2857
- </CodeEditor>
2858
- <div className="form-field-label mt-4">{markdownText}</div>
2859
-
2860
- {isFormFieldValid(
2861
- formik,
2862
- "computedFieldValueProviderCtxt"
2863
- ) && (
2864
- <Message
2865
- severity="error"
2866
- text={formik?.errors?.computedFieldValueProviderCtxt?.toString()}
2867
- />
2868
- )}
2869
- </div>
2870
- )}
2871
-
2872
- {/* {currentFields.includes("externalIdProviderCtxt") && (
2873
- <div className="md:col-12 sm:col-12">
2874
-
2875
- <div className="formgrid grid">
2876
- {markdownText &&
2877
- <div className="md:col-12 sm:col-12">
2878
- <div className="field col-6 flex-flex-column gap-2">
2879
- <label htmlFor="name" className="form-field-label">
2880
- Markdown
2881
- </label>
2882
- <MarkdownViewer data={markdownText}></MarkdownViewer>
2883
- </div>
2884
- </div>
2885
- }
2886
- <div className="md:col-12 sm:col-12">
2887
- <div className="field col-6 flex-flex-column gap-2">
2888
- <label htmlFor="name" className="form-field-label">
2889
- External Id Provider Context
2890
- </label>
2891
- <CodeEditor
2892
- formik={formik}
2893
- field="externalIdProviderCtxt" >
2894
- </CodeEditor>
2895
- {isFormFieldValid(
2896
- formik,
2897
- "externalIdProviderCtxt"
2898
- ) && (
2899
- <Message
2900
- severity="error"
2901
- text={formik?.errors?.externalIdProviderCtxt?.toString()}
2902
- />
2903
- )}
2904
- </div>
2905
- </div>
2906
-
2907
- </div>
2908
- </div>
2909
- )} */}
2910
-
2911
- </div>
2912
- )}
2913
- {(currentFields.includes("regexPattern") || currentFields.includes("min") || currentFields.includes("max") || currentFields.includes("ormType")) && ormTypeOptions && selectedType.value !== 'relation' &&
2914
- <>
2915
- <p className="form-wrapper-heading text-base mt-3">Validations</p>
2916
- <div className="formgrid grid">
2917
- {(currentFields.includes("regexPattern") && selectedType.value === "password") &&
2918
- <>
2919
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2920
- <label
2921
- htmlFor="regexPattern"
2922
- className="form-field-label"
2923
- >
2924
- Password Policy
2925
- </label>
2926
- <Dropdown value={selectedPasswordPolicy} onChange={(e: DropdownChangeEvent) => {
2927
- setSelectedPasswordPolicy(e.value)
2928
- if (e.value !== "custom") {
2929
- formik.setFieldValue('regexPattern', e.value)
2930
- }
2931
- }} options={passwordPolicyOptions} optionLabel="label"
2932
- placeholder="Select a Password Policy"
2933
- // className="w-full md:w-14rem"
2934
- className=""
2935
- panelClassName="password-policy-dropdown-panel"
2936
- checkmark={true} highlightOnSelect={false} />
2937
-
2938
- </div>
2939
- </>
2940
- }
2941
- {currentFields.includes("regexPattern") && (
2942
- <>
2943
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
2944
- <label
2945
- htmlFor="regexPattern"
2946
- className="form-field-label"
2947
- >
2948
- Regex Pattern
2949
- </label>
2950
- <InputText
2951
- type="text"
2952
- id="regexPattern"
2953
- name="regexPattern"
2954
- onChange={formik.handleChange}
2955
- value={formik.values.regexPattern}
2956
- className={classNames("", {
2957
- "p-invalid": isFormFieldValid(
2958
- formik,
2959
- "regexPattern"
2960
- ),
2961
- })}
2962
- />
2963
- {isFormFieldValid(formik, "regexPattern") && (
2964
- <Message
2965
- severity="error"
2966
- text={formik?.errors?.regexPattern?.toString()}
2967
- />
2968
- )}
2969
- </div>
2970
- {currentFields.includes("regexPattern") && (
2971
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3 mb-3 md:mb-3">
2972
- <label
2973
- htmlFor="regexPatternNotMatchingErrorMsg"
2974
- className="form-field-label"
2975
- >
2976
- Regex Pattern Not Matching Error Msg
2977
- </label>
2978
- <InputText
2979
- type="text"
2980
- id="regexPatternNotMatchingErrorMsg"
2981
- name="regexPatternNotMatchingErrorMsg"
2982
- onChange={formik.handleChange}
2983
- value={formik.values.regexPatternNotMatchingErrorMsg}
2984
- className={classNames("", {
2985
- "p-invalid": isFormFieldValid(
2986
- formik,
2987
- "regexPatternNotMatchingErrorMsg"
2988
- ),
2989
- })}
2990
- />
2991
- {isFormFieldValid(formik, "regexPatternNotMatchingErrorMsg") && (
2992
- <Message
2993
- severity="error"
2994
- text={formik?.errors?.regexPatternNotMatchingErrorMsg?.toString()}
2995
- />
2996
- )}
2997
- </div>
2998
- )}
2999
- </>
3000
-
3001
- )}
3002
- {(currentFields.includes("min") || currentFields.includes("max")) &&
3003
- <>
3004
- {currentFields.includes("min") && (
3005
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-2 md:mt-3">
3006
- <label htmlFor="min" className="form-field-label">
3007
- Min {(selectedType.value !== "int" && selectedType.value !== "decimal") && `(Characters Allowed)`}
3008
-
3009
- </label>
3010
- {/* <InputText
3011
- type="text"
3012
- id="min"
3013
- name="min"
3014
- onChange={formik.handleChange}
3015
- value={formik.values.min}
3016
- className={classNames("", {
3017
- "p-invalid": isFormFieldValid(formik, "min"),
3018
- })}
3019
- /> */}
3020
- {/* <RenderMinValueInput></RenderMinValueInput> */}
3021
- {(selectedType.value === "int" ||
3022
- selectedType.value === "decimal" ||
3023
- selectedType.value === "shortText" ||
3024
- selectedType.value === "decimal" ||
3025
- selectedType.value === "longText" ||
3026
- selectedType.value === "richText" ||
3027
- selectedType.value === "password" ||
3028
- selectedType.value === "json") &&
3029
- <InputNumber
3030
- id="min"
3031
- name="min"
3032
- onValueChange={formik.handleChange}
3033
- value={formik.values.min}
3034
- className={classNames("", {
3035
- "p-invalid": isFormFieldValid(
3036
- formik,
3037
- "min"
3038
- ),
3039
- })}
3040
- disabled={fieldMetaData?.id}
3041
- />
3042
- }
3043
-
3044
- {isFormFieldValid(formik, "min") && (
3045
- <Message
3046
- severity="error"
3047
- text={formik?.errors?.min?.toString()}
3048
- />
3049
- )}
3050
- </div>
3051
- )}
3052
- {currentFields.includes("max") && (
3053
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
3054
- <label htmlFor="max" className="form-field-label">
3055
- Max {(selectedType.value !== "int" &&
3056
- selectedType.value !== "decimal") && `(Characters allowed)`}
3057
- </label>
3058
- {/* <InputText
3059
- type="text"
3060
- id="max"
3061
- name="max"
3062
- onChange={formik.handleChange}
3063
- value={formik.values.max}
3064
- className={classNames("", {
3065
- "p-invalid": isFormFieldValid(formik, "max"),
3066
- })}
3067
- /> */}
3068
- {(selectedType.value === "int" ||
3069
- selectedType.value === "decimal" ||
3070
- selectedType.value === "shortText" ||
3071
- selectedType.value === "decimal" ||
3072
- selectedType.value === "longText" ||
3073
- selectedType.value === "richText" ||
3074
- selectedType.value === "password" ||
3075
- selectedType.value === "json") &&
3076
- <InputNumber
3077
- id="max"
3078
- name="max"
3079
- onValueChange={formik.handleChange}
3080
- value={formik.values.max}
3081
- className={classNames("", {
3082
- "p-invalid": isFormFieldValid(
3083
- formik,
3084
- "max"
3085
- ),
3086
- })}
3087
- disabled={fieldMetaData?.id}
3088
- />
3089
- }
3090
-
3091
- {isFormFieldValid(formik, "max") && (
3092
- <Message
3093
- severity="error"
3094
- text={formik?.errors?.max?.toString()}
3095
- />
3096
- )}
3097
- </div>
3098
- )}
3099
- </>
3100
- }
3101
- {currentFields.includes("ormType") && (
3102
- <div className="col-12">
3103
- {ormTypeOptions && ormTypeOptions.length > 1 &&
3104
- <div className="field col-12 md:col-6 flex-flex-column gap-2 mt-3">
3105
- <label htmlFor="ormType" className="form-field-label">
3106
- Type
3107
- </label>
3108
- {/* <SingleSelectAutoCompleteField
3109
- key="ormType"
3110
- formik={formik}
3111
- isFormFieldValid={isFormFieldValid}
3112
- fieldName="ormType"
3113
- fieldNameId="ormType"
3114
- labelKey="label"
3115
- valueKey="value"
3116
- searchData={searchOrmTypes}
3117
- existingData={formik.values.ormType}
3118
- /> */}
3119
-
3120
- <div className="ormTypeflex">
3121
- {ormTypeOptions && ormTypeOptions.map((ormType: any) => {
3122
- return (
3123
- <>
3124
- <div key={ormType.key} className="mr-3 align-items-center">
3125
- <RadioButton inputId={ormType.label} name="ormType" value={ormType.label} onChange={(e) => {
3126
- formik.setFieldValue("ormType", e.value);
3127
- setSelectedOrmType(e.value)
3128
- }} checked={selectedOrmType === ormType.label} />
3129
- <label htmlFor={ormType.label} className="ml-2">{ormType.label}<br></br>
3130
- <span className="ml-4 fieldSubTitle">{ormType.description}</span>
3131
- </label>
3132
- </div>
3133
-
3134
- </>
3135
- );
3136
- })}
3137
-
3138
- </div>
3139
-
3140
- {isFormFieldValid(formik, "ormType") && (
3141
- <Message
3142
- severity="error"
3143
- text={formik?.errors?.ormType?.toString()}
3144
- />
3145
- )}
3146
- </div>
3147
- }
3148
-
3149
- </div>
3150
- )}
3151
- </div>
3152
- </>
3153
- }
3154
-
3155
- {(formik.values.relationType !== "many-to-many" && formik.values.relationType !== "one-to-many") && <p className="form-wrapper-heading text-base mt-3">Settings</p>}
3156
- <div className="formgrid grid mt-3 md:mt-0">
3157
- {currentFields.includes("required") && (formik.values.relationType !== "many-to-many" && formik.values.relationType !== "one-to-many") && (
3158
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3159
- <div className="flex align-items-center">
3160
- <Checkbox
3161
- name="required"
3162
- onChange={(e) => {
3163
- if (!formik.values.isPrimaryKey && !formik.values.unique) {
3164
- formik.setFieldValue("required", e.checked);
3165
- }
3166
- }}
3167
- checked={formik.values.required}
3168
- disabled={formik.values.isPrimaryKey || formik.values.unique}
3169
- ></Checkbox>
3170
- <label htmlFor="ingredient1" className="form-field-label ml-2">
3171
- Required {formik.values.isPrimaryKey && "(Auto-enabled for Primary Key)"}
3172
- {!formik.values.isPrimaryKey && formik.values.unique && "(Auto-enabled for Unique)"}
3173
- </label>
3174
- </div>
3175
- <p className="text-xs mt-2">You won't be able to create an entry if this field is empty</p>
3176
-
3177
- {isFormFieldValid(formik, "required") && (
3178
- <Message
3179
- severity="error"
3180
- text={formik?.errors?.required?.toString()}
3181
- />
3182
- )}
3183
- </div>
3184
- )}
3185
- {currentFields.includes("unique") && selectedType.value !== 'relation' && (
3186
- <div className="field col-6 flex-flex-column gap-2">
3187
- <div className="flex align-items-center">
3188
- <Checkbox
3189
- name="unique"
3190
- onChange={(e) => {
3191
- // Prevent unchecking if isPrimaryKey is true
3192
- if (!formik.values.isPrimaryKey) {
3193
- formik.setFieldValue("unique", e.checked);
3194
- formik.setFieldValue("isUserKey", false);
3195
- // Auto-enable required when unique is checked
3196
- if (e.checked) {
3197
- formik.setFieldValue("required", true);
3198
- }else{
3199
- formik.setFieldValue("required", false);
3200
- }
3201
- }
3202
- }}
3203
- checked={formik.values.unique}
3204
- disabled={formik.values.isPrimaryKey}
3205
- ></Checkbox>
3206
- <label htmlFor="ingredient1" className="form-field-label ml-2">
3207
- Unique {formik.values.isPrimaryKey && "(Auto-enabled for Primary Key)"}
3208
- </label>
3209
- </div>
3210
- <p className="text-xs mt-2">You won't be able to create an entry if there is an existing entry with identical content</p>
3211
-
3212
- {isFormFieldValid(formik, "unique") && (
3213
- <Message
3214
- severity="error"
3215
- text={formik?.errors?.unique?.toString()}
3216
- />
3217
- )}
3218
- </div>
3219
- )}
3220
- {currentFields.includes("index") && selectedType.value !== 'relation' && (
3221
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3222
- <div className="flex align-items-center">
3223
- <Checkbox
3224
- name="index"
3225
- onChange={(e) => {
3226
- formik.setFieldValue("index", e.checked);
3227
- }}
3228
- checked={formik.values.index}
3229
- ></Checkbox>
3230
- <label htmlFor="ingredient1" className="form-field-label ml-2">
3231
- Index
3232
- </label>
3233
- </div>
3234
- {isFormFieldValid(formik, "index") && (
3235
- <Message
3236
- severity="error"
3237
- text={formik?.errors?.index?.toString()}
3238
- />
3239
- )}
3240
- </div>
3241
- )}
3242
- {currentFields.includes("private") && selectedType.value !== 'relation' && (
3243
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3244
- <div className="flex align-items-center">
3245
- <Checkbox
3246
- name="private"
3247
- onChange={(e) => {
3248
- formik.setFieldValue("private", e.checked);
3249
- }}
3250
- checked={formik.values.private}
3251
- ></Checkbox>
3252
- <label htmlFor="ingredient1" className="form-field-label ml-2">
3253
- Private
3254
- </label>
3255
- </div>
3256
- <p className="text-xs mt-2">This field will not show up in the API response</p>
3257
-
3258
-
3259
- {isFormFieldValid(formik, "private") && (
3260
- <Message
3261
- severity="error"
3262
- text={formik?.errors?.private?.toString()}
3263
- />
3264
- )}
3265
- </div>
3266
- )}
3267
- {currentFields.includes("encrypt") && selectedType.value !== 'relation' && (
3268
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3269
- <div className="flex align-items-center gap-2">
3270
- <Checkbox
3271
- name="encrypt"
3272
- onChange={(e) => {
3273
- formik.setFieldValue("encrypt", e.checked);
3274
- setEncryptState(e.checked);
3275
- }}
3276
- checked={formik.values.encrypt}
3277
- ></Checkbox>
3278
- <label htmlFor="ingredient1" className="form-field-label">
3279
- Encrypt
3280
- </label>
3281
- </div>
3282
- {isFormFieldValid(formik, "encrypt") && (
3283
- <Message
3284
- severity="error"
3285
- text={formik?.errors?.encrypt?.toString()}
3286
- />
3287
- )}
3288
- </div>
3289
- )}
3290
- {currentFields.includes("isMultiSelect") && (
3291
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3292
- <div className="flex align-items-center">
3293
- <Checkbox
3294
- name="isMultiSelect"
3295
- onChange={(e) => {
3296
- formik.setFieldValue("isMultiSelect", e.checked);
3297
- }}
3298
- checked={formik.values.isMultiSelect}
3299
- ></Checkbox>
3300
- <label htmlFor="ingredient1" className="form-field-label ml-2">
3301
- Is MultiSelect
3302
- </label>
3303
- </div>
3304
- {isFormFieldValid(formik, "isMultiSelect") && (
3305
- <Message
3306
- severity="error"
3307
- text={formik?.errors?.isMultiSelect?.toString()}
3308
- />
3309
- )}
3310
- </div>
3311
- )}
3312
- {/* {currentFields.includes("isSystem") && (
3313
- <div className="md:col-6 sm:col-12">
3314
- <div className="field">
3315
- <div className="flex align-items-center">
3316
- <Checkbox
3317
- name="isSystem"
3318
- onChange={(e) => {
3319
- formik.setFieldValue("isSystem", e.checked);
3320
- }}
3321
- checked={formik.values.isSystem}
3322
- ></Checkbox>
3323
- <label htmlFor="ingredient1" className="form-field-label">
3324
- isSystem
3325
- </label>
3326
- </div>
3327
- {isFormFieldValid(formik, "isSystem") && (
3328
- <Message
3329
- severity="error"
3330
- text={formik?.errors?.isSystem?.toString()}
3331
- />
3332
- )}
3333
- </div>
3334
- </div>
3335
- )} */}
3336
- {currentFields.includes("enableAuditTracking") && formik.values.relationType !== "one-to-many" && (
3337
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3338
- <div className="flex align-items-center gap-2">
3339
- <Checkbox
3340
- name="enableAuditTracking"
3341
- onChange={(e) => {
3342
- formik.setFieldValue("enableAuditTracking", e.checked);
3343
- }}
3344
- checked={formik.values.enableAuditTracking}
3345
- ></Checkbox>
3346
- <label htmlFor="ingredient1" className="form-field-label">
3347
- Enable Audit Tracking
3348
- </label>
3349
- </div>
3350
- <p className="fieldSubTitle">By selecting this option, you are setting audit trail for this field.</p>
3351
-
3352
- {isFormFieldValid(formik, "enableAuditTracking") && (
3353
- <Message
3354
- severity="error"
3355
- text={formik?.errors?.enableAuditTracking?.toString()}
3356
- />
3357
- )}
3358
- </div>
3359
- )}
3360
- {currentFields.includes("isUserKey") && formik.values.unique && (
3361
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3362
- <div className="flex align-items-center gap-2">
3363
- <Checkbox
3364
- name="isUserKey"
3365
- onChange={(e) => {
3366
- formik.setFieldValue("isUserKey", e.checked);
3367
- }}
3368
- checked={formik.values.isUserKey}
3369
- ></Checkbox>
3370
- <label htmlFor="ingredient1" className="form-field-label">
3371
- Is Userkey
3372
- </label>
3373
- </div>
3374
- <p className="fieldSubTitle">By selecting this option, you are setting this field as the model's user key. Any existing user key configuration will be overwritten</p>
3375
-
3376
- {isFormFieldValid(formik, "isUserKey") && (
3377
- <Message
3378
- severity="error"
3379
- text={formik?.errors?.isUserKey?.toString()}
3380
- />
3381
- )}
3382
- </div>
3383
- )}
3384
- {currentFields.includes("isPrimaryKey") && (modelMetaData?.isLegacyTable || modelMetaData?.isLegacyTableWithId) && (
3385
- <div className="field col-6 flex-flex-column gap-2 mt-3">
3386
- <div className="flex align-items-center gap-2">
3387
- <Checkbox
3388
- name="isPrimaryKey"
3389
- onChange={(e) => {
3390
- formik.setFieldValue("isPrimaryKey", e.checked);
3391
- // Auto-set required and unique when isPrimaryKey is checked
3392
- if (e.checked) {
3393
- formik.setFieldValue("required", true);
3394
- formik.setFieldValue("unique", true);
3395
- }
3396
- }}
3397
- checked={formik.values.isPrimaryKey}
3398
- ></Checkbox>
3399
- <label htmlFor="ingredient1" className="form-field-label">
3400
- Is Primary Key
3401
- </label>
3402
- </div>
3403
- <p className="fieldSubTitle">By selecting this option, you are setting this field as the primary key for this legacy table.</p>
3404
-
3405
- {isFormFieldValid(formik, "isPrimaryKey") && (
3406
- <Message
3407
- severity="error"
3408
- text={formik?.errors?.isPrimaryKey?.toString()}
3409
- />
3410
- )}
3411
- </div>
3412
- )}
3413
- </div>
3414
-
3415
-
3416
- {formik.values.encrypt === true && (
3417
- <div className="formgrid grid mt-2">
3418
- <div className="md:col-6 sm:col-12">
3419
- <div className="field col-6 flex-flex-column gap-2">
3420
- <label
3421
- htmlFor="encryptionType"
3422
- className="form-field-label"
3423
- >
3424
- Encryption Type
3425
- </label>
3426
- {/* <AutoComplete
3427
- value={selectedEncryptionType}
3428
- suggestions={filteredSelectionEncryptionType}
3429
- invalid={isFormFieldValid(
3430
- formik,
3431
- "encryptionType"
3432
- )}
3433
- completeMethod={searchSelectionEncryptionType}
3434
- virtualScrollerOptions={{ itemSize: 38 }}
3435
- field="label"
3436
- className="small-input"
3437
- dropdown
3438
- onChange={(e) => {
3439
- setSelectedEncryptionType(e.value);
3440
- formik.setFieldValue("encryptionType", e.value.value);
3441
- }}
3442
- /> */}
3443
-
3444
- <SingleSelectAutoCompleteField
3445
- key="encryptionType"
3446
- formik={formik}
3447
- isFormFieldValid={isFormFieldValid}
3448
- fieldName="encryptionType"
3449
- fieldNameId="encryptionType"
3450
- labelKey="label"
3451
- valueKey="value"
3452
- searchData={searchSelectionEncryptionType}
3453
- existingData={formik.values.encryptionType}
3454
- />
3455
- {isFormFieldValid(formik, "encryptionType") && (
3456
- <Message
3457
- severity="error"
3458
- text={formik?.errors?.encryptionType?.toString()}
3459
- />
3460
- )}
3461
- </div>
3462
- </div>
3463
- <div className="md:col-6 sm:col-12">
3464
- <div className="field col-6 flex-flex-column gap-2">
3465
- <label htmlFor="decryptWhen" className="form-field-label">
3466
- Decrypt When
3467
- </label>
3468
- {/* <AutoComplete
3469
- value={selectedDecryptWhen}
3470
- suggestions={filteredSelectionDecryptWhen}
3471
- invalid={isFormFieldValid(formik, "decryptWhen")}
3472
- completeMethod={searchSelectionDecryptWhen}
3473
- virtualScrollerOptions={{ itemSize: 38 }}
3474
- field="label"
3475
- className="small-input"
3476
- dropdown
3477
- onChange={(e) => {
3478
- setSelectedeDecryptWhen(e.value);
3479
- formik.setFieldValue("decryptWhen", e.value.value);
3480
- }}
3481
- /> */}
3482
-
3483
- <SingleSelectAutoCompleteField
3484
- key="decryptWhen"
3485
- formik={formik}
3486
- isFormFieldValid={isFormFieldValid}
3487
- fieldName="decryptWhen"
3488
- fieldNameId="decryptWhen"
3489
- labelKey="label"
3490
- valueKey="value"
3491
- searchData={searchSelectionDecryptWhen}
3492
- existingData={formik.values.decryptWhen}
3493
- />
3494
- {isFormFieldValid(formik, "decryptWhen") && (
3495
- <Message
3496
- severity="error"
3497
- text={formik?.errors?.decryptWhen?.toString()}
3498
- />
3499
- )}
3500
- </div>
3501
- </div>
3502
- </div>
3503
- )}
3504
- </TabPanel>
3505
- </TabView>
3506
- <div className="flex gap-3">
3507
- <div>
3508
- <Button label="Finish" size="small" onClick={() => showError()} type="submit" />
3509
- </div>
3510
- <div>
3511
- <Button label="Cancel" size="small" severity="secondary" type="reset" onClick={() => setVisiblePopup(false)} outlined />
3512
- </div>
3513
- </div>
3514
- </div>
3515
- {/* <div className="ml-4">
3516
- <Button
3517
- label="Save"
3518
- onClick={() => showError(formik.validateForm)}
3519
- type="submit"
3520
- />
3521
- </div> */}
3522
- </div>
3523
- </div>
3524
- }
3525
-
3526
- </form>
3527
- </div >
3528
- <Dialog
3529
- visible={isBackPopupVisible}
3530
- header="Select Type"
3531
- headerClassName="text-center"
3532
- modal
3533
- className="solid-confirm-dialog"
3534
- footer={() => (
3535
- <div className="flex gap-3">
3536
- <Button label="Yes" icon="pi pi-check" size="small" type="reset" severity="danger" autoFocus onClick={() => {
3537
- formik.resetForm()
3538
- setIsBackPopupVisible(false);
3539
- setShowTypeFilter(true);
3540
- }} />
3541
- <Button label="No" icon="pi pi-times" size="small" onClick={() => setIsBackPopupVisible(false)} />
3542
- </div>
3543
- )}
3544
- onHide={() => setIsBackPopupVisible(false)}
3545
- >
3546
- <p>You have some unsaved data are you sure you want to go back?</p>
3547
- </Dialog>
3548
- </div >
3549
- );
3550
- };
3551
-
3552
-
3553
- export default FieldMetaDataForm;