@solidstarters/solid-core-ui 1.1.211 → 1.1.212

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 (373) hide show
  1. package/dist/components/Svg/DevDocs.tsx +9 -0
  2. package/dist/components/Svg/DocsSvg.tsx +9 -0
  3. package/dist/components/Svg/ExcelSvg.tsx +15 -0
  4. package/dist/components/Svg/FieldSvg.tsx +9 -0
  5. package/dist/components/Svg/FileSvg.tsx +18 -0
  6. package/dist/components/Svg/HomePageModuleSvg.tsx +179 -0
  7. package/dist/components/Svg/ModelSvg.tsx +9 -0
  8. package/dist/components/Svg/ModuleSvg.tsx +9 -0
  9. package/dist/components/Svg/PDFSvg.tsx +15 -0
  10. package/dist/components/Svg/RightArrowSvg.tsx +9 -0
  11. package/dist/components/Svg/SettingsSvg.tsx +9 -0
  12. package/dist/components/auth/AuthLayout.tsx +223 -0
  13. package/dist/components/auth/ForgotPasswordThankYou.tsx +33 -0
  14. package/dist/components/auth/GoogleAuthChecking.tsx +63 -0
  15. package/dist/components/auth/SolidChangeForcePassword.tsx +222 -0
  16. package/dist/components/auth/SolidForgotPassword.tsx +127 -0
  17. package/dist/components/auth/SolidInitialLoginOtp.tsx +271 -0
  18. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +218 -0
  19. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  20. package/dist/components/auth/SolidLogin.js +14 -8
  21. package/dist/components/auth/SolidLogin.js.map +1 -1
  22. package/dist/components/auth/SolidLogin.tsx +428 -0
  23. package/dist/components/auth/SolidOTPVerify.tsx +133 -0
  24. package/dist/components/auth/SolidRegister.tsx +454 -0
  25. package/dist/components/auth/SolidResetPassword.tsx +194 -0
  26. package/dist/components/common/AuthBanner.tsx +41 -0
  27. package/dist/components/common/AutoCompleteField.tsx +79 -0
  28. package/dist/components/common/BackButton.tsx +72 -0
  29. package/dist/components/common/CancelButton.tsx +61 -0
  30. package/dist/components/common/CodeEditor.tsx +38 -0
  31. package/dist/components/common/CreateButton.tsx +17 -0
  32. package/dist/components/common/DownloadProgressToast.tsx +55 -0
  33. package/dist/components/common/DropzonePlaceholder.tsx +31 -0
  34. package/dist/components/common/DropzoneUpload.tsx +11 -0
  35. package/dist/components/common/FileReaderExt.tsx +20 -0
  36. package/dist/components/common/GeneralSettings.tsx +1225 -0
  37. package/dist/components/common/HeaderDynamicTitles.tsx +13 -0
  38. package/dist/components/common/MarkdownViewer.tsx +84 -0
  39. package/dist/components/common/MultipleSelectAutoCompleteField.tsx +64 -0
  40. package/dist/components/common/NotFound.tsx +22 -0
  41. package/dist/components/common/SingleSelectAutoCompleteField.tsx +73 -0
  42. package/dist/components/common/SocialMediaLogin.tsx +53 -0
  43. package/dist/components/common/SolidAdmin.tsx +6 -0
  44. package/dist/components/common/SolidBreadcrumb.tsx +129 -0
  45. package/dist/components/common/SolidExport.tsx +563 -0
  46. package/dist/components/common/SolidExportStepper.tsx +135 -0
  47. package/dist/components/common/SolidFieldTooltip.tsx +23 -0
  48. package/dist/components/common/SolidFormHeader.tsx +25 -0
  49. package/dist/components/common/SolidFormStepper.tsx +350 -0
  50. package/dist/components/common/SolidModuleHome.tsx +128 -0
  51. package/dist/components/common/SolidPopupContainer.tsx +37 -0
  52. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +45 -0
  53. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +45 -0
  54. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +20 -0
  55. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.tsx +15 -0
  56. package/dist/components/common/SolidSettings/SolidUploadedImage.tsx +16 -0
  57. package/dist/components/common/SolidThemeLink.tsx +6 -0
  58. package/dist/components/common/SolidThemeProvider.tsx +44 -0
  59. package/dist/components/common/StepperArrows/ActiveArrowStep.tsx +18 -0
  60. package/dist/components/common/StepperArrows/ActiveBeforeStepArrow.tsx +18 -0
  61. package/dist/components/common/StepperArrows/InactiveStepArrow.tsx +19 -0
  62. package/dist/components/common/error.tsx +30 -0
  63. package/dist/components/common/useHandleFormCustomButtonClick.ts +40 -0
  64. package/dist/components/common/useHandleListCustomButtonClick.ts +42 -0
  65. package/dist/components/core/chatter/SolidChatter.tsx +248 -0
  66. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +35 -0
  67. package/dist/components/core/chatter/SolidChatterCustomMessage.tsx +46 -0
  68. package/dist/components/core/chatter/SolidChatterDateDivider.tsx +16 -0
  69. package/dist/components/core/chatter/SolidChatterHeader.tsx +218 -0
  70. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +163 -0
  71. package/dist/components/core/chatter/SolidMessageComposer.tsx +146 -0
  72. package/dist/components/core/common/AvatarWidget.tsx +55 -0
  73. package/dist/components/core/common/DateFieldViewComponent.tsx +36 -0
  74. package/dist/components/core/common/FilterComponent.tsx +458 -0
  75. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
  76. package/dist/components/core/common/PDFViewer.tsx +117 -0
  77. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +89 -0
  78. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +188 -0
  79. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +139 -0
  80. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +311 -0
  81. package/dist/components/core/common/SolidCreateButton.tsx +48 -0
  82. package/dist/components/core/common/SolidGenericImport/DocumentSvg.tsx +15 -0
  83. package/dist/components/core/common/SolidGenericImport/SolidGenericImport.tsx +64 -0
  84. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +125 -0
  85. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +122 -0
  86. package/dist/components/core/common/SolidGenericImport/SolidImportStepper.tsx +217 -0
  87. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +205 -0
  88. package/dist/components/core/common/SolidGenericImport/SolidImportTransactionStatus.tsx +158 -0
  89. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +29 -0
  90. package/dist/components/core/common/SolidGlobalSearchElement.tsx +1470 -0
  91. package/dist/components/core/common/SolidLayoutViews.tsx +87 -0
  92. package/dist/components/core/common/SolidListViewOptions.tsx +31 -0
  93. package/dist/components/core/common/SolidLoaders/SolidCircularLoader.tsx +7 -0
  94. package/dist/components/core/common/SolidPasswordHelperText.tsx +34 -0
  95. package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +75 -0
  96. package/dist/components/core/common/SolidSearchBox.tsx +17 -0
  97. package/dist/components/core/common/SolidViewLayoutManager.ts +421 -0
  98. package/dist/components/core/common/SolidXAiIframe.tsx +77 -0
  99. package/dist/components/core/dashboard/SolidDashboard.tsx +332 -0
  100. package/dist/components/core/dashboard/SolidDashboardBody.tsx +117 -0
  101. package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +28 -0
  102. package/dist/components/core/dashboard/SolidDashboardHeader.tsx +10 -0
  103. package/dist/components/core/dashboard/SolidDashboardLoading.tsx +55 -0
  104. package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +32 -0
  105. package/dist/components/core/dashboard/SolidDashboardRenderError.tsx +29 -0
  106. package/dist/components/core/dashboard/SolidDashboardVariable.tsx +256 -0
  107. package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +78 -0
  108. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +18 -0
  109. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +54 -0
  110. package/dist/components/core/dashboard/chart-renderers/init-chartjs.ts +25 -0
  111. package/dist/components/core/dashboard/dashboard-utils.ts +39 -0
  112. package/dist/components/core/extension/solid-core/CustomIcon/StatusIcon.tsx +17 -0
  113. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +36 -0
  114. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.ts +18 -0
  115. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.ts +18 -0
  116. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +114 -0
  117. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +213 -0
  118. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +138 -0
  119. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +209 -0
  120. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +131 -0
  121. package/dist/components/core/field/FieldListViewData.tsx +313 -0
  122. package/dist/components/core/filter/SolidBooleanFilterElement.tsx +30 -0
  123. package/dist/components/core/filter/SolidFilterFields.tsx +131 -0
  124. package/dist/components/core/filter/SolidManyToManyFilterElement.tsx +64 -0
  125. package/dist/components/core/filter/SolidManyToOneFilterElement.tsx +61 -0
  126. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.tsx +50 -0
  127. package/dist/components/core/filter/SolidSelectionStaticFilterElement.tsx +32 -0
  128. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +209 -0
  129. package/dist/components/core/filter/fields/SolidBigintField.tsx +9 -0
  130. package/dist/components/core/filter/fields/SolidBooleanField.tsx +68 -0
  131. package/dist/components/core/filter/fields/SolidComputedField.tsx +23 -0
  132. package/dist/components/core/filter/fields/SolidDateField.tsx +63 -0
  133. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +54 -0
  134. package/dist/components/core/filter/fields/SolidDecimalField.tsx +9 -0
  135. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +52 -0
  136. package/dist/components/core/filter/fields/SolidFloatField.tsx +9 -0
  137. package/dist/components/core/filter/fields/SolidIdField.tsx +46 -0
  138. package/dist/components/core/filter/fields/SolidIntField.tsx +61 -0
  139. package/dist/components/core/filter/fields/SolidLongTextField.tsx +9 -0
  140. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +60 -0
  141. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +62 -0
  142. package/dist/components/core/filter/fields/SolidRelationField.tsx +17 -0
  143. package/dist/components/core/filter/fields/SolidRichTextField.tsx +9 -0
  144. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +52 -0
  145. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +54 -0
  146. package/dist/components/core/filter/fields/SolidShortTextField.tsx +60 -0
  147. package/dist/components/core/filter/fields/SolidTimeField.tsx +48 -0
  148. package/dist/components/core/filter/fields/SolidUuidField.tsx +51 -0
  149. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +62 -0
  150. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +84 -0
  151. package/dist/components/core/form/SolidFormActionHeader.tsx +497 -0
  152. package/dist/components/core/form/SolidFormFieldRender.tsx +53 -0
  153. package/dist/components/core/form/SolidFormFieldRenderExtension.tsx +26 -0
  154. package/dist/components/core/form/SolidFormFooter.tsx +162 -0
  155. package/dist/components/core/form/SolidFormLayouts.tsx +104 -0
  156. package/dist/components/core/form/SolidFormUserViewLayout.tsx +84 -0
  157. package/dist/components/core/form/SolidFormView.tsx +1856 -0
  158. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +52 -0
  159. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +52 -0
  160. package/dist/components/core/form/SolidFormViewShimmerLoading.tsx +109 -0
  161. package/dist/components/core/form/fields/ISolidField.tsx +71 -0
  162. package/dist/components/core/form/fields/SolidBooleanField.tsx +434 -0
  163. package/dist/components/core/form/fields/SolidDateField.tsx +247 -0
  164. package/dist/components/core/form/fields/SolidDateTimeField.tsx +229 -0
  165. package/dist/components/core/form/fields/SolidDecimalField.tsx +171 -0
  166. package/dist/components/core/form/fields/SolidEmailField.tsx +176 -0
  167. package/dist/components/core/form/fields/SolidIntegerField.tsx +282 -0
  168. package/dist/components/core/form/fields/SolidJsonField.tsx +185 -0
  169. package/dist/components/core/form/fields/SolidLongTextField.tsx +618 -0
  170. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +663 -0
  171. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +547 -0
  172. package/dist/components/core/form/fields/SolidPasswordField.tsx +390 -0
  173. package/dist/components/core/form/fields/SolidRelationField.tsx +56 -0
  174. package/dist/components/core/form/fields/SolidRichTextField.tsx +188 -0
  175. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +340 -0
  176. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +462 -0
  177. package/dist/components/core/form/fields/SolidShortTextField.tsx +399 -0
  178. package/dist/components/core/form/fields/SolidTimeField.tsx +245 -0
  179. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +453 -0
  180. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +1036 -0
  181. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +627 -0
  182. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +38 -0
  183. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +64 -0
  184. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +135 -0
  185. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +144 -0
  186. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +265 -0
  187. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +32 -0
  188. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +50 -0
  189. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +222 -0
  190. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +70 -0
  191. package/dist/components/core/form/widgets/CustomHtml.tsx +20 -0
  192. package/dist/components/core/kanban/KanbanBoard.tsx +150 -0
  193. package/dist/components/core/kanban/KanbanCard.tsx +279 -0
  194. package/dist/components/core/kanban/KanbanColumn.tsx +139 -0
  195. package/dist/components/core/kanban/KanbanUserViewLayout.tsx +84 -0
  196. package/dist/components/core/kanban/SolidKanbanView.tsx +894 -0
  197. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +154 -0
  198. package/dist/components/core/kanban/SolidKanbanViewFields.tsx +164 -0
  199. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
  200. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
  201. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
  202. package/dist/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
  203. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
  204. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +16 -0
  205. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
  206. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
  207. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
  208. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
  209. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
  210. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
  211. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
  212. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +20 -0
  213. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
  214. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +140 -0
  215. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +164 -0
  216. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
  217. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
  218. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +14 -0
  219. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
  220. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +121 -0
  221. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
  222. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
  223. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
  224. package/dist/components/core/list/ListViewRowActionPopup.tsx +41 -0
  225. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +242 -0
  226. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +111 -0
  227. package/dist/components/core/list/SolidListView.tsx +2007 -0
  228. package/dist/components/core/list/SolidListViewColumn.tsx +165 -0
  229. package/dist/components/core/list/SolidListViewConfigure.tsx +339 -0
  230. package/dist/components/core/list/SolidListViewHeaderButton.tsx +31 -0
  231. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +30 -0
  232. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +41 -0
  233. package/dist/components/core/list/SolidListViewShimmerLoading.tsx +78 -0
  234. package/dist/components/core/list/SolidListingHeader.tsx +42 -0
  235. package/dist/components/core/list/SolidManyToOneFilterElement.tsx +60 -0
  236. package/dist/components/core/list/SolidSelectionDynamicFilterElement.tsx +50 -0
  237. package/dist/components/core/list/SolidSelectionStaticFilterElement.tsx +32 -0
  238. package/dist/components/core/list/SolidTableRowCell.tsx +35 -0
  239. package/dist/components/core/list/SolidVarInputsFilterElement.tsx +184 -0
  240. package/dist/components/core/list/columns/SolidBigintColumn.tsx +9 -0
  241. package/dist/components/core/list/columns/SolidBooleanColumn.tsx +90 -0
  242. package/dist/components/core/list/columns/SolidComputedColumn.tsx +27 -0
  243. package/dist/components/core/list/columns/SolidDateColumn.tsx +90 -0
  244. package/dist/components/core/list/columns/SolidDatetimeColumn.tsx +79 -0
  245. package/dist/components/core/list/columns/SolidDecimalColumn.tsx +9 -0
  246. package/dist/components/core/list/columns/SolidExternalIdColumn.tsx +80 -0
  247. package/dist/components/core/list/columns/SolidFloatColumn.tsx +9 -0
  248. package/dist/components/core/list/columns/SolidIdColumn.tsx +79 -0
  249. package/dist/components/core/list/columns/SolidIntColumn.tsx +87 -0
  250. package/dist/components/core/list/columns/SolidLongTextColumn.tsx +9 -0
  251. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +301 -0
  252. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +170 -0
  253. package/dist/components/core/list/columns/SolidRelationColumn.tsx +21 -0
  254. package/dist/components/core/list/columns/SolidRichTextColumn.tsx +9 -0
  255. package/dist/components/core/list/columns/SolidSelectionDynamicColumn.tsx +80 -0
  256. package/dist/components/core/list/columns/SolidSelectionStaticColumn.tsx +81 -0
  257. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +160 -0
  258. package/dist/components/core/list/columns/SolidTimeColumn.tsx +78 -0
  259. package/dist/components/core/list/columns/SolidUuidColumn.tsx +79 -0
  260. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +106 -0
  261. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +117 -0
  262. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +110 -0
  263. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +30 -0
  264. package/dist/components/core/list/widgets/SolidManyToOneRelationAvatarListWidget.tsx +30 -0
  265. package/dist/components/core/list/widgets/SolidShortTextAvatarWidget.tsx +70 -0
  266. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +21 -0
  267. package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +91 -0
  268. package/dist/components/core/locales/SolidLocale.tsx +127 -0
  269. package/dist/components/core/model/CreateModel.tsx +495 -0
  270. package/dist/components/core/model/FieldMetaData.tsx +263 -0
  271. package/dist/components/core/model/FieldMetaDataForm.tsx +3509 -0
  272. package/dist/components/core/model/FieldSelector.tsx +62 -0
  273. package/dist/components/core/model/ModelListViewData.tsx +384 -0
  274. package/dist/components/core/model/ModelMetaData.tsx +921 -0
  275. package/dist/components/core/module/CreateModule.tsx +617 -0
  276. package/dist/components/core/module/ModuleListViewData.tsx +431 -0
  277. package/dist/components/core/solid-ai/SolidAiMainWrapper.tsx +8 -0
  278. package/dist/components/core/solid-ai/SolidXAIIcon.tsx +37 -0
  279. package/dist/components/core/users/CreateUser.tsx +467 -0
  280. package/dist/components/core/users/CreateUserRole.tsx +212 -0
  281. package/dist/components/core/users/UserListView.tsx +376 -0
  282. package/dist/components/layout/AdminLayout.tsx +57 -0
  283. package/dist/components/layout/AdminSidebar.tsx +65 -0
  284. package/dist/components/layout/AppConfig.tsx +104 -0
  285. package/dist/components/layout/AppSidebar.tsx +232 -0
  286. package/dist/components/layout/ButtonLoader.tsx +7 -0
  287. package/dist/components/layout/CustomPagination.tsx +55 -0
  288. package/dist/components/layout/DashboardHeader.tsx +89 -0
  289. package/dist/components/layout/FilterMenu.tsx +122 -0
  290. package/dist/components/layout/Footer.tsx +13 -0
  291. package/dist/components/layout/GlobalSearch.tsx +37 -0
  292. package/dist/components/layout/Header.tsx +8 -0
  293. package/dist/components/layout/Layout.tsx +205 -0
  294. package/dist/components/layout/ListingHeader.tsx +204 -0
  295. package/dist/components/layout/Loader.tsx +16 -0
  296. package/dist/components/layout/UserSidebar.tsx +53 -0
  297. package/dist/components/layout/context/layoutcontext.tsx +52 -0
  298. package/dist/components/layout/navbar-one.tsx +258 -0
  299. package/dist/components/layout/navbar-two-menu.tsx +72 -0
  300. package/dist/components/layout/navbar-two.tsx +37 -0
  301. package/dist/components/layout/user-profile-menu.tsx +213 -0
  302. package/dist/components/layout/user-profile.tsx +7 -0
  303. package/dist/components/modelsComponents/filterIcon.tsx +9 -0
  304. package/dist/constants/error-messages.ts +238 -0
  305. package/dist/declarations.d.ts +22 -0
  306. package/dist/helpers/AppTitle.tsx +12 -0
  307. package/dist/helpers/ToastContainer.tsx +94 -0
  308. package/dist/helpers/autoCompleteVirtualScroll.ts +41 -0
  309. package/dist/helpers/countries.tsx +260 -0
  310. package/dist/helpers/downloadFileWithProgress.ts +91 -0
  311. package/dist/helpers/downloadMediaFile.tsx +21 -0
  312. package/dist/helpers/getAcceptedFileTypes.tsx +22 -0
  313. package/dist/helpers/getRandomColors.tsx +68 -0
  314. package/dist/helpers/helpers.ts +61 -0
  315. package/dist/helpers/hydrateRelationRules.ts +120 -0
  316. package/dist/helpers/permissions.ts +7 -0
  317. package/dist/helpers/registry.ts +337 -0
  318. package/dist/helpers/resendOtpHelper.tsx +5 -0
  319. package/dist/helpers/revalidate.ts +7 -0
  320. package/dist/helpers/rolesHelper.ts +17 -0
  321. package/dist/helpers/solidIcons.tsx +1831 -0
  322. package/dist/helpers/updatePasswordField.ts +41 -0
  323. package/dist/index.ts +421 -0
  324. package/dist/nextAuth/authProviders.d.ts.map +1 -1
  325. package/dist/nextAuth/authProviders.js +6 -5
  326. package/dist/nextAuth/authProviders.js.map +1 -1
  327. package/dist/nextAuth/authProviders.tsx +232 -0
  328. package/dist/nextAuth/handleLogout.tsx +39 -0
  329. package/dist/nextAuth/refreshAccessToken.tsx +28 -0
  330. package/dist/redux/api/aiInteractionApi.ts +59 -0
  331. package/dist/redux/api/authApi.ts +131 -0
  332. package/dist/redux/api/dashboardApi.ts +56 -0
  333. package/dist/redux/api/dashboardQuestionApi.ts +17 -0
  334. package/dist/redux/api/exportTemplateApi.tsx +59 -0
  335. package/dist/redux/api/fetchBaseQuery.tsx +118 -0
  336. package/dist/redux/api/fieldApi.ts +86 -0
  337. package/dist/redux/api/importTransactionApi.tsx +69 -0
  338. package/dist/redux/api/mediaApi.ts +55 -0
  339. package/dist/redux/api/mediaStorageProviderApi.ts +55 -0
  340. package/dist/redux/api/modelApi.ts +80 -0
  341. package/dist/redux/api/moduleApi.ts +72 -0
  342. package/dist/redux/api/permissionApi.ts +32 -0
  343. package/dist/redux/api/pincodeApi.tsx +56 -0
  344. package/dist/redux/api/roleApi.ts +58 -0
  345. package/dist/redux/api/solidActionApi.ts +66 -0
  346. package/dist/redux/api/solidChatterMessageApi.ts +25 -0
  347. package/dist/redux/api/solidEntityApi.tsx +164 -0
  348. package/dist/redux/api/solidMenuApi.ts +71 -0
  349. package/dist/redux/api/solidServiceApi.ts +31 -0
  350. package/dist/redux/api/solidSettingsApi.tsx +83 -0
  351. package/dist/redux/api/solidViewApi.ts +73 -0
  352. package/dist/redux/api/stateApi.tsx +56 -0
  353. package/dist/redux/api/testApi.ts +21 -0
  354. package/dist/redux/api/userApi.ts +135 -0
  355. package/dist/redux/features/authSlice.ts +19 -0
  356. package/dist/redux/features/dataViewSlice.ts +26 -0
  357. package/dist/redux/features/navbarSlice.ts +21 -0
  358. package/dist/redux/features/popupSlice.ts +37 -0
  359. package/dist/redux/features/settingsSlice.ts +60 -0
  360. package/dist/redux/features/themeSlice.ts +17 -0
  361. package/dist/redux/features/userSlice.ts +28 -0
  362. package/dist/redux/hooks/useSolidPopup.ts +20 -0
  363. package/dist/redux/store/defaultStoreConfig.ts +62 -0
  364. package/dist/styles.ts +4 -0
  365. package/dist/types/handlebars.d.ts +4 -0
  366. package/dist/types/index.d.ts +76 -0
  367. package/dist/types/layout.d.ts +94 -0
  368. package/dist/types/next-auth.d.ts +0 -0
  369. package/dist/types/next.d.ts +46 -0
  370. package/dist/types/solid-core.d.ts +320 -0
  371. package/package.json +1 -1
  372. package/src/components/auth/SolidLogin.tsx +26 -13
  373. package/src/nextAuth/authProviders.tsx +9 -5
