From ce47c04eb95aad58b35d57426810857155a3b2f4 Mon Sep 17 00:00:00 2001 From: Tom Xu Date: Wed, 14 Oct 2020 17:52:41 +0800 Subject: [PATCH] improve: preview props (#34) * improve: preview props * Update README.md * ts * fix test --- README.md | 2 +- src/Image.tsx | 8 +- tests/__snapshots__/controlled.test.tsx.snap | 106 +++++++++++++++++++ tests/controlled.test.tsx | 2 +- 4 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 tests/__snapshots__/controlled.test.tsx.snap diff --git a/README.md b/README.md index a01223b7..a3f3dbfd 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ ReactDOM.render( | Name | Type | Default | Description | | --- | --- | --- | --- | -| preview | boolean \| {visible: boolean,onVisibleChange:function(value, prevValue) } | true | Whether to show preview | +| preview | boolean \| {visible: boolean,onVisibleChange:function(value, prevValue),getContainer: string \| HTMLElement \| (() => HTMLElement) \| false } | true | Whether to show preview | | prefixCls | string | rc-image | Classname prefix | | placeholder | boolean \| ReactElement | - | if `true` will set default placeholder or use `ReactElement` set customize placeholder | | fallback | string | - | Load failed src | diff --git a/src/Image.tsx b/src/Image.tsx index 4505c3f4..24cb2ecf 100644 --- a/src/Image.tsx +++ b/src/Image.tsx @@ -3,11 +3,13 @@ import { useState } from 'react'; import cn from 'classnames'; import { getOffset } from 'rc-util/lib/Dom/css'; import useMergedState from 'rc-util/lib/hooks/useMergedState'; +import { GetContainer } from 'rc-util/lib/PortalWrapper'; import Preview from './Preview'; export interface ImagePreviewType { visible?: boolean; onVisibleChange?: (value: boolean, prevValue: boolean) => void; + getContainer?: GetContainer | false; } export interface ImageProps @@ -25,7 +27,6 @@ export interface ImageProps */ onPreviewClose?: (value: boolean, prevValue: boolean) => void; onClick?: (e: React.MouseEvent) => void; - getPopupContainer?: () => HTMLElement; } type ImageStatus = 'normal' | 'error' | 'loading'; @@ -34,7 +35,6 @@ const ImageInternal: React.FC = ({ src, alt, onPreviewClose: onInitialPreviewClose, - getPopupContainer, prefixCls = 'rc-image', previewPrefixCls = `${prefixCls}-preview`, placeholder, @@ -57,7 +57,7 @@ const ImageInternal: React.FC = ({ ...otherProps }) => { const isCustomPlaceholder = placeholder && placeholder !== true; - const { visible = undefined, onVisibleChange = onInitialPreviewClose } = + const { visible = undefined, onVisibleChange = onInitialPreviewClose, getContainer = undefined } = typeof preview === 'object' ? preview : {}; const isControlled = visible !== undefined; const [isShowPreview, setShowPreview] = useMergedState(!!visible, { @@ -157,7 +157,7 @@ const ImageInternal: React.FC = ({ mousePosition={mousePosition} src={mergedSrc} alt={alt} - getContainer={getPopupContainer} + getContainer={getContainer} /> )} diff --git a/tests/__snapshots__/controlled.test.tsx.snap b/tests/__snapshots__/controlled.test.tsx.snap new file mode 100644 index 00000000..ee025635 --- /dev/null +++ b/tests/__snapshots__/controlled.test.tsx.snap @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Controlled With previewVisible 1`] = ` +
+