UNPKG

10.6 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _typeof2 = require('babel-runtime/helpers/typeof');
8
9var _typeof3 = _interopRequireDefault(_typeof2);
10
11var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
12
13var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
14
15var _regenerator = require('babel-runtime/regenerator');
16
17var _regenerator2 = _interopRequireDefault(_regenerator);
18
19var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
20
21var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
22
23var _extends2 = require('babel-runtime/helpers/extends');
24
25var _extends3 = _interopRequireDefault(_extends2);
26
27var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
28
29var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
30
31var _react = require('react');
32
33var _react2 = _interopRequireDefault(_react);
34
35var _defaultStyles = require('./defaultStyles');
36
37var _RTGTransition = require('./RTGTransition');
38
39var _RTGTransition2 = _interopRequireDefault(_RTGTransition);
40
41var _ModalDialog = require('./ModalDialog');
42
43var _ModalDialog2 = _interopRequireDefault(_ModalDialog);
44
45var _StyledModal = require('./StyledModal');
46
47var _propTypes = require('prop-types');
48
49var _propTypes2 = _interopRequireDefault(_propTypes);
50
51var _recompose = require('recompose');
52
53var _Button = require('./Button');
54
55var _Button2 = _interopRequireDefault(_Button);
56
57var _sharedHandlers = require('./sharedHandlers');
58
59var _styledComponents = require('styled-components');
60
61var _styledComponents2 = _interopRequireDefault(_styledComponents);
62
63function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
64
65var SinglePageModal = function SinglePageModal(_ref) {
66 var _ref$demoModeIsOn = _ref.demoModeIsOn,
67 demoModeIsOn = _ref$demoModeIsOn === undefined ? false : _ref$demoModeIsOn,
68 noCloseModalButton = _ref.noCloseModalButton,
69 style = _ref.style,
70 className = _ref.className,
71 onClick = _ref.onClick,
72 onMount = _ref.onMount,
73 onUnmount = _ref.onUnmount,
74 children = _ref.children,
75 renderTrigger = _ref.renderTrigger,
76 renderCloseModalButton = _ref.renderCloseModalButton,
77 renderHeader = _ref.renderHeader,
78 dataTestId = _ref.dataTestId,
79 renderBody = _ref.renderBody,
80 renderButtons = _ref.renderButtons,
81 useStyleTemplate = _ref.useStyleTemplate,
82 backgroundProps = _ref.backgroundProps,
83 externalModalIsOpen = _ref.externalModalIsOpen,
84 setExternalModalIsOpenTo = _ref.setExternalModalIsOpenTo,
85 onCloseModal = _ref.onCloseModal,
86 onOpenModal = _ref.onOpenModal,
87 customStyleTemplate = _ref.customStyleTemplate;
88
89 var styleTemplate = customStyleTemplate ? customStyleTemplate : useStyleTemplate ? _defaultStyles.modalStyleTemplates[useStyleTemplate] : {};
90
91 var _useReducer = (0, _react.useReducer)(function (state, newState) {
92 return (0, _extends3.default)({}, state, newState);
93 }, {
94 modalIsOpen: false
95 }),
96 _useReducer2 = (0, _slicedToArray3.default)(_useReducer, 2),
97 state = _useReducer2[0],
98 setState = _useReducer2[1];
99
100 var closeModal = function () {
101 var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
102 return _regenerator2.default.wrap(function _callee$(_context) {
103 while (1) {
104 switch (_context.prev = _context.next) {
105 case 0:
106 _context.next = 2;
107 return setState({
108 modalIsOpen: false
109 });
110
111 case 2:
112 setExternalModalIsOpenTo && setExternalModalIsOpenTo(false);
113 onCloseModal && onCloseModal();
114
115 case 4:
116 case 'end':
117 return _context.stop();
118 }
119 }
120 }, _callee, undefined);
121 }));
122
123 return function closeModal() {
124 return _ref2.apply(this, arguments);
125 };
126 }();
127
128 var openModal = function () {
129 var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
130 return _regenerator2.default.wrap(function _callee2$(_context2) {
131 while (1) {
132 switch (_context2.prev = _context2.next) {
133 case 0:
134 _context2.next = 2;
135 return setState({
136 modalIsOpen: true
137 });
138
139 case 2:
140 setExternalModalIsOpenTo && setExternalModalIsOpenTo(true);
141 onOpenModal && onOpenModal();
142
143 case 4:
144 case 'end':
145 return _context2.stop();
146 }
147 }
148 }, _callee2, undefined);
149 }));
150
151 return function openModal() {
152 return _ref3.apply(this, arguments);
153 };
154 }();
155 var toggleModalIsOpen = function () {
156 var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
157 return _regenerator2.default.wrap(function _callee3$(_context3) {
158 while (1) {
159 switch (_context3.prev = _context3.next) {
160 case 0:
161 _context3.next = 2;
162 return setState({ modalIsOpen: !modalIsOpen });
163
164 case 2:
165 _context3.t0 = setExternalModalIsOpenTo;
166
167 if (!_context3.t0) {
168 _context3.next = 6;
169 break;
170 }
171
172 _context3.next = 6;
173 return setExternalModalIsOpenTo(externalModalIsOpen);
174
175 case 6:
176 _context3.t1 = onOpenModal && modalIsOpen;
177
178 if (!_context3.t1) {
179 _context3.next = 10;
180 break;
181 }
182
183 _context3.next = 10;
184 return onOpenModal();
185
186 case 10:
187 _context3.t2 = onCloseModal && !modalIsOpen;
188
189 if (!_context3.t2) {
190 _context3.next = 14;
191 break;
192 }
193
194 _context3.next = 14;
195 return onCloseModal();
196
197 case 14:
198 case 'end':
199 return _context3.stop();
200 }
201 }
202 }, _callee3, undefined);
203 }));
204
205 return function toggleModalIsOpen() {
206 return _ref4.apply(this, arguments);
207 };
208 }();
209
210 var getTriggerProps = function getTriggerProps() {
211 var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
212
213 var style = _ref5.style,
214 _onClick = _ref5.onClick,
215 className = _ref5.className,
216 props = (0, _objectWithoutProperties3.default)(_ref5, ['style', 'onClick', 'className']);
217 return (0, _extends3.default)({
218 onClick: function onClick(e) {
219 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
220 args[_key - 1] = arguments[_key];
221 }
222
223 e.stopPropagation();
224 openModal();
225 _onClick && _onClick.apply(undefined, [e].concat(args));
226 },
227 className: className ? 'modal__trigger ' + className : 'modal__trigger',
228 style: style
229 }, props);
230 };
231 var getBackgroundProps = function getBackgroundProps() {
232 var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
233
234 var _onClick2 = _ref6.onClick,
235 style = _ref6.style,
236 className = _ref6.className,
237 props = (0, _objectWithoutProperties3.default)(_ref6, ['onClick', 'style', 'className']);
238 return (0, _extends3.default)({
239 onClick: function onClick(e) {
240 for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
241 args[_key2 - 1] = arguments[_key2];
242 }
243
244 e.stopPropagation();
245 closeModal();
246 _onClick2 && _onClick2.apply(undefined, [e].concat(args));
247 },
248 className: className ? 'modal__background ' + className : 'modal__background',
249 style: (0, _extends3.default)({}, styleTemplate.background, style)
250 }, props);
251 };
252 var renderModalDialog = function renderModalDialog() {
253 var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
254 noCloseModalButtonInternal = _ref7.noCloseModalButtonInternal,
255 isExposed = _ref7.isExposed;
256
257 return _react2.default.createElement(_ModalDialog2.default, {
258 isExposed: isExposed,
259
260 useStyleTemplate: useStyleTemplate,
261 customStyleTemplate: customStyleTemplate,
262 style: style,
263 className: className,
264 closeModal: closeModal,
265 dataTestId: dataTestId,
266 onClick: onClick,
267 renderBody: renderBody ? renderBody : children,
268 renderHeader: renderHeader,
269 renderButtons: renderButtons,
270 renderCloseModalButton: renderCloseModalButton,
271 noCloseModalButton: noCloseModalButtonInternal,
272 onMount: onMount,
273 onUnmount: onUnmount
274 });
275 };
276 var renderTriggerFork = function renderTriggerFork(typeofRenderTrigger) {
277 switch (typeofRenderTrigger) {
278 case 'function':
279 return renderTrigger({
280 getTriggerProps: getTriggerProps
281 });
282 case 'string':
283 return _react2.default.createElement(
284 'div',
285 (0, _extends3.default)({}, getTriggerProps()),
286 renderTrigger
287 );
288 default:
289 return null;
290 }
291 };
292 return _react2.default.createElement(
293 _react.Fragment,
294 null,
295 renderTriggerFork(typeof renderTrigger === 'undefined' ? 'undefined' : (0, _typeof3.default)(renderTrigger)),
296 demoModeIsOn && renderModalDialog({ noCloseModalButtonInternal: true, isExposed: true }),
297 _react2.default.createElement(
298 _RTGTransition2.default,
299 {
300 in: typeof externalModalIsOpen !== 'undefined' ? externalModalIsOpen : state.modalIsOpen
301 },
302 function (_ref8) {
303 var style = _ref8.style;
304 return _react2.default.createElement(
305 _StyledModal.USHIRO,
306 (0, _extends3.default)({}, getBackgroundProps({
307 style: (0, _extends3.default)({}, style, backgroundProps.style),
308 className: backgroundProps.className
309 })),
310 renderModalDialog()
311 );
312 }
313 )
314 );
315};
316
317SinglePageModal.defaultProps = {
318 noCloseModalButton: false,
319 onCloseModal: function onCloseModal() {
320 return null;
321 },
322 onOpenModal: function onOpenModal() {
323 return null;
324 },
325 onMount: function onMount() {
326 return null;
327 },
328 onUnmount: function onUnmount() {
329 return null;
330 },
331 useStyleTemplate: 'default',
332 backgroundProps: {}
333};
334
335exports.default = SinglePageModal;
\No newline at end of file