@solidxai/core-ui 0.1.13-beta.2 → 0.1.13-beta.3

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 (460) hide show
  1. package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
  2. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
  3. package/dist/components/auth/SolidOTPVerify.js +67 -0
  4. package/dist/components/auth/SolidOTPVerify.js.map +1 -0
  5. package/dist/components/auth/SolidOTPVerify.tsx +133 -0
  6. package/dist/components/common/AuthBanner.d.ts +3 -0
  7. package/dist/components/common/AuthBanner.d.ts.map +1 -0
  8. package/dist/components/common/AuthBanner.js +15 -0
  9. package/dist/components/common/AuthBanner.js.map +1 -0
  10. package/dist/components/common/AuthBanner.tsx +41 -0
  11. package/dist/components/common/SingleSelectAutoCompleteField.d.ts +2 -0
  12. package/dist/components/common/SingleSelectAutoCompleteField.d.ts.map +1 -0
  13. package/dist/components/common/SingleSelectAutoCompleteField.js +92 -0
  14. package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -0
  15. package/dist/components/common/SingleSelectAutoCompleteField.tsx +73 -0
  16. package/dist/components/common/SolidExportStepper.d.ts +12 -0
  17. package/dist/components/common/SolidExportStepper.d.ts.map +1 -0
  18. package/dist/components/common/SolidExportStepper.js +30 -0
  19. package/dist/components/common/SolidExportStepper.js.map +1 -0
  20. package/dist/components/common/SolidExportStepper.tsx +135 -0
  21. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
  22. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
  23. package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
  24. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
  25. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
  26. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts +2 -0
  27. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts.map +1 -0
  28. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js +16 -0
  29. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js.map +1 -0
  30. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +29 -0
  31. package/dist/components/core/dashboard/DashboardFilter.d.ts +13 -0
  32. package/dist/components/core/dashboard/DashboardFilter.d.ts.map +1 -0
  33. package/dist/components/core/dashboard/DashboardFilter.js +299 -0
  34. package/dist/components/core/dashboard/DashboardFilter.js.map +1 -0
  35. package/dist/components/core/dashboard/DashboardFilter.tsx +348 -0
  36. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
  37. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
  38. package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
  39. package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
  40. package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
  41. package/dist/components/core/dashboard/SolidDashboard.d.ts +28 -0
  42. package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -0
  43. package/dist/components/core/dashboard/SolidDashboard.js +183 -0
  44. package/dist/components/core/dashboard/SolidDashboard.js.map +1 -0
  45. package/dist/components/core/dashboard/SolidDashboard.module.css +83 -0
  46. package/dist/components/core/dashboard/SolidDashboard.tsx +263 -0
  47. package/dist/components/core/dashboard/SolidDashboardBody.d.ts +24 -0
  48. package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -0
  49. package/dist/components/core/dashboard/SolidDashboardBody.js +162 -0
  50. package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -0
  51. package/dist/components/core/dashboard/SolidDashboardBody.tsx +168 -0
  52. package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts +2 -0
  53. package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts.map +1 -0
  54. package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +11 -0
  55. package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -0
  56. package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +28 -0
  57. package/dist/components/core/dashboard/SolidDashboardHeader.d.ts +3 -0
  58. package/dist/components/core/dashboard/SolidDashboardHeader.d.ts.map +1 -0
  59. package/dist/components/core/dashboard/SolidDashboardHeader.js +6 -0
  60. package/dist/components/core/dashboard/SolidDashboardHeader.js.map +1 -0
  61. package/dist/components/core/dashboard/SolidDashboardHeader.tsx +10 -0
  62. package/dist/components/core/dashboard/SolidDashboardLoading.d.ts +2 -0
  63. package/dist/components/core/dashboard/SolidDashboardLoading.d.ts.map +1 -0
  64. package/dist/components/core/dashboard/SolidDashboardLoading.js +10 -0
  65. package/dist/components/core/dashboard/SolidDashboardLoading.js.map +1 -0
  66. package/dist/components/core/dashboard/SolidDashboardLoading.tsx +61 -0
  67. package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts +3 -0
  68. package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts.map +1 -0
  69. package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +12 -0
  70. package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -0
  71. package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +32 -0
  72. package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts +2 -0
  73. package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts.map +1 -0
  74. package/dist/components/core/dashboard/SolidDashboardRenderError.js +11 -0
  75. package/dist/components/core/dashboard/SolidDashboardRenderError.js.map +1 -0
  76. package/dist/components/core/dashboard/SolidDashboardRenderError.tsx +28 -0
  77. package/dist/components/core/dashboard/SolidDashboardVariable.d.ts +19 -0
  78. package/dist/components/core/dashboard/SolidDashboardVariable.d.ts.map +1 -0
  79. package/dist/components/core/dashboard/SolidDashboardVariable.js +171 -0
  80. package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -0
  81. package/dist/components/core/dashboard/SolidDashboardVariable.tsx +259 -0
  82. package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts +9 -0
  83. package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -0
  84. package/dist/components/core/dashboard/SolidQuestionRenderer.js +42 -0
  85. package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -0
  86. package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +99 -0
  87. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts +9 -0
  88. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -0
  89. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +35 -0
  90. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -0
  91. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +48 -0
  92. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts +7 -0
  93. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts.map +1 -0
  94. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js +22 -0
  95. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js.map +1 -0
  96. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +51 -0
  97. package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts +2 -0
  98. package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts.map +1 -0
  99. package/dist/components/core/dashboard/chart-renderers/init-chartjs.js +4 -0
  100. package/dist/components/core/dashboard/chart-renderers/init-chartjs.js.map +1 -0
  101. package/dist/components/core/dashboard/chart-renderers/init-chartjs.ts +25 -0
  102. package/dist/components/core/dashboard/dashboard-utils.d.ts +2 -0
  103. package/dist/components/core/dashboard/dashboard-utils.d.ts.map +1 -0
  104. package/dist/components/core/dashboard/dashboard-utils.js +38 -0
  105. package/dist/components/core/dashboard/dashboard-utils.js.map +1 -0
  106. package/dist/components/core/dashboard/dashboard-utils.ts +39 -0
  107. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
  108. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
  109. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
  110. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
  111. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
  112. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
  113. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
  114. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
  115. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
  116. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
  117. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
  118. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
  119. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
  120. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
  121. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
  122. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts +4 -0
  123. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts.map +1 -0
  124. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js +23 -0
  125. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js.map +1 -0
  126. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +36 -0
  127. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  128. package/dist/components/core/form/fields/SolidMediaMultipleField.js +111 -106
  129. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  130. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +165 -134
  131. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  132. package/dist/components/core/form/fields/SolidMediaSingleField.js +81 -84
  133. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  134. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +97 -86
  135. package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
  136. package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
  137. package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
  138. package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
  139. package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
  140. package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
  141. package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
  142. package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js +111 -0
  143. package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js.map +1 -0
  144. package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.tsx +122 -0
  145. package/dist/components/core/kanban/SolidKanbanViewFields.d.ts +12 -0
  146. package/dist/components/core/kanban/SolidKanbanViewFields.d.ts.map +1 -0
  147. package/dist/components/core/kanban/SolidKanbanViewFields.js +145 -0
  148. package/dist/components/core/kanban/SolidKanbanViewFields.js.map +1 -0
  149. package/dist/components/core/kanban/SolidKanbanViewFields.tsx +164 -0
  150. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts +2 -0
  151. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -0
  152. package/dist/components/core/kanban/SolidManyToOneFilterElement.js +87 -0
  153. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -0
  154. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
  155. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts +2 -0
  156. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
  157. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js +73 -0
  158. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js.map +1 -0
  159. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
  160. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts +2 -0
  161. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts.map +1 -0
  162. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js +20 -0
  163. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js.map +1 -0
  164. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
  165. package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts +12 -0
  166. package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts.map +1 -0
  167. package/dist/components/core/kanban/SolidVarInputsFilterElement.js +81 -0
  168. package/dist/components/core/kanban/SolidVarInputsFilterElement.js.map +1 -0
  169. package/dist/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
  170. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts +4 -0
  171. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts.map +1 -0
  172. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js +7 -0
  173. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js.map +1 -0
  174. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
  175. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts +4 -0
  176. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts.map +1 -0
  177. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js +8 -0
  178. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -0
  179. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +16 -0
  180. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts +4 -0
  181. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts.map +1 -0
  182. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js +21 -0
  183. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js.map +1 -0
  184. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
  185. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts +4 -0
  186. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts.map +1 -0
  187. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js +8 -0
  188. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -0
  189. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
  190. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts +4 -0
  191. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts.map +1 -0
  192. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js +8 -0
  193. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -0
  194. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
  195. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts +4 -0
  196. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts.map +1 -0
  197. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js +7 -0
  198. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js.map +1 -0
  199. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
  200. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts +4 -0
  201. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts.map +1 -0
  202. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js +8 -0
  203. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -0
  204. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
  205. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts +4 -0
  206. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts.map +1 -0
  207. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js +7 -0
  208. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js.map +1 -0
  209. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
  210. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts +4 -0
  211. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts.map +1 -0
  212. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js +8 -0
  213. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -0
  214. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
  215. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts +4 -0
  216. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts.map +1 -0
  217. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js +16 -0
  218. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -0
  219. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +20 -0
  220. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts +4 -0
  221. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts.map +1 -0
  222. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js +7 -0
  223. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js.map +1 -0
  224. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
  225. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts +4 -0
  226. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -0
  227. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +56 -0
  228. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -0
  229. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +140 -0
  230. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts +4 -0
  231. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -0
  232. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +42 -0
  233. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -0
  234. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +164 -0
  235. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts +4 -0
  236. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts.map +1 -0
  237. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js +11 -0
  238. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js.map +1 -0
  239. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
  240. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts +4 -0
  241. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts.map +1 -0
  242. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js +7 -0
  243. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js.map +1 -0
  244. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
  245. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts +4 -0
  246. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts.map +1 -0
  247. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js +8 -0
  248. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -0
  249. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +14 -0
  250. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts +4 -0
  251. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts.map +1 -0
  252. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js +8 -0
  253. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -0
  254. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
  255. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts +4 -0
  256. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -0
  257. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +37 -0
  258. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -0
  259. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +121 -0
  260. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts +4 -0
  261. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts.map +1 -0
  262. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js +8 -0
  263. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -0
  264. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
  265. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts +4 -0
  266. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts.map +1 -0
  267. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js +8 -0
  268. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js.map +1 -0
  269. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
  270. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts +4 -0
  271. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts.map +1 -0
  272. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js +7 -0
  273. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -0
  274. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
  275. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +2 -0
  276. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -0
  277. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +39 -0
  278. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -0
  279. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +40 -0
  280. package/dist/components/core/list/SolidVarInputsFilterElement.d.ts +12 -0
  281. package/dist/components/core/list/SolidVarInputsFilterElement.d.ts.map +1 -0
  282. package/dist/components/core/list/SolidVarInputsFilterElement.js +81 -0
  283. package/dist/components/core/list/SolidVarInputsFilterElement.js.map +1 -0
  284. package/dist/components/core/list/SolidVarInputsFilterElement.tsx +184 -0
  285. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  286. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +42 -81
  287. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  288. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +90 -120
  289. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
  290. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +34 -42
  291. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  292. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +51 -46
  293. package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
  294. package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
  295. package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
  296. package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
  297. package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
  298. package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts +3 -0
  299. package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
  300. package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js +33 -0
  301. package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js.map +1 -0
  302. package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.tsx +50 -0
  303. package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts +3 -0
  304. package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts.map +1 -0
  305. package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js +158 -0
  306. package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js.map +1 -0
  307. package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.tsx +185 -0
  308. package/dist/components/layout/DashboardHeader.d.ts +3 -0
  309. package/dist/components/layout/DashboardHeader.d.ts.map +1 -0
  310. package/dist/components/layout/DashboardHeader.js +20 -0
  311. package/dist/components/layout/DashboardHeader.js.map +1 -0
  312. package/dist/components/layout/DashboardHeader.tsx +94 -0
  313. package/dist/helpers/# no such endpoints exist, need to calle +3 -0
  314. package/dist/helpers/ToastContainer.d.ts +4 -0
  315. package/dist/helpers/ToastContainer.d.ts.map +1 -0
  316. package/dist/helpers/ToastContainer.js +49 -0
  317. package/dist/helpers/ToastContainer.js.map +1 -0
  318. package/dist/helpers/ToastContainer.tsx +94 -0
  319. package/dist/helpers/downloadMediaFile.d.ts.map +1 -1
  320. package/dist/helpers/downloadMediaFile.js +10 -3
  321. package/dist/helpers/downloadMediaFile.js.map +1 -1
  322. package/dist/helpers/downloadMediaFile.tsx +13 -7
  323. package/dist/helpers/fileTypeIcon.d.ts +3 -2
  324. package/dist/helpers/fileTypeIcon.d.ts.map +1 -1
  325. package/dist/helpers/fileTypeIcon.js +11 -7
  326. package/dist/helpers/fileTypeIcon.js.map +1 -1
  327. package/dist/helpers/fileTypeIcon.tsx +12 -7
  328. package/dist/helpers/mediaType.d.ts +7 -0
  329. package/dist/helpers/mediaType.d.ts.map +1 -1
  330. package/dist/helpers/mediaType.js +39 -8
  331. package/dist/helpers/mediaType.js.map +1 -1
  332. package/dist/helpers/mediaType.ts +46 -7
  333. package/dist/helpers/mediaUrl.d.ts +2 -0
  334. package/dist/helpers/mediaUrl.d.ts.map +1 -0
  335. package/dist/helpers/mediaUrl.js +10 -0
  336. package/dist/helpers/mediaUrl.js.map +1 -0
  337. package/dist/helpers/mediaUrl.ts +11 -0
  338. package/dist/helpers/showToast.d.ts +5 -0
  339. package/dist/helpers/showToast.d.ts.map +1 -0
  340. package/dist/helpers/showToast.js +17 -0
  341. package/dist/helpers/showToast.js.map +1 -0
  342. package/dist/helpers/showToast.ts +13 -0
  343. package/dist/helpers/studioSandbox.d.ts +31 -0
  344. package/dist/helpers/studioSandbox.d.ts.map +1 -0
  345. package/dist/helpers/studioSandbox.js +104 -0
  346. package/dist/helpers/studioSandbox.js.map +1 -0
  347. package/dist/helpers/studioSandbox.ts +117 -0
  348. package/dist/nextAuth/authProviders.d.ts +4 -0
  349. package/dist/nextAuth/authProviders.d.ts.map +1 -0
  350. package/dist/nextAuth/authProviders.js +198 -0
  351. package/dist/nextAuth/authProviders.js.map +1 -0
  352. package/dist/nextAuth/authProviders.tsx +232 -0
  353. package/dist/nextAuth/handleLogout.d.ts +2 -0
  354. package/dist/nextAuth/handleLogout.d.ts.map +1 -0
  355. package/dist/nextAuth/handleLogout.js +36 -0
  356. package/dist/nextAuth/handleLogout.js.map +1 -0
  357. package/dist/nextAuth/handleLogout.tsx +39 -0
  358. package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
  359. package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
  360. package/dist/nextAuth/refreshAccessToken.js +24 -0
  361. package/dist/nextAuth/refreshAccessToken.js.map +1 -0
  362. package/dist/nextAuth/refreshAccessToken.tsx +28 -0
  363. package/dist/redux/api/dashboardApi.d.ts +23 -0
  364. package/dist/redux/api/dashboardApi.d.ts.map +1 -0
  365. package/dist/redux/api/dashboardApi.js +35 -0
  366. package/dist/redux/api/dashboardApi.js.map +1 -0
  367. package/dist/redux/api/dashboardApi.ts +56 -0
  368. package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
  369. package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
  370. package/dist/redux/api/dashboardLayoutApi.js +34 -0
  371. package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
  372. package/dist/redux/api/dashboardLayoutApi.ts +55 -0
  373. package/dist/redux/api/dashboardQuestionApi.d.ts +5 -0
  374. package/dist/redux/api/dashboardQuestionApi.d.ts.map +1 -0
  375. package/dist/redux/api/dashboardQuestionApi.js +18 -0
  376. package/dist/redux/api/dashboardQuestionApi.js.map +1 -0
  377. package/dist/redux/api/dashboardQuestionApi.ts +17 -0
  378. package/dist/redux/features/settingsSlice.d.ts +20 -0
  379. package/dist/redux/features/settingsSlice.d.ts.map +1 -0
  380. package/dist/redux/features/settingsSlice.js +39 -0
  381. package/dist/redux/features/settingsSlice.js.map +1 -0
  382. package/dist/redux/features/settingsSlice.ts +60 -0
  383. package/dist/resources/images/Footerbg.png +0 -0
  384. package/dist/resources/images/LoginBanner.png +0 -0
  385. package/dist/resources/images/dashboard/Ellipse 1.svg +10 -0
  386. package/dist/resources/images/dashboard/Rectangle 17.svg +10 -0
  387. package/dist/resources/images/dashboard/Rectangle 25.svg +11 -0
  388. package/dist/resources/images/dashboard/image 5.svg +9 -0
  389. package/dist/resources/images/loginhero.png +0 -0
  390. package/dist/resources/images/logo.png +0 -0
  391. package/dist/resources/images/radix-logo-white.png +0 -0
  392. package/dist/resources/images/radix-logo.png +0 -0
  393. package/dist/resources/images/signupBanner.png +0 -0
  394. package/dist/resources/shadcn-base.css +16 -70
  395. package/dist/resources/solid-tailwind-generated.css +1 -1
  396. package/package.json +1 -1
  397. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.d.ts +0 -8
  398. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.d.ts.map +0 -1
  399. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.js +0 -6
  400. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.js.map +0 -1
  401. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.ts +0 -13
  402. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.d.ts +0 -11
  403. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.d.ts.map +0 -1
  404. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.js +0 -10
  405. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.js.map +0 -1
  406. package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.ts +0 -22
  407. package/dist/components/core/list/SolidCustomListColumn.d.ts +0 -8
  408. package/dist/components/core/list/SolidCustomListColumn.d.ts.map +0 -1
  409. package/dist/components/core/list/SolidCustomListColumn.js +0 -47
  410. package/dist/components/core/list/SolidCustomListColumn.js.map +0 -1
  411. package/dist/components/core/list/SolidCustomListColumn.tsx +0 -57
  412. package/dist/components/workflow/WorkflowFlowCanvas.css +0 -431
  413. package/dist/components/workflow/WorkflowFlowCanvas.d.ts +0 -41
  414. package/dist/components/workflow/WorkflowFlowCanvas.d.ts.map +0 -1
  415. package/dist/components/workflow/WorkflowFlowCanvas.js +0 -705
  416. package/dist/components/workflow/WorkflowFlowCanvas.js.map +0 -1
  417. package/dist/components/workflow/WorkflowFlowCanvas.tsx +0 -1274
  418. package/dist/components/workflow/WorkflowNodeDocsPanel.css +0 -247
  419. package/dist/components/workflow/WorkflowNodeDocsPanel.d.ts +0 -22
  420. package/dist/components/workflow/WorkflowNodeDocsPanel.d.ts.map +0 -1
  421. package/dist/components/workflow/WorkflowNodeDocsPanel.js +0 -97
  422. package/dist/components/workflow/WorkflowNodeDocsPanel.js.map +0 -1
  423. package/dist/components/workflow/WorkflowNodeDocsPanel.tsx +0 -363
  424. package/dist/components/workflow/WorkflowNodeSchemaEditor.d.ts +0 -50
  425. package/dist/components/workflow/WorkflowNodeSchemaEditor.d.ts.map +0 -1
  426. package/dist/components/workflow/WorkflowNodeSchemaEditor.js +0 -309
  427. package/dist/components/workflow/WorkflowNodeSchemaEditor.js.map +0 -1
  428. package/dist/components/workflow/WorkflowNodeSchemaEditor.tsx +0 -808
  429. package/dist/helpers/modulePackageResumeState.d.ts +0 -6
  430. package/dist/helpers/modulePackageResumeState.d.ts.map +0 -1
  431. package/dist/helpers/modulePackageResumeState.js +0 -46
  432. package/dist/helpers/modulePackageResumeState.js.map +0 -1
  433. package/dist/helpers/modulePackageResumeState.ts +0 -57
  434. package/dist/redux/api/workflowDefinitionEditorApi.d.ts +0 -17
  435. package/dist/redux/api/workflowDefinitionEditorApi.d.ts.map +0 -1
  436. package/dist/redux/api/workflowDefinitionEditorApi.js +0 -38
  437. package/dist/redux/api/workflowDefinitionEditorApi.js.map +0 -1
  438. package/dist/redux/api/workflowDefinitionEditorApi.ts +0 -40
  439. package/dist/redux/api/workflowNodeApi.d.ts +0 -6
  440. package/dist/redux/api/workflowNodeApi.d.ts.map +0 -1
  441. package/dist/redux/api/workflowNodeApi.js +0 -14
  442. package/dist/redux/api/workflowNodeApi.js.map +0 -1
  443. package/dist/redux/api/workflowNodeApi.ts +0 -18
  444. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.css +0 -970
  445. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.d.ts +0 -3
  446. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.d.ts.map +0 -1
  447. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +0 -1287
  448. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +0 -1
  449. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +0 -2572
  450. package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.css +0 -151
  451. package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.d.ts +0 -3
  452. package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.d.ts.map +0 -1
  453. package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.js +0 -250
  454. package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.js.map +0 -1
  455. package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.tsx +0 -455
  456. package/dist/types/workflow-node.d.ts +0 -127
  457. package/dist/types/workflow-node.d.ts.map +0 -1
  458. package/dist/types/workflow-node.js +0 -2
  459. package/dist/types/workflow-node.js.map +0 -1
  460. package/dist/types/workflow-node.ts +0 -162
