@solidxai/core-ui 0.1.13-beta.2 → 0.1.13-beta.4
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.
- package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
- package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
- package/dist/components/auth/SolidOTPVerify.js +67 -0
- package/dist/components/auth/SolidOTPVerify.js.map +1 -0
- package/dist/components/auth/SolidOTPVerify.tsx +133 -0
- package/dist/components/common/AuthBanner.d.ts +3 -0
- package/dist/components/common/AuthBanner.d.ts.map +1 -0
- package/dist/components/common/AuthBanner.js +15 -0
- package/dist/components/common/AuthBanner.js.map +1 -0
- package/dist/components/common/AuthBanner.tsx +41 -0
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts +2 -0
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts.map +1 -0
- package/dist/components/common/SingleSelectAutoCompleteField.js +92 -0
- package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -0
- package/dist/components/common/SingleSelectAutoCompleteField.tsx +73 -0
- package/dist/components/common/SolidExportStepper.d.ts +12 -0
- package/dist/components/common/SolidExportStepper.d.ts.map +1 -0
- package/dist/components/common/SolidExportStepper.js +30 -0
- package/dist/components/common/SolidExportStepper.js.map +1 -0
- package/dist/components/common/SolidExportStepper.tsx +135 -0
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +6 -11
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +6 -11
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +3 -7
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +3 -9
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts +2 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts.map +1 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js +16 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js.map +1 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +29 -0
- package/dist/components/core/dashboard/DashboardFilter.d.ts +13 -0
- package/dist/components/core/dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/components/core/dashboard/DashboardFilter.js +299 -0
- package/dist/components/core/dashboard/DashboardFilter.js.map +1 -0
- package/dist/components/core/dashboard/DashboardFilter.tsx +348 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
- package/dist/components/core/dashboard/SolidDashboard.d.ts +28 -0
- package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboard.js +183 -0
- package/dist/components/core/dashboard/SolidDashboard.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboard.module.css +83 -0
- package/dist/components/core/dashboard/SolidDashboard.tsx +263 -0
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts +24 -0
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardBody.js +162 -0
- package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardBody.tsx +168 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +11 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +28 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.d.ts +3 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.js +6 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.tsx +10 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.js +10 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.tsx +61 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts +3 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +12 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +32 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.js +11 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.tsx +28 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.d.ts +19 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.js +171 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.tsx +259 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts +9 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.js +42 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +99 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts +9 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +35 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +48 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts +7 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js +22 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +51 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts +2 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.js +4 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.ts +25 -0
- package/dist/components/core/dashboard/dashboard-utils.d.ts +2 -0
- package/dist/components/core/dashboard/dashboard-utils.d.ts.map +1 -0
- package/dist/components/core/dashboard/dashboard-utils.js +38 -0
- package/dist/components/core/dashboard/dashboard-utils.js.map +1 -0
- package/dist/components/core/dashboard/dashboard-utils.ts +39 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js +23 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +36 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +2 -10
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +2 -10
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +111 -106
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +165 -134
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +81 -84
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +97 -86
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js +111 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.tsx +122 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +6 -11
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +6 -11
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js +3 -7
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +3 -9
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts +12 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js +145 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.tsx +164 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js +87 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js +73 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js +20 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js +81 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js +21 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +20 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +56 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +140 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +42 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +164 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js +11 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +37 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +121 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +2 -3
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +2 -3
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +2 -14
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +2 -14
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +7 -5
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +7 -5
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +2 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +39 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +40 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.js +81 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.tsx +184 -0
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +42 -81
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +90 -120
- package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js +34 -42
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +51 -46
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js +33 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.tsx +50 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js +158 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.tsx +185 -0
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +2 -14
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +2 -14
- package/dist/components/layout/DashboardHeader.d.ts +3 -0
- package/dist/components/layout/DashboardHeader.d.ts.map +1 -0
- package/dist/components/layout/DashboardHeader.js +20 -0
- package/dist/components/layout/DashboardHeader.js.map +1 -0
- package/dist/components/layout/DashboardHeader.tsx +94 -0
- package/dist/helpers/# no such endpoints exist, need to calle +3 -0
- package/dist/helpers/ToastContainer.d.ts +4 -0
- package/dist/helpers/ToastContainer.d.ts.map +1 -0
- package/dist/helpers/ToastContainer.js +49 -0
- package/dist/helpers/ToastContainer.js.map +1 -0
- package/dist/helpers/ToastContainer.tsx +94 -0
- package/dist/helpers/downloadMediaFile.d.ts.map +1 -1
- package/dist/helpers/downloadMediaFile.js +10 -3
- package/dist/helpers/downloadMediaFile.js.map +1 -1
- package/dist/helpers/downloadMediaFile.tsx +13 -7
- package/dist/helpers/fileTypeIcon.d.ts +3 -2
- package/dist/helpers/fileTypeIcon.d.ts.map +1 -1
- package/dist/helpers/fileTypeIcon.js +11 -7
- package/dist/helpers/fileTypeIcon.js.map +1 -1
- package/dist/helpers/fileTypeIcon.tsx +12 -7
- package/dist/helpers/mediaType.d.ts +7 -0
- package/dist/helpers/mediaType.d.ts.map +1 -1
- package/dist/helpers/mediaType.js +39 -8
- package/dist/helpers/mediaType.js.map +1 -1
- package/dist/helpers/mediaType.ts +46 -7
- package/dist/helpers/mediaUrl.d.ts +2 -0
- package/dist/helpers/mediaUrl.d.ts.map +1 -0
- package/dist/helpers/mediaUrl.js +10 -0
- package/dist/helpers/mediaUrl.js.map +1 -0
- package/dist/helpers/mediaUrl.ts +11 -0
- package/dist/helpers/permissions.d.ts +13 -0
- package/dist/helpers/permissions.d.ts.map +1 -1
- package/dist/helpers/permissions.js +79 -0
- package/dist/helpers/permissions.js.map +1 -1
- package/dist/helpers/permissions.ts +92 -1
- package/dist/helpers/showToast.d.ts +5 -0
- package/dist/helpers/showToast.d.ts.map +1 -0
- package/dist/helpers/showToast.js +17 -0
- package/dist/helpers/showToast.js.map +1 -0
- package/dist/helpers/showToast.ts +13 -0
- package/dist/helpers/studioSandbox.d.ts +31 -0
- package/dist/helpers/studioSandbox.d.ts.map +1 -0
- package/dist/helpers/studioSandbox.js +104 -0
- package/dist/helpers/studioSandbox.js.map +1 -0
- package/dist/helpers/studioSandbox.ts +117 -0
- package/dist/nextAuth/authProviders.d.ts +4 -0
- package/dist/nextAuth/authProviders.d.ts.map +1 -0
- package/dist/nextAuth/authProviders.js +198 -0
- package/dist/nextAuth/authProviders.js.map +1 -0
- package/dist/nextAuth/authProviders.tsx +232 -0
- package/dist/nextAuth/handleLogout.d.ts +2 -0
- package/dist/nextAuth/handleLogout.d.ts.map +1 -0
- package/dist/nextAuth/handleLogout.js +36 -0
- package/dist/nextAuth/handleLogout.js.map +1 -0
- package/dist/nextAuth/handleLogout.tsx +39 -0
- package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
- package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
- package/dist/nextAuth/refreshAccessToken.js +24 -0
- package/dist/nextAuth/refreshAccessToken.js.map +1 -0
- package/dist/nextAuth/refreshAccessToken.tsx +28 -0
- package/dist/redux/api/dashboardApi.d.ts +23 -0
- package/dist/redux/api/dashboardApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardApi.js +35 -0
- package/dist/redux/api/dashboardApi.js.map +1 -0
- package/dist/redux/api/dashboardApi.ts +56 -0
- package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
- package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardLayoutApi.js +34 -0
- package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
- package/dist/redux/api/dashboardLayoutApi.ts +55 -0
- package/dist/redux/api/dashboardQuestionApi.d.ts +5 -0
- package/dist/redux/api/dashboardQuestionApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardQuestionApi.js +18 -0
- package/dist/redux/api/dashboardQuestionApi.js.map +1 -0
- package/dist/redux/api/dashboardQuestionApi.ts +17 -0
- package/dist/redux/features/settingsSlice.d.ts +20 -0
- package/dist/redux/features/settingsSlice.d.ts.map +1 -0
- package/dist/redux/features/settingsSlice.js +39 -0
- package/dist/redux/features/settingsSlice.js.map +1 -0
- package/dist/redux/features/settingsSlice.ts +60 -0
- package/dist/resources/images/Footerbg.png +0 -0
- package/dist/resources/images/LoginBanner.png +0 -0
- package/dist/resources/images/dashboard/Ellipse 1.svg +10 -0
- package/dist/resources/images/dashboard/Rectangle 17.svg +10 -0
- package/dist/resources/images/dashboard/Rectangle 25.svg +11 -0
- package/dist/resources/images/dashboard/image 5.svg +9 -0
- package/dist/resources/images/loginhero.png +0 -0
- package/dist/resources/images/logo.png +0 -0
- package/dist/resources/images/radix-logo-white.png +0 -0
- package/dist/resources/images/radix-logo.png +0 -0
- package/dist/resources/images/signupBanner.png +0 -0
- package/dist/resources/shadcn-base.css +16 -70
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/package.json +1 -1
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.d.ts +0 -8
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.d.ts.map +0 -1
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.js +0 -6
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.js.map +0 -1
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorHeaderAction.ts +0 -13
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.d.ts +0 -11
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.d.ts.map +0 -1
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.js +0 -10
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.js.map +0 -1
- package/dist/components/core/extension/solid-core/workflowDefinition/list/openWorkflowDefinitionEditorRowAction.ts +0 -22
- package/dist/components/core/list/SolidCustomListColumn.d.ts +0 -8
- package/dist/components/core/list/SolidCustomListColumn.d.ts.map +0 -1
- package/dist/components/core/list/SolidCustomListColumn.js +0 -47
- package/dist/components/core/list/SolidCustomListColumn.js.map +0 -1
- package/dist/components/core/list/SolidCustomListColumn.tsx +0 -57
- package/dist/components/workflow/WorkflowFlowCanvas.css +0 -431
- package/dist/components/workflow/WorkflowFlowCanvas.d.ts +0 -41
- package/dist/components/workflow/WorkflowFlowCanvas.d.ts.map +0 -1
- package/dist/components/workflow/WorkflowFlowCanvas.js +0 -705
- package/dist/components/workflow/WorkflowFlowCanvas.js.map +0 -1
- package/dist/components/workflow/WorkflowFlowCanvas.tsx +0 -1274
- package/dist/components/workflow/WorkflowNodeDocsPanel.css +0 -247
- package/dist/components/workflow/WorkflowNodeDocsPanel.d.ts +0 -22
- package/dist/components/workflow/WorkflowNodeDocsPanel.d.ts.map +0 -1
- package/dist/components/workflow/WorkflowNodeDocsPanel.js +0 -97
- package/dist/components/workflow/WorkflowNodeDocsPanel.js.map +0 -1
- package/dist/components/workflow/WorkflowNodeDocsPanel.tsx +0 -363
- package/dist/components/workflow/WorkflowNodeSchemaEditor.d.ts +0 -50
- package/dist/components/workflow/WorkflowNodeSchemaEditor.d.ts.map +0 -1
- package/dist/components/workflow/WorkflowNodeSchemaEditor.js +0 -309
- package/dist/components/workflow/WorkflowNodeSchemaEditor.js.map +0 -1
- package/dist/components/workflow/WorkflowNodeSchemaEditor.tsx +0 -808
- package/dist/helpers/modulePackageResumeState.d.ts +0 -6
- package/dist/helpers/modulePackageResumeState.d.ts.map +0 -1
- package/dist/helpers/modulePackageResumeState.js +0 -46
- package/dist/helpers/modulePackageResumeState.js.map +0 -1
- package/dist/helpers/modulePackageResumeState.ts +0 -57
- package/dist/redux/api/workflowDefinitionEditorApi.d.ts +0 -17
- package/dist/redux/api/workflowDefinitionEditorApi.d.ts.map +0 -1
- package/dist/redux/api/workflowDefinitionEditorApi.js +0 -38
- package/dist/redux/api/workflowDefinitionEditorApi.js.map +0 -1
- package/dist/redux/api/workflowDefinitionEditorApi.ts +0 -40
- package/dist/redux/api/workflowNodeApi.d.ts +0 -6
- package/dist/redux/api/workflowNodeApi.d.ts.map +0 -1
- package/dist/redux/api/workflowNodeApi.js +0 -14
- package/dist/redux/api/workflowNodeApi.js.map +0 -1
- package/dist/redux/api/workflowNodeApi.ts +0 -18
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.css +0 -970
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.d.ts +0 -3
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.d.ts.map +0 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +0 -1287
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +0 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +0 -2572
- package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.css +0 -151
- package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.d.ts +0 -3
- package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.d.ts.map +0 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.js +0 -250
- package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.js.map +0 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionListPage.tsx +0 -455
- package/dist/types/workflow-node.d.ts +0 -127
- package/dist/types/workflow-node.d.ts.map +0 -1
- package/dist/types/workflow-node.js +0 -2
- package/dist/types/workflow-node.js.map +0 -1
- package/dist/types/workflow-node.ts +0 -162
|
@@ -1,49 +1,32 @@
|
|
|
1
1
|
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
|
-
import {
|
|
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 {
|
|
9
|
+
import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle, SolidIcon } from "../../../shad-cn-ui";
|
|
10
10
|
import { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 = ({
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
246
|
-
style={{ width: '32rem', maxWidth: '94vw' }}
|
|
241
|
+
style={{ minWidth: 450 }}
|
|
247
242
|
>
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
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 (
|
|
106
|
-
setLightboxUrls([{
|
|
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
|
-
|
|
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 = ({
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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={
|
|
157
|
+
src={firstFile.fileUrl}
|
|
161
158
|
alt="media"
|
|
159
|
+
fileName={firstFile.fileName}
|
|
160
|
+
previewKind={firstFile.previewKind}
|
|
162
161
|
onClick={(event) => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
);
|
package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts
ADDED
|
@@ -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
|
package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map
ADDED
|
@@ -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"}
|