@solidstarters/solid-core-ui 1.1.17 → 1.1.19
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/Svg/FileSvg.d.ts +4 -0
- package/dist/components/Svg/FileSvg.d.ts.map +1 -0
- package/dist/components/Svg/FileSvg.js +15 -0
- package/dist/components/Svg/FileSvg.js.map +1 -0
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +6 -6
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +1 -1
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +1 -1
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/common/DropzonePlaceholder.d.ts +6 -1
- package/dist/components/common/DropzonePlaceholder.d.ts.map +1 -1
- package/dist/components/common/DropzonePlaceholder.js +8 -2
- package/dist/components/common/DropzonePlaceholder.js.map +1 -1
- package/dist/components/common/FileReaderExt.d.ts.map +1 -1
- package/dist/components/common/FileReaderExt.js +2 -1
- package/dist/components/common/FileReaderExt.js.map +1 -1
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts.map +1 -1
- package/dist/components/common/SingleSelectAutoCompleteField.js +3 -1
- package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -1
- package/dist/components/core/common/SolidConfigureLayoutElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidConfigureLayoutElement.js +28 -6
- package/dist/components/core/common/SolidConfigureLayoutElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +6 -6
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/form/SolidFormView.js +3 -5
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.js +9 -7
- package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.js +7 -5
- package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js +7 -5
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.js +9 -7
- package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +9 -7
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.js +6 -4
- package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.js +8 -6
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +61 -57
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +74 -91
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.js +9 -7
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js +10 -8
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +10 -8
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +8 -6
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js +7 -5
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +15 -11
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts +1 -0
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +66 -7
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +12 -10
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +42 -34
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +9 -2
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js +10 -3
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
- package/dist/components/core/model/CreateModel.js +3 -4
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +54 -1
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +118 -51
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/module/CreateModule.js +5 -5
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/users/CreateUser.js +1 -2
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/layout/AppConfig.js +1 -1
- package/dist/components/layout/navbar-two-menu.js +1 -1
- package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
- package/dist/components/layout/user-profile-menu.js +1 -1
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/helpers/downloadMediaFile.d.ts +2 -0
- package/dist/helpers/downloadMediaFile.d.ts.map +1 -0
- package/dist/helpers/downloadMediaFile.js +66 -0
- package/dist/helpers/downloadMediaFile.js.map +1 -0
- package/dist/helpers/getAcceptedFileTypes.d.ts +4 -0
- package/dist/helpers/getAcceptedFileTypes.d.ts.map +1 -0
- package/dist/helpers/getAcceptedFileTypes.js +20 -0
- package/dist/helpers/getAcceptedFileTypes.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/nextAuth/authProviders.d.ts.map +1 -1
- package/dist/nextAuth/authProviders.js +15 -10
- package/dist/nextAuth/authProviders.js.map +1 -1
- package/dist/redux/api/modelApi.d.ts +2 -1
- package/dist/redux/api/modelApi.d.ts.map +1 -1
- package/dist/redux/api/modelApi.js +9 -2
- package/dist/redux/api/modelApi.js.map +1 -1
- package/dist/stylesheets/globals.css +2476 -0
- package/dist/stylesheets/styles/SF-Pro-Display-Regular.otf +0 -0
- package/dist/stylesheets/styles/layout/_config.scss +54 -0
- package/dist/stylesheets/styles/layout/_content.scss +77 -0
- package/dist/stylesheets/styles/layout/_footer.scss +8 -0
- package/dist/stylesheets/styles/layout/_main.scss +47 -0
- package/dist/stylesheets/styles/layout/_menu.scss +185 -0
- package/dist/stylesheets/styles/layout/_mixins.scss +13 -0
- package/dist/stylesheets/styles/layout/_responsive.scss +99 -0
- package/dist/stylesheets/styles/layout/_topbar.scss +149 -0
- package/dist/stylesheets/styles/layout/_typography.scss +63 -0
- package/dist/stylesheets/styles/layout/_utils.scss +27 -0
- package/dist/stylesheets/styles/layout/_variables.scss +3 -0
- package/dist/stylesheets/styles/layout/layout.scss +11 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Black.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Heavy.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Light.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Thin.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Ultralight.otf +0 -0
- package/dist/stylesheets/themes/solid-dark-purple/theme.css +9051 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Black.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Heavy.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Light.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Thin.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Ultralight.otf +0 -0
- package/dist/stylesheets/themes/solid-light-purple/theme.css +9077 -0
- package/package.json +1 -1
- package/src/components/Svg/FileSvg.tsx +18 -0
- package/src/components/auth/AuthLayout.tsx +7 -5
- package/src/components/auth/SolidForgotPassword.tsx +1 -1
- package/src/components/auth/SolidInitialLoginOtp.tsx +1 -1
- package/src/components/auth/SolidInitiateRegisterOtp.tsx +1 -1
- package/src/components/auth/SolidResetPassword.tsx +1 -1
- package/src/components/common/DropzonePlaceholder.tsx +22 -9
- package/src/components/common/FileReaderExt.tsx +5 -3
- package/src/components/common/SingleSelectAutoCompleteField.tsx +3 -1
- package/src/components/core/common/SolidConfigureLayoutElement.tsx +72 -31
- package/src/components/core/common/SolidGlobalSearchElement.tsx +7 -6
- package/src/components/core/form/SolidFormView.tsx +4 -4
- package/src/components/core/form/fields/SolidBooleanField.tsx +6 -3
- package/src/components/core/form/fields/SolidDateField.tsx +6 -3
- package/src/components/core/form/fields/SolidDateTimeField.tsx +6 -3
- package/src/components/core/form/fields/SolidDecimalField.tsx +6 -3
- package/src/components/core/form/fields/SolidIntegerField.tsx +6 -3
- package/src/components/core/form/fields/SolidJsonField.tsx +6 -3
- package/src/components/core/form/fields/SolidLongTextField.tsx +6 -3
- package/src/components/core/form/fields/SolidMediaMultipleField.tsx +122 -98
- package/src/components/core/form/fields/SolidMediaSingleField.tsx +115 -126
- package/src/components/core/form/fields/SolidRichTextField.tsx +7 -3
- package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +6 -3
- package/src/components/core/form/fields/SolidSelectionStaticField.tsx +6 -3
- package/src/components/core/form/fields/SolidShortTextField.tsx +8 -4
- package/src/components/core/form/fields/SolidTimeField.tsx +7 -4
- package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +29 -25
- package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +92 -2
- package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +5 -1
- package/src/components/core/list/SolidListView.tsx +12 -3
- package/src/components/core/list/columns/SolidMediaMultipleColumn.tsx +18 -0
- package/src/components/core/list/columns/SolidMediaSingleColumn.tsx +21 -0
- package/src/components/core/model/CreateModel.tsx +4 -4
- package/src/components/core/model/FieldMetaData.tsx +25 -1
- package/src/components/core/model/FieldMetaDataForm.tsx +108 -18
- package/src/components/core/module/CreateModule.tsx +5 -5
- package/src/components/core/users/CreateUser.tsx +2 -2
- package/src/components/layout/AppConfig.tsx +1 -1
- package/src/components/layout/navbar-two-menu.tsx +1 -1
- package/src/components/layout/user-profile-menu.tsx +7 -8
- package/src/helpers/downloadMediaFile.tsx +19 -0
- package/src/helpers/getAcceptedFileTypes.tsx +22 -0
- package/src/nextAuth/authProviders.tsx +3 -2
- package/src/redux/api/modelApi.ts +9 -2
- package/dist/components/common/FilterComponent.d.ts +0 -3
- package/dist/components/common/FilterComponent.d.ts.map +0 -1
- package/dist/components/common/FilterComponent.js +0 -214
- package/dist/components/common/FilterComponent.js.map +0 -1
- package/dist/components/core/filter/columns/SolidBigintField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidBigintField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidBigintField.js +0 -8
- package/dist/components/core/filter/columns/SolidBigintField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidBooleanField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidBooleanField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidBooleanField.js +0 -27
- package/dist/components/core/filter/columns/SolidBooleanField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidComputedField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidComputedField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidComputedField.js +0 -22
- package/dist/components/core/filter/columns/SolidComputedField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidDateField.d.ts +0 -9
- package/dist/components/core/filter/columns/SolidDateField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidDateField.js +0 -35
- package/dist/components/core/filter/columns/SolidDateField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidDatetimeField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidDatetimeField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidDatetimeField.js +0 -24
- package/dist/components/core/filter/columns/SolidDatetimeField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidDecimalField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidDecimalField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidDecimalField.js +0 -8
- package/dist/components/core/filter/columns/SolidDecimalField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidExternalIdField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidExternalIdField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidExternalIdField.js +0 -25
- package/dist/components/core/filter/columns/SolidExternalIdField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidFloatField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidFloatField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidFloatField.js +0 -8
- package/dist/components/core/filter/columns/SolidFloatField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidIdField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidIdField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidIdField.js +0 -25
- package/dist/components/core/filter/columns/SolidIdField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidIntField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidIntField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidIntField.js +0 -34
- package/dist/components/core/filter/columns/SolidIntField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidLongTextField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidLongTextField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidLongTextField.js +0 -8
- package/dist/components/core/filter/columns/SolidLongTextField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidMediaMultipleField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidMediaMultipleField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidMediaMultipleField.js +0 -35
- package/dist/components/core/filter/columns/SolidMediaMultipleField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidMediaSingleField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidMediaSingleField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidMediaSingleField.js +0 -35
- package/dist/components/core/filter/columns/SolidMediaSingleField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidRelationField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidRelationField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidRelationField.js +0 -12
- package/dist/components/core/filter/columns/SolidRelationField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidRichTextField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidRichTextField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidRichTextField.js +0 -8
- package/dist/components/core/filter/columns/SolidRichTextField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidSelectionDynamicField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidSelectionDynamicField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidSelectionDynamicField.js +0 -25
- package/dist/components/core/filter/columns/SolidSelectionDynamicField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidSelectionStaticField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidSelectionStaticField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidSelectionStaticField.js +0 -26
- package/dist/components/core/filter/columns/SolidSelectionStaticField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidShortTextField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidShortTextField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidShortTextField.js +0 -33
- package/dist/components/core/filter/columns/SolidShortTextField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidTimeField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidTimeField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidTimeField.js +0 -24
- package/dist/components/core/filter/columns/SolidTimeField.js.map +0 -1
- package/dist/components/core/filter/columns/SolidUuidField.d.ts +0 -4
- package/dist/components/core/filter/columns/SolidUuidField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/SolidUuidField.js +0 -25
- package/dist/components/core/filter/columns/SolidUuidField.js.map +0 -1
- package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.d.ts +0 -4
- package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.d.ts.map +0 -1
- package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.js +0 -54
- package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.js.map +0 -1
|
@@ -12,6 +12,9 @@ import { Schema } from "yup";
|
|
|
12
12
|
import { FormikObject, ISolidField, SolidFieldProps } from "./ISolidField";
|
|
13
13
|
import { FileReaderExt } from "@/components/common/FileReaderExt";
|
|
14
14
|
import { ProgressBar } from "primereact/progressbar";
|
|
15
|
+
import getAcceptedFileTypes from "@/helpers/getAcceptedFileTypes";
|
|
16
|
+
import Link from "next/link";
|
|
17
|
+
import { downloadMediaFile } from "@/helpers/downloadMediaFile";
|
|
15
18
|
export class SolidMediaMultipleField implements ISolidField {
|
|
16
19
|
|
|
17
20
|
private fieldContext: SolidFieldProps;
|
|
@@ -93,17 +96,17 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
93
96
|
const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
|
|
94
97
|
const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
|
|
95
98
|
const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
|
|
99
|
+
const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
|
|
96
100
|
|
|
97
|
-
const [imagesPreview, setImagesPreview] = useState<Array<string | ArrayBuffer>>([]);
|
|
98
101
|
const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);
|
|
99
102
|
const [imageToBeDeletedData, setImageToBeDeletedData] = useState<any>();
|
|
100
|
-
const [uploadProgress, setUploadProgress] = useState<Record<string, number>>({});
|
|
101
103
|
const [uploadCompleted, setUploadCompleted] = useState<Record<string, boolean>>({});
|
|
102
|
-
const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number }[]>([]);
|
|
104
|
+
const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);
|
|
103
105
|
const [uploadedSize, setUploadedSize] = useState<Record<string, string>>({});
|
|
104
106
|
const [totalSize, setTotalSize] = useState<Record<string, string>>({});
|
|
105
107
|
const [selectedFileId, setSelectedFileId] = useState<string | null>(null);
|
|
106
108
|
|
|
109
|
+
|
|
107
110
|
const formatFileSize = (size: number) => {
|
|
108
111
|
return size >= 1024 * 1024
|
|
109
112
|
? `${(size / (1024 * 1024)).toFixed(1)} MB`
|
|
@@ -118,32 +121,29 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
118
121
|
const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
|
|
119
122
|
if (Array.isArray(fieldValue) && fieldValue.length > 0) {
|
|
120
123
|
const urls: string[] = [];
|
|
121
|
-
const details: { name: string; type: string; size: number, id: any }[] = [];
|
|
122
|
-
const progress: Record<string, number> = {};
|
|
124
|
+
const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];
|
|
123
125
|
const completed: Record<string, boolean> = {};
|
|
124
126
|
|
|
125
127
|
fieldValue.forEach((file: File | any) => {
|
|
126
128
|
if (file instanceof File) {
|
|
127
129
|
// New file (from local upload)
|
|
128
130
|
urls.push(URL.createObjectURL(file));
|
|
129
|
-
details.push({ name: file.name, type: file.type, size: file.size, id: `${file.name}-${file.size}`, });
|
|
131
|
+
details.push({ name: file.name, type: file.type, size: file.size, id: `${file.name}-${file.size}`, fileUrl: "" });
|
|
130
132
|
} else if (typeof file === "object" && file._full_url) {
|
|
131
133
|
urls.push(file._full_url);
|
|
132
134
|
details.push({
|
|
133
135
|
name: file.relativeUri || "Unknown", // Use relativeUri or fallback
|
|
134
136
|
type: file.mediaStorageProviderMetadata?.type || "Unknown", // Extract type if available
|
|
135
137
|
size: 0, // API doesn't provide size, set 0 or fetch from metadata if available
|
|
136
|
-
id: file.id
|
|
138
|
+
id: file.id,
|
|
139
|
+
fileUrl: file._full_url
|
|
137
140
|
});
|
|
138
141
|
}
|
|
139
142
|
});
|
|
140
143
|
details.forEach(file => {
|
|
141
|
-
progress[`${file.name}-${file.size}`] = 100;
|
|
142
144
|
completed[`${file.name}-${file.size}`] = true;
|
|
143
145
|
});
|
|
144
|
-
setUploadProgress(progress);
|
|
145
146
|
setUploadCompleted(completed);
|
|
146
|
-
setImagesPreview(urls);
|
|
147
147
|
setFileDetails(details);
|
|
148
148
|
}
|
|
149
149
|
}, [formik.values, fieldLayoutInfo.attrs.name]);
|
|
@@ -152,7 +152,6 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
152
152
|
if (!acceptedFiles.length) return;
|
|
153
153
|
|
|
154
154
|
const newFileDetails = [...fileDetails];
|
|
155
|
-
const newUploadProgress = { ...uploadProgress };
|
|
156
155
|
const newUploadedSize = { ...uploadedSize };
|
|
157
156
|
const newTotalSize = { ...totalSize };
|
|
158
157
|
const newUploadCompleted = { ...uploadCompleted };
|
|
@@ -160,8 +159,7 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
160
159
|
acceptedFiles.forEach((file) => {
|
|
161
160
|
const fileId = `${file.name}-${file.size}`; // Unique identifier for tracking each file
|
|
162
161
|
|
|
163
|
-
newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id });
|
|
164
|
-
newUploadProgress[fileId] = 0;
|
|
162
|
+
newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id, fileUrl: file._full_url });
|
|
165
163
|
newUploadedSize[fileId] = "0 KB";
|
|
166
164
|
newTotalSize[fileId] = formatFileSize(file.size);
|
|
167
165
|
newUploadCompleted[fileId] = false;
|
|
@@ -169,20 +167,16 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
169
167
|
const reader = new FileReader();
|
|
170
168
|
|
|
171
169
|
reader.onloadstart = () => {
|
|
172
|
-
setUploadProgress((prev) => ({ ...prev, [fileId]: 0 }));
|
|
173
170
|
setUploadedSize((prev) => ({ ...prev, [fileId]: "0 KB" }));
|
|
174
171
|
};
|
|
175
172
|
|
|
176
173
|
reader.onprogress = (event) => {
|
|
177
174
|
if (event.loaded && event.total) {
|
|
178
|
-
const percent = Math.round((event.loaded / event.total) * 100);
|
|
179
|
-
setUploadProgress((prev) => ({ ...prev, [fileId]: percent }));
|
|
180
175
|
setUploadedSize((prev) => ({ ...prev, [fileId]: formatFileSize(event.loaded) }));
|
|
181
176
|
}
|
|
182
177
|
};
|
|
183
178
|
|
|
184
179
|
reader.onloadend = () => {
|
|
185
|
-
setUploadProgress((prev) => ({ ...prev, [fileId]: 100 }));
|
|
186
180
|
setUploadCompleted((prev) => ({ ...prev, [fileId]: true }));
|
|
187
181
|
setUploadedSize((prev) => ({ ...prev, [fileId]: newTotalSize[fileId] }));
|
|
188
182
|
};
|
|
@@ -191,7 +185,6 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
191
185
|
});
|
|
192
186
|
|
|
193
187
|
setFileDetails(newFileDetails);
|
|
194
|
-
setUploadProgress(newUploadProgress);
|
|
195
188
|
setUploadedSize(newUploadedSize);
|
|
196
189
|
setTotalSize(newTotalSize);
|
|
197
190
|
setUploadCompleted(newUploadCompleted);
|
|
@@ -202,11 +195,6 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
202
195
|
|
|
203
196
|
const handleCancelUpload = (fileId: string) => {
|
|
204
197
|
setFileDetails((prev) => prev.filter((file) => fileId !== `${file.name}-${file.size}`));
|
|
205
|
-
setUploadProgress((prev) => {
|
|
206
|
-
const newProgress = { ...prev };
|
|
207
|
-
delete newProgress[fileId];
|
|
208
|
-
return newProgress;
|
|
209
|
-
});
|
|
210
198
|
setUploadCompleted((prev) => {
|
|
211
199
|
const newCompleted = { ...prev };
|
|
212
200
|
delete newCompleted[fileId];
|
|
@@ -233,57 +221,79 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
233
221
|
|
|
234
222
|
const deleteFile = () => {
|
|
235
223
|
if (selectedFileId && imageToBeDeletedData) {
|
|
236
|
-
|
|
237
|
-
|
|
224
|
+
// Remove file from UI before making API call
|
|
225
|
+
setFileDetails((prev) => prev.filter((file) => `${file.name}-${file.size}` !== selectedFileId));
|
|
226
|
+
|
|
227
|
+
deleteMedia(imageToBeDeletedData)
|
|
228
|
+
.unwrap()
|
|
229
|
+
.then(() => {
|
|
230
|
+
// Ensure UI state updates only after successful deletion
|
|
231
|
+
setUploadCompleted((prev) => {
|
|
232
|
+
const newCompleted = { ...prev };
|
|
233
|
+
delete newCompleted[selectedFileId];
|
|
234
|
+
return newCompleted;
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
setUploadedSize((prev) => {
|
|
238
|
+
const newSize = { ...prev };
|
|
239
|
+
delete newSize[selectedFileId];
|
|
240
|
+
return newSize;
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
setTotalSize((prev) => {
|
|
244
|
+
const newSize = { ...prev };
|
|
245
|
+
delete newSize[selectedFileId];
|
|
246
|
+
return newSize;
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
// Update form state
|
|
250
|
+
formik.setFieldValue(
|
|
251
|
+
fieldLayoutInfo.attrs.name,
|
|
252
|
+
fileDetails.filter((file) => `${file.name}-${file.size}` !== selectedFileId)
|
|
253
|
+
);
|
|
254
|
+
})
|
|
255
|
+
.catch((error) => {
|
|
256
|
+
console.error("Error deleting file:", error);
|
|
257
|
+
});
|
|
258
|
+
|
|
238
259
|
setDeleteImageDialogVisible(false);
|
|
239
|
-
setShowAllFiles(false)
|
|
260
|
+
setShowAllFiles(false);
|
|
240
261
|
setSelectedFileId(null);
|
|
241
262
|
}
|
|
242
263
|
};
|
|
243
264
|
|
|
265
|
+
|
|
244
266
|
const {
|
|
245
267
|
getRootProps,
|
|
246
268
|
getInputProps,
|
|
247
269
|
isDragActive,
|
|
248
270
|
} = useDropzone({
|
|
249
271
|
onDrop: handleDropImages,
|
|
250
|
-
accept:
|
|
251
|
-
|
|
252
|
-
"image/png": [],
|
|
253
|
-
},
|
|
254
|
-
maxSize: 2 * 1024 * 1024, // 2MB
|
|
272
|
+
accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),
|
|
273
|
+
maxSize: fieldMetadata.mediaMaxSizeKb * 1024,
|
|
255
274
|
});
|
|
256
275
|
|
|
257
276
|
const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
|
|
258
277
|
|
|
259
|
-
|
|
260
|
-
const imageFormatHandler = (preview: any) => {
|
|
261
|
-
if (typeof preview === 'string') {
|
|
262
|
-
return preview; // Existing URLs
|
|
263
|
-
}
|
|
264
|
-
if (preview instanceof File) {
|
|
265
|
-
return URL.createObjectURL(preview); // Generate preview URL for File
|
|
266
|
-
}
|
|
267
|
-
if (typeof preview === "object") {
|
|
268
|
-
return preview._full_url
|
|
269
|
-
}
|
|
270
|
-
return ""; // Fallback for invalid cases
|
|
271
|
-
}
|
|
272
|
-
|
|
273
278
|
const [isShowAllFiles, setShowAllFiles] = useState(false);
|
|
274
279
|
return (
|
|
275
280
|
<div className={className}>
|
|
276
281
|
<div className="flex flex-column gap-2 mt-4">
|
|
277
|
-
|
|
282
|
+
{showFieldLabel != false &&
|
|
283
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
278
284
|
|
|
279
|
-
|
|
280
|
-
|
|
285
|
+
{fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
|
|
286
|
+
</label>
|
|
287
|
+
}
|
|
281
288
|
<div
|
|
282
289
|
{...getRootProps()}
|
|
283
290
|
className="solid-dropzone-wrapper"
|
|
284
291
|
>
|
|
285
292
|
<input {...getInputProps()} />
|
|
286
|
-
<DropzonePlaceholder
|
|
293
|
+
<DropzonePlaceholder
|
|
294
|
+
mediaTypes={fieldMetadata.mediaTypes}
|
|
295
|
+
mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}
|
|
296
|
+
/>
|
|
287
297
|
</div>
|
|
288
298
|
</div>
|
|
289
299
|
{fileDetails.length > 0 &&
|
|
@@ -292,17 +302,39 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
292
302
|
<FileReaderExt fileDetails={fileDetails[0]} />
|
|
293
303
|
<div className="w-full flex flex-column gap-1">
|
|
294
304
|
<div className="flex align-items-center justify-content-between">
|
|
295
|
-
<
|
|
296
|
-
<div
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
305
|
+
<Link className="font-bold w-11" href={process.env.NEXT_PUBLIC_BACKEND_API_URL + `/${fileDetails[0]?.fileUrl}`} target="_blank">{fileDetails[0].name}</Link>
|
|
306
|
+
<div className="flex align-items-center gap-2">
|
|
307
|
+
<div>
|
|
308
|
+
<Button
|
|
309
|
+
type="button"
|
|
310
|
+
text
|
|
311
|
+
icon={"pi pi-download"}
|
|
312
|
+
size="small"
|
|
313
|
+
style={{
|
|
314
|
+
height: 16,
|
|
315
|
+
width: 16
|
|
316
|
+
}}
|
|
317
|
+
onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}
|
|
318
|
+
/>
|
|
319
|
+
</div>
|
|
320
|
+
<div>
|
|
321
|
+
<Button
|
|
322
|
+
type="button"
|
|
323
|
+
text
|
|
324
|
+
icon={"pi pi-times"}
|
|
325
|
+
size="small"
|
|
326
|
+
severity="secondary"
|
|
327
|
+
// className="p-2"
|
|
328
|
+
style={{
|
|
329
|
+
height: 16,
|
|
330
|
+
width: 16
|
|
331
|
+
}}
|
|
332
|
+
onClick={() => confirmDeleteFile(`${fileDetails[0].name}-${fileDetails[0].size}`, fileDetails[0].id)}
|
|
333
|
+
/>
|
|
334
|
+
</div>
|
|
303
335
|
</div>
|
|
304
336
|
</div>
|
|
305
|
-
{uploadCompleted[`${fileDetails[0].name}-${fileDetails[0].size}`]
|
|
337
|
+
{uploadCompleted[`${fileDetails[0].name}-${fileDetails[0].size}`] && (
|
|
306
338
|
<div className="flex align-items-center gap-2 text-sm">
|
|
307
339
|
{totalSize[`${fileDetails[0].name}-${fileDetails[0].size}`]} of {totalSize[`${fileDetails[0].name}-${fileDetails[0].size}`]}
|
|
308
340
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
@@ -310,26 +342,13 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
310
342
|
</svg>
|
|
311
343
|
Completed
|
|
312
344
|
</div>
|
|
313
|
-
) : (
|
|
314
|
-
<div className="flex align-items-center gap-2 text-sm">
|
|
315
|
-
{uploadedSize[`${fileDetails[0].name}-${fileDetails[0].size}`]} of {totalSize[`${fileDetails[0].name}-${fileDetails[0].size}`]}
|
|
316
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
317
|
-
<path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
|
|
318
|
-
</svg>
|
|
319
|
-
Uploading {uploadProgress[`${fileDetails[0].name}-${fileDetails[0].size}`]}% Completed
|
|
320
|
-
</div>
|
|
321
345
|
)}
|
|
322
346
|
</div>
|
|
323
347
|
</div>
|
|
324
|
-
<ProgressBar
|
|
325
|
-
value={uploadProgress[`${fileDetails[0].name}-${fileDetails[0].size}`]}
|
|
326
|
-
showValue={false}
|
|
327
|
-
style={{ height: 4 }}
|
|
328
|
-
className="mt-2"
|
|
329
|
-
/>
|
|
330
348
|
</div>
|
|
331
349
|
}
|
|
332
350
|
|
|
351
|
+
|
|
333
352
|
{fileDetails.length > 1 &&
|
|
334
353
|
<div className="flex align-items-center">
|
|
335
354
|
<p className="m-0">
|
|
@@ -357,17 +376,39 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
357
376
|
<FileReaderExt fileDetails={file} />
|
|
358
377
|
<div className="w-full flex flex-column gap-1">
|
|
359
378
|
<div className="flex align-items-center justify-content-between">
|
|
360
|
-
<
|
|
361
|
-
<div
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
379
|
+
<Link className="font-bold w-11" href={process.env.NEXT_PUBLIC_BACKEND_API_URL + `/${file?.fileUrl}`} target="_blank">{file.name}</Link>
|
|
380
|
+
<div className="flex align-items-center gap-2">
|
|
381
|
+
<div>
|
|
382
|
+
<Button
|
|
383
|
+
type="button"
|
|
384
|
+
text
|
|
385
|
+
icon={"pi pi-download"}
|
|
386
|
+
size="small"
|
|
387
|
+
style={{
|
|
388
|
+
height: 16,
|
|
389
|
+
width: 16
|
|
390
|
+
}}
|
|
391
|
+
onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}
|
|
392
|
+
/>
|
|
393
|
+
</div>
|
|
394
|
+
<div>
|
|
395
|
+
<Button
|
|
396
|
+
type="button"
|
|
397
|
+
text
|
|
398
|
+
icon={"pi pi-times"}
|
|
399
|
+
size="small"
|
|
400
|
+
severity="secondary"
|
|
401
|
+
// className="p-2"
|
|
402
|
+
style={{
|
|
403
|
+
height: 16,
|
|
404
|
+
width: 16
|
|
405
|
+
}}
|
|
406
|
+
onClick={() => confirmDeleteFile(fileId, file?.id)}
|
|
407
|
+
/>
|
|
408
|
+
</div>
|
|
368
409
|
</div>
|
|
369
410
|
</div>
|
|
370
|
-
{uploadCompleted[fileId]
|
|
411
|
+
{uploadCompleted[fileId] && (
|
|
371
412
|
<div className="flex align-items-center gap-2 text-sm">
|
|
372
413
|
{totalSize[fileId]} of {totalSize[fileId]}
|
|
373
414
|
<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
|
|
@@ -378,26 +419,9 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
378
419
|
</svg>
|
|
379
420
|
Completed
|
|
380
421
|
</div>
|
|
381
|
-
) : (
|
|
382
|
-
<div className="flex align-items-center gap-2 text-sm">
|
|
383
|
-
{uploadedSize[fileId]} of {totalSize[fileId]}
|
|
384
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
|
|
385
|
-
<circle cx="2" cy="2" r="2" fill="#C1C1C1" />
|
|
386
|
-
</svg>
|
|
387
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
388
|
-
<path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
|
|
389
|
-
</svg>
|
|
390
|
-
Uploading {uploadProgress[fileId]}% Completed
|
|
391
|
-
</div>
|
|
392
422
|
)}
|
|
393
423
|
</div>
|
|
394
424
|
</div>
|
|
395
|
-
<ProgressBar
|
|
396
|
-
value={uploadProgress[fileId]}
|
|
397
|
-
showValue={false}
|
|
398
|
-
style={{ height: 4 }}
|
|
399
|
-
className="mt-2"
|
|
400
|
-
/>
|
|
401
425
|
</div>
|
|
402
426
|
);
|
|
403
427
|
})
|