@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,563 @@
1
+ "use client";
2
+ import { useFormik } from "formik";
3
+ import './solid-export.css';
4
+ import { Button } from "primereact/button";
5
+ import { Toast } from "primereact/toast";
6
+ import React, { useEffect, useRef, useState } from "react";
7
+ import { createSolidEntityApi } from "../../redux/api/solidEntityApi";
8
+ import { Dropdown } from "primereact/dropdown";
9
+ import { Dialog } from "primereact/dialog";
10
+ import { InputText } from "primereact/inputtext";
11
+ import { useCreateExportTemplateMutation, useDeleteExportTemplateMutation, useGetExportTemplatesQuery } from "../../redux/api/exportTemplateApi";
12
+ import { downloadFileWithProgress } from '../../helpers/downloadFileWithProgress';
13
+ import { DownloadProgressToast } from "./DownloadProgressToast";
14
+ import { Checkbox } from "primereact/checkbox";
15
+ import { ERROR_MESSAGES } from "../../constants/error-messages";
16
+ interface FieldMetadata {
17
+ displayName: string;
18
+ type: string;
19
+ }
20
+ interface FilterColumns {
21
+ name: string;
22
+ key: string;
23
+ }
24
+ // Define the template option type
25
+ interface TemplateOption {
26
+ name: string;
27
+ code: string;
28
+ fields: string[];
29
+ templateFormat: string;
30
+ }
31
+ interface FormatOption {
32
+ name: string;
33
+ code: string;
34
+ icon?: JSX.Element;
35
+ }
36
+ interface Question {
37
+ key: string;
38
+ name: string;
39
+ }
40
+ export const SolidExport = ({ listViewMetaData, filters }: any) => {
41
+ const toast = useRef<Toast>(null);
42
+ const entityApi = createSolidEntityApi("userViewMetadata");
43
+ const { useUpsertSolidEntityMutation } = entityApi;
44
+
45
+ const [upsertUserView] = useUpsertSolidEntityMutation();
46
+
47
+ if (!listViewMetaData?.data) return null;
48
+
49
+ const solidView = listViewMetaData.data.solidView;
50
+ const solidFieldsMetadata = listViewMetaData.data.solidFieldsMetadata as Record<
51
+ string,
52
+ FieldMetadata
53
+ >;
54
+ if (!solidView || !solidFieldsMetadata) return null;
55
+
56
+ const checkedFieldNames = new Set(
57
+ solidView.layout.children.map((col: { attrs: { name: string } }) => col.attrs.name)
58
+ );
59
+
60
+ // const allColumns: FilterColumns[] = Object.entries(solidFieldsMetadata).map(
61
+ // ([key, field]) => ({
62
+ // name: field.displayName,
63
+ // key,
64
+ // })
65
+ // );
66
+
67
+
68
+ const excludedTypes = new Set(['mediaSingle', 'mediaMultiple']);
69
+ const allColumns: FilterColumns[] = Object.entries(solidFieldsMetadata)
70
+ .filter(([, field]) => !excludedTypes.has(field.type))
71
+ .map(([key, field]) => ({
72
+ name: field.displayName,
73
+ key,
74
+ }));
75
+
76
+ const [createExportTemplate] = useCreateExportTemplateMutation();
77
+ const [deleteExportTemplate] = useDeleteExportTemplateMutation();
78
+ const { data: templatesData } = useGetExportTemplatesQuery({});
79
+ const formik = useFormik({
80
+ initialValues: {
81
+ selectedColumns: allColumns.filter((col) => checkedFieldNames.has(col.key)),
82
+ },
83
+ onSubmit: (values) => {
84
+ // console.log("Selected columns:", values.selectedColumns);
85
+ }
86
+ });
87
+
88
+ const { selectedColumns } = formik.values;
89
+
90
+ const availableColumns = allColumns.filter(
91
+ (col) => !selectedColumns.some((selected) => selected.key === col.key)
92
+ );
93
+ const moveToSelected = (col: FilterColumns) => {
94
+ formik.setFieldValue("selectedColumns", [...selectedColumns, col]);
95
+ };
96
+ const moveToAvailable = (col: FilterColumns) => {
97
+ formik.setFieldValue("selectedColumns", selectedColumns.filter((c) => c.key !== col.key));
98
+ };
99
+
100
+ const [selectedTemplate, setSelectedTemplate] = useState<TemplateOption | null>(null);
101
+ const [selectedFormat, setSelectedFormat] = useState<FormatOption | null>({
102
+ name: "CSV",
103
+ code: "csv",
104
+ icon: (
105
+ <svg fill="#000000" width="16" height="16" viewBox="0 0 318.188 318.188" xmlns="http://www.w3.org/2000/svg"
106
+ xmlnsXlink="http://www.w3.org/1999/xlink">
107
+ <g>
108
+ <g>
109
+ <g>
110
+ <rect x="182.882" y="155.008" width="33.713" height="15" />
111
+ <rect x="101.592" y="132.689" width="33.713" height="15" />
112
+ <rect x="182.882" y="132.689" width="33.713" height="15" />
113
+ <rect x="182.882" y="88.053" width="33.713" height="15" />
114
+ <rect x="182.882" y="110.371" width="33.713" height="15" />
115
+ <rect x="101.592" y="155.008" width="33.713" height="15" />
116
+ <polygon points="112.09,123.663 112.09,123.662 118.286,113.621 124.548,123.662 134.588,123.662 123.647,107.909 133.82,91.54 123.911,91.54 118.33,101.472 112.53,91.54 102.906,91.54 112.925,107.228 102.269,123.663" />
117
+ <path d="M201.02,249.514c-0.339,1.27-0.73,3.015-1.174,5.236c-0.445,2.222-0.741,4.073-0.889,5.555 c-0.127-2.053-0.847-5.691-2.158-10.918l-6.316-23.519h-14.092l15.139,46.401h14.759l15.202-46.401h-14.027L201.02,249.514z" />
118
+ <rect x="142.457" y="110.371" width="33.713" height="15" />
119
+ <rect x="142.457" y="88.053" width="33.713" height="15" />
120
+ <path d="M283.149,52.723L232.624,2.197C231.218,0.79,229.311,0,227.321,0H40.342c-4.142,0-7.5,3.358-7.5,7.5v303.188 c0,4.142,3.358,7.5,7.5,7.5h237.504c4.142,0,7.5-3.358,7.5-7.5V58.025C285.346,56.036,284.556,54.129,283.149,52.723z M234.821,25.606l24.918,24.919h-24.918V25.606z M47.842,15h171.979v10.263H47.842V15z M47.842,303.188V40.263h171.979v17.763 c0,4.143,3.358,7.5,7.5,7.5h43.024v237.662H47.842z" />
121
+ <rect x="142.457" y="132.689" width="33.713" height="15" />
122
+ <path d="M122.372,235.484c1.969,0,3.809,0.275,5.523,0.826c1.713,0.55,3.428,1.227,5.141,2.031l3.841-9.871 c-4.57-2.18-9.362-3.27-14.378-3.27c-4.591,0-8.585,0.98-11.98,2.937c-3.396,1.957-5.999,4.755-7.808,8.395 c-1.81,3.64-2.714,7.86-2.714,12.663c0,7.682,1.867,13.553,5.602,17.615c3.734,4.063,9.104,6.094,16.107,6.094 c4.888,0,9.268-0.857,13.14-2.57v-10.602c-1.947,0.805-3.883,1.492-5.808,2.063c-1.926,0.571-3.915,0.857-5.967,0.857 c-6.793,0-10.188-4.464-10.188-13.393c0-4.295,0.836-7.665,2.507-10.109C117.062,236.707,119.39,235.484,122.372,235.484z" />
123
+ <path d="M163.57,244.594c-4.169-1.904-6.724-3.216-7.665-3.936c-0.942-0.719-1.412-1.533-1.412-2.443 c-0.002-0.847,0.368-1.556,1.11-2.127c0.74-0.571,1.925-0.857,3.555-0.857c3.152,0,6.897,0.995,11.234,2.984l3.841-9.681 c-4.994-2.222-9.892-3.333-14.694-3.333c-5.439,0-9.713,1.196-12.822,3.587c-3.111,2.392-4.666,5.724-4.666,9.997 c0,2.285,0.365,4.264,1.095,5.936s1.851,3.152,3.364,4.443s3.782,2.624,6.809,3.999c3.343,1.503,5.4,2.497,6.173,2.983 c0.771,0.486,1.333,0.968,1.682,1.444c0.35,0.476,0.524,1.031,0.524,1.666c0,1.016-0.435,1.847-1.302,2.491 c-0.868,0.647-2.233,0.969-4.095,0.969c-2.158,0-4.527-0.344-7.109-1.032c-2.581-0.687-5.067-1.645-7.458-2.872v11.172 c2.264,1.079,4.443,1.836,6.538,2.27c2.095,0.434,4.687,0.65,7.775,0.65c3.703,0,6.93-0.619,9.681-1.856 c2.75-1.238,4.856-2.973,6.315-5.205c1.461-2.232,2.191-4.787,2.191-7.665c0-3.131-0.777-5.729-2.333-7.792 C170.346,248.323,167.569,246.393,163.57,244.594z" />
124
+ <rect x="142.457" y="155.008" width="33.713" height="15" />
125
+ </g>
126
+ </g>
127
+ </g>
128
+ </svg>
129
+ ),
130
+ });
131
+ const [templateOptions, setTemplateOptions] = useState<TemplateOption[]>([]);
132
+ //loading hardcode format
133
+ const [formatOptions, setFormatOptions] = useState<FormatOption[]>([
134
+ {
135
+ name: "CSV",
136
+ code: "csv",
137
+ icon: (
138
+ <svg fill="#000000" width="16" height="16" viewBox="0 0 318.188 318.188" xmlns="http://www.w3.org/2000/svg"
139
+ xmlnsXlink="http://www.w3.org/1999/xlink">
140
+ <g>
141
+ <g>
142
+ <g>
143
+ <rect x="182.882" y="155.008" width="33.713" height="15" />
144
+ <rect x="101.592" y="132.689" width="33.713" height="15" />
145
+ <rect x="182.882" y="132.689" width="33.713" height="15" />
146
+ <rect x="182.882" y="88.053" width="33.713" height="15" />
147
+ <rect x="182.882" y="110.371" width="33.713" height="15" />
148
+ <rect x="101.592" y="155.008" width="33.713" height="15" />
149
+ <polygon points="112.09,123.663 112.09,123.662 118.286,113.621 124.548,123.662 134.588,123.662 123.647,107.909 133.82,91.54 123.911,91.54 118.33,101.472 112.53,91.54 102.906,91.54 112.925,107.228 102.269,123.663" />
150
+ <path d="M201.02,249.514c-0.339,1.27-0.73,3.015-1.174,5.236c-0.445,2.222-0.741,4.073-0.889,5.555 c-0.127-2.053-0.847-5.691-2.158-10.918l-6.316-23.519h-14.092l15.139,46.401h14.759l15.202-46.401h-14.027L201.02,249.514z" />
151
+ <rect x="142.457" y="110.371" width="33.713" height="15" />
152
+ <rect x="142.457" y="88.053" width="33.713" height="15" />
153
+ <path d="M283.149,52.723L232.624,2.197C231.218,0.79,229.311,0,227.321,0H40.342c-4.142,0-7.5,3.358-7.5,7.5v303.188 c0,4.142,3.358,7.5,7.5,7.5h237.504c4.142,0,7.5-3.358,7.5-7.5V58.025C285.346,56.036,284.556,54.129,283.149,52.723z M234.821,25.606l24.918,24.919h-24.918V25.606z M47.842,15h171.979v10.263H47.842V15z M47.842,303.188V40.263h171.979v17.763 c0,4.143,3.358,7.5,7.5,7.5h43.024v237.662H47.842z" />
154
+ <rect x="142.457" y="132.689" width="33.713" height="15" />
155
+ <path d="M122.372,235.484c1.969,0,3.809,0.275,5.523,0.826c1.713,0.55,3.428,1.227,5.141,2.031l3.841-9.871 c-4.57-2.18-9.362-3.27-14.378-3.27c-4.591,0-8.585,0.98-11.98,2.937c-3.396,1.957-5.999,4.755-7.808,8.395 c-1.81,3.64-2.714,7.86-2.714,12.663c0,7.682,1.867,13.553,5.602,17.615c3.734,4.063,9.104,6.094,16.107,6.094 c4.888,0,9.268-0.857,13.14-2.57v-10.602c-1.947,0.805-3.883,1.492-5.808,2.063c-1.926,0.571-3.915,0.857-5.967,0.857 c-6.793,0-10.188-4.464-10.188-13.393c0-4.295,0.836-7.665,2.507-10.109C117.062,236.707,119.39,235.484,122.372,235.484z" />
156
+ <path d="M163.57,244.594c-4.169-1.904-6.724-3.216-7.665-3.936c-0.942-0.719-1.412-1.533-1.412-2.443 c-0.002-0.847,0.368-1.556,1.11-2.127c0.74-0.571,1.925-0.857,3.555-0.857c3.152,0,6.897,0.995,11.234,2.984l3.841-9.681 c-4.994-2.222-9.892-3.333-14.694-3.333c-5.439,0-9.713,1.196-12.822,3.587c-3.111,2.392-4.666,5.724-4.666,9.997 c0,2.285,0.365,4.264,1.095,5.936s1.851,3.152,3.364,4.443s3.782,2.624,6.809,3.999c3.343,1.503,5.4,2.497,6.173,2.983 c0.771,0.486,1.333,0.968,1.682,1.444c0.35,0.476,0.524,1.031,0.524,1.666c0,1.016-0.435,1.847-1.302,2.491 c-0.868,0.647-2.233,0.969-4.095,0.969c-2.158,0-4.527-0.344-7.109-1.032c-2.581-0.687-5.067-1.645-7.458-2.872v11.172 c2.264,1.079,4.443,1.836,6.538,2.27c2.095,0.434,4.687,0.65,7.775,0.65c3.703,0,6.93-0.619,9.681-1.856 c2.75-1.238,4.856-2.973,6.315-5.205c1.461-2.232,2.191-4.787,2.191-7.665c0-3.131-0.777-5.729-2.333-7.792 C170.346,248.323,167.569,246.393,163.57,244.594z" />
157
+ <rect x="142.457" y="155.008" width="33.713" height="15" />
158
+ </g>
159
+ </g>
160
+ </g>
161
+ </svg>
162
+ ),
163
+ },
164
+ {
165
+ name: "Excel",
166
+ code: "excel",
167
+ icon: (
168
+ <svg version="1.1" id="Layer_1" x="0px" y="0px"
169
+ fill="#000000" viewBox="0 0 512 512" width="16" height="16">
170
+ <g>
171
+ <g>
172
+ <g>
173
+ <path d="M447.168,134.56c-0.535-1.288-1.318-2.459-2.304-3.445l-128-128c-2.003-1.988-4.709-3.107-7.531-3.115H74.667
174
+ C68.776,0,64,4.776,64,10.667v490.667C64,507.224,68.776,512,74.667,512h362.667c5.891,0,10.667-4.776,10.667-10.667V138.667
175
+ C447.997,137.256,447.714,135.86,447.168,134.56z M320,36.416L411.584,128H320V36.416z M426.667,490.667H85.333V21.333h213.333
176
+ v117.333c0,5.891,4.776,10.667,10.667,10.667h117.333V490.667z"/>
177
+ <path d="M128,181.333v256c0,5.891,4.776,10.667,10.667,10.667h234.667c5.891,0,10.667-4.776,10.667-10.667v-256
178
+ c0-5.891-4.776-10.667-10.667-10.667H138.667C132.776,170.667,128,175.442,128,181.333z M320,192h42.667v42.667H320V192z
179
+ M320,256h42.667v42.667H320V256z M320,320h42.667v42.667H320V320z M320,384h42.667v42.667H320V384z M213.333,192h85.333v42.667
180
+ h-85.333V192z M213.333,256h85.333v42.667h-85.333V256z M213.333,320h85.333v42.667h-85.333V320z M213.333,384h85.333v42.667
181
+ h-85.333V384z M149.333,192H192v42.667h-42.667V192z M149.333,256H192v42.667h-42.667V256z M149.333,320H192v42.667h-42.667V320z
182
+ M149.333,384H192v42.667h-42.667V384z"/>
183
+ </g>
184
+ </g>
185
+ </g>
186
+ </svg>
187
+ ),
188
+ },
189
+ ]);
190
+
191
+ const [isDialogVisible, setIsDialogVisible] = useState(false);
192
+ const [newTemplateName, setNewTemplateName] = useState("");
193
+ const steps = [
194
+ { label: 'Export', value: 'export' },
195
+ { label: 'Summary', value: 'summary' },
196
+ ];
197
+ const [currentStepValue, setCurrentStepValue] = useState('export');
198
+
199
+ useEffect(() => {
200
+ if (templatesData?.records && templatesData.records.length > 0) {
201
+ const templates = templatesData.records.map((template: any) => ({
202
+ name: template.templateName,
203
+ code: template.id,
204
+ fields: template.fields,
205
+ templateFormat: template.templateFormat
206
+ }));
207
+ setTemplateOptions([...templates]);
208
+ }
209
+ }, [templatesData]);
210
+
211
+ const handleAddTemplate = async () => {
212
+ setIsDialogVisible(false);
213
+ const tname = newTemplateName.trim();
214
+ if ((selectedTemplate?.name || tname) && selectedFormat) {
215
+ setNewTemplateName("");
216
+ setIsDialogVisible(false);
217
+ let customSelectedFields = selectedColumns.map((col) => col.key);
218
+ const fieldsData = JSON.stringify(customSelectedFields)
219
+ const exportData = {
220
+ templateName: tname || selectedTemplate?.name || "",
221
+ templateFormat: selectedFormat?.code || "",
222
+ notifyOnEmail: true,
223
+ fields: fieldsData,
224
+ modelMetadataId: solidView?.model?.id,
225
+ };
226
+
227
+ try {
228
+ const response = await createExportTemplate(exportData).unwrap();
229
+ toast?.current?.show({
230
+ severity: "success",
231
+ summary: "Template Added",
232
+ detail: "Template Saved",
233
+ });
234
+ let newAddedTemplate: TemplateOption = {
235
+ name: selectedTemplate?.name || "",
236
+ code: response.data.id,
237
+ fields: customSelectedFields,
238
+ templateFormat: selectedFormat?.code || "",
239
+ };
240
+ setTemplateOptions((prev) => [...prev, newAddedTemplate]);
241
+ // ✅ Select the newly added template
242
+ setSelectedTemplate(newAddedTemplate);
243
+ // ✅ Re-assign the selected format from options list
244
+ setSelectedFormat(formatOptions.find((format) => format.code === selectedFormat?.code) || null);
245
+ } catch (err) {
246
+ console.error(ERROR_MESSAGES.TEMPLATE_FAILED, err);
247
+ }
248
+ } else {
249
+ toast?.current?.show({
250
+ severity: "error",
251
+ summary: ERROR_MESSAGES.TEMPLATE_FAILED,
252
+ detail: ERROR_MESSAGES.TEMPLATE_FAILED,
253
+ });
254
+ }
255
+ };
256
+
257
+ const panelFooterTemplate = () => (
258
+ <div className="p-1">
259
+ <Button
260
+ label="Add New Template"
261
+ icon="pi pi-plus"
262
+ className="p-button"
263
+ onClick={() => setIsDialogVisible(true)}
264
+ />
265
+ </div>
266
+ );
267
+
268
+ const [progress, setProgress] = useState(0);
269
+ const [showProgress, setShowProgress] = useState(false);
270
+ const [message, setMessage] = useState("");
271
+ const [messageDescription, setMessageDescription] = useState("");
272
+ const [status, setStatus] = useState("In Progress");
273
+ const [checkApplyFilter, setCheckedApplyFilter] = useState(false);
274
+ const downloadHandlers = {
275
+ onProgress: (value: number) => {
276
+ setProgress(value);
277
+ },
278
+ onStatusChange: (statusType: "In Progress" | "success" | "error", msg: string, submsg: string) => {
279
+ setStatus(statusType);
280
+ setMessage(msg);
281
+ setMessageDescription(submsg);
282
+ setShowProgress(true);
283
+ },
284
+ };
285
+ const handleDownload = async () => {
286
+ const id = selectedTemplate?.code ? selectedTemplate?.code : null;
287
+ const tname = newTemplateName?.trim() || selectedTemplate?.name || null;
288
+ let customSelectedFields = selectedColumns.map((col) => col.key);
289
+ const fieldsData = JSON.stringify(customSelectedFields)
290
+ const exportData = {
291
+ id: id,
292
+ templateName: tname,
293
+ templateFormat: selectedFormat?.code || "",
294
+ notifyOnEmail: true,
295
+ fields: fieldsData,
296
+ modelMetadataId: solidView?.model?.id,
297
+ };
298
+ // setNewTemplateName("");
299
+ setIsDialogVisible(false);
300
+ try {
301
+ await downloadFileWithProgress(`/export-template/startExport/sync`, downloadHandlers, filters, checkApplyFilter, exportData);
302
+ } catch (err) {
303
+ console.error(ERROR_MESSAGES.DOWNLOAD_FAILED, err);
304
+ }
305
+ };
306
+
307
+ const handleTemplateChange = (e: any) => {
308
+ const selected = templateOptions.find((option) => option.code === e.value.code);
309
+ setSelectedTemplate(selected || null);
310
+ if (selected) {
311
+ let fields: string[] = [];
312
+ if (typeof selected.fields === "string") {
313
+ try {
314
+ fields = JSON.parse(selected.fields);
315
+ } catch (error) {
316
+ console.error(ERROR_MESSAGES.PARSED_FIELD, error);
317
+ }
318
+ } else if (Array.isArray(selected.fields)) {
319
+ fields = selected.fields;
320
+ }
321
+
322
+ const selectedFields = fields.map((field) => ({
323
+ key: field,
324
+ name: solidFieldsMetadata[field]?.displayName || field,
325
+ }));
326
+
327
+ formik.setFieldValue("selectedColumns", selectedFields);
328
+ setSelectedTemplate(selected);
329
+ const format = formatOptions.find(f => f.code === selected.templateFormat);
330
+ setSelectedFormat(format || null);
331
+ } else {
332
+ setSelectedTemplate(null);
333
+ }
334
+ };
335
+ const renderSourceItem = (item: Question) => (
336
+ <div key={item.key} className="flex justify-content-start align-items-center border-top-1 w-full p-1 SolidCustomPicklistItemWrapper SolidCustomPicklistSourceItem">
337
+ <div className="flex items-center gap-2">
338
+ <svg onClick={() => moveToSelected(item)} width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
339
+ <g opacity="0.4">
340
+ <rect x="0.5" y="0.5" width="15" height="15" rx="3.5" fill="white" stroke="#D9D9D9" />
341
+ <path d="M7.42857 8.57143H4V7.42857H7.42857V4H8.57143V7.42857H12V8.57143H8.57143V12H7.42857V8.57143Z" fill="#4B4D52" />
342
+ </g>
343
+ </svg>
344
+ <label htmlFor={item.key} className="text-sm font-semibold ml-2">
345
+ {item.name}
346
+ </label>
347
+ </div>
348
+ </div>
349
+ );
350
+
351
+ const renderTargetItem = (item: Question) => (
352
+ <div key={item.key} className="flex justify-content-start align-items-center border-top-1 w-full p-1 pr-2 gap-2 SolidCustomPicklistItemWrapper">
353
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
354
+ <path d="M7.46672 11.7331C7.46672 12.0997 7.33616 12.4136 7.07505 12.6747C6.81394 12.9359 6.50005 13.0664 6.13338 13.0664C5.76672 13.0664 5.45283 12.9359 5.19172 12.6747C4.9306 12.4136 4.80005 12.0997 4.80005 11.7331C4.80005 11.3664 4.9306 11.0525 5.19172 10.7914C5.45283 10.5303 5.76672 10.3997 6.13338 10.3997C6.50005 10.3997 6.81394 10.5303 7.07505 10.7914C7.33616 11.0525 7.46672 11.3664 7.46672 11.7331ZM7.46672 7.73307C7.46672 8.09974 7.33616 8.41363 7.07505 8.67474C6.81394 8.93585 6.50005 9.06641 6.13338 9.06641C5.76672 9.06641 5.45283 8.93585 5.19172 8.67474C4.9306 8.41363 4.80005 8.09974 4.80005 7.73307C4.80005 7.36641 4.9306 7.05252 5.19172 6.79141C5.45283 6.5303 5.76672 6.39974 6.13338 6.39974C6.50005 6.39974 6.81394 6.5303 7.07505 6.79141C7.33616 7.05252 7.46672 7.36641 7.46672 7.73307ZM7.46672 3.73307C7.46672 4.09974 7.33616 4.41363 7.07505 4.67474C6.81394 4.93585 6.50005 5.06641 6.13338 5.06641C5.76672 5.06641 5.45283 4.93585 5.19172 4.67474C4.9306 4.41363 4.80005 4.09974 4.80005 3.73307C4.80005 3.36641 4.9306 3.05252 5.19172 2.79141C5.45283 2.5303 5.76672 2.39974 6.13338 2.39974C6.50005 2.39974 6.81394 2.5303 7.07505 2.79141C7.33616 3.05252 7.46672 3.36641 7.46672 3.73307Z" fill="black" fill-opacity="0.25" />
355
+ <path d="M11.7333 11.7331C11.7333 12.0997 11.6028 12.4136 11.3417 12.6747C11.0805 12.9359 10.7667 13.0664 10.4 13.0664C10.0333 13.0664 9.71943 12.9359 9.45832 12.6747C9.19721 12.4136 9.06665 12.0997 9.06665 11.7331C9.06665 11.3664 9.19721 11.0525 9.45832 10.7914C9.71943 10.5303 10.0333 10.3997 10.4 10.3997C10.7667 10.3997 11.0805 10.5303 11.3417 10.7914C11.6028 11.0525 11.7333 11.3664 11.7333 11.7331ZM11.7333 7.73307C11.7333 8.09974 11.6028 8.41363 11.3417 8.67474C11.0805 8.93585 10.7667 9.06641 10.4 9.06641C10.0333 9.06641 9.71943 8.93585 9.45832 8.67474C9.19721 8.41363 9.06665 8.09974 9.06665 7.73307C9.06665 7.36641 9.19721 7.05252 9.45832 6.79141C9.71943 6.5303 10.0333 6.39974 10.4 6.39974C10.7667 6.39974 11.0805 6.5303 11.3417 6.79141C11.6028 7.05252 11.7333 7.36641 11.7333 7.73307ZM11.7333 3.73307C11.7333 4.09974 11.6028 4.41363 11.3417 4.67474C11.0805 4.93585 10.7667 5.06641 10.4 5.06641C10.0333 5.06641 9.71943 4.93585 9.45832 4.67474C9.19721 4.41363 9.06665 4.09974 9.06665 3.73307C9.06665 3.36641 9.19721 3.05252 9.45832 2.79141C9.71943 2.5303 10.0333 2.39974 10.4 2.39974C10.7667 2.39974 11.0805 2.5303 11.3417 2.79141C11.6028 3.05252 11.7333 3.36641 11.7333 3.73307Z" fill="black" fill-opacity="0.25" />
356
+ </svg>
357
+ <span className="text-sm font-semibold flex-1 ">{item.name}</span>
358
+ <svg width="16" height="16" onClick={() => moveToAvailable(item)} cursor='pointer' viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
359
+ <rect width="16" height="16" rx="8" fill="#F0F0F0" />
360
+ <path d="M5.6 11L5 10.4L7.4 8L5 5.6L5.6 5L8 7.4L10.4 5L11 5.6L8.6 8L11 10.4L10.4 11L8 8.6L5.6 11Z" fill="#4B4D52" />
361
+ </svg>
362
+ </div>
363
+ );
364
+ const maxVisibleRows = Math.max(availableColumns.length, selectedColumns.length);
365
+ const renderEmptyRow = (index: number) => (
366
+ <div key={`empty-${index}`} className="SolidCustomPicklistItemWrapper" />
367
+ );
368
+ // Dialog footer (Save and Cancel buttons)
369
+ const dialogFooter = (
370
+ <div>
371
+ <Button
372
+ label="Save"
373
+ className="p-button rounded"
374
+ onClick={() => handleAddTemplate()}
375
+ disabled={!newTemplateName.trim()}
376
+ />
377
+ <Button
378
+ label="Cancel"
379
+ className="ExportCancelButton"
380
+ onClick={() => {
381
+ setNewTemplateName("");
382
+ setIsDialogVisible(false);
383
+ }}
384
+ />
385
+ </div>
386
+ );
387
+ const handleDeleteTemplate = async (id: string) => {
388
+ const response = await deleteExportTemplate(id).unwrap();
389
+ setTemplateOptions((prev) => prev.filter((template) => template.code !== id));
390
+ toast?.current?.show({
391
+ severity: "success",
392
+ summary: "Template Deleted",
393
+ detail: "Template Deleted",
394
+ });
395
+ };
396
+ const itemTemplate = (option: TemplateOption) => {
397
+ return (
398
+ <div className="flex align-items-center justify-content-between w-full py-1">
399
+ <span className="ExportDropdownText">{option.name}</span>
400
+ <svg width="16px" height="16px" viewBox="0 0 24 24" fill="none" style={{ right: 0 }} className="ExportDropdownIcon" onClick={(e) => {
401
+ e.stopPropagation(); // Prevent triggering selection
402
+ handleDeleteTemplate(option.code);
403
+ }}
404
+ xmlns="http://www.w3.org/2000/svg">
405
+ <path d="M7 4a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2h4a1 1 0 1 1 0 2h-1.069l-.867 12.142A2 2 0 0 1 17.069 22H6.93a2 2 0 0 1-1.995-1.858L4.07 8H3a1 1 0 0 1 0-2h4V4zm2 2h6V4H9v2zM6.074 8l.857 12H17.07l.857-12H6.074zM10 10a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-6a1 1 0 0 1 1-1zm4 0a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-6a1 1 0 0 1 1-1z"
406
+ fill="#ff3d32" /></svg>
407
+ </div>
408
+ );
409
+ };
410
+
411
+ return (
412
+ <>
413
+ <Toast ref={toast} />
414
+ {/*<div className="flex align-items-center justify-content-between m-0 p-0">
415
+ <SolidExportStepper
416
+ solidFormViewWorkflowData={steps}
417
+ activeValue={currentStepValue}
418
+ setActiveValue={setCurrentStepValue} />
419
+ </div> */}
420
+ <div className="p-0">
421
+ {currentStepValue === 'export' &&
422
+ <>
423
+ <div className="SolidExportControls mx-2 gap-2">
424
+ <div className="flex align-items-center">
425
+ <Checkbox inputId="applyFilters" onChange={e => setCheckedApplyFilter(!!e.checked)} checked={checkApplyFilter} />
426
+ <label htmlFor="applyFilters" className="ml-2"> Apply Filters</label>
427
+ </div>
428
+ <Dropdown
429
+ value={selectedFormat}
430
+ onChange={(e) => setSelectedFormat(e.value)}
431
+ options={formatOptions}
432
+ optionLabel="name"
433
+ placeholder="Format ..."
434
+ className="p-dropdown p-outlined"
435
+
436
+ // 👇 Render icon + text for dropdown list options
437
+ itemTemplate={(option) => {
438
+ const isSelected = selectedFormat?.code === option.code;
439
+ const iconColor = isSelected ? "#722ED1" : "#000000"; // Blue for selected
440
+ return (
441
+ <div className="flex items-center gap-2 ">
442
+ {React.cloneElement(option.icon, { fill: iconColor })}
443
+ <span>{option.name}</span>
444
+ </div>
445
+ );
446
+ }}
447
+
448
+ // 👇 Render icon + text for selected value display
449
+ valueTemplate={(option) => {
450
+ if (!option) return "Format ...";
451
+ return (
452
+ <div className="flex items-center gap-2 h-1rem">
453
+ {React.cloneElement(option.icon, { fill: "#722ED1" })}
454
+ <span>{option.name}</span>
455
+ </div>
456
+ );
457
+ }}
458
+ />
459
+ <Dropdown
460
+ value={selectedTemplate}
461
+ onChange={(e) => handleTemplateChange(e)}
462
+ options={templateOptions}
463
+ optionLabel="name"
464
+ placeholder="Template "
465
+ className="p-dropdown hidden md:flex"
466
+ itemTemplate={itemTemplate}
467
+ panelFooterTemplate={panelFooterTemplate}
468
+ />
469
+
470
+ <Button
471
+ className="p-button hidden md:flex"
472
+ label="Export"
473
+ disabled={!selectedFormat}
474
+ onClick={() => handleDownload()}
475
+ />
476
+ <Button
477
+ className="p-button md:hidden"
478
+ label="Export"
479
+ disabled={!selectedFormat}
480
+ onClick={() => handleDownload()}
481
+ size="small"
482
+ />
483
+ </div>
484
+ <div className="col-12 sm:col-6 p-0 ">
485
+ <Dropdown
486
+ value={selectedTemplate}
487
+ onChange={(e) => handleTemplateChange(e)}
488
+ options={templateOptions}
489
+ optionLabel="name"
490
+ placeholder="Template"
491
+ className="p-dropdown md:hidden w-full mt-2 p-inputtext-sm"
492
+ itemTemplate={itemTemplate}
493
+ panelFooterTemplate={panelFooterTemplate}
494
+ />
495
+ </div>
496
+
497
+
498
+ <Dialog
499
+ header="Save Export Template"
500
+ className="solid-confirm-dialog"
501
+ visible={isDialogVisible}
502
+ style={{ width: "20rem", right: "0" }}
503
+ footer={dialogFooter}
504
+ onHide={() => {
505
+ setNewTemplateName("");
506
+ setIsDialogVisible(false);
507
+ }}
508
+ >
509
+ <label htmlFor="templateName" className="text-color-secondary">Title</label>
510
+ <InputText
511
+ id="templateName"
512
+ name="templateName"
513
+ value={newTemplateName}
514
+ onChange={(e) => setNewTemplateName(e.target.value)}
515
+ placeholder="Enter template name"
516
+ className="w-full"
517
+ autoFocus
518
+ />
519
+ </Dialog>
520
+ <div className="SolidCustomPicklist mt-2">
521
+ <div className="flex">
522
+ {/* All Questions */}
523
+ <div className="w-6">
524
+ <div className="text-sm font-semibold SolidCustomPicklistSourceHeader" style={{ padding: '12px 16px', background: '#F3FAFF' }}>Available Fields</div>
525
+ <div>
526
+ {availableColumns.map(renderSourceItem)}
527
+ {Array.from({ length: maxVisibleRows - availableColumns.length }).map((_, i) =>
528
+ renderEmptyRow(i)
529
+ )}
530
+ </div>
531
+ </div>
532
+
533
+ {/* Selected Questions */}
534
+ <div className="w-6">
535
+ <div className="text-sm font-semibold" style={{ padding: '12px 16px', background: '#F3FAFF' }} >Selected Fields</div>
536
+ <div>
537
+ {selectedColumns.map(renderTargetItem)}
538
+ {Array.from({ length: maxVisibleRows - selectedColumns.length }).map((_, i) =>
539
+ renderEmptyRow(i)
540
+ )}
541
+ </div>
542
+ </div>
543
+ </div>
544
+ </div>
545
+ </>
546
+ }
547
+ {/* {currentStepValue === 'summary' && (
548
+ <p className="m-0">
549
+ Relations and Media Fields are not supported for Export.
550
+ </p>
551
+ )} */}
552
+ </div>
553
+ <DownloadProgressToast
554
+ visible={showProgress}
555
+ progress={progress}
556
+ message={message}
557
+ submessage={messageDescription}
558
+ status={status}
559
+ onClose={() => setShowProgress(false)}
560
+ />
561
+ </>
562
+ );
563
+ };