mirror of
https://github.com/strapi/strapi.git
synced 2025-12-06 03:52:38 +00:00
fix: issue #23572 support undefined allowed types
This commit is contained in:
parent
883f4fcabd
commit
4aa8ff0ba4
@ -28,7 +28,6 @@
|
|||||||
"type": "media",
|
"type": "media",
|
||||||
"multiple": false,
|
"multiple": false,
|
||||||
"required": false,
|
"required": false,
|
||||||
"allowedTypes": ["files", "images", "videos", "audios"],
|
|
||||||
"pluginOptions": {}
|
"pluginOptions": {}
|
||||||
},
|
},
|
||||||
"images": {
|
"images": {
|
||||||
|
|||||||
@ -36,7 +36,7 @@ export interface MediaLibraryInputProps {
|
|||||||
export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(
|
export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(
|
||||||
(
|
(
|
||||||
{
|
{
|
||||||
attribute: { allowedTypes = ['videos', 'files', 'images', 'audios'], multiple = false } = {},
|
attribute: { allowedTypes = null, multiple = false } = {},
|
||||||
label,
|
label,
|
||||||
hint,
|
hint,
|
||||||
disabled = false,
|
disabled = false,
|
||||||
@ -48,7 +48,6 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
|
|||||||
) => {
|
) => {
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
const { onChange, value, error } = useField(name);
|
const { onChange, value, error } = useField(name);
|
||||||
const fieldAllowedTypes = allowedTypes || ['files', 'images', 'videos', 'audios'];
|
|
||||||
const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);
|
const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);
|
||||||
const [step, setStep] = React.useState<string | undefined>(undefined);
|
const [step, setStep] = React.useState<string | undefined>(undefined);
|
||||||
const [selectedIndex, setSelectedIndex] = React.useState(0);
|
const [selectedIndex, setSelectedIndex] = React.useState(0);
|
||||||
@ -123,7 +122,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
|
|||||||
assets: FileWithoutIdHash[] | Asset[],
|
assets: FileWithoutIdHash[] | Asset[],
|
||||||
callback: (assets?: AllowedFiles[], error?: string) => void
|
callback: (assets?: AllowedFiles[], error?: string) => void
|
||||||
) => {
|
) => {
|
||||||
const allowedAssets = getAllowedFiles(fieldAllowedTypes, assets as AllowedFiles[]);
|
const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);
|
||||||
|
|
||||||
if (allowedAssets.length > 0) {
|
if (allowedAssets.length > 0) {
|
||||||
callback(allowedAssets);
|
callback(allowedAssets);
|
||||||
@ -137,7 +136,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
|
|||||||
defaultMessage: `You can't upload this type of file.`,
|
defaultMessage: `You can't upload this type of file.`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fileTypes: fieldAllowedTypes.join(','),
|
fileTypes: (allowedTypes ?? []).join(','),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
@ -170,10 +169,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
|
|||||||
let initiallySelectedAssets = selectedAssets;
|
let initiallySelectedAssets = selectedAssets;
|
||||||
|
|
||||||
if (uploadedFiles.length > 0) {
|
if (uploadedFiles.length > 0) {
|
||||||
const allowedUploadedFiles = getAllowedFiles(
|
const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);
|
||||||
fieldAllowedTypes,
|
|
||||||
uploadedFiles as AllowedFiles[]
|
|
||||||
);
|
|
||||||
|
|
||||||
initiallySelectedAssets = multiple
|
initiallySelectedAssets = multiple
|
||||||
? [...allowedUploadedFiles, ...selectedAssets]
|
? [...allowedUploadedFiles, ...selectedAssets]
|
||||||
@ -204,7 +200,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
|
|||||||
|
|
||||||
{step === STEPS.AssetSelect && (
|
{step === STEPS.AssetSelect && (
|
||||||
<AssetDialog
|
<AssetDialog
|
||||||
allowedTypes={fieldAllowedTypes as AllowedTypes[]}
|
allowedTypes={allowedTypes as AllowedTypes[]}
|
||||||
initiallySelectedAssets={initiallySelectedAssets}
|
initiallySelectedAssets={initiallySelectedAssets}
|
||||||
folderId={folderId}
|
folderId={folderId}
|
||||||
onClose={() => {
|
onClose={() => {
|
||||||
|
|||||||
@ -15,7 +15,11 @@ export interface AllowedFiles extends File {
|
|||||||
type: string;
|
type: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getAllowedFiles = (pluralTypes: string[], files: AllowedFiles[]) => {
|
export const getAllowedFiles = (pluralTypes: string[] | null, files: AllowedFiles[]) => {
|
||||||
|
if (!pluralTypes) {
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
const singularTypes = toSingularTypes(pluralTypes);
|
const singularTypes = toSingularTypes(pluralTypes);
|
||||||
|
|
||||||
const allowedFiles = files.filter((file) => {
|
const allowedFiles = files.filter((file) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user