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