mirror of
https://gitee.com/ant-design/ant-design.git
synced 2024-12-02 20:19:44 +08:00
fix: Drawer cannot open (#24802)
* bugfix: fix drawer getContainer is null error * add test
This commit is contained in:
parent
6129d3a1eb
commit
30217ade3f
@ -4,6 +4,16 @@ import Drawer from '..';
|
||||
import mountTest from '../../../tests/shared/mountTest';
|
||||
import rtlTest from '../../../tests/shared/rtlTest';
|
||||
|
||||
const DrawerTest = ({ getContainer }) => {
|
||||
return (
|
||||
<div>
|
||||
<Drawer visible width={400} getContainer={getContainer}>
|
||||
Here is content of Drawer
|
||||
</Drawer>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
describe('Drawer', () => {
|
||||
mountTest(Drawer);
|
||||
rtlTest(Drawer);
|
||||
@ -17,6 +27,13 @@ describe('Drawer', () => {
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('getContainer return undefined', () => {
|
||||
let wrapper = mount(<DrawerTest getContainer={() => undefined} />);
|
||||
expect(wrapper.render()).toMatchSnapshot();
|
||||
wrapper = mount(<DrawerTest getContainer={false} />);
|
||||
expect(wrapper.render()).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('render top drawer', () => {
|
||||
const wrapper = render(
|
||||
<Drawer visible height={400} placement="top" getContainer={false}>
|
||||
@ -93,15 +110,19 @@ describe('Drawer', () => {
|
||||
it('forceRender works', () => {
|
||||
const wrapper = mount(
|
||||
<Drawer>
|
||||
<button type="button" className="forceRender">should not be rendered</button>
|
||||
<button type="button" className="forceRender">
|
||||
should not be rendered
|
||||
</button>
|
||||
</Drawer>,
|
||||
);
|
||||
expect(wrapper.find('button.forceRender').length).toBe(0);
|
||||
const wrapper2 = mount(
|
||||
<Drawer forceRender>
|
||||
<button type="button" className="forceRender">should be rendered</button>
|
||||
<button type="button" className="forceRender">
|
||||
should be rendered
|
||||
</button>
|
||||
</Drawer>,
|
||||
);
|
||||
expect(wrapper2.find('button.forceRender').length).toBe(1);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
@ -161,6 +161,73 @@ exports[`Drawer destroyOnClose is true 1`] = `
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`Drawer getContainer return undefined 1`] = `<div />`;
|
||||
|
||||
exports[`Drawer getContainer return undefined 2`] = `
|
||||
<div>
|
||||
<div
|
||||
class=""
|
||||
>
|
||||
<div
|
||||
class="ant-drawer ant-drawer-right ant-drawer-open"
|
||||
tabindex="-1"
|
||||
>
|
||||
<div
|
||||
class="ant-drawer-mask"
|
||||
/>
|
||||
<div
|
||||
class="ant-drawer-content-wrapper"
|
||||
style="width: 400px;"
|
||||
>
|
||||
<div
|
||||
class="ant-drawer-content"
|
||||
>
|
||||
<div
|
||||
class="ant-drawer-wrapper-body"
|
||||
>
|
||||
<div
|
||||
class="ant-drawer-header-no-title"
|
||||
>
|
||||
<button
|
||||
aria-label="Close"
|
||||
class="ant-drawer-close"
|
||||
style="--scroll-bar: 0px;"
|
||||
>
|
||||
<span
|
||||
aria-label="close"
|
||||
class="anticon anticon-close"
|
||||
role="img"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
class=""
|
||||
data-icon="close"
|
||||
fill="currentColor"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
>
|
||||
<path
|
||||
d="M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="ant-drawer-body"
|
||||
>
|
||||
Here is content of Drawer
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`Drawer have a footer 1`] = `
|
||||
<div
|
||||
class=""
|
||||
|
@ -306,8 +306,8 @@ class Drawer extends React.Component<DrawerProps & ConfigConsumerProps, IDrawerS
|
||||
])}
|
||||
getContainer={
|
||||
// 有可能为 false,所以不能直接判断
|
||||
rest.getContainer === undefined
|
||||
? () => (getPopupContainer ? getPopupContainer(document.body) : undefined)
|
||||
rest.getContainer === undefined && getPopupContainer
|
||||
? () => getPopupContainer(document.body)
|
||||
: rest.getContainer
|
||||
}
|
||||
{...offsetStyle}
|
||||
|
Loading…
Reference in New Issue
Block a user