1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import _extends from "@babel/runtime/helpers/esm/extends";
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
- import Portal from '@rc-component/portal';
- import * as React from 'react';
- import { RefContext } from "./context";
- import Dialog from "./Dialog";
- // fix issue #10656
- /*
- * getContainer remarks
- * Custom container should not be return, because in the Portal component, it will remove the
- * return container element here, if the custom container is the only child of it's component,
- * like issue #10656, It will has a conflict with removeChild method in react-dom.
- * So here should add a child (div element) to custom container.
- * */
- var DialogWrap = function DialogWrap(props) {
- var visible = props.visible,
- getContainer = props.getContainer,
- forceRender = props.forceRender,
- _props$destroyOnClose = props.destroyOnClose,
- destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,
- _afterClose = props.afterClose,
- panelRef = props.panelRef;
- var _React$useState = React.useState(visible),
- _React$useState2 = _slicedToArray(_React$useState, 2),
- animatedVisible = _React$useState2[0],
- setAnimatedVisible = _React$useState2[1];
- var refContext = React.useMemo(function () {
- return {
- panel: panelRef
- };
- }, [panelRef]);
- React.useEffect(function () {
- if (visible) {
- setAnimatedVisible(true);
- }
- }, [visible]);
- // Destroy on close will remove wrapped div
- if (!forceRender && destroyOnClose && !animatedVisible) {
- return null;
- }
- return /*#__PURE__*/React.createElement(RefContext.Provider, {
- value: refContext
- }, /*#__PURE__*/React.createElement(Portal, {
- open: visible || forceRender || animatedVisible,
- autoDestroy: false,
- getContainer: getContainer,
- autoLock: visible || animatedVisible
- }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {
- destroyOnClose: destroyOnClose,
- afterClose: function afterClose() {
- _afterClose === null || _afterClose === void 0 || _afterClose();
- setAnimatedVisible(false);
- }
- }))));
- };
- DialogWrap.displayName = 'Dialog';
- export default DialogWrap;
|