UNPKG

@shopgate/pwa-common

Version:

Common library for the Shopgate Connect PWA.

45 lines (44 loc) 1.29 kB
import React, { forwardRef } from 'react'; import PropTypes from 'prop-types'; import { createPortal } from 'react-dom'; import { useTrackModalState } from '@shopgate/engage/a11y/hooks'; import classNames from 'classnames'; import styles from "./style"; /** * The Modal component. * @param {Object} props The component props. * @param {Object} props.classes The component classes. * @returns {JSX.Element} */ import { jsx as _jsx } from "react/jsx-runtime"; const Modal = /*#__PURE__*/forwardRef(({ children, classes, ...props }, ref) => { // Track modal visibility for accessibility purposes. useTrackModalState(); return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx("div", { className: classNames(styles.container, classes?.container, 'common__modal'), role: "alertdialog", "aria-modal": true, ...props, ref: ref, children: /*#__PURE__*/_jsx("div", { className: classNames(styles.layout, classes?.layout), children: /*#__PURE__*/_jsx("div", { className: classNames(styles.content, classes?.content), children: children }) }) }), document.getElementById('portals')); }); Modal.defaultProps = { children: null, classes: { container: '', layout: '', content: '' } }; export default Modal;