UNPKG

rsuite

Version:

A suite of react components

119 lines (100 loc) 3.49 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose"; import * as React from 'react'; import Portal from '../Portal'; import Position from './Position'; import RootCloseWrapper from './RootCloseWrapper'; var BaseOverlay = /*#__PURE__*/ function (_React$Component) { _inheritsLoose(BaseOverlay, _React$Component); function BaseOverlay(props) { var _this; _this = _React$Component.call(this, props) || this; _this.handleHidden = function (args) { var _this$props$onExited, _this$props; _this.setState({ exited: true }); (_this$props$onExited = (_this$props = _this.props).onExited) === null || _this$props$onExited === void 0 ? void 0 : _this$props$onExited.call(_this$props, args); }; _this.state = { exited: !props.show }; return _this; } BaseOverlay.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) { if (nextProps.show) { return { exited: false }; } else if (!nextProps.transition) { return { exited: true }; } return null; }; var _proto = BaseOverlay.prototype; _proto.render = function render() { var _this$props2 = this.props, container = _this$props2.container, containerPadding = _this$props2.containerPadding, target = _this$props2.target, placement = _this$props2.placement, shouldUpdatePosition = _this$props2.shouldUpdatePosition, rootClose = _this$props2.rootClose, children = _this$props2.children, Transition = _this$props2.transition, show = _this$props2.show, onHide = _this$props2.onHide, positionRef = _this$props2.positionRef, preventOverflow = _this$props2.preventOverflow, props = _objectWithoutPropertiesLoose(_this$props2, ["container", "containerPadding", "target", "placement", "shouldUpdatePosition", "rootClose", "children", "transition", "show", "onHide", "positionRef", "preventOverflow"]); var mountOverlay = show || Transition && !this.state.exited; if (!mountOverlay) { return null; } var child = children; var positionProps = { container: container, containerPadding: containerPadding, target: target, placement: placement, shouldUpdatePosition: shouldUpdatePosition, preventOverflow: preventOverflow }; child = React.createElement(Position, _extends({}, positionProps, { ref: positionRef }), child); if (Transition) { var onExit = props.onExit, onExiting = props.onExiting, onEnter = props.onEnter, onEntering = props.onEntering, onEntered = props.onEntered; child = React.createElement(Transition, { in: show, transitionAppear: true, onExit: onExit, onExiting: onExiting, onExited: this.handleHidden, onEnter: onEnter, onEntering: onEntering, onEntered: onEntered }, child); } if (rootClose) { child = React.createElement(RootCloseWrapper, { target: target, onRootClose: onHide }, child); } return React.createElement(Portal, { container: container }, child); }; return BaseOverlay; }(React.Component); export default BaseOverlay;