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;