@solidxai/core-ui 0.1.0 → 0.1.2

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 (973) 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 +1 -1
  32. package/dist/components/auth/SolidLogin.js.map +1 -1
  33. package/dist/components/auth/SolidLogin.tsx +1 -1
  34. package/dist/components/auth/SolidRegister.js.map +1 -1
  35. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  36. package/dist/components/common/AutoCompleteField.js.map +1 -1
  37. package/dist/components/common/BackButton.js.map +1 -1
  38. package/dist/components/common/CancelButton.js.map +1 -1
  39. package/dist/components/common/CodeEditor.js.map +1 -1
  40. package/dist/components/common/CreateButton.js.map +1 -1
  41. package/dist/components/common/DownloadProgressToast.js.map +1 -1
  42. package/dist/components/common/DropzonePlaceholder.js.map +1 -1
  43. package/dist/components/common/DropzoneUpload.js.map +1 -1
  44. package/dist/components/common/FileReaderExt.js.map +1 -1
  45. package/dist/components/common/GeneralSettings.js.map +1 -1
  46. package/dist/components/common/HeaderDynamicTitles.js.map +1 -1
  47. package/dist/components/common/Image.js.map +1 -1
  48. package/dist/components/common/Link.js.map +1 -1
  49. package/dist/components/common/MarkdownViewer.js.map +1 -1
  50. package/dist/components/common/MultipleSelectAutoCompleteField.js.map +1 -1
  51. package/dist/components/common/NotFound.js.map +1 -1
  52. package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -1
  53. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  54. package/dist/components/common/SolidAdmin.d.ts.map +1 -1
  55. package/dist/components/common/SolidAdmin.js +3 -3
  56. package/dist/components/common/SolidAdmin.js.map +1 -1
  57. package/dist/components/common/SolidAdmin.tsx +186 -10
  58. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  59. package/dist/components/common/SolidErrorPage.d.ts.map +1 -1
  60. package/dist/components/common/SolidErrorPage.js +3 -2
  61. package/dist/components/common/SolidErrorPage.js.map +1 -1
  62. package/dist/components/common/SolidErrorPage.tsx +31 -14
  63. package/dist/components/common/SolidExport.js.map +1 -1
  64. package/dist/components/common/SolidExportStepper.js.map +1 -1
  65. package/dist/components/common/SolidFieldTooltip.js.map +1 -1
  66. package/dist/components/common/SolidFormHeader.js.map +1 -1
  67. package/dist/components/common/SolidFormStepper.js.map +1 -1
  68. package/dist/components/common/SolidModuleHome.js.map +1 -1
  69. package/dist/components/common/SolidNotFoundPage.d.ts.map +1 -1
  70. package/dist/components/common/SolidNotFoundPage.js +2 -2
  71. package/dist/components/common/SolidNotFoundPage.js.map +1 -1
  72. package/dist/components/common/SolidNotFoundPage.tsx +23 -14
  73. package/dist/components/common/SolidPopupContainer.js.map +1 -1
  74. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js.map +1 -1
  75. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js.map +1 -1
  76. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js.map +1 -1
  77. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js.map +1 -1
  78. package/dist/components/common/SolidSettings/SolidUploadedImage.js.map +1 -1
  79. package/dist/components/common/SolidThemeLink.js.map +1 -1
  80. package/dist/components/common/SolidThemeProvider.js.map +1 -1
  81. package/dist/components/common/StepperArrows/ActiveArrowStep.js.map +1 -1
  82. package/dist/components/common/StepperArrows/ActiveBeforeStepArrow.js.map +1 -1
  83. package/dist/components/common/StepperArrows/InactiveStepArrow.js.map +1 -1
  84. package/dist/components/common/error.js.map +1 -1
  85. package/dist/components/common/useHandleFormCustomButtonClick.js.map +1 -1
  86. package/dist/components/common/useHandleListCustomButtonClick.js.map +1 -1
  87. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  88. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  89. package/dist/components/core/chatter/SolidChatterCustomMessage.js.map +1 -1
  90. package/dist/components/core/chatter/SolidChatterDateDivider.js.map +1 -1
  91. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  92. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  93. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  94. package/dist/components/core/common/AvatarWidget.js.map +1 -1
  95. package/dist/components/core/common/DateFieldViewComponent.js.map +1 -1
  96. package/dist/components/core/common/FilterComponent.js.map +1 -1
  97. package/dist/components/core/common/PDFViewer.js.map +1 -1
  98. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
  99. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
  100. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  101. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js.map +1 -1
  102. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  103. package/dist/components/core/common/SolidGenericImport/DocumentSvg.js.map +1 -1
  104. package/dist/components/core/common/SolidGenericImport/SolidGenericImport.js.map +1 -1
  105. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  106. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
  107. package/dist/components/core/common/SolidGenericImport/SolidImportStepper.js.map +1 -1
  108. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  109. package/dist/components/core/common/SolidGenericImport/SolidImportTransactionStatus.js.map +1 -1
  110. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js.map +1 -1
  111. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  112. package/dist/components/core/common/SolidGlobalSearchElement.js +81 -44
  113. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  114. package/dist/components/core/common/SolidGlobalSearchElement.tsx +43 -19
  115. package/dist/components/core/common/SolidLayoutViews.js.map +1 -1
  116. package/dist/components/core/common/SolidListViewOptions.js.map +1 -1
  117. package/dist/components/core/common/SolidLoaders/SolidCircularLoader.js.map +1 -1
  118. package/dist/components/core/common/SolidPasswordHelperText.js.map +1 -1
  119. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
  120. package/dist/components/core/common/SolidSearchBox.js.map +1 -1
  121. package/dist/components/core/common/SolidViewLayoutManager.js.map +1 -1
  122. package/dist/components/core/common/SolidXAiIframe.js.map +1 -1
  123. package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
  124. package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -1
  125. package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -1
  126. package/dist/components/core/dashboard/SolidDashboardHeader.js.map +1 -1
  127. package/dist/components/core/dashboard/SolidDashboardLoading.js.map +1 -1
  128. package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -1
  129. package/dist/components/core/dashboard/SolidDashboardRenderError.js.map +1 -1
  130. package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -1
  131. package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -1
  132. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -1
  133. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js.map +1 -1
  134. package/dist/components/core/dashboard/chart-renderers/init-chartjs.js.map +1 -1
  135. package/dist/components/core/dashboard/dashboard-utils.js.map +1 -1
  136. package/dist/components/core/extension/solid-core/CustomIcon/StatusIcon.js.map +1 -1
  137. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js.map +1 -1
  138. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.js.map +1 -1
  139. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.js.map +1 -1
  140. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  141. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
  142. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js.map +1 -1
  143. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
  144. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  145. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  146. package/dist/components/core/filter/SolidBooleanFilterElement.js.map +1 -1
  147. package/dist/components/core/filter/SolidFilterFields.js.map +1 -1
  148. package/dist/components/core/filter/SolidManyToManyFilterElement.js.map +1 -1
  149. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  150. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
  151. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
  152. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  153. package/dist/components/core/filter/fields/SolidBigintField.js.map +1 -1
  154. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  155. package/dist/components/core/filter/fields/SolidComputedField.js.map +1 -1
  156. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  157. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  158. package/dist/components/core/filter/fields/SolidDecimalField.js.map +1 -1
  159. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  160. package/dist/components/core/filter/fields/SolidFloatField.js.map +1 -1
  161. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  162. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  163. package/dist/components/core/filter/fields/SolidLongTextField.js.map +1 -1
  164. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  165. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  166. package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
  167. package/dist/components/core/filter/fields/SolidRichTextField.js.map +1 -1
  168. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  169. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  170. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  171. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  172. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  173. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  174. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  175. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  176. package/dist/components/core/form/SolidFormFieldRender.js.map +1 -1
  177. package/dist/components/core/form/SolidFormFieldRenderExtension.js.map +1 -1
  178. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  179. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  180. package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
  181. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  182. package/dist/components/core/form/SolidFormView.js +4 -2
  183. package/dist/components/core/form/SolidFormView.js.map +1 -1
  184. package/dist/components/core/form/SolidFormView.tsx +6 -4
  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.d.ts.map +1 -1
  190. package/dist/components/core/form/fields/SolidBooleanField.js +10 -1
  191. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  192. package/dist/components/core/form/fields/SolidBooleanField.tsx +12 -1
  193. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  194. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  195. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  196. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  197. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  198. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  199. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  200. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  201. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  202. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  203. package/dist/components/core/form/fields/SolidRelationField.js.map +1 -1
  204. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  205. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  206. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  207. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  208. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  209. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  210. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  211. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  212. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +150 -72
  213. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  214. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +157 -46
  215. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
  216. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  217. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js.map +1 -1
  218. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js.map +1 -1
  219. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  220. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
  221. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js.map +1 -1
  222. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
  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 +134 -118
  266. package/dist/components/core/list/SolidListView.js.map +1 -1
  267. package/dist/components/core/list/SolidListView.tsx +204 -121
  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.d.ts.map +1 -1
  282. package/dist/components/core/list/columns/SolidBooleanColumn.js +8 -1
  283. package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
  284. package/dist/components/core/list/columns/SolidBooleanColumn.tsx +9 -2
  285. package/dist/components/core/list/columns/SolidComputedColumn.js.map +1 -1
  286. package/dist/components/core/list/columns/SolidDateColumn.js.map +1 -1
  287. package/dist/components/core/list/columns/SolidDatetimeColumn.js.map +1 -1
  288. package/dist/components/core/list/columns/SolidDecimalColumn.js.map +1 -1
  289. package/dist/components/core/list/columns/SolidExternalIdColumn.js.map +1 -1
  290. package/dist/components/core/list/columns/SolidFloatColumn.js.map +1 -1
  291. package/dist/components/core/list/columns/SolidIdColumn.js.map +1 -1
  292. package/dist/components/core/list/columns/SolidIntColumn.js.map +1 -1
  293. package/dist/components/core/list/columns/SolidLongTextColumn.js.map +1 -1
  294. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  295. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  296. package/dist/components/core/list/columns/SolidRelationColumn.js.map +1 -1
  297. package/dist/components/core/list/columns/SolidRichTextColumn.js.map +1 -1
  298. package/dist/components/core/list/columns/SolidSelectionDynamicColumn.js.map +1 -1
  299. package/dist/components/core/list/columns/SolidSelectionStaticColumn.js.map +1 -1
  300. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  301. package/dist/components/core/list/columns/SolidTimeColumn.js.map +1 -1
  302. package/dist/components/core/list/columns/SolidUuidColumn.js.map +1 -1
  303. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
  304. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  305. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
  306. package/dist/components/core/list/listViewRegistry.d.ts +7 -0
  307. package/dist/components/core/list/listViewRegistry.d.ts.map +1 -0
  308. package/dist/components/core/list/listViewRegistry.js +17 -0
  309. package/dist/components/core/list/listViewRegistry.js.map +1 -0
  310. package/dist/components/core/list/listViewRegistry.ts +24 -0
  311. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js.map +1 -1
  312. package/dist/components/core/list/widgets/SolidManyToOneRelationAvatarListWidget.js.map +1 -1
  313. package/dist/components/core/list/widgets/SolidShortTextAvatarWidget.js.map +1 -1
  314. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -1
  315. package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
  316. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  317. package/dist/components/core/model/CreateModel.js.map +1 -1
  318. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  319. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  320. package/dist/components/core/model/FieldSelector.js.map +1 -1
  321. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  322. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  323. package/dist/components/core/module/CreateModule.js.map +1 -1
  324. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  325. package/dist/components/core/solid-ai/SolidAiMainWrapper.js.map +1 -1
  326. package/dist/components/core/solid-ai/SolidXAIIcon.js.map +1 -1
  327. package/dist/components/core/users/CreateUser.js.map +1 -1
  328. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  329. package/dist/components/core/users/UserListView.js.map +1 -1
  330. package/dist/components/layout/AdminLayout.js.map +1 -1
  331. package/dist/components/layout/AdminSidebar.js.map +1 -1
  332. package/dist/components/layout/AppConfig.js.map +1 -1
  333. package/dist/components/layout/AppSidebar.js.map +1 -1
  334. package/dist/components/layout/ButtonLoader.js.map +1 -1
  335. package/dist/components/layout/CustomPagination.js.map +1 -1
  336. package/dist/components/layout/DashboardHeader.js.map +1 -1
  337. package/dist/components/layout/FilterMenu.js.map +1 -1
  338. package/dist/components/layout/Footer.js.map +1 -1
  339. package/dist/components/layout/GlobalSearch.js.map +1 -1
  340. package/dist/components/layout/Header.js.map +1 -1
  341. package/dist/components/layout/Layout.js.map +1 -1
  342. package/dist/components/layout/ListingHeader.js.map +1 -1
  343. package/dist/components/layout/Loader.js.map +1 -1
  344. package/dist/components/layout/UserSidebar.js.map +1 -1
  345. package/dist/components/layout/context/layoutcontext.js.map +1 -1
  346. package/dist/components/layout/navbar-one.d.ts.map +1 -1
  347. package/dist/components/layout/navbar-one.js.map +1 -1
  348. package/dist/components/layout/navbar-one.tsx +0 -11
  349. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  350. package/dist/components/layout/navbar-two.js.map +1 -1
  351. package/dist/components/layout/user-profile-menu.js.map +1 -1
  352. package/dist/components/layout/user-profile.js.map +1 -1
  353. package/dist/components/modelsComponents/filterIcon.js.map +1 -1
  354. package/dist/constants/error-messages.js.map +1 -1
  355. package/dist/helpers/AppTitle.js.map +1 -1
  356. package/dist/helpers/ToastContainer.js.map +1 -1
  357. package/dist/helpers/autoCompleteVirtualScroll.js.map +1 -1
  358. package/dist/helpers/countries.js.map +1 -1
  359. package/dist/helpers/downloadFileWithProgress.js.map +1 -1
  360. package/dist/helpers/downloadMediaFile.js.map +1 -1
  361. package/dist/helpers/eventBus.js.map +1 -1
  362. package/dist/helpers/getAcceptedFileTypes.js.map +1 -1
  363. package/dist/helpers/getRandomColors.js.map +1 -1
  364. package/dist/helpers/helpers.js.map +1 -1
  365. package/dist/helpers/hydrateRelationRules.js +1 -1
  366. package/dist/helpers/hydrateRelationRules.js.map +1 -1
  367. package/dist/helpers/hydrateRelationRules.ts +1 -1
  368. package/dist/helpers/logger.js.map +1 -1
  369. package/dist/helpers/permissions.js.map +1 -1
  370. package/dist/helpers/registry.js.map +1 -1
  371. package/dist/helpers/resendOtpHelper.js.map +1 -1
  372. package/dist/helpers/revalidate.js.map +1 -1
  373. package/dist/helpers/rolesHelper.js.map +1 -1
  374. package/dist/helpers/routePaths.js.map +1 -1
  375. package/dist/helpers/showToast.js.map +1 -1
  376. package/dist/helpers/solidIcons.js.map +1 -1
  377. package/dist/helpers/updatePasswordField.js.map +1 -1
  378. package/dist/hooks/usePathname.js.map +1 -1
  379. package/dist/hooks/useRouter.js.map +1 -1
  380. package/dist/hooks/useSearchParams.js.map +1 -1
  381. package/dist/hooks/useSession.js.map +1 -1
  382. package/dist/http/solidHttp.js.map +1 -1
  383. package/dist/index.d.ts +1 -1
  384. package/dist/index.d.ts.map +1 -1
  385. package/dist/index.js +1 -2
  386. package/dist/index.js.map +1 -1
  387. package/dist/index.ts +1 -2
  388. package/dist/layouts/AdminLayoutWrapper.js.map +1 -1
  389. package/dist/layouts/AuthLayoutWrapper.js.map +1 -1
  390. package/dist/redux/api/aiInteractionApi.js.map +1 -1
  391. package/dist/redux/api/authApi.js.map +1 -1
  392. package/dist/redux/api/dashboardApi.js.map +1 -1
  393. package/dist/redux/api/dashboardQuestionApi.js.map +1 -1
  394. package/dist/redux/api/exportTemplateApi.js.map +1 -1
  395. package/dist/redux/api/fetchBaseQuery.js.map +1 -1
  396. package/dist/redux/api/fieldApi.js.map +1 -1
  397. package/dist/redux/api/importTransactionApi.js.map +1 -1
  398. package/dist/redux/api/mediaApi.js.map +1 -1
  399. package/dist/redux/api/mediaStorageProviderApi.js.map +1 -1
  400. package/dist/redux/api/modelApi.js.map +1 -1
  401. package/dist/redux/api/moduleApi.js.map +1 -1
  402. package/dist/redux/api/permissionApi.js.map +1 -1
  403. package/dist/redux/api/pincodeApi.js.map +1 -1
  404. package/dist/redux/api/roleApi.js.map +1 -1
  405. package/dist/redux/api/solidActionApi.js.map +1 -1
  406. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  407. package/dist/redux/api/solidEntityApi.js.map +1 -1
  408. package/dist/redux/api/solidMenuApi.js.map +1 -1
  409. package/dist/redux/api/solidServiceApi.js.map +1 -1
  410. package/dist/redux/api/solidSettingsApi.js.map +1 -1
  411. package/dist/redux/api/solidViewApi.js.map +1 -1
  412. package/dist/redux/api/stateApi.js.map +1 -1
  413. package/dist/redux/api/testApi.js.map +1 -1
  414. package/dist/redux/api/userApi.js.map +1 -1
  415. package/dist/redux/features/authSlice.js.map +1 -1
  416. package/dist/redux/features/dataViewSlice.js.map +1 -1
  417. package/dist/redux/features/navbarSlice.js.map +1 -1
  418. package/dist/redux/features/popupSlice.js.map +1 -1
  419. package/dist/redux/features/themeSlice.js.map +1 -1
  420. package/dist/redux/features/userSlice.js.map +1 -1
  421. package/dist/redux/hooks/useSolidPopup.js.map +1 -1
  422. package/dist/redux/store/StoreProvider.js.map +1 -1
  423. package/dist/redux/store/createSolidStore.js.map +1 -1
  424. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  425. package/dist/resources/globals.css +0 -21
  426. package/dist/resources/images/errors/error.svg +74 -0
  427. package/dist/routes/AppEventListener.js.map +1 -1
  428. package/dist/routes/guards/AuthGuard.js.map +1 -1
  429. package/dist/routes/pages/ErrorPage.js.map +1 -1
  430. package/dist/routes/pages/NotFoundPage.js.map +1 -1
  431. package/dist/routes/pages/admin/AdminPage.js.map +1 -1
  432. package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
  433. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  434. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  435. package/dist/routes/pages/admin/core/ListPage.js +11 -1
  436. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  437. package/dist/routes/pages/admin/core/ListPage.tsx +14 -1
  438. package/dist/routes/pages/admin/core/ModuleHomePage.js.map +1 -1
  439. package/dist/routes/pages/admin/core/SettingsPage.js.map +1 -1
  440. package/dist/routes/pages/auth/ConfirmForgotPasswordPage.js.map +1 -1
  441. package/dist/routes/pages/auth/ForgotPasswordPage.js.map +1 -1
  442. package/dist/routes/pages/auth/InitiateForgotPasswordPage.js.map +1 -1
  443. package/dist/routes/pages/auth/InitiateForgotPasswordThankYouPage.js.map +1 -1
  444. package/dist/routes/pages/auth/InitiateGoogleOauthPage.js.map +1 -1
  445. package/dist/routes/pages/auth/InitiateLoginPage.js.map +1 -1
  446. package/dist/routes/pages/auth/InitiateRegisterPage.js.map +1 -1
  447. package/dist/routes/pages/auth/LoginPage.js.map +1 -1
  448. package/dist/routes/pages/auth/RegisterPage.js.map +1 -1
  449. package/dist/routes/pages/auth/ResetPasswordPage.js.map +1 -1
  450. package/dist/routes/pages/auth/SsoPage.js.map +1 -1
  451. package/dist/routes/solidRoutes.js.map +1 -1
  452. package/dist/routes/types.js.map +1 -1
  453. package/dist/styles.js.map +1 -1
  454. package/package.json +7 -5
  455. package/src/adapters/auth/getSession.ts +0 -49
  456. package/src/adapters/auth/handleLogout.ts +0 -39
  457. package/src/adapters/auth/index.ts +0 -10
  458. package/src/adapters/auth/refreshAccessToken.ts +0 -34
  459. package/src/adapters/auth/sessionProvider.tsx +0 -5
  460. package/src/adapters/auth/signIn.ts +0 -70
  461. package/src/adapters/auth/signInWithOAuthAccessCode.ts +0 -80
  462. package/src/adapters/auth/signInWithOtp.ts +0 -77
  463. package/src/adapters/auth/signOut.ts +0 -15
  464. package/src/adapters/auth/storage.ts +0 -28
  465. package/src/adapters/auth/types.ts +0 -9
  466. package/src/adapters/env.ts +0 -29
  467. package/src/components/Svg/DevDocs.tsx +0 -9
  468. package/src/components/Svg/DocsSvg.tsx +0 -9
  469. package/src/components/Svg/ExcelSvg.tsx +0 -15
  470. package/src/components/Svg/FieldSvg.tsx +0 -9
  471. package/src/components/Svg/FileSvg.tsx +0 -18
  472. package/src/components/Svg/HomePageModuleSvg.tsx +0 -179
  473. package/src/components/Svg/ModelSvg.tsx +0 -9
  474. package/src/components/Svg/ModuleSvg.tsx +0 -9
  475. package/src/components/Svg/PDFSvg.tsx +0 -15
  476. package/src/components/Svg/RightArrowSvg.tsx +0 -9
  477. package/src/components/Svg/SettingsSvg.tsx +0 -9
  478. package/src/components/auth/AuthLayout.tsx +0 -226
  479. package/src/components/auth/ForgotPasswordThankYou.tsx +0 -31
  480. package/src/components/auth/GoogleAuthChecking.tsx +0 -60
  481. package/src/components/auth/SolidChangeForcePassword.tsx +0 -213
  482. package/src/components/auth/SolidForgotPassword.tsx +0 -116
  483. package/src/components/auth/SolidInitialLoginOtp.tsx +0 -231
  484. package/src/components/auth/SolidInitiateRegisterOtp.tsx +0 -208
  485. package/src/components/auth/SolidLogin.tsx +0 -418
  486. package/src/components/auth/SolidRegister.tsx +0 -442
  487. package/src/components/auth/SolidResetPassword.tsx +0 -186
  488. package/src/components/common/AuthBanner.tsx +0 -41
  489. package/src/components/common/AutoCompleteField.tsx +0 -79
  490. package/src/components/common/BackButton.tsx +0 -73
  491. package/src/components/common/CancelButton.tsx +0 -62
  492. package/src/components/common/CodeEditor.tsx +0 -38
  493. package/src/components/common/CreateButton.tsx +0 -18
  494. package/src/components/common/DownloadProgressToast.tsx +0 -55
  495. package/src/components/common/DropzonePlaceholder.tsx +0 -31
  496. package/src/components/common/DropzoneUpload.tsx +0 -11
  497. package/src/components/common/FileReaderExt.tsx +0 -20
  498. package/src/components/common/GeneralSettings.tsx +0 -1215
  499. package/src/components/common/HeaderDynamicTitles.tsx +0 -13
  500. package/src/components/common/Image.tsx +0 -13
  501. package/src/components/common/Link.tsx +0 -13
  502. package/src/components/common/MarkdownViewer.tsx +0 -84
  503. package/src/components/common/MultipleSelectAutoCompleteField.tsx +0 -64
  504. package/src/components/common/NotFound.tsx +0 -22
  505. package/src/components/common/SingleSelectAutoCompleteField.tsx +0 -73
  506. package/src/components/common/SocialMediaLogin.tsx +0 -55
  507. package/src/components/common/SolidAdmin.tsx +0 -29
  508. package/src/components/common/SolidBreadcrumb.tsx +0 -130
  509. package/src/components/common/SolidErrorPage.tsx +0 -37
  510. package/src/components/common/SolidExport.tsx +0 -563
  511. package/src/components/common/SolidExportStepper.tsx +0 -135
  512. package/src/components/common/SolidFieldTooltip.tsx +0 -23
  513. package/src/components/common/SolidFormHeader.tsx +0 -25
  514. package/src/components/common/SolidFormStepper.tsx +0 -336
  515. package/src/components/common/SolidModuleHome.tsx +0 -128
  516. package/src/components/common/SolidNotFoundPage.tsx +0 -37
  517. package/src/components/common/SolidPopupContainer.tsx +0 -37
  518. package/src/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +0 -45
  519. package/src/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +0 -45
  520. package/src/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +0 -20
  521. package/src/components/common/SolidSettings/SettingsImageRemoveButton.tsx +0 -15
  522. package/src/components/common/SolidSettings/SolidUploadedImage.tsx +0 -16
  523. package/src/components/common/SolidThemeLink.tsx +0 -6
  524. package/src/components/common/SolidThemeProvider.tsx +0 -44
  525. package/src/components/common/StepperArrows/ActiveArrowStep.tsx +0 -18
  526. package/src/components/common/StepperArrows/ActiveBeforeStepArrow.tsx +0 -18
  527. package/src/components/common/StepperArrows/InactiveStepArrow.tsx +0 -19
  528. package/src/components/common/error.tsx +0 -30
  529. package/src/components/common/solid-export.css +0 -85
  530. package/src/components/common/solidModuleHome.module.css +0 -135
  531. package/src/components/common/useHandleFormCustomButtonClick.ts +0 -40
  532. package/src/components/common/useHandleListCustomButtonClick.ts +0 -40
  533. package/src/components/core/chatter/SolidChatter.tsx +0 -248
  534. package/src/components/core/chatter/SolidChatterAuditMessage.tsx +0 -35
  535. package/src/components/core/chatter/SolidChatterCustomMessage.tsx +0 -46
  536. package/src/components/core/chatter/SolidChatterDateDivider.tsx +0 -16
  537. package/src/components/core/chatter/SolidChatterHeader.tsx +0 -218
  538. package/src/components/core/chatter/SolidChatterMessageBox.tsx +0 -163
  539. package/src/components/core/chatter/SolidMessageComposer.tsx +0 -146
  540. package/src/components/core/chatter/chatter.module.css +0 -74
  541. package/src/components/core/common/AvatarWidget.tsx +0 -55
  542. package/src/components/core/common/DateFieldViewComponent.tsx +0 -36
  543. package/src/components/core/common/FilterComponent.tsx +0 -457
  544. package/src/components/core/common/PDFViewer.tsx +0 -117
  545. package/src/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +0 -59
  546. package/src/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +0 -89
  547. package/src/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +0 -179
  548. package/src/components/core/common/SolidAccountSettings/SolidNotifications.tsx +0 -129
  549. package/src/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +0 -304
  550. package/src/components/core/common/SolidCreateButton.tsx +0 -59
  551. package/src/components/core/common/SolidGenericImport/DocumentSvg.tsx +0 -15
  552. package/src/components/core/common/SolidGenericImport/SolidGenericImport.tsx +0 -64
  553. package/src/components/core/common/SolidGenericImport/SolidImport.module.css +0 -40
  554. package/src/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +0 -116
  555. package/src/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +0 -123
  556. package/src/components/core/common/SolidGenericImport/SolidImportStepper.tsx +0 -217
  557. package/src/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +0 -196
  558. package/src/components/core/common/SolidGenericImport/SolidImportTransactionStatus.tsx +0 -157
  559. package/src/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +0 -29
  560. package/src/components/core/common/SolidGlobalSearchElement.tsx +0 -1488
  561. package/src/components/core/common/SolidLayoutViews.tsx +0 -87
  562. package/src/components/core/common/SolidListViewOptions.tsx +0 -31
  563. package/src/components/core/common/SolidLoaders/SolidCircularLoader.tsx +0 -7
  564. package/src/components/core/common/SolidLoaders/SolidLoaders.module.css +0 -20
  565. package/src/components/core/common/SolidPasswordHelperText.tsx +0 -33
  566. package/src/components/core/common/SolidSaveCustomFilterForm.tsx +0 -75
  567. package/src/components/core/common/SolidSearchBox.tsx +0 -17
  568. package/src/components/core/common/SolidViewLayoutManager.ts +0 -421
  569. package/src/components/core/common/SolidXAiIframe.tsx +0 -77
  570. package/src/components/core/dashboard/SolidDashboard.module.css +0 -79
  571. package/src/components/core/dashboard/SolidDashboard.tsx +0 -332
  572. package/src/components/core/dashboard/SolidDashboardBody.tsx +0 -117
  573. package/src/components/core/dashboard/SolidDashboardFilterRequired.tsx +0 -28
  574. package/src/components/core/dashboard/SolidDashboardHeader.tsx +0 -10
  575. package/src/components/core/dashboard/SolidDashboardLoading.tsx +0 -55
  576. package/src/components/core/dashboard/SolidDashboardNotAvailable.tsx +0 -32
  577. package/src/components/core/dashboard/SolidDashboardRenderError.tsx +0 -29
  578. package/src/components/core/dashboard/SolidDashboardVariable.tsx +0 -256
  579. package/src/components/core/dashboard/SolidQuestionRenderer.tsx +0 -78
  580. package/src/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +0 -18
  581. package/src/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +0 -54
  582. package/src/components/core/dashboard/chart-renderers/init-chartjs.ts +0 -25
  583. package/src/components/core/dashboard/dashboard-utils.ts +0 -39
  584. package/src/components/core/extension/solid-core/CustomIcon/StatusIcon.tsx +0 -17
  585. package/src/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +0 -36
  586. package/src/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.ts +0 -18
  587. package/src/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.ts +0 -18
  588. package/src/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +0 -105
  589. package/src/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +0 -205
  590. package/src/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +0 -131
  591. package/src/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +0 -201
  592. package/src/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +0 -131
  593. package/src/components/core/field/FieldListViewData.tsx +0 -313
  594. package/src/components/core/filter/SolidBooleanFilterElement.tsx +0 -30
  595. package/src/components/core/filter/SolidFilterFields.tsx +0 -131
  596. package/src/components/core/filter/SolidManyToManyFilterElement.tsx +0 -64
  597. package/src/components/core/filter/SolidManyToOneFilterElement.tsx +0 -61
  598. package/src/components/core/filter/SolidSelectionDynamicFilterElement.tsx +0 -50
  599. package/src/components/core/filter/SolidSelectionStaticFilterElement.tsx +0 -32
  600. package/src/components/core/filter/SolidVarInputsFilterElement.tsx +0 -209
  601. package/src/components/core/filter/fields/SolidBigintField.tsx +0 -9
  602. package/src/components/core/filter/fields/SolidBooleanField.tsx +0 -68
  603. package/src/components/core/filter/fields/SolidComputedField.tsx +0 -23
  604. package/src/components/core/filter/fields/SolidDateField.tsx +0 -63
  605. package/src/components/core/filter/fields/SolidDatetimeField.tsx +0 -54
  606. package/src/components/core/filter/fields/SolidDecimalField.tsx +0 -9
  607. package/src/components/core/filter/fields/SolidExternalIdField.tsx +0 -52
  608. package/src/components/core/filter/fields/SolidFloatField.tsx +0 -9
  609. package/src/components/core/filter/fields/SolidIdField.tsx +0 -46
  610. package/src/components/core/filter/fields/SolidIntField.tsx +0 -61
  611. package/src/components/core/filter/fields/SolidLongTextField.tsx +0 -9
  612. package/src/components/core/filter/fields/SolidMediaMultipleField.tsx +0 -60
  613. package/src/components/core/filter/fields/SolidMediaSingleField.tsx +0 -62
  614. package/src/components/core/filter/fields/SolidRelationField.tsx +0 -17
  615. package/src/components/core/filter/fields/SolidRichTextField.tsx +0 -9
  616. package/src/components/core/filter/fields/SolidSelectionDynamicField.tsx +0 -52
  617. package/src/components/core/filter/fields/SolidSelectionStaticField.tsx +0 -54
  618. package/src/components/core/filter/fields/SolidShortTextField.tsx +0 -60
  619. package/src/components/core/filter/fields/SolidTimeField.tsx +0 -48
  620. package/src/components/core/filter/fields/SolidUuidField.tsx +0 -51
  621. package/src/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +0 -62
  622. package/src/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +0 -84
  623. package/src/components/core/form/SolidFormActionHeader.tsx +0 -516
  624. package/src/components/core/form/SolidFormFieldRender.tsx +0 -53
  625. package/src/components/core/form/SolidFormFieldRenderExtension.tsx +0 -26
  626. package/src/components/core/form/SolidFormFooter.tsx +0 -164
  627. package/src/components/core/form/SolidFormLayouts.tsx +0 -104
  628. package/src/components/core/form/SolidFormUserViewLayout.tsx +0 -75
  629. package/src/components/core/form/SolidFormView.tsx +0 -1867
  630. package/src/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +0 -53
  631. package/src/components/core/form/SolidFormViewNormalHeaderButton.tsx +0 -53
  632. package/src/components/core/form/SolidFormViewShimmerLoading.tsx +0 -109
  633. package/src/components/core/form/fields/ISolidField.tsx +0 -72
  634. package/src/components/core/form/fields/SolidBooleanField.tsx +0 -434
  635. package/src/components/core/form/fields/SolidDateField.tsx +0 -247
  636. package/src/components/core/form/fields/SolidDateTimeField.tsx +0 -229
  637. package/src/components/core/form/fields/SolidDecimalField.tsx +0 -171
  638. package/src/components/core/form/fields/SolidEmailField.tsx +0 -176
  639. package/src/components/core/form/fields/SolidIntegerField.tsx +0 -282
  640. package/src/components/core/form/fields/SolidJsonField.tsx +0 -185
  641. package/src/components/core/form/fields/SolidLongTextField.tsx +0 -618
  642. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +0 -662
  643. package/src/components/core/form/fields/SolidMediaSingleField.tsx +0 -546
  644. package/src/components/core/form/fields/SolidPasswordField.tsx +0 -391
  645. package/src/components/core/form/fields/SolidRelationField.tsx +0 -56
  646. package/src/components/core/form/fields/SolidRichTextField.tsx +0 -188
  647. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +0 -340
  648. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +0 -462
  649. package/src/components/core/form/fields/SolidShortTextField.tsx +0 -399
  650. package/src/components/core/form/fields/SolidTimeField.tsx +0 -245
  651. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +0 -453
  652. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +0 -1009
  653. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +0 -636
  654. package/src/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +0 -38
  655. package/src/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +0 -64
  656. package/src/components/core/form/fields/solidFields.module.css +0 -7
  657. package/src/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +0 -135
  658. package/src/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +0 -144
  659. package/src/components/core/form/fields/widgets/SolidIconEditWidget.tsx +0 -265
  660. package/src/components/core/form/fields/widgets/SolidIconViewWidget.tsx +0 -32
  661. package/src/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +0 -50
  662. package/src/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +0 -222
  663. package/src/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +0 -70
  664. package/src/components/core/form/solidFormViewShimmerLoading.module.css +0 -4
  665. package/src/components/core/form/widgets/CustomHtml.tsx +0 -20
  666. package/src/components/core/kanban/KanbanBoard.tsx +0 -116
  667. package/src/components/core/kanban/KanbanCard.tsx +0 -280
  668. package/src/components/core/kanban/KanbanColumn.tsx +0 -138
  669. package/src/components/core/kanban/KanbanUserViewLayout.tsx +0 -73
  670. package/src/components/core/kanban/SolidKanbanView.tsx +0 -866
  671. package/src/components/core/kanban/SolidKanbanViewConfigure.tsx +0 -152
  672. package/src/components/core/kanban/SolidKanbanViewFields.tsx +0 -164
  673. package/src/components/core/kanban/SolidManyToOneFilterElement.tsx +0 -59
  674. package/src/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +0 -50
  675. package/src/components/core/kanban/SolidSelectionStaticFilterElement.tsx +0 -32
  676. package/src/components/core/kanban/SolidVarInputsFilterElement.tsx +0 -184
  677. package/src/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +0 -9
  678. package/src/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +0 -16
  679. package/src/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +0 -23
  680. package/src/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +0 -14
  681. package/src/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +0 -13
  682. package/src/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +0 -9
  683. package/src/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +0 -12
  684. package/src/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +0 -9
  685. package/src/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +0 -14
  686. package/src/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +0 -20
  687. package/src/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +0 -9
  688. package/src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +0 -140
  689. package/src/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +0 -164
  690. package/src/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +0 -13
  691. package/src/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +0 -9
  692. package/src/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +0 -14
  693. package/src/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +0 -14
  694. package/src/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +0 -121
  695. package/src/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +0 -12
  696. package/src/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +0 -13
  697. package/src/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +0 -16
  698. package/src/components/core/list/ListViewRowActionPopup.tsx +0 -40
  699. package/src/components/core/list/SolidColumnSelector/SolidListColumnSelector.module.css +0 -12
  700. package/src/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +0 -233
  701. package/src/components/core/list/SolidEmptyListViewPlaceholder.tsx +0 -115
  702. package/src/components/core/list/SolidListView.tsx +0 -2009
  703. package/src/components/core/list/SolidListViewColumn.tsx +0 -165
  704. package/src/components/core/list/SolidListViewConfigure.tsx +0 -342
  705. package/src/components/core/list/SolidListViewHeaderButton.tsx +0 -32
  706. package/src/components/core/list/SolidListViewHeaderContextMenuButton.tsx +0 -32
  707. package/src/components/core/list/SolidListViewRowButtonContextMenu.tsx +0 -40
  708. package/src/components/core/list/SolidListViewShimmerLoading.tsx +0 -78
  709. package/src/components/core/list/SolidListViewWrapper.module.css +0 -49
  710. package/src/components/core/list/SolidListingHeader.tsx +0 -41
  711. package/src/components/core/list/SolidManyToOneFilterElement.tsx +0 -60
  712. package/src/components/core/list/SolidSelectionDynamicFilterElement.tsx +0 -50
  713. package/src/components/core/list/SolidSelectionStaticFilterElement.tsx +0 -32
  714. package/src/components/core/list/SolidTableRowCell.tsx +0 -35
  715. package/src/components/core/list/SolidVarInputsFilterElement.tsx +0 -184
  716. package/src/components/core/list/columns/SolidBigintColumn.tsx +0 -9
  717. package/src/components/core/list/columns/SolidBooleanColumn.tsx +0 -87
  718. package/src/components/core/list/columns/SolidComputedColumn.tsx +0 -27
  719. package/src/components/core/list/columns/SolidDateColumn.tsx +0 -90
  720. package/src/components/core/list/columns/SolidDatetimeColumn.tsx +0 -79
  721. package/src/components/core/list/columns/SolidDecimalColumn.tsx +0 -9
  722. package/src/components/core/list/columns/SolidExternalIdColumn.tsx +0 -80
  723. package/src/components/core/list/columns/SolidFloatColumn.tsx +0 -9
  724. package/src/components/core/list/columns/SolidIdColumn.tsx +0 -79
  725. package/src/components/core/list/columns/SolidIntColumn.tsx +0 -87
  726. package/src/components/core/list/columns/SolidLongTextColumn.tsx +0 -9
  727. package/src/components/core/list/columns/SolidMediaMultipleColumn.tsx +0 -301
  728. package/src/components/core/list/columns/SolidMediaSingleColumn.tsx +0 -170
  729. package/src/components/core/list/columns/SolidRelationColumn.tsx +0 -21
  730. package/src/components/core/list/columns/SolidRichTextColumn.tsx +0 -9
  731. package/src/components/core/list/columns/SolidSelectionDynamicColumn.tsx +0 -80
  732. package/src/components/core/list/columns/SolidSelectionStaticColumn.tsx +0 -81
  733. package/src/components/core/list/columns/SolidShortTextColumn.tsx +0 -160
  734. package/src/components/core/list/columns/SolidTimeColumn.tsx +0 -78
  735. package/src/components/core/list/columns/SolidUuidColumn.tsx +0 -79
  736. package/src/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +0 -106
  737. package/src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +0 -117
  738. package/src/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +0 -110
  739. package/src/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +0 -30
  740. package/src/components/core/list/widgets/SolidManyToOneRelationAvatarListWidget.tsx +0 -30
  741. package/src/components/core/list/widgets/SolidShortTextAvatarWidget.tsx +0 -70
  742. package/src/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +0 -21
  743. package/src/components/core/locales/SolidChatterLocaleTabView.tsx +0 -91
  744. package/src/components/core/locales/SolidLocale.tsx +0 -127
  745. package/src/components/core/locales/solid-locale.css +0 -36
  746. package/src/components/core/model/CreateModel.tsx +0 -536
  747. package/src/components/core/model/FieldMetaData.tsx +0 -262
  748. package/src/components/core/model/FieldMetaDataForm.tsx +0 -3553
  749. package/src/components/core/model/FieldSelector.tsx +0 -62
  750. package/src/components/core/model/ModelListViewData.tsx +0 -384
  751. package/src/components/core/model/ModelMetaData.tsx +0 -949
  752. package/src/components/core/module/CreateModule.tsx +0 -613
  753. package/src/components/core/module/ModuleListViewData.tsx +0 -431
  754. package/src/components/core/solid-ai/SolidAiMainWrapper.tsx +0 -8
  755. package/src/components/core/solid-ai/SolidXAIIcon.tsx +0 -37
  756. package/src/components/core/users/CreateUser.tsx +0 -468
  757. package/src/components/core/users/CreateUserRole.tsx +0 -213
  758. package/src/components/core/users/UserListView.tsx +0 -376
  759. package/src/components/layout/AdminLayout.tsx +0 -55
  760. package/src/components/layout/AdminSidebar.tsx +0 -64
  761. package/src/components/layout/AppConfig.tsx +0 -104
  762. package/src/components/layout/AppSidebar.tsx +0 -216
  763. package/src/components/layout/ButtonLoader.tsx +0 -7
  764. package/src/components/layout/CustomPagination.tsx +0 -55
  765. package/src/components/layout/DashboardHeader.tsx +0 -89
  766. package/src/components/layout/FilterMenu.tsx +0 -122
  767. package/src/components/layout/Footer.tsx +0 -13
  768. package/src/components/layout/GlobalSearch.tsx +0 -36
  769. package/src/components/layout/Header.tsx +0 -8
  770. package/src/components/layout/Layout.tsx +0 -205
  771. package/src/components/layout/ListingHeader.tsx +0 -205
  772. package/src/components/layout/Loader.tsx +0 -16
  773. package/src/components/layout/UserSidebar.tsx +0 -52
  774. package/src/components/layout/context/layoutcontext.tsx +0 -52
  775. package/src/components/layout/navbar-one.tsx +0 -239
  776. package/src/components/layout/navbar-two-menu.tsx +0 -71
  777. package/src/components/layout/navbar-two.tsx +0 -37
  778. package/src/components/layout/user-profile-menu.tsx +0 -212
  779. package/src/components/layout/user-profile.tsx +0 -7
  780. package/src/components/modelsComponents/filterIcon.tsx +0 -9
  781. package/src/constants/error-messages.ts +0 -238
  782. package/src/declarations.d.ts +0 -22
  783. package/src/helpers/AppTitle.tsx +0 -12
  784. package/src/helpers/ToastContainer.tsx +0 -94
  785. package/src/helpers/autoCompleteVirtualScroll.ts +0 -41
  786. package/src/helpers/countries.tsx +0 -260
  787. package/src/helpers/downloadFileWithProgress.ts +0 -86
  788. package/src/helpers/downloadMediaFile.tsx +0 -22
  789. package/src/helpers/eventBus.ts +0 -40
  790. package/src/helpers/getAcceptedFileTypes.tsx +0 -22
  791. package/src/helpers/getRandomColors.tsx +0 -68
  792. package/src/helpers/helpers.ts +0 -61
  793. package/src/helpers/hydrateRelationRules.ts +0 -122
  794. package/src/helpers/logger.ts +0 -33
  795. package/src/helpers/permissions.ts +0 -7
  796. package/src/helpers/registry.ts +0 -337
  797. package/src/helpers/resendOtpHelper.tsx +0 -5
  798. package/src/helpers/revalidate.ts +0 -8
  799. package/src/helpers/rolesHelper.ts +0 -4
  800. package/src/helpers/routePaths.ts +0 -25
  801. package/src/helpers/showToast.ts +0 -13
  802. package/src/helpers/solidIcons.tsx +0 -1831
  803. package/src/helpers/updatePasswordField.ts +0 -42
  804. package/src/hooks/usePathname.ts +0 -6
  805. package/src/hooks/useRouter.ts +0 -35
  806. package/src/hooks/useSearchParams.ts +0 -10
  807. package/src/hooks/useSession.ts +0 -52
  808. package/src/http/solidHttp.ts +0 -63
  809. package/src/index.ts +0 -460
  810. package/src/layouts/AdminLayoutWrapper.tsx +0 -10
  811. package/src/layouts/AuthLayoutWrapper.tsx +0 -10
  812. package/src/redux/api/aiInteractionApi.ts +0 -59
  813. package/src/redux/api/authApi.ts +0 -131
  814. package/src/redux/api/dashboardApi.ts +0 -56
  815. package/src/redux/api/dashboardQuestionApi.ts +0 -17
  816. package/src/redux/api/exportTemplateApi.tsx +0 -59
  817. package/src/redux/api/fetchBaseQuery.tsx +0 -65
  818. package/src/redux/api/fieldApi.ts +0 -86
  819. package/src/redux/api/importTransactionApi.tsx +0 -69
  820. package/src/redux/api/mediaApi.ts +0 -55
  821. package/src/redux/api/mediaStorageProviderApi.ts +0 -55
  822. package/src/redux/api/modelApi.ts +0 -80
  823. package/src/redux/api/moduleApi.ts +0 -72
  824. package/src/redux/api/permissionApi.ts +0 -32
  825. package/src/redux/api/pincodeApi.tsx +0 -56
  826. package/src/redux/api/roleApi.ts +0 -58
  827. package/src/redux/api/solidActionApi.ts +0 -66
  828. package/src/redux/api/solidChatterMessageApi.ts +0 -25
  829. package/src/redux/api/solidEntityApi.tsx +0 -164
  830. package/src/redux/api/solidMenuApi.ts +0 -71
  831. package/src/redux/api/solidServiceApi.ts +0 -31
  832. package/src/redux/api/solidSettingsApi.tsx +0 -83
  833. package/src/redux/api/solidViewApi.ts +0 -73
  834. package/src/redux/api/stateApi.tsx +0 -56
  835. package/src/redux/api/testApi.ts +0 -21
  836. package/src/redux/api/userApi.ts +0 -135
  837. package/src/redux/features/authSlice.ts +0 -19
  838. package/src/redux/features/dataViewSlice.ts +0 -26
  839. package/src/redux/features/navbarSlice.ts +0 -21
  840. package/src/redux/features/popupSlice.ts +0 -37
  841. package/src/redux/features/themeSlice.ts +0 -17
  842. package/src/redux/features/userSlice.ts +0 -28
  843. package/src/redux/hooks/useSolidPopup.ts +0 -20
  844. package/src/redux/store/StoreProvider.tsx +0 -52
  845. package/src/redux/store/createSolidStore.ts +0 -55
  846. package/src/redux/store/defaultStoreConfig.ts +0 -62
  847. package/src/resources/fonts/SF-Pro-Display-Black.otf +0 -0
  848. package/src/resources/fonts/SF-Pro-Display-Bold.otf +0 -0
  849. package/src/resources/fonts/SF-Pro-Display-Heavy.otf +0 -0
  850. package/src/resources/fonts/SF-Pro-Display-Light.otf +0 -0
  851. package/src/resources/fonts/SF-Pro-Display-Medium.otf +0 -0
  852. package/src/resources/fonts/SF-Pro-Display-Regular.otf +0 -0
  853. package/src/resources/fonts/SF-Pro-Display-Semibold.otf +0 -0
  854. package/src/resources/fonts/SF-Pro-Display-Thin.otf +0 -0
  855. package/src/resources/fonts/SF-Pro-Display-Ultralight.otf +0 -0
  856. package/src/resources/globals.css +0 -3597
  857. package/src/resources/images/AvatarDemo.png +0 -0
  858. package/src/resources/images/Background.svg +0 -3
  859. package/src/resources/images/Footerbg.png +0 -0
  860. package/src/resources/images/LoginBanner.png +0 -0
  861. package/src/resources/images/Navigation/Level.svg +0 -5
  862. package/src/resources/images/Navigation/Presure.svg +0 -7
  863. package/src/resources/images/Navigation/SolidSettinsIcon.svg +0 -1
  864. package/src/resources/images/Navigation/Temperature.svg +0 -13
  865. package/src/resources/images/Profile/Avatar.png +0 -0
  866. package/src/resources/images/SolidXLogo.svg +0 -21
  867. package/src/resources/images/activity.svg +0 -3
  868. package/src/resources/images/app-builder.png +0 -0
  869. package/src/resources/images/auth/solid-left-layout-bg.png +0 -0
  870. package/src/resources/images/auth/solid-login-light.png +0 -0
  871. package/src/resources/images/auth/solid-right-layout-bg.png +0 -0
  872. package/src/resources/images/clog-wheel.png +0 -0
  873. package/src/resources/images/dark-mode.png +0 -0
  874. package/src/resources/images/dashboard/Ellipse 1.svg +0 -10
  875. package/src/resources/images/dashboard/Rectangle 17.svg +0 -10
  876. package/src/resources/images/dashboard/Rectangle 25.svg +0 -11
  877. package/src/resources/images/dashboard/image 5.svg +0 -9
  878. package/src/resources/images/eye-icon.png +0 -0
  879. package/src/resources/images/fb.svg +0 -3
  880. package/src/resources/images/fileReader/image-jpg.png +0 -0
  881. package/src/resources/images/fileTypes/File.png +0 -0
  882. package/src/resources/images/fileTypes/Mp3.png +0 -0
  883. package/src/resources/images/fileTypes/Mp4.png +0 -0
  884. package/src/resources/images/filter-icon.png +0 -0
  885. package/src/resources/images/form/user.png +0 -0
  886. package/src/resources/images/iam.png +0 -0
  887. package/src/resources/images/icons/icon-activity.svg +0 -3
  888. package/src/resources/images/icons/icon-calender.svg +0 -3
  889. package/src/resources/images/icons/icon-graph.svg +0 -3
  890. package/src/resources/images/icons/icon-kanban.svg +0 -3
  891. package/src/resources/images/icons/icon-list.svg +0 -3
  892. package/src/resources/images/icons/icon-users.svg +0 -3
  893. package/src/resources/images/icons/jump-to-icon.png +0 -0
  894. package/src/resources/images/insta.svg +0 -3
  895. package/src/resources/images/layout/images/comfortable.png +0 -0
  896. package/src/resources/images/layout/images/compact.png +0 -0
  897. package/src/resources/images/layout/images/cozy.png +0 -0
  898. package/src/resources/images/layout/images/kanban.png +0 -0
  899. package/src/resources/images/li.svg +0 -3
  900. package/src/resources/images/loginhero.png +0 -0
  901. package/src/resources/images/logo.png +0 -0
  902. package/src/resources/images/mail-icon.png +0 -0
  903. package/src/resources/images/menu/app-builder.svg +0 -19
  904. package/src/resources/images/menu/iam.svg +0 -14
  905. package/src/resources/images/menu/logicloop-black.svg +0 -28
  906. package/src/resources/images/menu/logicloop-blue.svg +0 -32
  907. package/src/resources/images/menu/logicloop-white.svg +0 -32
  908. package/src/resources/images/menu/queues.svg +0 -14
  909. package/src/resources/images/menu/radix.svg +0 -9
  910. package/src/resources/images/menu/rl-lead-middleware.svg +0 -19
  911. package/src/resources/images/menu/solid-address-master.svg +0 -10
  912. package/src/resources/images/menu/srmd-tracker-black.svg +0 -16
  913. package/src/resources/images/menu/srmd-tracker-original.svg +0 -32
  914. package/src/resources/images/menu/srmd-tracker-white.svg +0 -17
  915. package/src/resources/images/menu/srmd-tracker.svg +0 -16
  916. package/src/resources/images/menu-icon.png +0 -0
  917. package/src/resources/images/menu-toggle.png +0 -0
  918. package/src/resources/images/password-icon.png +0 -0
  919. package/src/resources/images/profile.png +0 -0
  920. package/src/resources/images/radix-logo-white.png +0 -0
  921. package/src/resources/images/radix-logo.png +0 -0
  922. package/src/resources/images/search-icon.png +0 -0
  923. package/src/resources/images/signupBanner.png +0 -0
  924. package/src/resources/images/tw.svg +0 -3
  925. package/src/resources/images/user-icon.png +0 -0
  926. package/src/resources/solid-primereact.css +0 -2986
  927. package/src/resources/solid-responsive.css +0 -791
  928. package/src/resources/stylesheets/_config.scss +0 -54
  929. package/src/resources/stylesheets/_content.scss +0 -95
  930. package/src/resources/stylesheets/_footer.scss +0 -10
  931. package/src/resources/stylesheets/_main.scss +0 -49
  932. package/src/resources/stylesheets/_menu.scss +0 -183
  933. package/src/resources/stylesheets/_mixins.scss +0 -13
  934. package/src/resources/stylesheets/_responsive.scss +0 -101
  935. package/src/resources/stylesheets/_topbar.scss +0 -152
  936. package/src/resources/stylesheets/_typography.scss +0 -65
  937. package/src/resources/stylesheets/_utils.scss +0 -29
  938. package/src/resources/stylesheets/_variables.scss +0 -3
  939. package/src/resources/stylesheets/layout.scss +0 -11
  940. package/src/resources/themes/solid-dark-purple/theme.css +0 -6208
  941. package/src/resources/themes/solid-light-purple/solid-login-light.png +0 -0
  942. package/src/resources/themes/solid-light-purple/theme.css +0 -6263
  943. package/src/routes/AppEventListener.tsx +0 -28
  944. package/src/routes/guards/AuthGuard.tsx +0 -17
  945. package/src/routes/pages/ErrorPage.tsx +0 -6
  946. package/src/routes/pages/NotFoundPage.tsx +0 -5
  947. package/src/routes/pages/admin/AdminPage.tsx +0 -5
  948. package/src/routes/pages/admin/core/FormPage.tsx +0 -7
  949. package/src/routes/pages/admin/core/KanbanPage.tsx +0 -10
  950. package/src/routes/pages/admin/core/ListPage.tsx +0 -10
  951. package/src/routes/pages/admin/core/ModuleHomePage.tsx +0 -7
  952. package/src/routes/pages/admin/core/SettingsPage.tsx +0 -5
  953. package/src/routes/pages/auth/ConfirmForgotPasswordPage.tsx +0 -5
  954. package/src/routes/pages/auth/ForgotPasswordPage.tsx +0 -5
  955. package/src/routes/pages/auth/InitiateForgotPasswordPage.tsx +0 -5
  956. package/src/routes/pages/auth/InitiateForgotPasswordThankYouPage.tsx +0 -5
  957. package/src/routes/pages/auth/InitiateGoogleOauthPage.tsx +0 -5
  958. package/src/routes/pages/auth/InitiateLoginPage.tsx +0 -5
  959. package/src/routes/pages/auth/InitiateRegisterPage.tsx +0 -5
  960. package/src/routes/pages/auth/LoginPage.tsx +0 -10
  961. package/src/routes/pages/auth/RegisterPage.tsx +0 -5
  962. package/src/routes/pages/auth/ResetPasswordPage.tsx +0 -5
  963. package/src/routes/pages/auth/SsoPage.tsx +0 -79
  964. package/src/routes/solidRoutes.tsx +0 -89
  965. package/src/routes/types.ts +0 -34
  966. package/src/styles.ts +0 -4
  967. package/src/types/css-modules.d.ts +0 -4
  968. package/src/types/handlebars.d.ts +0 -4
  969. package/src/types/index.d.ts +0 -76
  970. package/src/types/layout.d.ts +0 -94
  971. package/src/types/next-auth.d.ts +0 -0
  972. package/src/types/next.d.ts +0 -46
  973. 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;