import './style/bottom_modal.less';
import { Component } from 'inferno';
import { ModalPortal } from './ModalPortal';
import { showModal, closeModal, closeModalAll } from './helper';
import { uuidWrapper } from './helper/uuidWrapper';

export class BottomModal extends Component<any, any> {

  public render() {
    return (
      <ModalPortal
        {...this.props}
        className={'mp-bottom-modal'}
      />
    );
  }

  public static withUUIDWrapper = uuidWrapper(BottomModal);

  public static open(props, instanceFlag?) {
    const Instance = instanceFlag ? uuidWrapper(BottomModal) : BottomModal.withUUIDWrapper;
    const defaultProps = {} as any;
    if (props.closeByMask) {
      defaultProps.onMask = () => {
        closeModal(Instance);
      };
    }
    return showModal(Instance, { ...defaultProps, ...props });
  }

  public static close(wrapper) {
    if (wrapper && wrapper.instance) {
      return closeModal(wrapper.instance);
    }
    return closeModalAll();
  }
}
