@coreui/react-pro
Version:
UI Components Library for React.js
27 lines (24 loc) • 994 B
JavaScript
import React, { useState, useEffect } from 'react';
import { createPortal } from 'react-dom';
import PropTypes from 'prop-types';
const getContainer = (container) => {
if (container) {
return typeof container === 'function' ? container() : container;
}
return document.body;
};
const CConditionalPortal = ({ children, container, portal, }) => {
const [_container, setContainer] = useState(null);
useEffect(() => {
portal && setContainer(getContainer(container) || document.body);
}, [container, portal]);
return typeof window !== 'undefined' && portal && _container ? (createPortal(children, _container)) : (React.createElement(React.Fragment, null, children));
};
CConditionalPortal.propTypes = {
children: PropTypes.node,
container: PropTypes.any, // HTMLElement
portal: PropTypes.bool.isRequired,
};
CConditionalPortal.displayName = 'CConditionalPortal';
export { CConditionalPortal };
//# sourceMappingURL=CConditionalPortal.js.map