@@ -0,0 +1,921 @@
1
+ 'use client';
2
+ import { SingleSelectAutoCompleteField } from "../../../components/common/SingleSelectAutoCompleteField";
3
+ import { ERROR_MESSAGES } from "../../../constants/error-messages";
4
+ import { getSingularAndPlural } from "../../../helpers/helpers";
5
+ import { useGetFieldDefaultMetaDataQuery } from "../../../redux/api/fieldApi";
6
+ import { useLazyGetModelsQuery } from "../../../redux/api/modelApi";
7
+ import { useLazyGetmodulesQuery } from "../../../redux/api/moduleApi";
8
+ import { useFormik } from "formik";
9
+ import { snakeCase } from "lodash";
10
+ import { usePathname, useRouter } from "next/navigation";
11
+ import { Checkbox } from "primereact/checkbox";
12
+ import { Divider } from "primereact/divider";
13
+ import { InputText } from "primereact/inputtext";
14
+ import { InputTextarea } from "primereact/inputtextarea";
15
+ import { Message } from "primereact/message";
16
+ import { Panel } from "primereact/panel";
17
+ import { Toast } from "primereact/toast";
18
+ import { classNames } from "primereact/utils";
19
+ import qs from "qs";
20
+ import React, { useEffect, useRef, useState } from "react";
21
+ import * as Yup from "yup";
22
+
23
+ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allModelsNames, deleteModelFunction, nextTab, formikModelMetadataRef, params, formErrors, setIsDirty }: any, ref) => {
24
+
25
+ // const ModelMetaData = ({ modelMetaData, setModelMetaData, deleteModelFunction, nextTab, formikModelMetadataRef }: any) => {
26
+
27
+ const router = useRouter();
28
+ const toast = useRef<Toast>(null);
29
+ const pathname = usePathname();
30
+
31
+ const [triggerGetModules, { data: moduleData, isFetching: isModuleFetching, error: moduleError }] = useLazyGetmodulesQuery();
32
+ const [triggerGetModels, { data: modelData, isFetching: isModelFetching, error: modelError }] = useLazyGetModelsQuery();
33
+ const { data: fieldDefaultMetaData, isLoading, error, refetch } = useGetFieldDefaultMetaDataQuery(null);
34
+
35
+
36
+ const dataSourceTypes = [
37
+ { label: "Mysql", value: "mysql" },
38
+ { label: "Postgres", value: "postgres" },
39
+ { label: "Mssql", value: "mssql" },
40
+ { label: "Oracle", value: "oracle" },
41
+ { label: "Mariadb", value: "mariadb" },
42
+ ];
43
+
44
+
45
+
46
+ const initialValues = {
47
+ singularName: modelMetaData ? modelMetaData?.singularName : "",
48
+ pluralName: modelMetaData ? modelMetaData?.pluralName : "",
49
+ displayName: modelMetaData ? modelMetaData?.displayName : "",
50
+ description: modelMetaData ? modelMetaData?.description : "",
51
+ dataSource: modelMetaData ? modelMetaData?.dataSource : "",
52
+ dataSourceType: modelMetaData ? modelMetaData?.dataSourceType : "",
53
+ tableName: modelMetaData ? modelMetaData?.tableName : null,
54
+ moduleId: modelMetaData ? modelMetaData?.module?.id : "",
55
+ module: modelMetaData ? modelMetaData?.module : "",
56
+ isSystem: modelMetaData ? modelMetaData?.isSystem : false,
57
+ enableSoftDelete: modelMetaData ? modelMetaData?.enableSoftDelete : "",
58
+ enableAuditTracking: modelMetaData ? modelMetaData?.enableAuditTracking : true,
59
+ internationalisation: modelMetaData ? modelMetaData?.internationalisation : "",
60
+ draftPublishWorkflow: modelMetaData ? modelMetaData?.draftPublishWorkflow : "",
61
+ isChild: modelMetaData ? modelMetaData?.isChild : "",
62
+ parentModelId: modelMetaData ? modelMetaData?.parentModel?.id : "",
63
+ parentModel: modelMetaData ? modelMetaData?.parentModel : "",
64
+ isLegacyTable: modelMetaData ? modelMetaData?.isLegacyTable : false,
65
+ isLegacyTableWithId: modelMetaData ? modelMetaData?.isLegacyTableWithId : false,
66
+ };
67
+
68
+ const [showTableName, setShowTableName] = useState<any>(false);
69
+ const [showParentModel, setShowParentModel] = useState<any>(false);
70
+ const [selectedModule, setSelectedModule] = useState<any>(null);
71
+
72
+
73
+ useEffect(() => {
74
+ if (modelMetaData && modelMetaData.tableName) {
75
+ setShowTableName(true)
76
+ }
77
+ if (modelMetaData && modelMetaData.isChild) {
78
+ setShowParentModel(true)
79
+ }
80
+ else if (modelMetaData && !modelMetaData.isChild) {
81
+ setShowParentModel(false)
82
+ }
83
+ }, [modelMetaData])
84
+
85
+ const validationSchema = Yup.object({
86
+ singularName: Yup.string()
87
+ // .matches(
88
+ // /^[a-z]+(-[a-z]+)*$/,
89
+ // "Invalid format. Use lowercase letters and hyphens only."
90
+ // )
91
+ .notOneOf(allModelsNames, ERROR_MESSAGES.FIELD_ALREADY_USE('Name', 'name'))
92
+ .required(ERROR_MESSAGES.FIELD_REUQIRED('Singular Name')),
93
+ pluralName: Yup.string()
94
+ // .matches(
95
+ // /^[a-z]+(-[a-z]+)*$/,
96
+ // "Invalid format. Use lowercase letters and hyphens only."
97
+ // )
98
+ .required(ERROR_MESSAGES.FIELD_REUQIRED('Plural Name')),
99
+ // tableName: Yup.string().required().matches(/^[a-z0-9_]+$/, ERROR_MESSAGES.SNAKE_CASE('Tabale')),
100
+ displayName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED("Display Name")),
101
+ description: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED("Description Name")),
102
+ dataSource: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED("Data Source")),
103
+ dataSourceType: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED("Data Source Type")),
104
+ moduleId: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED("Module Id")),
105
+ module: Yup.object().required(ERROR_MESSAGES.FIELD_REUQIRED("Module")),
106
+ isSystem: Yup.boolean(),
107
+ enableSoftDelete: Yup.boolean(),
108
+ enableAuditTracking: Yup.boolean(),
109
+ internationalisation: Yup.boolean(),
110
+ draftPublishWorkflow: Yup.boolean(),
111
+ isChild: Yup.boolean(),
112
+ parentModelId: Yup.number().when("isChild", (isChild: any, schema) => {
113
+ if (isChild.length > 0 && isChild[0] == true) {
114
+ return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Parent Model Id'))
115
+ } else {
116
+ return schema.notRequired().nullable();
117
+ }
118
+ }),
119
+ parentModel: Yup.object().when("isChild", (isChild: any, schema) => {
120
+ if (isChild.length > 0 && isChild[0] == true) {
121
+ return schema.required(ERROR_MESSAGES.FIELD_REUQIRED('Parent Model'))
122
+ } else {
123
+ return schema.notRequired().nullable();
124
+ }
125
+ }),
126
+ isLegacyTable: Yup.boolean(),
127
+ isLegacyTableWithId: Yup.boolean(),
128
+ });
129
+
130
+
131
+
132
+ const isFormFieldValid = (formik: any, fieldName: string) =>
133
+ formik.touched[fieldName] && formik.errors[fieldName];
134
+
135
+ const formik = useFormik({
136
+ initialValues,
137
+ validationSchema,
138
+ validateOnChange: true, // This ensures validation runs when a field value is changed
139
+ enableReinitialize: true,
140
+ innerRef: formikModelMetadataRef,
141
+ onSubmit: async (values) => {
142
+ const tableName = generateTableName(values.module.displayName, values.singularName);
143
+ try {
144
+ const modelData = {
145
+ ...modelMetaData,
146
+ singularName: values.singularName,
147
+ pluralName: values.pluralName,
148
+ displayName: values.displayName,
149
+ description: values.description,
150
+ dataSource: values.dataSource,
151
+ dataSourceType: values.dataSourceType,
152
+ tableName: values?.tableName || tableName,
153
+ moduleId: values.moduleId,
154
+ module: values.module,
155
+ isSystem: values.isSystem ? values.isSystem === true : '',
156
+ enableSoftDelete: values.enableSoftDelete === true ? true : '',
157
+ enableAuditTracking: values.enableAuditTracking === true ? true : '',
158
+ internationalisation: values.internationalisation === true ? true : '',
159
+ draftPublishWorkflow: values.draftPublishWorkflow === true ? true : '',
160
+ isChild: values.isChild === true ? true : '',
161
+ ...(values.isChild == true && {
162
+ parentModelId: values.parentModelId,
163
+ parentModel: values.parentModel,
164
+ }),
165
+ isLegacyTable: values.isLegacyTable === true ? true : false,
166
+ isLegacyTableWithId: values.isLegacyTableWithId === true ? true : false,
167
+ };
168
+ setModelMetaData(modelData);
169
+ nextTab()
170
+
171
+ } catch (err) {
172
+ console.error(ERROR_MESSAGES.CREATE_MODEL, err);
173
+ }
174
+ },
175
+ });
176
+
177
+ function generateTableName(moduleSlug: string, modelName: string): string {
178
+ const snakeCaseModelName = snakeCase(modelName);
179
+ const sankeCaseModuleName = snakeCase(moduleSlug);
180
+ return `${sankeCaseModuleName}_${snakeCaseModelName}`;
181
+ }
182
+
183
+ const showError = async () => {
184
+ const errors = await formik.validateForm(); // Trigger validation and get the updated errors
185
+ const errorMessages = Object.values(errors);
186
+ if (errorMessages.length > 0) {
187
+ toast?.current?.show({
188
+ severity: "error",
189
+ summary: ERROR_MESSAGES.SEND_REPORT,
190
+ // sticky: true,
191
+ life: 3000,
192
+ //@ts-ignore
193
+ content: (props) => (
194
+ <div
195
+ className="flex flex-column align-items-left"
196
+ style={{ flex: "1" }}
197
+ >
198
+ {errorMessages.map((m, index) => (
199
+ <div className="flex align-items-center gap-2" key={index}>
200
+ <span className="font-bold text-900">{String(m)}</span>
201
+ </div>
202
+ ))}
203
+ </div>
204
+ ),
205
+ });
206
+ }
207
+ };
208
+
209
+
210
+ const searchModule = async (event: any) => {
211
+ try {
212
+ const query = event.query;
213
+ const queryData = {
214
+ limit: 10,
215
+ offset: 0,
216
+ filters: {
217
+ name: {
218
+ $containsi: query,
219
+ },
220
+ },
221
+ };
222
+
223
+ const queryString = qs.stringify(queryData, {
224
+ encodeValuesOnly: true,
225
+ });
226
+
227
+ const result = await triggerGetModules(queryString).unwrap();
228
+
229
+ if (result && result.records) {
230
+ const updatedSuggestion = [...result.records];
231
+ return updatedSuggestion
232
+ } else {
233
+ return []
234
+ }
235
+ } catch (error) {
236
+ return []
237
+ }
238
+ };
239
+
240
+
241
+ const searchModel = async (event: any) => {
242
+ try {
243
+ const query = event.query;
244
+ const queryData = {
245
+ limit: 10,
246
+ offset: 0,
247
+ filters: {
248
+ singularName: {
249
+ $containsi: query,
250
+ },
251
+ },
252
+ };
253
+
254
+ // Add module filter dynamically
255
+ if (selectedModule?.name) {
256
+ (queryData.filters as any)["module"] = {
257
+ name: { $containsi: selectedModule.name },
258
+ };
259
+ }
260
+
261
+
262
+ const queryString = qs.stringify(queryData, {
263
+ encodeValuesOnly: true,
264
+ });
265
+
266
+ const result = await triggerGetModels(queryString).unwrap();
267
+
268
+ if (result && result.records) {
269
+ const updatedSuggestion = [...result.records];
270
+ return updatedSuggestion
271
+ } else {
272
+ return []
273
+ }
274
+ } catch (error) {
275
+ return []
276
+ }
277
+ };
278
+
279
+
280
+ const serachDataSource = async (event: any) => {
281
+ const query = event.query;
282
+ try {
283
+ const filterredData: any = fieldDefaultMetaData.data.dataSource.filter((t: any) => t.name.toLowerCase().startsWith(query.toLowerCase()));
284
+ const transformedData = filterredData.map((e: any) => ({ label: e.name, value: e.name, type: e.type }));
285
+ return transformedData
286
+ } catch (error) {
287
+ console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
288
+ return []
289
+ }
290
+ };
291
+
292
+
293
+ const serachDataSourceType = async (event: any) => {
294
+ const query = event.query;
295
+ try {
296
+
297
+ const filterredData: any = fieldDefaultMetaData.data.dataSource.filter((t: any) => t.type.toLowerCase().startsWith(query.toLowerCase()));
298
+ const transformedData = filterredData.map((e: any) => ({ label: e.type, value: e.type }))
299
+ return transformedData;
300
+ } catch (error) {
301
+ console.error(ERROR_MESSAGES.FETCHING_ITEMS, error);
302
+ return [];
303
+
304
+ }
305
+ };
306
+
307
+
308
+ // useEffect(() => {
309
+ // if (modelMetaData) {
310
+ // setModelMetaData(modelMetaData.parentCategoryId);
311
+
312
+ // // formik.setFieldValue("parentCategoryId", modelMetaData.parentCategoryId);
313
+ // }
314
+ // }, [modelMetaData])
315
+
316
+
317
+ // Set the formik reference to the formik instance
318
+ // Set the formik reference to the formik instance
319
+ useEffect(() => {
320
+ if (formikModelMetadataRef) {
321
+ formikModelMetadataRef.current = formik; // Assign the formik instance to the ref
322
+ }
323
+ }, [formik, formikModelMetadataRef]);
324
+
325
+
326
+ const renderCount = useRef(0);
327
+
328
+ useEffect(() => {
329
+ renderCount.current += 1; // Increment count on every render
330
+ });
331
+
332
+
333
+ useEffect(() => {
334
+ formik.validateForm();
335
+ setModelMetaData(formik.values);
336
+
337
+ }, [formik.values])
338
+
339
+ useEffect(() => {
340
+ if (formik.dirty) {
341
+ setIsDirty(true);
342
+ }
343
+ }, [formik.dirty]);
344
+
345
+ return (
346
+
347
+ <>
348
+ <Toast ref={toast} />
349
+ <form onSubmit={formik.handleSubmit}>
350
+ {/* <div className="form-wrapper-subtitle">Name</div> */}
351
+ <div className="">
352
+ <div className="grid formgrid">
353
+ <div className="field col-12 lg:col-6 lg:pr-3">
354
+ {/* <p className="form-wrapper-heading text-base">Basic Info</p> */}
355
+ <Panel header={"Basic Info"} className="solid-column-panel">
356
+ <div className="flex flex-column gap-2 mt-3">
357
+ <label htmlFor="type" className="form-field-label">
358
+ Module
359
+ </label>
360
+ <SingleSelectAutoCompleteField
361
+ disabled={params.id !== 'new'}
362
+ key="module"
363
+ formik={formik}
364
+ isFormFieldValid={isFormFieldValid}
365
+ relationField={true}
366
+ fieldName="module"
367
+ fieldNameId="moduleId"
368
+ labelKey="displayName"
369
+ valueKey="id"
370
+ searchData={searchModule}
371
+ existingData={formik.values.module}
372
+ formErrors={formErrors}
373
+ additionalAction={(e: any) => setSelectedModule(e.value)}
374
+ />
375
+ {(isFormFieldValid(formik, "module") || (formErrors["module"])) && (
376
+ <Message severity="error" text={formik?.errors?.moduleId?.toString()} />
377
+ )}
378
+ </div>
379
+
380
+ <div className="flex flex-column gap-2 mt-3 lg:mt-4">
381
+ <label htmlFor="dataSource" className="form-field-label">
382
+ Data Source
383
+ </label>
384
+ <SingleSelectAutoCompleteField
385
+ disabled={params.id !== 'new'}
386
+ key="dataSource"
387
+ formik={formik}
388
+ isFormFieldValid={isFormFieldValid}
389
+ // relationField={false}
390
+ fieldName="dataSource"
391
+ fieldNameId={null}
392
+ labelKey="label"
393
+ valueKey="value"
394
+ searchData={serachDataSource}
395
+ existingData={formik.values.dataSource}
396
+ additionalAction={(e: any) => formik.setFieldValue("dataSourceType", e.target.value.type)}
397
+ formErrors={formErrors}
398
+ />
399
+ {formik.values.dataSourceType && <p className="form-field-label text-sm">Your datasource will connect to a {formik.values.dataSourceType} database</p>}
400
+ {(isFormFieldValid(formik, "dataSource") || (formErrors["dataSource"])) && (
401
+ <Message severity="error" text={formik?.errors?.dataSource?.toString()} />
402
+ )}
403
+ </div>
404
+
405
+
406
+ {/* <div className="field col-12 flex flex-column gap-2 my-4">
407
+ <label htmlFor="dataSourceType" className="form-field-label">
408
+ Data Source Type
409
+ </label>
410
+ <SingleSelectAutoCompleteField
411
+ key="dataSourceType"
412
+ formik={formik}
413
+ isFormFieldValid={isFormFieldValid}
414
+ // relationField={false}
415
+ fieldName="dataSourceType"
416
+ fieldNameId={null}
417
+ labelKey="label"
418
+ valueKey="value"
419
+ searchData={serachDataSourceType}
420
+ existingData={formik.values.dataSourceType}
421
+ />
422
+ <InputText
423
+ disabled
424
+ type="text"
425
+ id="dataSourceType"
426
+ name="dataSourceType"
427
+ onChange={formik.handleChange}
428
+ value={formik.values.dataSourceType}
429
+ className={classNames("", {
430
+ "p-invalid": isFormFieldValid(formik, "dataSourceType"),
431
+ })}
432
+ />
433
+
434
+
435
+ {isFormFieldValid(formik, "dataSourceType") && (
436
+ <Message severity="error" text={formik?.errors?.dataSourceType?.toString()} />
437
+ )}
438
+ </div>*/}
439
+ </Panel>
440
+ {/* <Divider /> */}
441
+ {/* <p className="form-wrapper-heading text-base">Configurations</p> */}
442
+ <Panel header={"Configurations"} className="solid-column-panel mt-3 mb-3 lg:mt-5">
443
+ {/* {params.id === 'new' &&
444
+
445
+ <div className="field col-6">
446
+ <div className="flex align-items-center gap-2">
447
+ <Checkbox
448
+ disabled={params.id !== 'new'}
449
+ name="isSystem"
450
+ onChange={(e) => {
451
+ formik.setFieldValue("isSystem", e.checked);
452
+ }}
453
+ checked={formik.values.isSystem}
454
+ ></Checkbox>
455
+ <label htmlFor="isSystem" className="form-field-label">
456
+ Is System
457
+ </label>
458
+ </div>
459
+ {isFormFieldValid(formik, "isSystem") && (
460
+ <Message
461
+ severity="error"
462
+ text={formik?.errors?.isSystem?.toString()}
463
+ />
464
+ )}
465
+ </div>} */}
466
+ <div className="flex align-items-center gap-2 mt-3">
467
+ <Checkbox
468
+ name="enableSoftDelete"
469
+ onChange={(e) => {
470
+ formik.setFieldValue("enableSoftDelete", e.checked);
471
+ }}
472
+ disabled={params.id !== 'new'}
473
+ checked={formik.values.enableSoftDelete}
474
+ ></Checkbox>
475
+ <label htmlFor="enableSoftDelete" className="form-field-label">
476
+ Enable Soft Delete
477
+ </label>
478
+ </div>
479
+ {params.id !== 'new' && <p className="form-field-label mt-1 text-sm">Soft-delete can only be set during initial creation to maintain data integrity</p>}
480
+ {(isFormFieldValid(formik, "enableSoftDelete") || (formErrors["enableSoftDelete"])) && (
481
+ <Message
482
+ severity="error"
483
+ text={formik?.errors?.enableSoftDelete?.toString()}
484
+ className="mt-2"
485
+ />
486
+ )}
487
+
488
+ <div className="flex align-items-center gap-2 mt-3">
489
+ <Checkbox
490
+ name="isChild"
491
+ onChange={(e) => {
492
+ formik.setFieldValue("isChild", e.checked);
493
+ }}
494
+ disabled={params.id !== 'new'}
495
+ checked={formik.values.isChild}
496
+ ></Checkbox>
497
+ <label htmlFor="isChild" className="form-field-label">
498
+ Is Child
499
+ </label>
500
+ </div>
501
+ {params.id !== 'new' && <p className="form-field-label mt-1 text-sm">Is Current Model child of another Model</p>}
502
+ {(isFormFieldValid(formik, "isChild") || (formErrors["isChild"])) && (
503
+ <Message
504
+ severity="error"
505
+ text={formik?.errors?.isChild?.toString()}
506
+ className="mt-2"
507
+ />
508
+ )}
509
+ {showParentModel &&
510
+ <div className="flex flex-column gap-2 mt-3">
511
+ <label htmlFor="type" className="form-field-label">
512
+ Parent Model
513
+ </label>
514
+ <SingleSelectAutoCompleteField
515
+ disabled={params.id !== 'new'}
516
+ key="parentModel"
517
+ formik={formik}
518
+ isFormFieldValid={isFormFieldValid}
519
+ relationField={true}
520
+ fieldName="parentModel"
521
+ fieldNameId="parentModelId"
522
+ labelKey="displayName"
523
+ valueKey="id"
524
+ searchData={searchModel}
525
+ existingData={formik.values.parentModel}
526
+ formErrors={formErrors}
527
+ />
528
+ {(isFormFieldValid(formik, "parentModel") || (formErrors["parentModel"])) && (
529
+ <Message severity="error" text={formik?.errors?.parentModelId?.toString()} />
530
+ )}
531
+ </div>
532
+ }
533
+ <div className="flex align-items-center gap-2 mt-3">
534
+ <Checkbox
535
+ name="enableAuditTracking"
536
+ onChange={(e) => {
537
+ formik.setFieldValue("enableAuditTracking", e.checked);
538
+ }}
539
+ checked={formik.values.enableAuditTracking}
540
+ ></Checkbox>
541
+ <label htmlFor="enableAuditTracking" className="form-field-label">
542
+ Enable Audit Tracking
543
+ </label>
544
+ </div>
545
+ {(isFormFieldValid(formik, "enableAuditTracking") || (formErrors["enableAuditTracking"])) && (
546
+ <Message
547
+ severity="error"
548
+ text={formik?.errors?.enableAuditTracking?.toString()}
549
+ className="mt-2"
550
+ />
551
+ )}
552
+ <div className="flex align-items-center gap-2 mt-3">
553
+ <Checkbox
554
+ name="internationalisation"
555
+ onChange={(e) => {
556
+ formik.setFieldValue("internationalisation", e.checked);
557
+ }}
558
+ checked={formik.values.internationalisation}
559
+ ></Checkbox>
560
+ <label htmlFor="internationalisation" className="form-field-label">
561
+ Is Internationalisation Enabled
562
+ </label>
563
+ </div>
564
+ <div className="flex align-items-center gap-2 mt-3">
565
+ <Checkbox
566
+ name="draftPublishWorkflow"
567
+ onChange={(e) => {
568
+ formik.setFieldValue("draftPublishWorkflow", e.checked);
569
+ }}
570
+ checked={formik.values.draftPublishWorkflow}
571
+ ></Checkbox>
572
+ <label htmlFor="draftPublishWorkflow" className="form-field-label">
573
+ Draft/Publish Workflow
574
+ </label>
575
+ </div>
576
+ <div className="flex align-items-center gap-2 mt-3">
577
+ <Checkbox
578
+ name="isLegacyTable"
579
+ onChange={(e) => {
580
+ formik.setFieldValue("isLegacyTable", e.checked);
581
+ }}
582
+ checked={formik.values.isLegacyTable}
583
+ ></Checkbox>
584
+ <label htmlFor="isLegacyTable" className="form-field-label">
585
+ Is Legacy Table
586
+ </label>
587
+ </div>
588
+ <div className="flex align-items-center gap-2 mt-3">
589
+ <Checkbox
590
+ name="isLegacyTableWithId"
591
+ onChange={(e) => {
592
+ formik.setFieldValue("isLegacyTableWithId", e.checked);
593
+ }}
594
+ checked={formik.values.isLegacyTableWithId}
595
+ ></Checkbox>
596
+ <label htmlFor="isLegacyTableWithId" className="form-field-label">
597
+ Is Legacy Table With Id
598
+ </label>
599
+ </div>
600
+ {/* <div className="field col-6">
601
+ <div className="flex align-items-center gap-2 mt-3">
602
+ <Checkbox
603
+ name="enableAuditTracking"
604
+ onChange={(e) => {
605
+ formik.setFieldValue("enableAuditTracking", e.checked);
606
+ }}
607
+ checked={formik.values.enableAuditTracking}
608
+ ></Checkbox>
609
+ <label htmlFor="enableAuditTracking" className="form-field-label">
610
+ Enable Audit Tracking
611
+ </label>
612
+ </div>
613
+ {isFormFieldValid(formik, "enableAuditTracking") && (
614
+ <Message
615
+ severity="error"
616
+ text={formik?.errors?.enableAuditTracking?.toString()}
617
+ />
618
+ )}
619
+ </div>
620
+ <div className="field col-6">
621
+ <div className="flex align-items-center gap-2 mt-3">
622
+ <Checkbox
623
+ name="internationalisation"
624
+ onChange={(e) => {
625
+ formik.setFieldValue("internationalisation", e.checked);
626
+ }}
627
+ checked={formik.values.internationalisation}
628
+ ></Checkbox>
629
+ <label htmlFor="internationalisation" className="form-field-label">
630
+ Internationalisation
631
+ </label>
632
+ </div>
633
+ {isFormFieldValid(formik, "internationalisation") && (
634
+ <Message
635
+ severity="error"
636
+ text={formik?.errors?.internationalisation?.toString()}
637
+ />
638
+ )}
639
+ </div>
640
+
641
+ <div className="field col-6 mt-3">
642
+ <div className="flex align-items-center gap-2">
643
+ <Checkbox
644
+ name="isExportable"
645
+ onChange={(e) => {
646
+ formik.setFieldValue("isExportable", e.checked);
647
+ }}
648
+ checked={formik.values.isExportable}
649
+ ></Checkbox>
650
+ <label htmlFor="isExportable" className="form-field-label">
651
+ Is Exportable
652
+ </label>
653
+ </div>
654
+ {isFormFieldValid(formik, "isExportable") && (
655
+ <Message
656
+ severity="error"
657
+ text={formik?.errors?.isExportable?.toString()}
658
+ />
659
+ )}
660
+ </div>
661
+ <div className="field col-6 mt-3">
662
+ <div className="flex align-items-center gap-2">
663
+
664
+ <Checkbox onChange={e => {
665
+ setShowUserKeyField(e.checked);
666
+ formik.setFieldValue("hasUserKey", e.checked);
667
+ }} checked={showUserKeyField}></Checkbox>
668
+ <label htmlFor="ingredient1" className="form-field-label">
669
+ Has User Key
670
+ </label>
671
+ </div>
672
+ {showUserKeyField &&
673
+ <div className="formgrid grid">
674
+ <div className="field col-12 mt-3">
675
+ <label htmlFor="userKeyFieldId" className="form-field-label">
676
+ User Key Field
677
+ </label>
678
+ <InputText
679
+ type="text"
680
+ id="userKeyFieldId"
681
+ name="userKeyFieldId"
682
+ onChange={formik.handleChange}
683
+ value={formik.values.userKeyFieldId}
684
+ className={classNames("", {
685
+ "p-invalid": isFormFieldValid(formik, "userKeyFieldId"),
686
+ })}
687
+ />
688
+ {isFormFieldValid(formik, "userKeyFieldId") && (
689
+ <Message
690
+ severity="error"
691
+ text={formik?.errors?.userKeyFieldId?.toString()}
692
+ />
693
+ )}
694
+ </div>
695
+ </div>
696
+ }
697
+ </div>*/}
698
+
699
+ </Panel>
700
+
701
+ </div>
702
+ <div className="field col-12 lg:col-6 lg:pl-3">
703
+
704
+ {/* <p className="form-wrapper-heading text-base">Basic Settings</p> */}
705
+ <Panel header={"Basic Settings"} className="solid-column-panel">
706
+ <div className="flex flex-column gap-2 mt-3">
707
+ <label htmlFor="displayName" className="form-field-label">
708
+ Display Name
709
+ </label>
710
+ <InputText
711
+ type="text"
712
+ id="displayName"
713
+ name="displayName"
714
+ onChange={(e) => {
715
+
716
+ formik.handleChange(e);
717
+ const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
718
+ if (params.id === 'new') {
719
+ formik.setFieldValue("singularName", toCamelCase);
720
+ formik.setFieldValue("pluralName", toPluralCamelCase);
721
+ }
722
+ if (params.id === 'new') {
723
+ formik.setFieldValue("tableName", toSnakeCase);
724
+ }
725
+
726
+
727
+ }}
728
+ value={formik.values.displayName}
729
+ className={classNames("", {
730
+ "p-invalid": isFormFieldValid(formik, "displayName") || formErrors["displayName"],
731
+ })}
732
+
733
+ />
734
+
735
+ {(isFormFieldValid(formik, "displayName") || (formErrors["displayName"])) && (
736
+ <Message
737
+ severity="error"
738
+ text={formik?.errors?.displayName?.toString()}
739
+ />
740
+ )}
741
+ </div>
742
+ <div className="flex flex-column gap-1 mt-4">
743
+ <label htmlFor="singularName" className="form-field-label">
744
+ Singular Name
745
+ </label>
746
+ <InputText
747
+ disabled={true}
748
+ type="text"
749
+ id="singularName"
750
+ name="singularName"
751
+ onChange={formik.handleChange}
752
+ value={formik.values.singularName}
753
+ className={classNames("", {
754
+ "p-invalid": isFormFieldValid(formik, "singularName") || formErrors["singularName"],
755
+ })}
756
+ />
757
+ {(isFormFieldValid(formik, "singularName") || (formErrors["singularName"])) && (
758
+ <Message
759
+ severity="error"
760
+ text={formik?.errors?.singularName?.toString()}
761
+ />
762
+ )}
763
+ </div>
764
+ <div className="flex flex-column gap-1 mt-4">
765
+ <label htmlFor="pluralName" className="form-field-label">
766
+ Plural Name
767
+ </label>
768
+ <InputText
769
+ disabled={true}
770
+ type="text"
771
+ id="pluralName"
772
+ name="pluralName"
773
+ onChange={formik.handleChange}
774
+ value={formik.values.pluralName}
775
+ className={classNames("", {
776
+ "p-invalid": isFormFieldValid(formik, "pluralName") || formErrors["pluralName"],
777
+ })}
778
+ />
779
+ {(isFormFieldValid(formik, "pluralName") || (formErrors["pluralName"])) && (
780
+ <Message severity="error" text={formik?.errors?.pluralName?.toString()} />
781
+ )}
782
+ </div>
783
+
784
+ {/* <div className="mt-4">
785
+ <div className="flex align-items-center gap-2">
786
+ <Checkbox onChange={e => {
787
+ setShowTableName(e.checked);
788
+ if (e.checked === true) {
789
+ const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(formik.values.displayName);
790
+ if (params.id === 'new') {
791
+ formik.setFieldValue("tableName", toSnakeCase);
792
+ }
793
+ }
794
+
795
+ }} checked={showTableName} disabled={params.id !== 'new'}></Checkbox>
796
+ <label htmlFor="setTableName" className="form-field-label">
797
+ Set table name
798
+ </label>
799
+ </div>
800
+ </div> */}
801
+ {/* {showTableName && */}
802
+ <div className="flex flex-column gap-1 mt-4">
803
+ <label htmlFor="tableName" className="form-field-label">
804
+ Table Name
805
+ </label>
806
+ <InputText
807
+ disabled={params.id !== 'new'}
808
+ type="text"
809
+ id="tableName"
810
+ name="tableName"
811
+ onChange={formik.handleChange}
812
+ value={formik.values.tableName}
813
+ className={classNames("", {
814
+ "p-invalid": isFormFieldValid(formik, "tableName") || formErrors["tableName"],
815
+ })}
816
+ />
817
+ {(isFormFieldValid(formik, "tableName") || (formErrors["tableName"])) && (
818
+ <Message
819
+ severity="error"
820
+ text={formik?.errors?.tableName?.toString()}
821
+ />
822
+ )}
823
+ </div>
824
+ {/* } */}
825
+ <div className="flex flex-column gap-1 mt-4">
826
+ <label htmlFor="description" className="form-field-label">
827
+ Description
828
+ </label>
829
+ {/* <InputText
830
+ type="text"
831
+ id="description"
832
+ name="description"
833
+ onChange={formik.handleChange}
834
+ value={formik.values.description}
835
+ className={classNames("p-inputtext-sm w-full small-input", {
836
+ "p-invalid": isFormFieldValid(formik, "description"),
837
+ })}
838
+ /> */}
839
+ <InputTextarea
840
+ id="description"
841
+ name="description"
842
+ onChange={formik.handleChange}
843
+ value={formik.values.description}
844
+ className={classNames("", {
845
+ "p-invalid": isFormFieldValid(formik, "description") || formErrors["description"],
846
+ })}
847
+ rows={5}
848
+ cols={30}
849
+ />
850
+ {(isFormFieldValid(formik, "description") || (formErrors["description"])) && (
851
+ <Message
852
+ severity="error"
853
+ text={formik?.errors?.description?.toString()}
854
+ />
855
+ )}
856
+ </div>
857
+ </Panel>
858
+ </div>
859
+
860
+ {/* <div className="md:col-6 sm:col-12">
861
+ <div className="field">
862
+ <label htmlFor="pluralName" className="form-label form-field-label">
863
+ Plural Name
864
+ </label>
865
+ <InputText
866
+ type="text"
867
+ id="pluralName"
868
+ name="pluralName"
869
+ onChange={formik.handleChange}
870
+ value={formik.values.pluralName}
871
+ className={classNames("p-inputtext-sm w-full small-input", {
872
+ "p-invalid": isFormFieldValid(formik, "pluralName"),
873
+ })}
874
+ />
875
+ {isFormFieldValid(formik, "pluralName") && (
876
+ <Message severity="error" text={formik?.errors?.pluralName?.toString()} />
877
+ )}
878
+ </div>
879
+ </div> */}
880
+
881
+
882
+ {/* <div className="md:col-6 sm:col-12">
883
+ <div className="field form-dropdown-select">
884
+ <label htmlFor="dataSourceType" className="form-labe form-field-label">
885
+ Data Source
886
+ </label>
887
+ <Dropdown
888
+ id="dataSourceType"
889
+ name="dataSourceType"
890
+ value={formik.values.dataSourceType}
891
+ options={dataSourceTypes}
892
+ onChange={(e) => {
893
+ formik.setFieldValue("dataSourceType", e.value);
894
+ // if (e.value == "mariadb") {
895
+ // formik.setFieldValue("dataSourceType", "mongodb");
896
+ // }
897
+ // else {
898
+ // formik.setFieldValue("dataSourceType", "rdbms");
899
+ // }
900
+ }
901
+ }
902
+ placeholder="Select a Data Source"
903
+ className={classNames("p-inputtext-sm w-full", {
904
+ "p-invalid": isFormFieldValid(formik, "dataSource"),
905
+ })}
906
+ />
907
+ {isFormFieldValid(formik, "dataSource") && (
908
+ <Message severity="error" text={formik?.errors?.dataSource?.toString()} />
909
+ )}
910
+ </div>
911
+ </div> */}
912
+
913
+
914
+ </div>
915
+ </div>
916
+ </form>
917
+ </>
918
+ );
919
+ });
920
+
921
+ export default ModelMetaData;