react-misc-toolbox
Version:
[ ] imageviewer | gradual scroll [ ] imageviewer | cancellable scroll
329 lines (271 loc) • 10.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _defaultStyles = require('./defaultStyles');
var _RTGTransition = require('./RTGTransition');
var _RTGTransition2 = _interopRequireDefault(_RTGTransition);
var _ModalDialog = require('./ModalDialog');
var _ModalDialog2 = _interopRequireDefault(_ModalDialog);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _recompose = require('recompose');
var _Button = require('./Button');
var _Button2 = _interopRequireDefault(_Button);
var _sharedHandlers = require('./sharedHandlers');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var SinglePageModal = function SinglePageModal(_ref) {
var _ref$demoModeIsOn = _ref.demoModeIsOn,
demoModeIsOn = _ref$demoModeIsOn === undefined ? false : _ref$demoModeIsOn,
noCloseModalButton = _ref.noCloseModalButton,
style = _ref.style,
className = _ref.className,
onClick = _ref.onClick,
onMount = _ref.onMount,
onUnmount = _ref.onUnmount,
children = _ref.children,
renderTrigger = _ref.renderTrigger,
renderCloseModalButton = _ref.renderCloseModalButton,
renderHeader = _ref.renderHeader,
dataTestId = _ref.dataTestId,
renderBody = _ref.renderBody,
renderButtons = _ref.renderButtons,
useStyleTemplate = _ref.useStyleTemplate,
backgroundProps = _ref.backgroundProps,
externalModalIsOpen = _ref.externalModalIsOpen,
setExternalModalIsOpenTo = _ref.setExternalModalIsOpenTo,
onCloseModal = _ref.onCloseModal,
onOpenModal = _ref.onOpenModal,
customStyleTemplate = _ref.customStyleTemplate;
var styleTemplate = customStyleTemplate ? customStyleTemplate : useStyleTemplate ? _defaultStyles.modalStyleTemplates[useStyleTemplate] : {};
var _useReducer = (0, _react.useReducer)(function (state, newState) {
return (0, _extends3.default)({}, state, newState);
}, {
modalIsOpen: false
}),
_useReducer2 = (0, _slicedToArray3.default)(_useReducer, 2),
state = _useReducer2[0],
setState = _useReducer2[1];
var closeModal = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return setState({
modalIsOpen: false
});
case 2:
setExternalModalIsOpenTo && setExternalModalIsOpenTo(false);
onCloseModal && onCloseModal();
case 4:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
}));
return function closeModal() {
return _ref2.apply(this, arguments);
};
}();
var openModal = function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return setState({
modalIsOpen: true
});
case 2:
setExternalModalIsOpenTo && setExternalModalIsOpenTo(true);
onOpenModal && onOpenModal();
case 4:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
}));
return function openModal() {
return _ref3.apply(this, arguments);
};
}();
var toggleModalIsOpen = function () {
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return setState({ modalIsOpen: !modalIsOpen });
case 2:
_context3.t0 = setExternalModalIsOpenTo;
if (!_context3.t0) {
_context3.next = 6;
break;
}
_context3.next = 6;
return setExternalModalIsOpenTo(externalModalIsOpen);
case 6:
_context3.t1 = onOpenModal && modalIsOpen;
if (!_context3.t1) {
_context3.next = 10;
break;
}
_context3.next = 10;
return onOpenModal();
case 10:
_context3.t2 = onCloseModal && !modalIsOpen;
if (!_context3.t2) {
_context3.next = 14;
break;
}
_context3.next = 14;
return onCloseModal();
case 14:
case 'end':
return _context3.stop();
}
}
}, _callee3, undefined);
}));
return function toggleModalIsOpen() {
return _ref4.apply(this, arguments);
};
}();
var getTriggerProps = function getTriggerProps() {
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var style = _ref5.style,
_onClick = _ref5.onClick,
className = _ref5.className,
props = (0, _objectWithoutProperties3.default)(_ref5, ['style', 'onClick', 'className']);
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();
openModal();
_onClick && _onClick.apply(undefined, [e].concat(args));
},
className: className ? 'modal__trigger ' + className : 'modal__trigger',
style: style
}, props);
};
var getBackgroundProps = function getBackgroundProps() {
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _onClick2 = _ref6.onClick,
style = _ref6.style,
className = _ref6.className,
props = (0, _objectWithoutProperties3.default)(_ref6, ['onClick', 'style', 'className']);
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__background ' + className : 'modal__background',
style: (0, _extends3.default)({}, styleTemplate.background, style)
}, props);
};
var renderModalDialog = function renderModalDialog() {
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
noCloseModalButtonInternal = _ref7.noCloseModalButtonInternal,
isExposed = _ref7.isExposed;
return _react2.default.createElement(_ModalDialog2.default, {
isExposed: isExposed,
useStyleTemplate: useStyleTemplate,
customStyleTemplate: customStyleTemplate,
style: style,
className: className,
closeModal: closeModal,
dataTestId: dataTestId,
onClick: onClick,
renderBody: renderBody ? renderBody : children,
renderHeader: renderHeader,
renderButtons: renderButtons,
renderCloseModalButton: renderCloseModalButton,
noCloseModalButton: noCloseModalButtonInternal,
onMount: onMount,
onUnmount: onUnmount
});
};
var renderTriggerFork = function renderTriggerFork(typeofRenderTrigger) {
switch (typeofRenderTrigger) {
case 'function':
return renderTrigger({
getTriggerProps: getTriggerProps
});
case 'string':
return _react2.default.createElement(
'div',
(0, _extends3.default)({}, getTriggerProps()),
renderTrigger
);
default:
return null;
}
};
return _react2.default.createElement(
_react.Fragment,
null,
renderTriggerFork(typeof renderTrigger === 'undefined' ? 'undefined' : (0, _typeof3.default)(renderTrigger)),
demoModeIsOn && renderModalDialog({ noCloseModalButtonInternal: true, isExposed: true }),
_react2.default.createElement(
_RTGTransition2.default,
{
in: typeof externalModalIsOpen !== 'undefined' ? externalModalIsOpen : state.modalIsOpen
},
function (_ref8) {
var style = _ref8.style;
return _react2.default.createElement(
'div',
(0, _extends3.default)({}, getBackgroundProps({
style: (0, _extends3.default)({}, style, backgroundProps.style),
className: backgroundProps.className
})),
renderModalDialog()
);
}
)
);
};
SinglePageModal.defaultProps = {
noCloseModalButton: false,
onCloseModal: function onCloseModal() {
return null;
},
onOpenModal: function onOpenModal() {
return null;
},
onMount: function onMount() {
return null;
},
onUnmount: function onUnmount() {
return null;
},
useStyleTemplate: 'default',
backgroundProps: {}
};
exports.default = SinglePageModal;
;