mirror of
https://gitee.com/ant-design-vue/ant-design-vue.git
synced 2024-12-05 21:50:07 +08:00
48 lines
1.2 KiB
Vue
48 lines
1.2 KiB
Vue
import Dialog from './Dialog';
|
|
import getDialogPropTypes from './IDialogPropTypes';
|
|
import Portal from '../_util/PortalWrapper';
|
|
import { getSlot } from '../_util/props-util';
|
|
import { defineComponent } from 'vue';
|
|
const IDialogPropTypes = getDialogPropTypes();
|
|
const DialogWrap = defineComponent({
|
|
inheritAttrs: false,
|
|
props: {
|
|
...IDialogPropTypes,
|
|
visible: IDialogPropTypes.visible.def(false),
|
|
},
|
|
|
|
render() {
|
|
const { visible, getContainer, forceRender } = this.$props;
|
|
let dialogProps = {
|
|
...this.$props,
|
|
...this.$attrs,
|
|
ref: '_component',
|
|
key: 'dialog',
|
|
};
|
|
// 渲染在当前 dom 里;
|
|
if (getContainer === false) {
|
|
return (
|
|
<Dialog
|
|
{...dialogProps}
|
|
getOpenCount={() => 2} // 不对 body 做任何操作。。
|
|
>
|
|
{getSlot(this)}
|
|
</Dialog>
|
|
);
|
|
}
|
|
return (
|
|
<Portal
|
|
visible={visible}
|
|
forceRender={forceRender}
|
|
getContainer={getContainer}
|
|
children={childProps => {
|
|
dialogProps = { ...dialogProps, ...childProps };
|
|
return <Dialog {...dialogProps}>{getSlot(this)}</Dialog>;
|
|
}}
|
|
/>
|
|
);
|
|
},
|
|
});
|
|
|
|
export default DialogWrap;
|