@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,154 @@
1
+ "use client"
2
+ import { usePathname, useRouter } from 'next/navigation';
3
+ import { Accordion, AccordionTab } from 'primereact/accordion';
4
+ import { Button } from 'primereact/button';
5
+ import { Divider } from 'primereact/divider';
6
+ import { OverlayPanel } from 'primereact/overlaypanel';
7
+ import { RadioButton } from 'primereact/radiobutton';
8
+ import React, { useEffect, useRef, useState } from 'react'
9
+ import { useDispatch, useSelector } from "react-redux";
10
+ import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
11
+
12
+ export const SolidKanbanViewConfigure = ({ solidKanbanViewMetaData, actionsAllowed, setLayoutDialogVisible, viewModes, setShowSaveFilterPopup }: any) => {
13
+ const op = useRef(null);
14
+ const customizeLayout = useRef<OverlayPanel | null>(null);
15
+ const pathname = usePathname();
16
+ const router = useRouter();
17
+ const [view, setView] = useState<string>("");
18
+
19
+ const handleViewChange = (newView: string) => {
20
+ if (view === newView) return; // Prevent unnecessary updates
21
+ const pathSegments = pathname.split('/').filter(Boolean);
22
+ pathSegments[pathSegments.length - 1] = newView; // Replace the last part with new view
23
+ const newPath = '/' + pathSegments.join('/');
24
+ router.push(newPath);
25
+ };
26
+
27
+ useEffect(() => {
28
+ if (typeof pathname === 'string') {
29
+ const pathSegments = pathname.split('/').filter(Boolean);
30
+ if (pathSegments.length > 0) {
31
+ setView(pathSegments[pathSegments.length - 1]);
32
+ }
33
+ }
34
+ }, [])
35
+
36
+
37
+ const [isOverlayOpen, setIsOverlayOpen] = useState(false);
38
+ useEffect(() => {
39
+ const handleClickOutside = (event: MouseEvent) => {
40
+ if (
41
+ customizeLayout.current &&
42
+ !customizeLayout.current.getElement()?.contains(event.target as Node)
43
+ ) {
44
+ setIsOverlayOpen(false);
45
+ }
46
+ };
47
+
48
+ if (isOverlayOpen) {
49
+ document.addEventListener("click", handleClickOutside);
50
+ } else {
51
+ document.removeEventListener("click", handleClickOutside);
52
+ }
53
+
54
+ return () => document.removeEventListener("click", handleClickOutside);
55
+ }, [isOverlayOpen])
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ return (
64
+ <div className="position-relative">
65
+ <Button
66
+ type="button"
67
+ size="small"
68
+ icon="pi pi-cog"
69
+ severity="secondary"
70
+ outlined
71
+ className='solid-icon-button'
72
+ // @ts-ignore
73
+ onClick={(e) => op.current.toggle(e)}
74
+ />
75
+ <OverlayPanel ref={op}>
76
+ <div className="p-2">
77
+ <div className="flex flex-column">
78
+ <Button text icon='pi pi-download' label="Import" size="small" severity="secondary" className="text-left gap-2 text-base" />
79
+ <Button text icon='pi pi-upload' label="Export" size="small" severity="secondary" className="text-left gap-2 text-base" />
80
+ <Button
81
+ text
82
+ type="button"
83
+ className="w-8rem text-left text-base gap-2 purple-200"
84
+ label="Layout"
85
+ size="small"
86
+ iconPos="left"
87
+ severity="contrast"
88
+ icon={'pi pi-objects-column'}
89
+ onClick={() => setLayoutDialogVisible(true)}
90
+ />
91
+ </div>
92
+ </div>
93
+ <Divider className="m-0" />
94
+ <div className="p-2 relative flex flex-column gap-1">
95
+ <Button
96
+ icon='pi pi-sliders-h'
97
+ label="Customize Layout"
98
+ severity={isOverlayOpen ? undefined : "secondary"}
99
+ size="small"
100
+ text={isOverlayOpen ? false : true}
101
+ className="text-left gap-2 w-full text-base"
102
+ // @ts-ignore
103
+ onClick={(e) => {
104
+ customizeLayout.current?.toggle(e);
105
+ setIsOverlayOpen((prev) => !prev); // ✅ Ensure state updates when toggled
106
+ }}
107
+ >
108
+ <i className="pi pi-chevron-right text-sm"></i>
109
+ </Button>
110
+ <Button text icon='pi pi-save' label="Save Custom Filter" size="small" severity="secondary" className="text-left gap-2 text-base" onClick={() => setShowSaveFilterPopup(true)} />
111
+ <OverlayPanel ref={customizeLayout} className="customize-layout-panel" style={{ minWidth: 250 }}
112
+ onShow={() => setIsOverlayOpen(true)}
113
+ onHide={() => {
114
+ setTimeout(() => setIsOverlayOpen(false), 50); // ✅ Ensure state updates
115
+ }}
116
+ >
117
+
118
+ <div className="solid-layout-accordion">
119
+ <Accordion expandIcon="pi pi-chevron-down" collapseIcon="pi pi-chevron-up" activeIndex={[0]}>
120
+ {viewModes && viewModes.length > 0 &&
121
+ <AccordionTab header="Switch Type">
122
+ <div className="flex flex-column gap-1 p-1">
123
+ {viewModes.map((option: any) => (
124
+ <div key={option.value} className={`flex align-items-center ${option.value === view ? 'solid-active-view' : 'solid-view'}`}>
125
+ <RadioButton
126
+ inputId={option.value}
127
+ name="views"
128
+ value={option.value}
129
+ // onChange={(e) => router}
130
+ onChange={() => handleViewChange(option.value)}
131
+ checked={option.value === view}
132
+ />
133
+ <label htmlFor={option.value} className="ml-2 flex align-items-center justify-content-between w-full">
134
+ {option.label}
135
+ {/* <Image
136
+ src={option.image}
137
+ alt={option.value}
138
+ fill
139
+ className='relative row-spacing-img'
140
+ /> */}
141
+ </label>
142
+ </div>
143
+ ))}
144
+ </div>
145
+ </AccordionTab>
146
+ }
147
+ </Accordion>
148
+ </div>
149
+ </OverlayPanel>
150
+ </div>
151
+ </OverlayPanel>
152
+ </div>
153
+ )
154
+ }
@@ -0,0 +1,164 @@
1
+ "use client";
2
+ import SolidBigintKanbanField from "./kanban-fields/SolidBigintKanbanField";
3
+ import SolidBooleanKanbanField from "./kanban-fields/SolidBooleanKanbanField";
4
+ import SolidComputedKanbanField from "./kanban-fields/SolidComputedKanbanField";
5
+ import SolidDateKanbanField from "./kanban-fields/SolidDateKanbanField";
6
+ import SolidDatetimeKanbanField from "./kanban-fields/SolidDatetimeKanbanField";
7
+ import SolidDecimalKanbanField from "./kanban-fields/SolidDecimalKanbanField";
8
+ import SolidExternalIdKanbanField from "./kanban-fields/SolidExternalIdKanbanField";
9
+ import SolidFloatKanbanField from "./kanban-fields/SolidFloatKanbanField";
10
+ import SolidIntKanbanField from "./kanban-fields/SolidIntKanbanField";
11
+ import SolidLongTextKanbanField from "./kanban-fields/SolidLongTextKanbanField";
12
+ import SolidMediaMultipleKanbanField from "./kanban-fields/SolidMediaMultipleKanbanField";
13
+ import SolidMediaSingleKanbanField from "./kanban-fields/SolidMediaSingleKanbanField";
14
+ import SolidRelationKanbanField from "./kanban-fields/SolidRelationKanbanField";
15
+ import SolidRichTextKanbanField from "./kanban-fields/SolidRichTextKanbanField";
16
+ import SolidSelectionDynamicKanbanField from "./kanban-fields/SolidSelectionDynamicKanbanField";
17
+ import SolidSelectionStaticKanbanField from "./kanban-fields/SolidSelectionStaticKanbanField";
18
+ import SolidShortTextKanbanField from "./kanban-fields/SolidShortTextKanbanField";
19
+ import SolidTimeKanbanField from "./kanban-fields/SolidTimeKanbanField";
20
+ import SolidUuidKanbanField from "./kanban-fields/SolidUuidKanbanField";
21
+
22
+ export type SolidKanbanViewFieldsParams = {
23
+ solidKanbanViewMetaData: any;
24
+ fieldMetadata: any,
25
+ fieldLayout: any,
26
+ data: any,
27
+ setLightboxUrls?: any,
28
+ setOpenLightbox?: any,
29
+ groupedView?: boolean
30
+ };
31
+
32
+ export const getNumberOfInputs = (matchMode: any): number | null => {
33
+ if (matchMode.label && matchMode.label === 'Not In') {
34
+ matchMode = 'notIn';
35
+ }
36
+
37
+ switch (matchMode) {
38
+ case 'between':
39
+ return 2;
40
+ case 'in':
41
+ case 'notIn':
42
+ return null;
43
+ case 'startsWith':
44
+ case 'contains':
45
+ case 'notContains':
46
+ case 'endsWith':
47
+ case 'equals':
48
+ case 'notEquals':
49
+ case 'lt':
50
+ case 'lte':
51
+ case 'gt':
52
+ case 'gte':
53
+ return 1;
54
+ default:
55
+ return 1; // Default to single input if no specific match is found
56
+ }
57
+ }
58
+
59
+ // // @ts-ignore
60
+ // const components = require.context('./kanban-fields', false, /Solid.*Column\.tsx$/);
61
+
62
+ // // Define a function to dynamically load components based on type
63
+ // const loadComponentByType = async (type: string) => {
64
+ // try {
65
+ // const componentName = `./kanban-fields/Solid${type.charAt(0).toUpperCase() + type.slice(1)}Column.tsx`;
66
+
67
+ // // Dynamically import the component based on type
68
+ // const componentModule = await import(componentName);
69
+
70
+ // return componentModule.default;
71
+ // } catch (error) {
72
+ // console.error(`Failed to load component for type: ${type}`, error);
73
+ // return null;
74
+ // }
75
+ // };
76
+
77
+ export const SolidKanbanViewFields = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, setLightboxUrls, setOpenLightbox, groupedView }: SolidKanbanViewFieldsParams) => {
78
+ if(!fieldMetadata) return null
79
+ // And finally we can implement additional switching logic based on certain special fields.
80
+ if (fieldMetadata.name === 'id') {
81
+ return SolidIntKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
82
+ }
83
+
84
+ if (fieldMetadata.type === 'int') {
85
+ return SolidIntKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
86
+ }
87
+ if (fieldMetadata.type === 'bigint') {
88
+ return SolidBigintKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
89
+ }
90
+ if (fieldMetadata.type === 'float') {
91
+ return SolidFloatKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
92
+ }
93
+ if (fieldMetadata.type === 'decimal') {
94
+ return SolidDecimalKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
95
+ }
96
+ if (fieldMetadata.type === 'shortText') {
97
+ return SolidShortTextKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, setLightboxUrls, setOpenLightbox, groupedView });
98
+ }
99
+ if (fieldMetadata.type === 'longText') {
100
+ return SolidLongTextKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, groupedView });
101
+ }
102
+ if (fieldMetadata.type === 'richText') {
103
+ return SolidRichTextKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
104
+ }
105
+ if (fieldMetadata.type === 'boolean') {
106
+ return SolidBooleanKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
107
+ }
108
+ if (fieldMetadata.type === 'date') {
109
+ return SolidDateKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
110
+ }
111
+ if (fieldMetadata.type === 'datetime') {
112
+ return SolidDatetimeKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
113
+ }
114
+ if (fieldMetadata.type === 'time') {
115
+ return SolidTimeKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
116
+ }
117
+ if (fieldMetadata.type === 'relation') {
118
+ return SolidRelationKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
119
+ }
120
+ if (fieldMetadata.type === 'mediaSingle') {
121
+ return SolidMediaSingleKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, setLightboxUrls, setOpenLightbox });
122
+ }
123
+ if (fieldMetadata.type === 'mediaMultiple') {
124
+ return SolidMediaMultipleKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, setLightboxUrls, setOpenLightbox });
125
+ }
126
+ if (fieldMetadata.type === 'selectionStatic') {
127
+ return SolidSelectionStaticKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
128
+ }
129
+ if (fieldMetadata.type === 'selectionDynamic') {
130
+ return SolidSelectionDynamicKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
131
+ }
132
+ if (fieldMetadata.type === 'computed') {
133
+ return SolidComputedKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
134
+ }
135
+ if (fieldMetadata.type === 'externalId') {
136
+ return SolidExternalIdKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
137
+ }
138
+ if (fieldMetadata.type === 'uuid') {
139
+ return SolidUuidKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data });
140
+ }
141
+ // // Load everything else based on type and dynamically.
142
+ // else {
143
+ // const ComponentFound = await loadComponentByType(fieldMetadata.type);
144
+ // const ComponentNotFound = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data }: SolidKanbanViewFieldsParams) => (
145
+ // <Column
146
+ // key={fieldMetadata.name}
147
+ // field={fieldMetadata.name}
148
+ // header={fieldMetadata.displayName}
149
+ // className="text-sm"
150
+ // sortable={false}
151
+ // filter={false}
152
+ // showFilterOperator={false}
153
+ // body={() => (<span>Type not supported</span>)}
154
+ // style={{ minWidth: "12rem" }}
155
+ // headerClassName="table-header-fs"
156
+ // ></Column>
157
+ // );
158
+
159
+ // return ComponentFound ? ComponentFound({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data }) : ComponentNotFound({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
160
+ // }
161
+
162
+ // TODO: we can implement additional switching logic based on the widget type being used to render the list view data.
163
+
164
+ };
@@ -0,0 +1,59 @@
1
+ import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
2
+ import { InputTypes } from "./SolidVarInputsFilterElement"
3
+ import { AutoComplete, AutoCompleteCompleteEvent } from "primereact/autocomplete";
4
+ import { useState } from "react";
5
+ import qs from "qs";
6
+
7
+
8
+ export const SolidManyToOneFilterElement = ({ value, updateInputs, index, fieldMetadata }: any) => {
9
+
10
+ const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);
11
+ const { useLazyGetSolidEntitiesQuery } = entityApi;
12
+ const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();
13
+
14
+ const [autoCompleteItems, setAutoCompleteItems] = useState([]);
15
+ const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {
16
+
17
+ // Get the list view layout & metadata first.
18
+ const queryData = {
19
+ offset: 0,
20
+ limit: 10,
21
+ filters: {
22
+ [fieldMetadata?.relationModel?.userKeyField?.name]: {
23
+ $containsi: event.query
24
+ }
25
+ }
26
+ };
27
+
28
+ const autocompleteQs = qs.stringify(queryData, {
29
+ encodeValuesOnly: true,
30
+ });
31
+
32
+ // TODO: do error handling here, possible errors like modelname is incorrect etc...
33
+ const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);
34
+
35
+ // TODO: if no data found then can we show no matching "entities", where entities can be replaced with the model plural name,
36
+ const autocompleteData = autocompleteResponse.data;
37
+
38
+ if (autocompleteData) {
39
+ const autoCompleteItems = autocompleteData.records.map((item: any) => {
40
+ return {
41
+ label: item[fieldMetadata?.relationModel?.userKeyField?.name],
42
+ value: item['id']
43
+ }
44
+ });
45
+ setAutoCompleteItems(autoCompleteItems);
46
+ }
47
+ }
48
+
49
+ return (
50
+ <AutoComplete
51
+ field="label"
52
+ value={value}
53
+ suggestions={autoCompleteItems}
54
+ completeMethod={autoCompleteSearch}
55
+ onChange={(e) => updateInputs(index, e.value)}
56
+ className="solid-standard-autocomplete"
57
+ />
58
+ )
59
+ }
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+ import { useLazyGetSelectionDynamicValuesQuery } from "../../../redux/api/fieldApi";
3
+ import { AutoComplete, AutoCompleteCompleteEvent } from "primereact/autocomplete";
4
+ import qs from "qs";
5
+ import { useState } from "react";
6
+
7
+
8
+ export const SolidSelectionDynamicFilterElement = ({ value, updateInputs, index, fieldMetadata }: any) => {
9
+
10
+
11
+ // selection dynamic specific code.
12
+ const [triggerGetSelectionDynamicValues] = useLazyGetSelectionDynamicValuesQuery();
13
+ const [selectionDynamicItems, setSelectionDynamicItems] = useState([]);
14
+ const selectionDynamicSearch = async (event: AutoCompleteCompleteEvent) => {
15
+
16
+ // Get the list view layout & metadata first.
17
+ const queryData = {
18
+ offset: 0,
19
+ limit: 10,
20
+ query: event.query,
21
+ id: fieldMetadata.id
22
+ };
23
+
24
+ const sdQs = qs.stringify(queryData, {
25
+ encodeValuesOnly: true,
26
+ });
27
+
28
+ // TODO: do error handling here, possible errors like modelname is incorrect etc...
29
+ const sdResponse = await triggerGetSelectionDynamicValues(sdQs);
30
+
31
+ // TODO: if no data found then can we show no matching "entities", where entities can be replaced with the model plural name,
32
+ const sdData = sdResponse.data.data;
33
+
34
+ // @ts-ignore
35
+ setSelectionDynamicItems(sdData);
36
+ }
37
+
38
+
39
+ return (
40
+
41
+ <AutoComplete
42
+ field="label"
43
+ value={value}
44
+ dropdown
45
+ className="w-full solid-standard-autocomplete"
46
+ suggestions={selectionDynamicItems}
47
+ completeMethod={selectionDynamicSearch}
48
+ onChange={(e) => updateInputs(index, e.value)} />
49
+ )
50
+ }
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import { AutoComplete, AutoCompleteCompleteEvent } from "primereact/autocomplete";
3
+ import { useState } from "react";
4
+
5
+
6
+ export const SolidSelectionStaticFilterElement = ({ value, updateInputs, index, fieldMetadata }: any) => {
7
+
8
+ // selection dynamic specific code.
9
+ const [selectionStaticItems, setSelectionStaticItems] = useState([]);
10
+ const selectionStaticSearch = (event: AutoCompleteCompleteEvent) => {
11
+ const selectionStaticData = fieldMetadata.selectionStaticValues.map((i: string) => {
12
+ return {
13
+ label: i.split(":")[1],
14
+ value: i.split(":")[0]
15
+ }
16
+ });
17
+ const suggestionData = selectionStaticData.filter((t: any) => t.value.toLowerCase().startsWith(event.query.toLowerCase()));
18
+ setSelectionStaticItems(suggestionData)
19
+ }
20
+
21
+ return (
22
+
23
+ <AutoComplete
24
+ field="label"
25
+ value={value}
26
+ dropdown
27
+ className="w-full solid-standard-autocomplete"
28
+ suggestions={selectionStaticItems}
29
+ completeMethod={selectionStaticSearch}
30
+ onChange={(e) => updateInputs(index, e.value)} />
31
+ )
32
+ }
@@ -0,0 +1,184 @@
1
+ 'use client';
2
+ import { Button } from "primereact/button";
3
+ import { Calendar } from "primereact/calendar";
4
+ import { InputNumber } from "primereact/inputnumber";
5
+ import { InputText } from "primereact/inputtext";
6
+ import { useEffect, useState } from "react";
7
+ import { SolidManyToOneFilterElement } from "./SolidManyToOneFilterElement";
8
+ import { SolidSelectionDynamicFilterElement } from "./SolidSelectionDynamicFilterElement";
9
+ import { SolidSelectionStaticFilterElement } from "./SolidSelectionStaticFilterElement";
10
+
11
+ export enum InputTypes {
12
+ Date = 'Date',
13
+ DateTime = 'DateTime',
14
+ Time = 'Time',
15
+ Numeric = 'Numeric',
16
+ Text = 'Text',
17
+ SelectionStatic = 'SelectionStatic',
18
+ RelationManyToOne = 'RelationManyToOne',
19
+ SelectionDynamic = 'SelectionDynamic'
20
+ }
21
+
22
+
23
+ // Based on numberOfInputs map the input filed and hide add and delete
24
+ export const SolidVarInputsFilterElement = ({ values, onChange, inputType = InputTypes.Text, numberOfInputs = null, solidKanbanViewMetaData, fieldMetadata }: any) => {
25
+
26
+ if (!values) {
27
+ values = numberOfInputs && numberOfInputs > 0 ? Array(numberOfInputs).fill('') : [''];
28
+ // values = [''];
29
+ } else {
30
+ if (values[0] == '') {
31
+ values = numberOfInputs && numberOfInputs > 0 ? Array(numberOfInputs).fill('') : [''];
32
+ } else {
33
+
34
+ values = values
35
+ }
36
+ }
37
+
38
+
39
+
40
+ // TODO: Ideally values will be an array, so we can spread them here instead of making a nested array.
41
+ const [inputs, setInputs] = useState([...values]);
42
+ useEffect(() => {
43
+ setInputs([...values])
44
+ }, [numberOfInputs])
45
+
46
+ const updateInputs = (index: number, value: any) => {
47
+ const updatedSpecification = inputs.map((item, i) =>
48
+ i === index ? value : item
49
+ );
50
+ setInputs(updatedSpecification);
51
+ };
52
+
53
+ const addInput = () => {
54
+ setInputs([...inputs, '']);
55
+ };
56
+
57
+ const deleteInput = (index: number) => {
58
+ if (inputs.length > 1) {
59
+ const updatedRows = inputs.filter((_, rowIndex) => rowIndex !== index);
60
+ setInputs(updatedRows);
61
+
62
+ } else {
63
+ }
64
+ };
65
+
66
+ useEffect(() => {
67
+ onChange(inputs)
68
+ }, [inputs])
69
+
70
+
71
+
72
+ return (
73
+ <div className="grid formgrid">
74
+ <div className="col-12">
75
+ <div className="flex flex-column gap-2">
76
+ {inputs && inputs.map((value: any, index: number) => (
77
+
78
+ <div key={index} className="flex align-items-center gap-2">
79
+
80
+ {inputType === InputTypes.Text &&
81
+ <InputText
82
+ value={value}
83
+ onChange={(e) => updateInputs(index, e.target.value)}
84
+ placeholder=""
85
+ className="p-inputtext-sm small-input w-full"
86
+ />
87
+ }
88
+ {inputType === InputTypes.Numeric &&
89
+ <InputNumber
90
+ value={value}
91
+ onChange={(e) => updateInputs(index, e.value)}
92
+ placeholder=""
93
+ className="p-inputtext-sm small-input w-full"
94
+ />
95
+ }
96
+ {inputType === InputTypes.Date &&
97
+ <Calendar
98
+ value={value}
99
+ onChange={(e) => updateInputs(index, e.target.value)}
100
+ dateFormat="mm/dd/yy"
101
+ placeholder="mm/dd/yyyy"
102
+ mask="99/99/9999"
103
+ />
104
+ }
105
+ {inputType === InputTypes.DateTime &&
106
+ <Calendar
107
+ value={value}
108
+ onChange={(e) => updateInputs(index, e.target.value)}
109
+ dateFormat="mm/dd/yy"
110
+ placeholder="mm/dd/yyyy hh:mm"
111
+ mask="99/99/9999 99:99"
112
+ showTime
113
+ hourFormat="24"
114
+ />
115
+ }
116
+ {inputType === InputTypes.Time &&
117
+ <Calendar
118
+ value={value}
119
+ onChange={(e) => updateInputs(index, e.target.value)}
120
+ placeholder="hh:mm"
121
+ mask="99:99"
122
+ timeOnly
123
+ hourFormat="24"
124
+ />
125
+ }
126
+ {inputType === InputTypes.RelationManyToOne &&
127
+ <SolidManyToOneFilterElement
128
+ value={value}
129
+ index={index}
130
+ updateInputs={updateInputs}
131
+ fieldMetadata={fieldMetadata}
132
+ ></SolidManyToOneFilterElement>
133
+ }
134
+ {inputType === InputTypes.SelectionDynamic &&
135
+ <SolidSelectionDynamicFilterElement
136
+ value={value}
137
+ index={index}
138
+ updateInputs={updateInputs}
139
+ fieldMetadata={fieldMetadata}
140
+ ></SolidSelectionDynamicFilterElement>
141
+ }
142
+ {inputType === InputTypes.SelectionStatic &&
143
+
144
+ <SolidSelectionStaticFilterElement
145
+ value={value}
146
+ index={index}
147
+ updateInputs={updateInputs}
148
+ fieldMetadata={fieldMetadata}
149
+ ></SolidSelectionStaticFilterElement>
150
+ }
151
+
152
+ {numberOfInputs === null &&
153
+ <>
154
+ {/* Plus Button to add a new row */}
155
+ < Button
156
+ icon="pi pi-plus"
157
+ size="small"
158
+ className="small-button"
159
+ onClick={addInput}
160
+ type="button"
161
+ />
162
+
163
+ {/* Trash Button to delete the row */}
164
+ <Button
165
+ icon="pi pi-trash"
166
+ size="small"
167
+ className="small-button"
168
+ onClick={() => deleteInput(index)}
169
+ outlined
170
+ severity="danger"
171
+ type="button"
172
+ />
173
+ </>
174
+ }
175
+ </div>
176
+
177
+ ))}
178
+
179
+ </div>
180
+
181
+ </div>
182
+ </div>
183
+ )
184
+ }
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { SolidKanbanViewFieldsParams } from '../SolidKanbanViewFields';
3
+ import SolidIntKanbanField from './SolidIntKanbanField';
4
+
5
+ const SolidBigintKanbanField = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data }: SolidKanbanViewFieldsParams) => {
6
+ return SolidIntKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
7
+ };
8
+
9
+ export default SolidBigintKanbanField;
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+
3
+ import { Checkbox } from "primereact/checkbox";
4
+ import { SolidKanbanViewFieldsParams } from "../SolidKanbanViewFields";
5
+
6
+ const SolidBooleanKanbanField = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data }: SolidKanbanViewFieldsParams) => {
7
+
8
+ return (
9
+ <p className={`m-0${fieldLayout?.attrs?.className ? ` ${fieldLayout.attrs.className}` : ""}`}>
10
+ {fieldLayout?.attrs?.showLabel !== false && fieldLayout?.attrs?.label ? `${fieldLayout?.attrs?.label} : ` : ""}
11
+ {data && data[fieldMetadata.name] ? `${data[fieldMetadata.name]}` : ""}
12
+ </p>
13
+ );
14
+ };
15
+
16
+ export default SolidBooleanKanbanField;