@@ -1,49 +1,32 @@
1
1
 
2
2
  import React, { useState } from 'react';
3
- import { Download, Volume2 } from "lucide-react";
3
+ import { Volume2 } from "lucide-react";
4
4
  import { Column } from "../SolidDataTable";
5
5
  import { SolidListViewColumnParams } from '../SolidListViewColumn';
6
6
  import { SolidMediaListFieldWidgetProps } from '../../../../types/solid-core';
7
7
  import { getExtensionComponent } from '../../../../helpers/registry';
8
8
  import { FileReaderExt } from '../../../../components/common/FileReaderExt';
9
- import { SolidButton, SolidDialog } from "../../../shad-cn-ui";
9
+ import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle, SolidIcon } from "../../../shad-cn-ui";
10
10
  import { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';
11
-
12
- const getCleanUrl = (url: string) => url.split("?")[0];
13
-
14
- const isImageFile = (url: string) => /\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(getCleanUrl(url));
15
-
16
- const isVideoFile = (url: string) => /\.(mp4|webm|ogg)$/i.test(getCleanUrl(url));
17
-
18
- const isAudioFile = (url: string) => /\.(mp3|wav|ogg)$/i.test(getCleanUrl(url));
19
-
20
- const isDocumentType = (url: string) => {
21
- const ext = getCleanUrl(url).split(".").pop()?.toLowerCase();
22
- return ext ? downloadOnlyExt.includes(ext) : false;
23
- };
24
-
25
- const downloadOnlyExt = [
26
- "txt", "zip", "rar",
27
- "doc", "docx",
28
- "xls", "xlsx",
29
- "ppt", "pptx",
30
- "pdf", "csv"
31
- ];
32
-
33
- const downloadFile = (url: string, name: string = "") => {
34
- const link = document.createElement("a");
35
- link.href = url;
36
- link.download = name;
37
- link.target = "_blank";
38
- document.body.appendChild(link);
39
- link.click();
40
- document.body.removeChild(link);
41
- };
11
+ import { getMediaPreviewKind, isLightboxMediaKind, type MediaPreviewKind } from '../../../../helpers/mediaType';
12
+ import { openMediaInNewTab } from '../../../../helpers/mediaUrl';
13
+ import { downloadMediaFile } from '../../../../helpers/downloadMediaFile';
14
+ import styles from "../../form/fields/solidFields.module.css";
42
15
 
43
16
 
44
17
 
45
18
  // Thumbnail preview component
46
- const MediaPreview = ({ src, onClick }: { src: string; onClick: (event: React.MouseEvent) => void }) => {
19
+ const MediaPreview = ({
20
+ src,
21
+ fileName,
22
+ previewKind,
23
+ onClick
24
+ }: {
25
+ src: string;
26
+ fileName?: string;
27
+ previewKind: MediaPreviewKind;
28
+ onClick: (event: React.MouseEvent) => void
29
+ }) => {
47
30
  const [isBroken, setIsBroken] = useState(false);
48
31
 
49
32
  const handleClick = (event: React.MouseEvent) => {
@@ -51,7 +34,7 @@ const MediaPreview = ({ src, onClick }: { src: string; onClick: (event: React.Mo
51
34
  };
52
35
 
53
36
  if (!isBroken) {
54
- if (isImageFile(src)) {
37
+ if (previewKind === "image") {
55
38
  return (
56
39
  <img
57
40
  src={src}
@@ -66,7 +49,7 @@ const MediaPreview = ({ src, onClick }: { src: string; onClick: (event: React.Mo
66
49
  );
67
50
  }
68
51
 
69
- if (isVideoFile(src)) {
52
+ if (previewKind === "video") {
70
53
  return (
71
54
  <video
72
55
  src={src}
@@ -81,7 +64,7 @@ const MediaPreview = ({ src, onClick }: { src: string; onClick: (event: React.Mo
81
64
  );
82
65
  }
83
66
 
84
- if (isAudioFile(src)) {
67
+ if (previewKind === "audio") {
85
68
  return (
86
69
  <div
87
70
  className="flex items-center justify-center rounded bg-gray-100 shadow-md"
@@ -99,7 +82,7 @@ const MediaPreview = ({ src, onClick }: { src: string; onClick: (event: React.Mo
99
82
  style={{ width: 40, height: 40, display: "flex", alignItems: "center", justifyContent: "center" }}
100
83
  onClick={handleClick}
101
84
  >
102
- <SolidFileTypeIcon fileUrl={src} size={24} />
85
+ <SolidFileTypeIcon fileUrl={src} fileName={fileName} size={24} />
103
86
  </div>
104
87
  );
105
88
  };
@@ -155,7 +138,12 @@ export const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLigh
155
138
  type: file.mimeType,
156
139
  size: file.fileSize,
157
140
  id: file.id,
158
- fileUrl: file._full_url
141
+ fileUrl: file?._full_url,
142
+ previewKind: getMediaPreviewKind({
143
+ url: file?._full_url,
144
+ fileName: file?.originalFileName,
145
+ mimeType: file?.mimeType,
146
+ })
159
147
  }));
160
148
 
161
149
 
@@ -164,49 +152,67 @@ export const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLigh
164
152
 
165
153
 
166
154
  const handleFileView = (file: any) => {
167
- const fileUrl = file?.fileUrl || "";
168
- // const cleanUrl = fileUrl.split("?")[0];
169
- // const ext = cleanUrl.split(".").pop()?.toLowerCase();
170
-
171
- if (isDocumentType(fileUrl)) {
172
- downloadFile(file?.fileUrl, "")
173
-
174
- } else {
175
- setLightboxUrls?.([{ src: file.fileUrl, downloadUrl: file.fileUrl }]);
155
+ if (isLightboxMediaKind(file?.previewKind)) {
156
+ setLightboxUrls?.([{
157
+ src: file.fileUrl,
158
+ downloadUrl: file.fileUrl,
159
+ type: file.previewKind === "video" ? "video" : undefined
160
+ }]);
176
161
  setOpenLightbox?.(true);
162
+ return;
177
163
  }
164
+
165
+ openMediaInNewTab(file?.fileUrl);
178
166
  };
179
167
 
168
+ const renderMediaFileCard = (file: any, className = "") => (
169
+ <div className={`${styles.mediaAttachmentCard} ${className}`.trim()}>
170
+ <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>
171
+ <FileReaderExt fileDetails={file} />
172
+ <div className={`${styles.mediaAttachmentMeta} w-full`}>
173
+ <div className="flex items-start justify-between gap-4">
174
+ <button
175
+ type="button"
176
+ className={styles.mediaAttachmentName}
177
+ onClick={() => handleFileView(file)}
178
+ title={file.name}
179
+ >
180
+ {file.name}
181
+ </button>
182
+ <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>
183
+ <button
184
+ type="button"
185
+ className="solid-file-icon-btn"
186
+ aria-label="Download file"
187
+ onClick={(event) => {
188
+ event.preventDefault();
189
+ event.stopPropagation();
190
+ downloadMediaFile(file?.fileUrl, file?.name);
191
+ }}
192
+ >
193
+ <SolidIcon name="si-download" aria-hidden />
194
+ </button>
195
+ </div>
196
+ </div>
197
+ <div className={styles.mediaAttachmentSize}>
198
+ {formatFileSize(file.size)}
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </div>
203
+ );
180
204
 
181
205
 
182
206
  return fullrecord.length > 0 ? (
183
207
  <div className='flex items-end gap-2'>
184
208
 
185
- {/* THUMBNAIL - FIXED BEHAVIOR */}
186
209
  <MediaPreview
187
210
  src={fullrecord[0]?.fileUrl}
211
+ fileName={fullrecord[0]?.name}
212
+ previewKind={fullrecord[0]?.previewKind}
188
213
  onClick={(event) => {
189
214
  event.stopPropagation();
190
-
191
- // const cleanUrl = fullrecord[0]?.fileUrl.split("?")[0];
192
- // const ext = cleanUrl.split(".").pop()?.toLowerCase();
193
-
194
- if (isDocumentType(fullrecord[0]?.fileUrl) && fullrecord?.length > 1) {
195
- setShowAllFiles(true)
196
- return;
197
- }
198
-
199
- else if (isDocumentType(fullrecord[0]?.fileUrl)) {
200
- downloadFile(fullrecord[0]?.fileUrl, "")
201
- return;
202
- }
203
- // FIRST FILE IS MEDIA ⇒ OPEN LIGHTBOX
204
- const urlsWithType = fullrecord.map((file: any) => ({
205
- src: file.fileUrl,
206
- downloadUrl: file.fileUrl,
207
- }));
208
- setLightboxUrls(urlsWithType);
209
- setOpenLightbox(true);
215
+ handleFileView(fullrecord[0]);
210
216
  }}
211
217
  />
212
218
 
@@ -219,17 +225,7 @@ export const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLigh
219
225
  }}
220
226
  onClick={(event) => {
221
227
  event.stopPropagation();
222
-
223
- if (isDocumentType(fullrecord[0]?.fileUrl)) {
224
- setShowAllFiles(true);
225
- } else {
226
- const urlsWithType = fullrecord.map((file: any) => ({
227
- src: file.fileUrl,
228
- downloadUrl: file.fileUrl
229
- }));
230
- setLightboxUrls(urlsWithType);
231
- setOpenLightbox(true);
232
- }
228
+ setShowAllFiles(true);
233
229
  }}
234
230
  >
235
231
  +{fullrecord.length - 1}
@@ -242,48 +238,22 @@ export const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLigh
242
238
  <SolidDialog
243
239
  open={isShowAllFiles}
244
240
  onOpenChange={setShowAllFiles}
245
- header="Items Uploaded"
246
- style={{ width: '32rem', maxWidth: '94vw' }}
241
+ style={{ minWidth: 450 }}
247
242
  >
248
- {fullrecord?.map((file: any) => {
249
- const fileId = `${file.name}-${file.size}`;
250
- return (
251
- <div key={fileId} className="solid-file-upload-wrapper mb-3">
252
- <div className="flex items-center gap-2">
253
-
254
- <FileReaderExt fileDetails={file} />
255
-
256
- <div className="flex w-full flex-col gap-1">
257
- <div className="flex items-center justify-between">
258
-
259
- <p
260
- className="m-0 w-11 font-normal text-[var(--primary-color)] solid-media-column-text-wrapper"
261
- style={{ cursor: "pointer" }}
262
- onClick={() => handleFileView(file)}
263
- >
264
- {file?.name}
265
- </p>
266
-
267
- <SolidButton
268
- type="button"
269
- size="small"
270
- variant="ghost"
271
- leftIcon={<Download size={14} />}
272
- onClick={() => {
273
- downloadFile(file?.fileUrl, "")
274
- }}
275
- style={{ height: 16, width: 16 }}
276
- />
277
- </div>
278
-
279
- <div className="text-sm">{formatFileSize(file.size)}</div>
280
- </div>
281
-
243
+ <SolidDialogHeader>
244
+ <SolidDialogTitle>Items Uploaded</SolidDialogTitle>
245
+ <SolidDialogClose />
246
+ </SolidDialogHeader>
247
+ <SolidDialogBody>
248
+ {fullrecord?.map((file: any, index: number) => {
249
+ const fileId = `${file.name}-${file.size}`;
250
+ return (
251
+ <div key={fileId} className={index === fullrecord.length - 1 ? "" : "mb-3"}>
252
+ {renderMediaFileCard(file)}
282
253
  </div>
283
- </div>
284
- )
285
- }
286
- )}
254
+ )
255
+ })}
256
+ </SolidDialogBody>
287
257
  </SolidDialog>
288
258
  </div>
289
259
  ) : (
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMediaSingleColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAmG9E,QAAA,MAAM,sBAAsB,uFAAwF,yBAAyB,4CAkC5I,CAAC;AAEF,eAAe,sBAAsB,CAAC;AAGtC,eAAO,MAAM,4BAA4B,gGAOtC,8BAA8B,mDAqBhC,CAAC"}
1
+ {"version":3,"file":"SolidMediaSingleColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAmF9E,QAAA,MAAM,sBAAsB,uFAAwF,yBAAyB,4CAkC5I,CAAC;AAEF,eAAe,sBAAsB,CAAC;AAGtC,eAAO,MAAM,4BAA4B,gGAOtC,8BAA8B,mDA0ChC,CAAC"}
@@ -15,55 +15,29 @@ import { Volume2 } from "lucide-react";
15
15
  import { Column } from "../SolidDataTable";
16
16
  import { getExtensionComponent } from '../../../../helpers/registry';
17
17
  import { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';
18
- var getCleanUrl = function (url) { return url.split("?")[0]; };
19
- // Helpers for file type detection
20
- var isImageFile = function (url) { return /\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(getCleanUrl(url)); };
21
- var isVideoFile = function (url) { return /\.(mp4|webm|ogg)$/i.test(getCleanUrl(url)); };
22
- var isAudioFile = function (url) { return /\.(mp3|wav|ogg)$/i.test(getCleanUrl(url)); };
23
- // Extensions that should be downloaded directly
24
- var downloadOnlyExt = [
25
- "txt", "zip", "rar",
26
- "doc", "docx",
27
- "xls", "xlsx",
28
- "ppt", "pptx",
29
- "pdf"
30
- ];
18
+ import { getMediaPreviewKind, isLightboxMediaKind } from '../../../../helpers/mediaType';
19
+ import { openMediaInNewTab } from '../../../../helpers/mediaUrl';
31
20
  // Media component with fallback for broken links
32
21
  var MediaWithFallback = function (_a) {
33
- var src = _a.src, alt = _a.alt, onClick = _a.onClick;
22
+ var src = _a.src, alt = _a.alt, fileName = _a.fileName, previewKind = _a.previewKind, onClick = _a.onClick;
34
23
  var _b = useState(false), isBroken = _b[0], setIsBroken = _b[1];
35
24
  var handleClick = function (event) {
36
- var _a;
37
25
  event.stopPropagation();
38
- var cleanUrl = src.split("?")[0];
39
- var ext = (_a = cleanUrl.split(".").pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
40
- if (ext && downloadOnlyExt.includes(ext)) {
41
- // Trigger download for docs/archives
42
- var link = document.createElement("a");
43
- link.href = src;
44
- link.download = "";
45
- link.target = "_blank";
46
- document.body.appendChild(link);
47
- link.click();
48
- document.body.removeChild(link);
49
- }
50
- else {
51
- onClick(event);
52
- }
26
+ onClick(event);
53
27
  };
54
28
  if (!isBroken) {
55
- if (isImageFile(src)) {
29
+ if (previewKind === "image") {
56
30
  return (_jsx("img", { src: src, alt: alt, className: "rounded shadow-md", width: 40, height: 40, style: { objectFit: "cover", cursor: "pointer" }, onError: function () { return setIsBroken(true); }, onClick: handleClick }));
57
31
  }
58
- if (isVideoFile(src)) {
32
+ if (previewKind === "video") {
59
33
  return (_jsx("video", { src: src, width: 40, height: 40, className: "rounded shadow-md", style: { objectFit: "cover", cursor: "pointer" }, onError: function () { return setIsBroken(true); }, onClick: handleClick, muted: true }));
60
34
  }
61
- if (isAudioFile(src)) {
35
+ if (previewKind === "audio") {
62
36
  return (_jsx("div", { className: "flex items-center justify-center rounded bg-gray-100 shadow-md", style: { width: 40, height: 40, cursor: "pointer" }, onClick: handleClick, children: _jsx(Volume2, { size: 18, className: "text-gray-600" }) }));
63
37
  }
64
38
  }
65
39
  // fallback icon (docs/others)
66
- return (_jsx("div", { style: { width: 40, height: 40, display: "flex", alignItems: "center", justifyContent: "center", cursor: "pointer" }, onClick: handleClick, children: _jsx(SolidFileTypeIcon, { fileUrl: src, size: 24 }) }));
40
+ return (_jsx("div", { style: { width: 40, height: 40, display: "flex", alignItems: "center", justifyContent: "center", cursor: "pointer" }, onClick: handleClick, children: _jsx(SolidFileTypeIcon, { fileUrl: src, fileName: fileName, size: 24 }) }));
67
41
  };
68
42
  // Main column renderer
69
43
  var SolidMediaSingleColumn = function (_a) {
@@ -94,18 +68,36 @@ export var DefaultMediaSingleListWidget = function (_a) {
94
68
  var rowData = _a.rowData, solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox;
95
69
  if (!((_b = rowData === null || rowData === void 0 ? void 0 : rowData._media) === null || _b === void 0 ? void 0 : _b[fieldMetadata.name]))
96
70
  return null;
97
- var mediaUrls = rowData._media[fieldMetadata.name].map(function (i) { return i._full_url; });
98
- var firstUrl = mediaUrls[0];
99
- if (!firstUrl)
71
+ var mediaFiles = rowData._media[fieldMetadata.name].map(function (file) {
72
+ var fileUrl = file === null || file === void 0 ? void 0 : file._full_url;
73
+ var previewKind = getMediaPreviewKind({
74
+ url: fileUrl,
75
+ fileName: file === null || file === void 0 ? void 0 : file.originalFileName,
76
+ mimeType: file === null || file === void 0 ? void 0 : file.mimeType,
77
+ });
78
+ return {
79
+ fileUrl: fileUrl,
80
+ fileName: file === null || file === void 0 ? void 0 : file.originalFileName,
81
+ previewKind: previewKind,
82
+ opensInLightbox: isLightboxMediaKind(previewKind),
83
+ lightboxType: previewKind === "video" ? "video" : undefined,
84
+ };
85
+ });
86
+ var firstFile = mediaFiles[0];
87
+ if (!(firstFile === null || firstFile === void 0 ? void 0 : firstFile.fileUrl))
100
88
  return _jsx("div", { style: { height: 40, width: 40 } });
101
- var cleanUrl = getCleanUrl(firstUrl);
102
- return (_jsx(MediaWithFallback, { src: firstUrl, alt: "media", onClick: function (event) {
103
- // Only open lightbox for image, video, or audio
89
+ return (_jsx(MediaWithFallback, { src: firstFile.fileUrl, alt: "media", fileName: firstFile.fileName, previewKind: firstFile.previewKind, onClick: function (event) {
104
90
  event.stopPropagation();
105
- if (isImageFile(cleanUrl) || isVideoFile(cleanUrl) || isAudioFile(cleanUrl)) {
106
- setLightboxUrls([{ src: firstUrl, downloadUrl: firstUrl }]);
91
+ if (firstFile.opensInLightbox) {
92
+ setLightboxUrls([{
93
+ src: firstFile.fileUrl,
94
+ downloadUrl: firstFile.fileUrl,
95
+ type: firstFile.lightboxType
96
+ }]);
107
97
  setOpenLightbox(true);
98
+ return;
108
99
  }
100
+ openMediaInNewTab(firstFile.fileUrl);
109
101
  } }));
110
102
  };
111
103
  //# sourceMappingURL=SolidMediaSingleColumn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMediaSingleColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState } from 'react';\nimport { Volume2 } from \"lucide-react\";\nimport { Column } from \"../SolidDataTable\";\nimport { SolidListViewColumnParams } from '../SolidListViewColumn';\nimport { SolidMediaListFieldWidgetProps } from '../../../../types/solid-core';\nimport { getExtensionComponent } from '../../../../helpers/registry';\nimport { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';\n\nconst getCleanUrl = (url: string) => url.split(\"?\")[0];\n\n// Helpers for file type detection\nconst isImageFile = (url: string) => /\\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(getCleanUrl(url));\nconst isVideoFile = (url: string) => /\\.(mp4|webm|ogg)$/i.test(getCleanUrl(url));\nconst isAudioFile = (url: string) => /\\.(mp3|wav|ogg)$/i.test(getCleanUrl(url));\n\n// Extensions that should be downloaded directly\nconst downloadOnlyExt = [\n \"txt\", \"zip\", \"rar\",\n \"doc\", \"docx\",\n \"xls\", \"xlsx\",\n \"ppt\", \"pptx\",\n \"pdf\"\n];\n\n// Media component with fallback for broken links\nconst MediaWithFallback = ({ src, alt, onClick }: { src: string; alt: string; onClick: (event: React.MouseEvent) => void }) => {\n const [isBroken, setIsBroken] = useState(false);\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n const cleanUrl = src.split(\"?\")[0];\n const ext = cleanUrl.split(\".\").pop()?.toLowerCase();\n\n if (ext && downloadOnlyExt.includes(ext)) {\n // Trigger download for docs/archives\n const link = document.createElement(\"a\");\n link.href = src;\n link.download = \"\";\n link.target = \"_blank\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n onClick(event);\n }\n };\n\n if (!isBroken) {\n if (isImageFile(src)) {\n return (\n <img\n src={src}\n alt={alt}\n className=\"rounded shadow-md\"\n width={40}\n height={40}\n style={{ objectFit: \"cover\", cursor: \"pointer\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n />\n );\n }\n\n if (isVideoFile(src)) {\n return (\n <video\n src={src}\n width={40}\n height={40}\n className=\"rounded shadow-md\"\n style={{ objectFit: \"cover\", cursor: \"pointer\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n muted\n />\n );\n }\n\n if (isAudioFile(src)) {\n return (\n <div\n className=\"flex items-center justify-center rounded bg-gray-100 shadow-md\"\n style={{ width: 40, height: 40, cursor: \"pointer\" }}\n onClick={handleClick}\n >\n <Volume2 size={18} className=\"text-gray-600\" />\n </div>\n );\n }\n }\n\n // fallback icon (docs/others)\n return (\n <div\n style={{ width: 40, height: 40, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", cursor: \"pointer\" }}\n onClick={handleClick}\n >\n <SolidFileTypeIcon fileUrl={src} size={24} />\n </div>\n );\n};\n\n// Main column renderer\nconst SolidMediaSingleColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n header={header}\n body={(rowData) => {\n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultMediaSingleListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidMediaListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls,\n setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }}\n sortable={column.attrs.sortable}\n showFilterOperator={false}\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n );\n};\n\nexport default SolidMediaSingleColumn;\n\n// Default widget for single media field\nexport const DefaultMediaSingleListWidget = ({\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls,\n setOpenLightbox\n}: SolidMediaListFieldWidgetProps) => {\n if (!rowData?._media?.[fieldMetadata.name]) return null;\n const mediaUrls = rowData._media[fieldMetadata.name].map((i: any) => i._full_url);\n\n const firstUrl = mediaUrls[0];\n if (!firstUrl) return <div style={{ height: 40, width: 40 }} />;\n const cleanUrl = getCleanUrl(firstUrl);\n return (\n <MediaWithFallback\n src={firstUrl}\n alt=\"media\"\n onClick={(event) => {\n // Only open lightbox for image, video, or audio\n event.stopPropagation()\n if (isImageFile(cleanUrl) || isVideoFile(cleanUrl) || isAudioFile(cleanUrl)) {\n setLightboxUrls([{ src: firstUrl, downloadUrl: firstUrl }]);\n setOpenLightbox(true);\n }\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SolidMediaSingleColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState } from 'react';\nimport { Volume2 } from \"lucide-react\";\nimport { Column } from \"../SolidDataTable\";\nimport { SolidListViewColumnParams } from '../SolidListViewColumn';\nimport { SolidMediaListFieldWidgetProps } from '../../../../types/solid-core';\nimport { getExtensionComponent } from '../../../../helpers/registry';\nimport { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';\nimport { getMediaPreviewKind, isLightboxMediaKind, type MediaPreviewKind } from '../../../../helpers/mediaType';\nimport { openMediaInNewTab } from '../../../../helpers/mediaUrl';\n\n// Media component with fallback for broken links\nconst MediaWithFallback = ({\n src,\n alt,\n fileName,\n previewKind,\n onClick\n}: {\n src: string;\n alt: string;\n fileName?: string;\n previewKind: MediaPreviewKind;\n onClick: (event: React.MouseEvent) => void\n}) => {\n const [isBroken, setIsBroken] = useState(false);\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n onClick(event);\n };\n\n if (!isBroken) {\n if (previewKind === \"image\") {\n return (\n <img\n src={src}\n alt={alt}\n className=\"rounded shadow-md\"\n width={40}\n height={40}\n style={{ objectFit: \"cover\", cursor: \"pointer\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n />\n );\n }\n\n if (previewKind === \"video\") {\n return (\n <video\n src={src}\n width={40}\n height={40}\n className=\"rounded shadow-md\"\n style={{ objectFit: \"cover\", cursor: \"pointer\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n muted\n />\n );\n }\n\n if (previewKind === \"audio\") {\n return (\n <div\n className=\"flex items-center justify-center rounded bg-gray-100 shadow-md\"\n style={{ width: 40, height: 40, cursor: \"pointer\" }}\n onClick={handleClick}\n >\n <Volume2 size={18} className=\"text-gray-600\" />\n </div>\n );\n }\n }\n\n // fallback icon (docs/others)\n return (\n <div\n style={{ width: 40, height: 40, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", cursor: \"pointer\" }}\n onClick={handleClick}\n >\n <SolidFileTypeIcon fileUrl={src} fileName={fileName} size={24} />\n </div>\n );\n};\n\n// Main column renderer\nconst SolidMediaSingleColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n header={header}\n body={(rowData) => {\n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultMediaSingleListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidMediaListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls,\n setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }}\n sortable={column.attrs.sortable}\n showFilterOperator={false}\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n );\n};\n\nexport default SolidMediaSingleColumn;\n\n// Default widget for single media field\nexport const DefaultMediaSingleListWidget = ({\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls,\n setOpenLightbox\n}: SolidMediaListFieldWidgetProps) => {\n if (!rowData?._media?.[fieldMetadata.name]) return null;\n const mediaFiles = rowData._media[fieldMetadata.name].map((file: any) => {\n const fileUrl = file?._full_url;\n const previewKind = getMediaPreviewKind({\n url: fileUrl,\n fileName: file?.originalFileName,\n mimeType: file?.mimeType,\n });\n return {\n fileUrl,\n fileName: file?.originalFileName,\n previewKind,\n opensInLightbox: isLightboxMediaKind(previewKind),\n lightboxType: previewKind === \"video\" ? \"video\" : undefined,\n };\n });\n\n const firstFile = mediaFiles[0];\n if (!firstFile?.fileUrl) return <div style={{ height: 40, width: 40 }} />;\n return (\n <MediaWithFallback\n src={firstFile.fileUrl}\n alt=\"media\"\n fileName={firstFile.fileName}\n previewKind={firstFile.previewKind}\n onClick={(event) => {\n event.stopPropagation();\n if (firstFile.opensInLightbox) {\n setLightboxUrls([{\n src: firstFile.fileUrl,\n downloadUrl: firstFile.fileUrl,\n type: firstFile.lightboxType\n }]);\n setOpenLightbox(true);\n return;\n }\n\n openMediaInNewTab(firstFile.fileUrl);\n }}\n />\n );\n};\n"]}
@@ -6,48 +6,32 @@ import { SolidListViewColumnParams } from '../SolidListViewColumn';
6
6
  import { SolidMediaListFieldWidgetProps } from '../../../../types/solid-core';
7
7
  import { getExtensionComponent } from '../../../../helpers/registry';
8
8
  import { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';
9
-
10
- const getCleanUrl = (url: string) => url.split("?")[0];
11
-
12
- // Helpers for file type detection
13
- const isImageFile = (url: string) => /\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(getCleanUrl(url));
14
- const isVideoFile = (url: string) => /\.(mp4|webm|ogg)$/i.test(getCleanUrl(url));
15
- const isAudioFile = (url: string) => /\.(mp3|wav|ogg)$/i.test(getCleanUrl(url));
16
-
17
- // Extensions that should be downloaded directly
18
- const downloadOnlyExt = [
19
- "txt", "zip", "rar",
20
- "doc", "docx",
21
- "xls", "xlsx",
22
- "ppt", "pptx",
23
- "pdf"
24
- ];
9
+ import { getMediaPreviewKind, isLightboxMediaKind, type MediaPreviewKind } from '../../../../helpers/mediaType';
10
+ import { openMediaInNewTab } from '../../../../helpers/mediaUrl';
25
11
 
26
12
  // Media component with fallback for broken links
27
- const MediaWithFallback = ({ src, alt, onClick }: { src: string; alt: string; onClick: (event: React.MouseEvent) => void }) => {
13
+ const MediaWithFallback = ({
14
+ src,
15
+ alt,
16
+ fileName,
17
+ previewKind,
18
+ onClick
19
+ }: {
20
+ src: string;
21
+ alt: string;
22
+ fileName?: string;
23
+ previewKind: MediaPreviewKind;
24
+ onClick: (event: React.MouseEvent) => void
25
+ }) => {
28
26
  const [isBroken, setIsBroken] = useState(false);
29
27
 
30
28
  const handleClick = (event: React.MouseEvent) => {
31
29
  event.stopPropagation();
32
- const cleanUrl = src.split("?")[0];
33
- const ext = cleanUrl.split(".").pop()?.toLowerCase();
34
-
35
- if (ext && downloadOnlyExt.includes(ext)) {
36
- // Trigger download for docs/archives
37
- const link = document.createElement("a");
38
- link.href = src;
39
- link.download = "";
40
- link.target = "_blank";
41
- document.body.appendChild(link);
42
- link.click();
43
- document.body.removeChild(link);
44
- } else {
45
- onClick(event);
46
- }
30
+ onClick(event);
47
31
  };
48
32
 
49
33
  if (!isBroken) {
50
- if (isImageFile(src)) {
34
+ if (previewKind === "image") {
51
35
  return (
52
36
  <img
53
37
  src={src}
@@ -62,7 +46,7 @@ const MediaWithFallback = ({ src, alt, onClick }: { src: string; alt: string; on
62
46
  );
63
47
  }
64
48
 
65
- if (isVideoFile(src)) {
49
+ if (previewKind === "video") {
66
50
  return (
67
51
  <video
68
52
  src={src}
@@ -77,7 +61,7 @@ const MediaWithFallback = ({ src, alt, onClick }: { src: string; alt: string; on
77
61
  );
78
62
  }
79
63
 
80
- if (isAudioFile(src)) {
64
+ if (previewKind === "audio") {
81
65
  return (
82
66
  <div
83
67
  className="flex items-center justify-center rounded bg-gray-100 shadow-md"
@@ -96,7 +80,7 @@ const MediaWithFallback = ({ src, alt, onClick }: { src: string; alt: string; on
96
80
  style={{ width: 40, height: 40, display: "flex", alignItems: "center", justifyContent: "center", cursor: "pointer" }}
97
81
  onClick={handleClick}
98
82
  >
99
- <SolidFileTypeIcon fileUrl={src} size={24} />
83
+ <SolidFileTypeIcon fileUrl={src} fileName={fileName} size={24} />
100
84
  </div>
101
85
  );
102
86
  };
@@ -150,22 +134,43 @@ export const DefaultMediaSingleListWidget = ({
150
134
  setOpenLightbox
151
135
  }: SolidMediaListFieldWidgetProps) => {
152
136
  if (!rowData?._media?.[fieldMetadata.name]) return null;
153
- const mediaUrls = rowData._media[fieldMetadata.name].map((i: any) => i._full_url);
154
-
155
- const firstUrl = mediaUrls[0];
156
- if (!firstUrl) return <div style={{ height: 40, width: 40 }} />;
157
- const cleanUrl = getCleanUrl(firstUrl);
137
+ const mediaFiles = rowData._media[fieldMetadata.name].map((file: any) => {
138
+ const fileUrl = file?._full_url;
139
+ const previewKind = getMediaPreviewKind({
140
+ url: fileUrl,
141
+ fileName: file?.originalFileName,
142
+ mimeType: file?.mimeType,
143
+ });
144
+ return {
145
+ fileUrl,
146
+ fileName: file?.originalFileName,
147
+ previewKind,
148
+ opensInLightbox: isLightboxMediaKind(previewKind),
149
+ lightboxType: previewKind === "video" ? "video" : undefined,
150
+ };
151
+ });
152
+
153
+ const firstFile = mediaFiles[0];
154
+ if (!firstFile?.fileUrl) return <div style={{ height: 40, width: 40 }} />;
158
155
  return (
159
156
  <MediaWithFallback
160
- src={firstUrl}
157
+ src={firstFile.fileUrl}
161
158
  alt="media"
159
+ fileName={firstFile.fileName}
160
+ previewKind={firstFile.previewKind}
162
161
  onClick={(event) => {
163
- // Only open lightbox for image, video, or audio
164
- event.stopPropagation()
165
- if (isImageFile(cleanUrl) || isVideoFile(cleanUrl) || isAudioFile(cleanUrl)) {
166
- setLightboxUrls([{ src: firstUrl, downloadUrl: firstUrl }]);
162
+ event.stopPropagation();
163
+ if (firstFile.opensInLightbox) {
164
+ setLightboxUrls([{
165
+ src: firstFile.fileUrl,
166
+ downloadUrl: firstFile.fileUrl,
167
+ type: firstFile.lightboxType
168
+ }]);
167
169
  setOpenLightbox(true);
170
+ return;
168
171
  }
172
+
173
+ openMediaInNewTab(firstFile.fileUrl);
169
174
  }}
170
175
  />
171
176
  );
@@ -0,0 +1,3 @@
1
+ import { SolidListFieldWidgetProps } from "../../../../types/solid-core";
2
+ export declare const SolidChatterMessageCoModelEntityIdListViewWidget: ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidChatterMessageCoModelEntityIdListViewWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAMzE,eAAO,MAAM,gDAAgD,8DAA+D,yBAAyB,4CA2DpJ,CAAC"}