diff --git a/packages/ui/src/elements/FileDetails/StaticFileDetails/index.tsx b/packages/ui/src/elements/FileDetails/StaticFileDetails/index.tsx index 3e3c549841..15d46a6012 100644 --- a/packages/ui/src/elements/FileDetails/StaticFileDetails/index.tsx +++ b/packages/ui/src/elements/FileDetails/StaticFileDetails/index.tsx @@ -38,17 +38,21 @@ export const StaticFileDetails: React.FC = (props) => { const { filename, filesize, height, mimeType, thumbnailURL, url, width } = doc + const previewAllowed = uploadConfig.displayPreview ?? true + return (
- + {previewAllowed && ( + + )}
= ({ cellData: filename, collectionConfig, + field, rowData, }) => { - return ( -
- - {String(filename)} -
- ) + const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined + const previewAllowed = fieldPreviewAllowed ?? collectionConfig.upload?.displayPreview ?? true + + if (previewAllowed) { + return ( +
+ + {String(filename)} +
+ ) + } else { + return <>{String(filename)} + } } diff --git a/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx b/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx index 36efaa9753..c166ef2dcd 100644 --- a/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx +++ b/packages/ui/src/elements/Table/DefaultCell/fields/Relationship/index.tsx @@ -110,9 +110,9 @@ export const RelationshipCell: React.FC = ({ let fileField = null if (field.type === 'upload') { - const relatedCollectionPreview = !!relatedCollection.upload.displayPreview + const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined const previewAllowed = - field.displayPreview || (relatedCollectionPreview && field.displayPreview !== false) + fieldPreviewAllowed ?? relatedCollection.upload?.displayPreview ?? true if (previewAllowed && document) { fileField = ( diff --git a/packages/ui/src/fields/Upload/HasMany/index.tsx b/packages/ui/src/fields/Upload/HasMany/index.tsx index ef747f5d3c..7f3972b5de 100644 --- a/packages/ui/src/fields/Upload/HasMany/index.tsx +++ b/packages/ui/src/fields/Upload/HasMany/index.tsx @@ -17,6 +17,7 @@ import './index.scss' type Props = { readonly className?: string + readonly displayPreview?: boolean readonly fileDocs: { relationTo: string value: JsonObject @@ -30,8 +31,17 @@ type Props = { } export function UploadComponentHasMany(props: Props) { - const { className, fileDocs, isSortable, onRemove, onReorder, readonly, reloadDoc, serverURL } = - props + const { + className, + displayPreview, + fileDocs, + isSortable, + onRemove, + onReorder, + readonly, + reloadDoc, + serverURL, + } = props const moveRow = React.useCallback( (moveFromIndex: number, moveToIndex: number) => { @@ -120,6 +130,7 @@ export function UploadComponentHasMany(props: Props) { alt={(value?.alt || value?.filename) as string} byteSize={value.filesize as number} collectionSlug={relationTo} + displayPreview={displayPreview} filename={value.filename as string} id={id} mimeType={value?.mimeType as string} diff --git a/packages/ui/src/fields/Upload/HasOne/index.tsx b/packages/ui/src/fields/Upload/HasOne/index.tsx index a808656f1c..b2e34c7e8a 100644 --- a/packages/ui/src/fields/Upload/HasOne/index.tsx +++ b/packages/ui/src/fields/Upload/HasOne/index.tsx @@ -14,6 +14,7 @@ const baseClass = 'upload upload--has-one' type Props = { readonly className?: string + readonly displayPreview?: boolean readonly fileDoc: { relationTo: string value: JsonObject @@ -25,7 +26,7 @@ type Props = { } export function UploadComponentHasOne(props: Props) { - const { className, fileDoc, onRemove, readonly, reloadDoc, serverURL } = props + const { className, displayPreview, fileDoc, onRemove, readonly, reloadDoc, serverURL } = props const { relationTo, value } = fileDoc const id = String(value?.id) @@ -56,6 +57,7 @@ export function UploadComponentHasOne(props: Props) { alt={(value?.alt || value?.filename) as string} byteSize={value.filesize as number} collectionSlug={relationTo} + displayPreview={displayPreview} filename={value.filename as string} id={id} mimeType={value?.mimeType as string} diff --git a/packages/ui/src/fields/Upload/Input.tsx b/packages/ui/src/fields/Upload/Input.tsx index 878e8e755a..3b45378719 100644 --- a/packages/ui/src/fields/Upload/Input.tsx +++ b/packages/ui/src/fields/Upload/Input.tsx @@ -55,6 +55,7 @@ export type UploadInputProps = { readonly customUploadActions?: React.ReactNode[] readonly Description?: React.ReactNode readonly description?: StaticDescription + readonly displayPreview?: boolean readonly Error?: React.ReactNode readonly filterOptions?: FilterOptionsResult readonly hasMany?: boolean @@ -85,6 +86,7 @@ export function UploadInput(props: UploadInputProps) { className, Description, description, + displayPreview, Error, filterOptions: filterOptionsFromProps, hasMany, @@ -495,6 +497,7 @@ export function UploadInput(props: UploadInputProps) { <> {populatedDocs && populatedDocs?.length > 0 ? ( {populatedDocs && populatedDocs?.length > 0 && populatedDocs[0].value ? ( collection.slug === collectionSlug) + : undefined + const [DocumentDrawer, _, { openDrawer }] = useDocumentDrawer({ id: src ? id : undefined, collectionSlug, @@ -80,17 +89,20 @@ export function RelationshipContent(props: Props) { } const metaText = withMeta ? generateMetaText(mimeType, byteSize) : '' + const previewAllowed = displayPreview ?? collectionConfig.upload?.displayPreview ?? true return (
- + {previewAllowed && ( + + )}

{src ? ( diff --git a/packages/ui/src/fields/Upload/index.tsx b/packages/ui/src/fields/Upload/index.tsx index fb71bb2954..d84c58908f 100644 --- a/packages/ui/src/fields/Upload/index.tsx +++ b/packages/ui/src/fields/Upload/index.tsx @@ -35,6 +35,8 @@ export function UploadComponent(props: UploadFieldClientProps) { const { config } = useConfig() + const displayPreview = field.displayPreview + const memoizedValidate = React.useCallback( (value, options) => { if (typeof validate === 'function') { @@ -66,6 +68,7 @@ export function UploadComponent(props: UploadFieldClientProps) { className={className} Description={Description} description={description} + displayPreview={displayPreview} Error={Error} filterOptions={filterOptions} hasMany={hasMany} diff --git a/test/uploads/config.ts b/test/uploads/config.ts index 049bcbc8ed..8e25e75457 100644 --- a/test/uploads/config.ts +++ b/test/uploads/config.ts @@ -658,7 +658,9 @@ export default buildConfigWithDefaults({ type: 'text', }, ], - upload: true, + upload: { + displayPreview: false, + }, }, { slug: relationPreviewSlug,