diff --git a/assets/preview.less b/assets/preview.less index dc7eff3..9648ec3 100644 --- a/assets/preview.less +++ b/assets/preview.less @@ -25,7 +25,8 @@ } } - &-img { + &-img, + &-video { max-width: 100%; max-height: 70%; } diff --git a/docs/demo/previewvideo.md b/docs/demo/previewvideo.md new file mode 100644 index 0000000..bbffcaa --- /dev/null +++ b/docs/demo/previewvideo.md @@ -0,0 +1,8 @@ +--- +title: previewvideo +nav: + title: Demo + path: /demo +--- + + diff --git a/docs/examples/previewvideo.tsx b/docs/examples/previewvideo.tsx new file mode 100644 index 0000000..7cb0f47 --- /dev/null +++ b/docs/examples/previewvideo.tsx @@ -0,0 +1,42 @@ +import Image from '@rc-component/image'; +import * as React from 'react'; +import '../../assets/index.less'; +import { defaultIcons } from './common'; + +export default function PreviewVideo() { + return ( +
+ + +
+

PreviewGroup

+ + + + +
+ ); +} diff --git a/src/Image.tsx b/src/Image.tsx index 8b23034..a1d7ce5 100644 --- a/src/Image.tsx +++ b/src/Image.tsx @@ -117,6 +117,7 @@ const ImageInternal: CompoundedComponent = props => { const canPreview = !!preview; const { + type: previewType = 'image', src: previewSrc, open: previewOpen, onOpenChange: onPreviewOpenChange, @@ -178,8 +179,9 @@ const ImageInternal: CompoundedComponent = props => { () => ({ ...imgCommonProps, src, + type: previewType, }), - [src, imgCommonProps], + [src, imgCommonProps, previewType], ); const imageId = useRegisterImage(canPreview, registerData); @@ -266,6 +268,7 @@ const ImageInternal: CompoundedComponent = props => { prefixCls={previewPrefixCls} onClose={onPreviewClose} mousePosition={mousePosition} + type={previewType} src={src} alt={alt} imageInfo={{ width, height }} diff --git a/src/Preview/index.tsx b/src/Preview/index.tsx index 02d2252..75ebf80 100644 --- a/src/Preview/index.tsx +++ b/src/Preview/index.tsx @@ -72,7 +72,8 @@ export interface InternalPreviewConfig { /** Better to use `classNames.root` instead */ rootClassName?: string; - // Image + // Media + type?: 'image' | 'video'; src?: string; alt?: string; @@ -121,7 +122,7 @@ export interface PreviewProps extends InternalPreviewConfig { }; fallback?: string; - // Preview image + // Preview media imgCommonProps?: React.ImgHTMLAttributes; width?: string | number; height?: string | number; @@ -165,6 +166,7 @@ const Preview: React.FC = props => { const { prefixCls, rootClassName, + type = 'image', src, alt, imageInfo, @@ -425,13 +427,24 @@ const Preview: React.FC = props => { {/* Body */}
{/* Preview Image */} - {imageRender - ? imageRender(imgNode, { - transform, - image, - ...(groupContext ? { current } : {}), - }) - : imgNode} + {type === 'image' && + (imageRender + ? imageRender(imgNode, { + transform, + image, + ...(groupContext ? { current } : {}), + }) + : imgNode)} + {type === 'video' && ( +
{/* Close Button */} @@ -454,37 +467,38 @@ const Preview: React.FC = props => { /> )} - {/* Footer */} -