Skip to content

Commit 11226eb

Browse files
authored
chore: add afterOpenChange (#393)
1 parent b48931c commit 11226eb

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/Preview/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ export interface InternalPreviewConfig {
8888
open?: boolean;
8989
getContainer?: PortalProps['getContainer'];
9090
zIndex?: number;
91+
afterOpenChange?: (open: boolean) => void;
9192

9293
// Operation
9394
movable?: boolean;
@@ -170,6 +171,7 @@ const Preview: React.FC<PreviewProps> = props => {
170171
movable = true,
171172
onClose,
172173
open,
174+
afterOpenChange,
173175
icons = {},
174176
closeIcon,
175177
getContainer,
@@ -366,6 +368,7 @@ const Preview: React.FC<PreviewProps> = props => {
366368
if (!nextVisible) {
367369
setLockScroll(false);
368370
}
371+
afterOpenChange?.(nextVisible);
369372
};
370373

371374
// ========================== Portal ==========================

tests/preview.test.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -974,11 +974,13 @@ describe('Preview', () => {
974974

975975
it('should be closed when press esc after click portal', () => {
976976
const onOpenChange = jest.fn();
977+
const afterOpenChange = jest.fn();
977978
const { container } = render(
978979
<Image
979980
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
980981
preview={{
981982
onOpenChange,
983+
afterOpenChange,
982984
}}
983985
/>,
984986
);
@@ -991,15 +993,17 @@ describe('Preview', () => {
991993
expect(document.querySelector('.rc-image-preview')).toBeTruthy();
992994

993995
expect(onOpenChange).toHaveBeenCalledWith(true);
996+
expect(afterOpenChange).toHaveBeenCalledWith(true);
994997

995998
fireEvent.click(document.querySelector('.rc-image-preview-actions'));
996999

9971000
fireEvent.keyDown(window, { key: 'Escape', keyCode: 27 });
9981001

9991002
expect(onOpenChange).toHaveBeenCalledWith(false);
1000-
expect(onOpenChange).toHaveBeenCalledTimes(2);
1003+
expect(afterOpenChange).toHaveBeenCalledWith(false);
10011004

1002-
onOpenChange.mockRestore();
1005+
expect(onOpenChange).toHaveBeenCalledTimes(2);
1006+
expect(afterOpenChange).toHaveBeenCalledTimes(2);
10031007
});
10041008

10051009
it('not modify preview image size', () => {

tests/previewGroup.test.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ describe('PreviewGroup', () => {
1515
it('onChange should be called', () => {
1616
const onChange = jest.fn();
1717
const onOpenChange = jest.fn();
18+
const afterOpenChange = jest.fn();
1819
const { container } = render(
19-
<Image.PreviewGroup preview={{ onChange, onOpenChange }}>
20+
<Image.PreviewGroup preview={{ onChange, onOpenChange, afterOpenChange }}>
2021
<Image src="src1" className="firstImg" />
2122
<Image preview={false} src="src2" />
2223
<Image src="src3" />
@@ -29,7 +30,8 @@ describe('PreviewGroup', () => {
2930
jest.runAllTimers();
3031
});
3132
expect(onChange).not.toHaveBeenCalled();
32-
expect(onOpenChange).toBeCalledWith(true, { current: 0 });
33+
expect(onOpenChange).toHaveBeenCalledWith(true, { current: 0 });
34+
expect(afterOpenChange).toHaveBeenCalledWith(true);
3335

3436
fireEvent.click(document.querySelector('.rc-image-preview-switch-next'));
3537
act(() => {

0 commit comments

Comments
 (0)