diff --git a/src/Preview/CloseBtn.tsx b/src/Preview/CloseBtn.tsx index aacd6cc..00bacda 100644 --- a/src/Preview/CloseBtn.tsx +++ b/src/Preview/CloseBtn.tsx @@ -1,16 +1,23 @@ +import { clsx } from 'clsx'; import * as React from 'react'; export interface CloseBtnProps { prefixCls: string; icon?: React.ReactNode; onClick: React.MouseEventHandler; + className?: string; + style?: React.CSSProperties; } export default function CloseBtn(props: CloseBtnProps) { - const { prefixCls, icon, onClick } = props; + const { prefixCls, icon, onClick, className, style } = props; return ( - ); diff --git a/src/Preview/index.tsx b/src/Preview/index.tsx index 2aab1c8..8fc424d 100644 --- a/src/Preview/index.tsx +++ b/src/Preview/index.tsx @@ -19,7 +19,7 @@ import PrevNext from './PrevNext'; // Note: if you want to add `action`, // pls contact @zombieJ or @thinkasany first. -export type PreviewSemanticName = 'root' | 'mask' | 'body' | FooterSemanticName; +export type PreviewSemanticName = 'root' | 'mask' | 'body' | 'close' | FooterSemanticName; export interface OperationIcons { rotateLeft?: React.ReactNode; @@ -436,6 +436,8 @@ const Preview: React.FC = props => { prefixCls={prefixCls} icon={closeIcon === true ? icons.close : closeIcon || icons.close} onClick={onClose} + className={classNames.close} + style={styles.close} /> )} diff --git a/tests/preview.test.tsx b/tests/preview.test.tsx index 7307608..39f8c5a 100644 --- a/tests/preview.test.tsx +++ b/tests/preview.test.tsx @@ -1079,6 +1079,7 @@ describe('Preview', () => { mask: 'custom-mask', actions: 'custom-actions', root: 'custom-root', + close: 'custom-close', }, }; const customStyles = { @@ -1087,6 +1088,7 @@ describe('Preview', () => { mask: { color: 'red' }, actions: { backgroundColor: 'blue' }, root: { border: '1px solid green' }, + close: { color: 'purple' }, }, }; const { baseElement } = render( @@ -1105,12 +1107,15 @@ describe('Preview', () => { const cover = document.querySelector('.rc-image-cover'); const mask = document.querySelector('.rc-image-preview-mask'); const actions = baseElement.querySelector('.rc-image-preview-actions'); + const close = baseElement.querySelector('.rc-image-preview-close'); expect(cover).toHaveClass(customClassnames.cover); expect(cover).toHaveStyle(customStyles.cover); expect(mask).toHaveClass(customClassnames.popup.mask); expect(mask).toHaveStyle(customStyles.popup.mask); expect(actions).toHaveClass(customClassnames.popup.actions); expect(actions).toHaveStyle(customStyles.popup.actions); + expect(close).toHaveClass(customClassnames.popup.close); + expect(close).toHaveStyle(customStyles.popup.close); expect(baseElement.querySelector('.rc-image-preview')).toHaveClass(customClassnames.popup.root); expect(baseElement.querySelector('.rc-image-preview')).toHaveStyle(customStyles.popup.root); });