@shopgate/pwa-common
Version:
Common library for the Shopgate Connect PWA.
40 lines (39 loc) • 980 B
JavaScript
import React from 'react';
import PropTypes from 'prop-types';
import connect from "./connector";
export const MODAL_EVENTS = {
SHOW: 'Modal.show',
HIDE: 'Modal.hide'
};
/**
* The ModalContainer is connected to the modal state
* and renders the currently active modal.
* @param {Object} props The component props.
* @returns {JSX.Element}
*/
const ModalContainer = ({
component,
confirm,
dismiss,
modal
}) => {
if (!modal) {
return null;
}
const componentProps = {
modal,
// A11Y focus is handled by the modal container itself.
onConfirm: () => confirm(modal.id),
onDismiss: () => dismiss(modal.id)
};
if (/*#__PURE__*/React.isValidElement(component)) {
return /*#__PURE__*/React.cloneElement(component, componentProps);
}
return /*#__PURE__*/React.createElement(component, componentProps);
};
ModalContainer.defaultProps = {
confirm: () => {},
dismiss: () => {},
modal: null
};
export default connect(ModalContainer);