UNPKG

react-misc-toolbox

Version:

[ ] imageviewer | gradual scroll [ ] imageviewer | cancellable scroll

262 lines (229 loc) 9.89 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _recompose = require('recompose'); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _SVGCancel = require('./svg/SVGCancel'); var _SVGCancel2 = _interopRequireDefault(_SVGCancel); var _helperFunctions = require('./helperFunctions'); var _defaultStyles = require('./defaultStyles'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ModalDialog = function ModalDialog(_ref) { var closeModal = _ref.closeModal, _ref$useStyleTemplate = _ref.useStyleTemplate, useStyleTemplate = _ref$useStyleTemplate === undefined ? 'default' : _ref$useStyleTemplate, customStyleTemplate = _ref.customStyleTemplate, style = _ref.style, className = _ref.className, _onClick6 = _ref.onClick, onMount = _ref.onMount, onUnmount = _ref.onUnmount, isExposed = _ref.isExposed, dataTestId = _ref.dataTestId, renderBody = _ref.renderBody, renderHeader = _ref.renderHeader, noCloseModalButton = _ref.noCloseModalButton, renderButtons = _ref.renderButtons, renderCloseModalButton = _ref.renderCloseModalButton; (0, _react.useEffect)(function () { document.addEventListener('keydown', function cb(e) { if (e.keyCode === 27) { e.currentTarget.removeEventListener(e.type, cb); closeModal(); } }); if (typeof window !== 'undefined' && !isExposed) { window.modalCount ? window.modalCount++ : window.modalCount = 1; console.log('window.modalCount', window.modalCount); onMount && onMount(); } return function () { if (typeof window !== 'undefined' && !isExposed) { window.modalCount ? window.modalCount-- : window.modalCount = 0; console.log('window.modalCount', window.modalCount); if (window.modalCount === 0) { onUnmount && onUnmount(); } } }; }, []); var styleTemplate = customStyleTemplate ? customStyleTemplate : useStyleTemplate ? _defaultStyles.modalStyleTemplates[useStyleTemplate] : {}; var getHeaderProps = function getHeaderProps() { var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _onClick = _ref2.onClick, className = _ref2.className, _ref2$style = _ref2.style, style = _ref2$style === undefined ? {} : _ref2$style, props = (0, _objectWithoutProperties3.default)(_ref2, ['onClick', 'className', 'style']); return (0, _extends3.default)({ onClick: function onClick(e) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } e.stopPropagation(); _onClick && _onClick.apply(undefined, [e].concat(args)); }, className: className ? 'modal__header ' + className : 'modal__header', style: (0, _extends3.default)({}, styleTemplate.getHeader({ hasCloseModalButton: !Boolean(noCloseModalButton) }), style) }, props); }; var getCloseModalButtonProps = function getCloseModalButtonProps() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _onClick2 = _ref3.onClick, className = _ref3.className, _ref3$style = _ref3.style, style = _ref3$style === undefined ? {} : _ref3$style, props = (0, _objectWithoutProperties3.default)(_ref3, ['onClick', 'className', 'style']); return (0, _extends3.default)({ onClick: function onClick(e) { for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } e.stopPropagation(); closeModal(); _onClick2 && _onClick2.apply(undefined, [e].concat(args)); }, className: className ? 'modal__closemodalbutton ' + className : 'modal__closemodalbutton', style: (0, _extends3.default)({}, styleTemplate.closemodalbutton, style) }, props); }; var getBodyProps = function getBodyProps() { var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _onClick3 = _ref4.onClick, className = _ref4.className, _ref4$style = _ref4.style, style = _ref4$style === undefined ? {} : _ref4$style, props = (0, _objectWithoutProperties3.default)(_ref4, ['onClick', 'className', 'style']); return (0, _extends3.default)({ onClick: function onClick(e) { for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; } e.stopPropagation(); _onClick3 && _onClick3.apply(undefined, [e].concat(args)); }, className: className ? 'modal__body ' + className : 'modal__body', style: (0, _extends3.default)({}, styleTemplate.getBody({ hasCloseModalButton: !Boolean(noCloseModalButton), hasHeader: Boolean(renderHeader), hasFooter: Boolean(renderButtons) }), style) }, props); }; var getButtonsProps = function getButtonsProps() { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _onClick4 = _ref5.onClick, className = _ref5.className, _ref5$style = _ref5.style, style = _ref5$style === undefined ? {} : _ref5$style, props = (0, _objectWithoutProperties3.default)(_ref5, ['onClick', 'className', 'style']); return (0, _extends3.default)({ onClick: function onClick(e) { for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { args[_key4 - 1] = arguments[_key4]; } e.stopPropagation(); _onClick4 && _onClick4.apply(undefined, [e].concat(args)); }, className: className ? 'modal__buttons ' + className : 'modal__buttons', style: (0, _extends3.default)({}, styleTemplate.buttons, style) }, props); }; var getButtonProps = function getButtonProps() { var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _onClick5 = _ref6.onClick, className = _ref6.className, _ref6$style = _ref6.style, style = _ref6$style === undefined ? {} : _ref6$style, props = (0, _objectWithoutProperties3.default)(_ref6, ['onClick', 'className', 'style']); return (0, _extends3.default)({ onClick: function onClick(e) { for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { args[_key5 - 1] = arguments[_key5]; } e.stopPropagation(); _onClick5 && _onClick5.apply(undefined, [e].concat(args)); }, className: className ? 'modal__button ' + className : 'modal__button', style: (0, _extends3.default)({}, styleTemplate.button, style) }, props); }; var getContainerProps = function getContainerProps() { return { 'data-testid': dataTestId, onClick: function onClick(e) { for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) { args[_key6 - 1] = arguments[_key6]; } e.stopPropagation(); _onClick6 && _onClick6.apply(undefined, [e].concat(args)); }, className: className ? 'modal__container ' + className : 'modal__container', style: (0, _extends3.default)({}, styleTemplate.container, style) }; }; return _react2.default.createElement( _react2.default.Fragment, null, _react2.default.createElement( 'div', (0, _extends3.default)({}, getContainerProps()), renderCloseModalButton && renderCloseModalButton({ getCloseModalButtonProps: getCloseModalButtonProps }), !noCloseModalButton && !renderCloseModalButton && _react2.default.createElement( 'div', (0, _extends3.default)({}, getCloseModalButtonProps()), _react2.default.createElement(_SVGCancel2.default, null) ), renderHeader && (typeof renderHeader === 'function' ? renderHeader({ getHeaderProps: getHeaderProps }) : _react2.default.createElement( 'div', (0, _extends3.default)({}, getHeaderProps()), renderHeader )), typeof renderBody === 'function' ? renderBody({ getBodyProps: getBodyProps }) : _react2.default.createElement( 'div', (0, _extends3.default)({}, getBodyProps()), renderBody ), renderButtons && renderButtons({ getButtonsProps: getButtonsProps, getButtonProps: getButtonProps, closeModal: closeModal }) ) ); }; var hideScrollBar = function hideScrollBar() { return (0, _helperFunctions.styleElement)('body', { overflow: 'hidden' }); }; var showScrollBar = function showScrollBar() { return (0, _helperFunctions.styleElement)('body', { overflow: 'auto' }); }; var enhance = (0, _recompose.compose)(); ModalDialog.propTypes = { buttons: _propTypes2.default.object }; ModalDialog.defaultProps = { useStyleTemplate: 'default', noCloseModalButton: false, dataTestId: '', classNameAppend: '', classNameOverride: '', style: {}, onMount: function onMount() { return null; }, onUnmount: function onUnmount() { return null; } }; exports.default = enhance(ModalDialog);