Skip to content

Commit 7ec69b9

Browse files
afc163zombieJ
andauthored
fix: only disappearing elements should not be interactive (#297)
* fix: disappearing elements should not be interactive ant-design/ant-design#35051 (comment) * chore: patch measure logic Co-authored-by: zombiej <[email protected]>
1 parent 1b1833a commit 7ec69b9

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

src/Popup/PopupInner.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,9 @@ const PopupInner = React.forwardRef<PopupInnerRef, PopupInnerProps>(
182182
zIndex,
183183
opacity:
184184
status === 'motion' || status === 'stable' || !visible ? undefined : 0,
185-
pointerEvents: status === 'stable' ? undefined : 'none',
185+
// Cannot interact with disappearing elements
186+
// https://github.com/ant-design/ant-design/issues/35051#issuecomment-1101340714
187+
pointerEvents: !visible && status !== 'stable' ? 'none' : undefined,
186188
...style,
187189
};
188190

tests/motion.test.jsx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react';
2-
import { cleanup, fireEvent, render } from '@testing-library/react';
2+
import { act, cleanup, fireEvent, render } from '@testing-library/react';
33
import Trigger from '../src';
44
import CSSMotion from 'rc-motion';
55
import { placementAlignMap } from './util';
@@ -34,6 +34,10 @@ describe('Trigger.Motion', () => {
3434
expect(document.querySelector('.rc-trigger-popup')).toHaveClass(
3535
'bamboo-appear',
3636
);
37+
38+
expect(
39+
document.querySelector('.rc-trigger-popup').style.pointerEvents,
40+
).toEqual('');
3741
});
3842

3943
it('use correct leave motion', () => {
@@ -60,4 +64,30 @@ describe('Trigger.Motion', () => {
6064
expect.anything(),
6165
);
6266
});
67+
68+
it('not lock on appear', () => {
69+
const genTrigger = (props) => (
70+
<Trigger
71+
popup={<strong className="x-content" />}
72+
popupMotion={{
73+
motionName: 'bamboo',
74+
}}
75+
popupVisible
76+
{...props}
77+
>
78+
<span />
79+
</Trigger>
80+
);
81+
82+
const { rerender } = render(genTrigger());
83+
84+
expect(document.querySelector('.rc-trigger-popup')).not.toHaveStyle({
85+
pointerEvents: 'none',
86+
});
87+
88+
rerender(genTrigger({ popupVisible: false }));
89+
expect(document.querySelector('.rc-trigger-popup')).toHaveStyle({
90+
pointerEvents: 'none',
91+
});
92+
});
6393
});

tests/util.test.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ describe('Trigger.Util', () => {
8484
);
8585

8686
expect(container.innerHTML).toEqual(
87-
'<div>light</div><div><div class="rc-trigger-popup" style="opacity: 0; pointer-events: none;"><div>bamboo</div></div></div>',
87+
'<div>light</div><div><div class="rc-trigger-popup" style="opacity: 0;"><div>bamboo</div></div></div>',
8888
);
8989
});
9090
});

0 commit comments

Comments
 (0)