summit-registration-lite 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js DELETED
@@ -1,2068 +0,0 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if(typeof define === 'function' && define.amd)
5
- define("summit-registration-lite", [], factory);
6
- else if(typeof exports === 'object')
7
- exports["summit-registration-lite"] = factory();
8
- else
9
- root["summit-registration-lite"] = factory();
10
- })(this, function() {
11
- return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ // The require scope
14
- /******/ var __webpack_require__ = {};
15
- /******/
16
- /************************************************************************/
17
- /******/ /* webpack/runtime/compat get default export */
18
- /******/ (() => {
19
- /******/ // getDefaultExport function for compatibility with non-harmony modules
20
- /******/ __webpack_require__.n = (module) => {
21
- /******/ var getter = module && module.__esModule ?
22
- /******/ () => (module['default']) :
23
- /******/ () => (module);
24
- /******/ __webpack_require__.d(getter, { a: getter });
25
- /******/ return getter;
26
- /******/ };
27
- /******/ })();
28
- /******/
29
- /******/ /* webpack/runtime/define property getters */
30
- /******/ (() => {
31
- /******/ // define getter functions for harmony exports
32
- /******/ __webpack_require__.d = (exports, definition) => {
33
- /******/ for(var key in definition) {
34
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
35
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
36
- /******/ }
37
- /******/ }
38
- /******/ };
39
- /******/ })();
40
- /******/
41
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
42
- /******/ (() => {
43
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
44
- /******/ })();
45
- /******/
46
- /******/ /* webpack/runtime/make namespace object */
47
- /******/ (() => {
48
- /******/ // define __esModule on exports
49
- /******/ __webpack_require__.r = (exports) => {
50
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
51
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
52
- /******/ }
53
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
54
- /******/ };
55
- /******/ })();
56
- /******/
57
- /************************************************************************/
58
- var __webpack_exports__ = {};
59
- // ESM COMPAT FLAG
60
- __webpack_require__.r(__webpack_exports__);
61
-
62
- // EXPORTS
63
- __webpack_require__.d(__webpack_exports__, {
64
- "default": () => (/* binding */ summit_registration_lite)
65
- });
66
-
67
- ;// CONCATENATED MODULE: external "react"
68
- const external_react_namespaceObject = require("react");
69
- var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject);
70
- ;// CONCATENATED MODULE: external "react-redux"
71
- const external_react_redux_namespaceObject = require("react-redux");
72
- ;// CONCATENATED MODULE: external "redux"
73
- const external_redux_namespaceObject = require("redux");
74
- ;// CONCATENATED MODULE: external "redux-thunk"
75
- const external_redux_thunk_namespaceObject = require("redux-thunk");
76
- var external_redux_thunk_default = /*#__PURE__*/__webpack_require__.n(external_redux_thunk_namespaceObject);
77
- ;// CONCATENATED MODULE: external "redux-persist"
78
- const external_redux_persist_namespaceObject = require("redux-persist");
79
- ;// CONCATENATED MODULE: external "redux-persist/es/storage"
80
- const storage_namespaceObject = require("redux-persist/es/storage");
81
- var storage_default = /*#__PURE__*/__webpack_require__.n(storage_namespaceObject);
82
- ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/utils/actions"
83
- const actions_namespaceObject = require("openstack-uicore-foundation/lib/utils/actions");
84
- ;// CONCATENATED MODULE: external "sweetalert2"
85
- const external_sweetalert2_namespaceObject = require("sweetalert2");
86
- var external_sweetalert2_default = /*#__PURE__*/__webpack_require__.n(external_sweetalert2_namespaceObject);
87
- ;// CONCATENATED MODULE: ./src/actions.js
88
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
89
-
90
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
91
-
92
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
93
-
94
- /**
95
- * Copyright 2020 OpenStack Foundation
96
- * Licensed under the Apache License, Version 2.0 (the "License");
97
- * you may not use this file except in compliance with the License.
98
- * You may obtain a copy of the License at
99
- * http://www.apache.org/licenses/LICENSE-2.0
100
- * Unless required by applicable law or agreed to in writing, software
101
- * distributed under the License is distributed on an "AS IS" BASIS,
102
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
103
- * See the License for the specific language governing permissions and
104
- * limitations under the License.
105
- **/
106
-
107
-
108
-
109
- const START_WIDGET_LOADING = 'START_WIDGET_LOADING';
110
- const STOP_WIDGET_LOADING = 'STOP_WIDGET_LOADING';
111
- const LOAD_INITIAL_VARS = 'LOAD_INITIAL_VARS';
112
- const CHANGE_STEP = 'CHANGE_STEP';
113
- const GET_TICKET_TYPES = 'GET_TICKET_TYPES';
114
- const GET_TAX_TYPES = 'GET_TAX_TYPES';
115
- const CREATE_RESERVATION = 'CREATE_RESERVATION';
116
- const CREATE_RESERVATION_SUCCESS = 'CREATE_RESERVATION_SUCCESS';
117
- const CREATE_RESERVATION_ERROR = 'CREATE_RESERVATION_ERROR';
118
- const DELETE_RESERVATION = 'DELETE_RESERVATION';
119
- const DELETE_RESERVATION_SUCCESS = 'DELETE_RESERVATION_SUCCESS';
120
- const DELETE_RESERVATION_ERROR = 'DELETE_RESERVATION_ERROR';
121
- const PAY_RESERVATION = 'PAY_RESERVATION';
122
- const CLEAR_RESERVATION = 'CLEAR_RESERVATION';
123
- const SET_PASSWORDLESS_LOGIN = 'SET_PASSWORDLESS_LOGIN';
124
- const SET_PASSWORDLESS_LENGTH = 'SET_PASSWORDLESS_LENGTH';
125
- const SET_PASSWORDLESS_ERROR = 'SET_PASSWORDLESS_ERROR';
126
- const GO_TO_LOGIN = 'GO_TO_LOGIN';
127
- const startWidgetLoading = (0,actions_namespaceObject.createAction)(START_WIDGET_LOADING);
128
- const stopWidgetLoading = (0,actions_namespaceObject.createAction)(STOP_WIDGET_LOADING);
129
- const loadSession = settings => dispatch => {
130
- dispatch((0,actions_namespaceObject.createAction)(LOAD_INITIAL_VARS)(settings));
131
- };
132
- /*********************************************************************************/
133
-
134
- /* TICKETS */
135
-
136
- /*********************************************************************************/
137
- // api/v1/summits/{id}/ticket-types
138
- // api/v1/summits/{id}/tax-types
139
-
140
- const getTicketTypes = summitId => async (dispatch, getState, {
141
- apiBaseUrl,
142
- getAccessToken
143
- }) => {
144
- try {
145
- const accessToken = await getAccessToken();
146
- let params = {
147
- expand: 'badge_type,badge_type.access_levels,badge_type.badge_features',
148
- access_token: accessToken
149
- };
150
- dispatch(startWidgetLoading());
151
- return (0,actions_namespaceObject.getRequest)(null, (0,actions_namespaceObject.createAction)(GET_TICKET_TYPES), `${apiBaseUrl}/api/v1/summits/${summitId}/ticket-types`, actions_namespaceObject.authErrorHandler)(params)(dispatch).then(() => {
152
- dispatch(stopWidgetLoading());
153
- });
154
- } catch (e) {
155
- return Promise.reject();
156
- }
157
- };
158
- const getTaxesTypes = summitId => async (dispatch, getState, {
159
- apiBaseUrl,
160
- getAccessToken
161
- }) => {
162
- try {
163
- const accessToken = await getAccessToken();
164
- let params = {
165
- access_token: accessToken
166
- };
167
- dispatch(startWidgetLoading());
168
- return (0,actions_namespaceObject.getRequest)(null, (0,actions_namespaceObject.createAction)(GET_TAX_TYPES), `${apiBaseUrl}/api/v1/summits/${summitId}/tax-types`, actions_namespaceObject.authErrorHandler)(params)(dispatch).then(() => {
169
- dispatch(stopWidgetLoading());
170
- });
171
- } catch (e) {
172
- return Promise.reject();
173
- }
174
- };
175
- const reserveTicket = ({
176
- personalInformation,
177
- ticket,
178
- ticketQuantity
179
- }, {
180
- onError
181
- }) => async (dispatch, getState, {
182
- apiBaseUrl,
183
- getAccessToken
184
- }) => {
185
- const {
186
- registrationLiteState: {
187
- settings: {
188
- summitId
189
- }
190
- }
191
- } = getState();
192
- let {
193
- firstName,
194
- lastName,
195
- email,
196
- company,
197
- promoCode
198
- } = personalInformation;
199
- dispatch(startWidgetLoading());
200
- const access_token = await getAccessToken();
201
- const tickets = [...Array(ticketQuantity)].map(() => ({
202
- type_id: ticket.id,
203
- promo_code: promoCode || null,
204
- attendee_first_name: firstName,
205
- attendee_last_name: lastName,
206
- attendee_email: email
207
- }));
208
- let params = {
209
- access_token,
210
- expand: 'tickets,tickets.owner,tickets.ticket_type,tickets.ticket_type.taxes'
211
- };
212
- const normalizedEntity = normalizeReservation({
213
- owner_email: email,
214
- owner_first_name: firstName,
215
- owner_last_name: lastName,
216
- owner_company: company,
217
- tickets
218
- });
219
-
220
- const errorHandler = (err, res) => (dispatch, state) => {
221
- if (res && res.statusCode === 412 && onError) return onError(err, res);
222
- return (0,actions_namespaceObject.authErrorHandler)(err, res);
223
- };
224
-
225
- return (0,actions_namespaceObject.postRequest)((0,actions_namespaceObject.createAction)(CREATE_RESERVATION), (0,actions_namespaceObject.createAction)(CREATE_RESERVATION_SUCCESS), `${apiBaseUrl}/api/v1/summits/${summitId}/orders/reserve`, normalizedEntity, errorHandler // entity
226
- )(params)(dispatch).then(payload => {
227
- dispatch(stopWidgetLoading());
228
- payload.response.promo_code = promoCode || null;
229
-
230
- if (!payload.response.payment_gateway_client_token) {
231
- dispatch(payTicket(null, null, getAccessToken));
232
- return payload;
233
- } else {
234
- dispatch(changeStep(2));
235
- return payload;
236
- }
237
- }).catch(e => {
238
- dispatch((0,actions_namespaceObject.createAction)(CREATE_RESERVATION_ERROR)(e));
239
- dispatch(stopWidgetLoading());
240
- return e;
241
- });
242
- };
243
- const removeReservedTicket = () => async (dispatch, getState, {
244
- apiBaseUrl,
245
- getAccessToken
246
- }) => {
247
- let {
248
- registrationLiteState: {
249
- settings: {
250
- summitId
251
- },
252
- reservation: {
253
- hash
254
- }
255
- }
256
- } = getState();
257
- const access_token = await getAccessToken();
258
- let params = {
259
- access_token,
260
- expand: 'tickets,tickets.owner'
261
- };
262
- dispatch(startWidgetLoading());
263
- return (0,actions_namespaceObject.deleteRequest)((0,actions_namespaceObject.createAction)(DELETE_RESERVATION), (0,actions_namespaceObject.createAction)(DELETE_RESERVATION_SUCCESS), `${apiBaseUrl}/api/v1/summits/${summitId}/orders/${hash}`, {}, actions_namespaceObject.authErrorHandler // entity
264
- )(params)(dispatch).then(payload => {
265
- dispatch(stopWidgetLoading());
266
- dispatch(changeStep(1));
267
- return payload;
268
- }).catch(e => {
269
- dispatch((0,actions_namespaceObject.createAction)(DELETE_RESERVATION_ERROR)(e));
270
- dispatch(changeStep(1));
271
- dispatch(stopWidgetLoading());
272
- return e;
273
- });
274
- };
275
- const payTicket = (token = null, stripe = null, zipCode = null) => async (dispatch, getState, {
276
- apiBaseUrl,
277
- getAccessToken
278
- }) => {
279
- let {
280
- registrationLiteState: {
281
- settings: {
282
- summitId,
283
- userProfile
284
- },
285
- reservation
286
- }
287
- } = getState();
288
- const access_token = await getAccessToken();
289
- let params = {
290
- access_token,
291
- expand: 'tickets,' + 'tickets.owner,' + 'tickets.owner.extra_questions,' + 'tickets.badge,' + 'tickets.badge.type,' + 'tickets.badge.type.access_levels,' + 'tickets.badge.type.features,' + 'tickets.ticket_type,' + 'tickets.ticket_type.taxes'
292
- };
293
- let normalizedEntity = {
294
- billing_address_1: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.address1) || '',
295
- billing_address_2: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.address2) || '',
296
- billing_address_zip_code: zipCode,
297
- billing_address_city: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.locality) || '',
298
- billing_address_state: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.region) || '',
299
- billing_address_country: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.country) || ''
300
- };
301
- dispatch(startWidgetLoading());
302
-
303
- if (reservation.payment_gateway_client_token) {
304
- const {
305
- id
306
- } = token;
307
- stripe.confirmCardPayment(reservation.payment_gateway_client_token, {
308
- payment_method: {
309
- card: {
310
- token: id
311
- }
312
- }
313
- }).then(result => {
314
- if (result.error) {
315
- // Reserve error.message in your UI.
316
- external_sweetalert2_default().fire(result.error.message, "Please retry purchase.", "warning");
317
- dispatch(changeStep(1));
318
- dispatch(removeReservedTicket());
319
- dispatch(stopWidgetLoading());
320
- } else {
321
- return (0,actions_namespaceObject.putRequest)(null, (0,actions_namespaceObject.createAction)(PAY_RESERVATION), `${apiBaseUrl}/api/v1/summits/${summitId}/orders/${reservation.hash}/checkout`, normalizedEntity, actions_namespaceObject.authErrorHandler // entity
322
- )(params)(dispatch).then(payload => {
323
- dispatch(stopWidgetLoading());
324
- dispatch((0,actions_namespaceObject.createAction)(CLEAR_RESERVATION)({}));
325
- dispatch(changeStep(3));
326
- return payload;
327
- }).catch(e => {
328
- dispatch(stopWidgetLoading());
329
- return e;
330
- }); // The payment has succeeded. Display a success message.
331
- }
332
- }).catch(e => {
333
- dispatch(removeReservedTicket());
334
- dispatch(changeStep(1));
335
- dispatch(stopWidgetLoading());
336
- return e;
337
- });
338
- } else {
339
- // FREE TICKET
340
- return (0,actions_namespaceObject.putRequest)(null, (0,actions_namespaceObject.createAction)(PAY_RESERVATION), `${apiBaseUrl}/api/v1/summits/${summitId}/orders/${reservation.hash}/checkout`, normalizedEntity, actions_namespaceObject.authErrorHandler // entity
341
- )(params)(dispatch).then(payload => {
342
- dispatch(stopWidgetLoading());
343
- dispatch((0,actions_namespaceObject.createAction)(CLEAR_RESERVATION)({}));
344
- dispatch(changeStep(3));
345
- return payload;
346
- }).catch(e => {
347
- dispatch(removeReservedTicket());
348
- dispatch(changeStep(1));
349
- dispatch(stopWidgetLoading());
350
- return e;
351
- }); // The payment has succeeded. Display a success message.
352
- }
353
- };
354
- const changeStep = step => (dispatch, getState) => {
355
- dispatch(startWidgetLoading());
356
- dispatch((0,actions_namespaceObject.createAction)(CHANGE_STEP)(step));
357
- dispatch(stopWidgetLoading());
358
- };
359
- const goToLogin = () => (dispatch, getState) => {
360
- dispatch((0,actions_namespaceObject.createAction)(GO_TO_LOGIN)());
361
- };
362
- const getLoginCode = (email, getPasswordlessCode) => async (dispatch, getState) => {
363
- dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_LOGIN)(email));
364
- return new Promise((resolve, reject) => {
365
- getPasswordlessCode(email).then(res => {
366
- dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_LENGTH)(res.response));
367
- resolve(res);
368
- }, err => {
369
- reject(err);
370
- });
371
- });
372
- };
373
- const passwordlessLogin = (code, loginWithCode) => async (dispatch, getState) => {
374
- const {
375
- registrationLiteState: {
376
- passwordless: {
377
- email
378
- }
379
- }
380
- } = getState();
381
- return new Promise((resolve, reject) => {
382
- loginWithCode(code, email).then(res => {
383
- if (res) {
384
- dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_ERROR)());
385
- }
386
-
387
- resolve(res);
388
- }, err => {
389
- reject(err);
390
- });
391
- });
392
- };
393
- const isInPersonTicketType = ticketType => {
394
- /** check is the current order has or not IN_PERSON tickets types **/
395
- if (ticketType.hasOwnProperty("badge_type")) {
396
- let badgeType = ticketType.badge_type;
397
- return badgeType.access_levels.some(al => {
398
- return al.name == 'IN_PERSON';
399
- });
400
- }
401
-
402
- return false;
403
- };
404
-
405
- const normalizeReservation = entity => {
406
- const normalizedEntity = _objectSpread({}, entity);
407
-
408
- if (!entity.owner_company.id) {
409
- normalizedEntity['owner_company'] = entity.owner_company.name;
410
- } else {
411
- delete normalizedEntity['owner_company'];
412
- normalizedEntity['owner_company_id'] = entity.owner_company.id;
413
- }
414
-
415
- return normalizedEntity;
416
- };
417
- ;// CONCATENATED MODULE: ./src/reducer.js
418
- function reducer_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
419
-
420
- function reducer_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? reducer_ownKeys(Object(source), !0).forEach(function (key) { reducer_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : reducer_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
421
-
422
- function reducer_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
423
-
424
- /**
425
- * Copyright 2020 OpenStack Foundation
426
- * Licensed under the Apache License, Version 2.0 (the "License");
427
- * you may not use this file except in compliance with the License.
428
- * You may obtain a copy of the License at
429
- * http://www.apache.org/licenses/LICENSE-2.0
430
- * Unless required by applicable law or agreed to in writing, software
431
- * distributed under the License is distributed on an "AS IS" BASIS,
432
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
433
- * See the License for the specific language governing permissions and
434
- * limitations under the License.
435
- **/
436
-
437
- const DEFAULT_STATE = {
438
- reservation: null,
439
- checkout: null,
440
- step: 0,
441
- widgetLoading: false,
442
- passwordless: {
443
- email: null,
444
- otp_length: 0,
445
- code_sent: false,
446
- error: false
447
- },
448
- ticketTypes: [],
449
- taxTypes: [],
450
- settings: {
451
- apiBaseUrl: null,
452
- summitId: null,
453
- marketingData: null,
454
- userProfile: null
455
- }
456
- };
457
-
458
- const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
459
- const {
460
- type,
461
- payload
462
- } = action;
463
-
464
- switch (type) {
465
- case START_WIDGET_LOADING:
466
- {
467
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
468
- widgetLoading: true
469
- });
470
- }
471
-
472
- case STOP_WIDGET_LOADING:
473
- {
474
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
475
- widgetLoading: false
476
- });
477
- }
478
-
479
- case LOAD_INITIAL_VARS:
480
- const {
481
- marketingData,
482
- summitData,
483
- apiBaseUrl,
484
- profileData
485
- } = payload;
486
- Object.keys(marketingData).forEach(setting => {
487
- if (getComputedStyle(document.documentElement).getPropertyValue(`--${setting}`)) {
488
- document.documentElement.style.setProperty(`--${setting}`, marketingData[setting]);
489
- document.documentElement.style.setProperty(`--${setting}50`, `${marketingData[setting]}50`);
490
- }
491
- });
492
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
493
- reservation: null,
494
- checkout: null,
495
- passwordless: reducer_objectSpread({}, DEFAULT_STATE.passwordless),
496
- settings: reducer_objectSpread(reducer_objectSpread({}, DEFAULT_STATE.settings), {}, {
497
- marketingData: marketingData,
498
- summitId: summitData.id,
499
- userProfile: profileData,
500
- apiBaseUrl: apiBaseUrl
501
- })
502
- });
503
-
504
- case CHANGE_STEP:
505
- {
506
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
507
- step: payload
508
- });
509
- }
510
-
511
- case GET_TICKET_TYPES:
512
- {
513
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
514
- ticketTypes: payload.response.data
515
- });
516
- }
517
-
518
- case GET_TAX_TYPES:
519
- {
520
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
521
- taxTypes: payload.response.data
522
- });
523
- }
524
-
525
- case GO_TO_LOGIN:
526
- {
527
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
528
- passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
529
- code_sent: false,
530
- error: false
531
- })
532
- });
533
- }
534
-
535
- case SET_PASSWORDLESS_LOGIN:
536
- {
537
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
538
- passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
539
- email: payload,
540
- error: false
541
- })
542
- });
543
- }
544
-
545
- case SET_PASSWORDLESS_LENGTH:
546
- {
547
- const {
548
- otp_length
549
- } = payload;
550
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
551
- passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
552
- otp_length,
553
- code_sent: true,
554
- error: false
555
- })
556
- });
557
- }
558
-
559
- case SET_PASSWORDLESS_ERROR:
560
- {
561
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
562
- passwordless: reducer_objectSpread(reducer_objectSpread({}, state.passwordless), {}, {
563
- error: true
564
- })
565
- });
566
- }
567
-
568
- case CREATE_RESERVATION_SUCCESS:
569
- {
570
- const reservation = payload.response;
571
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
572
- reservation
573
- });
574
- }
575
-
576
- case DELETE_RESERVATION_SUCCESS:
577
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
578
- reservation: null
579
- });
580
-
581
- case CLEAR_RESERVATION:
582
- {
583
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
584
- reservation: null
585
- });
586
- }
587
-
588
- case PAY_RESERVATION:
589
- {
590
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
591
- checkout: payload.response,
592
- reservation: null,
593
- userProfile: null
594
- });
595
- }
596
-
597
- default:
598
- {
599
- return state;
600
- }
601
- }
602
- };
603
-
604
- /* harmony default export */ const reducer = (RegistrationLiteReducer);
605
- ;// CONCATENATED MODULE: ./src/store.js
606
- /**
607
- * Copyright 2019
608
- * Licensed under the Apache License, Version 2.0 (the "License");
609
- * you may not use this file except in compliance with the License.
610
- * You may obtain a copy of the License at
611
- * http://www.apache.org/licenses/LICENSE-2.0
612
- * Unless required by applicable law or agreed to in writing, software
613
- * distributed under the License is distributed on an "AS IS" BASIS,
614
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
615
- * See the License for the specific language governing permissions and
616
- * limitations under the License.
617
- **/
618
-
619
-
620
-
621
- // default: localStorage if web, AsyncStorage if react-native
622
-
623
-
624
- let store, persistor;
625
- const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || external_redux_namespaceObject.compose;
626
- const getStore = (clientId, apiBaseUrl, getAccessToken) => {
627
- if (store) return store;
628
- const config = {
629
- key: `root_registration_lite_${clientId}`,
630
- storage: (storage_default()),
631
- blacklist: ['ticketTypes', 'taxTypes'] // do not persist these keys
632
-
633
- };
634
- const reducers = (0,external_redux_persist_namespaceObject.persistCombineReducers)(config, {
635
- registrationLiteState: reducer
636
- });
637
- store = (0,external_redux_namespaceObject.createStore)(reducers, composeEnhancers((0,external_redux_namespaceObject.applyMiddleware)(external_redux_thunk_default().withExtraArgument({
638
- apiBaseUrl: apiBaseUrl,
639
- getAccessToken: getAccessToken
640
- }))));
641
- return store;
642
- };
643
- const getPersistor = () => {
644
- if (persistor) return persistor;
645
-
646
- const onRehydrateComplete = () => {};
647
-
648
- persistor = (0,external_redux_persist_namespaceObject.persistStore)(store, null, onRehydrateComplete);
649
- return persistor;
650
- };
651
- ;// CONCATENATED MODULE: external "redux-persist/integration/react"
652
- const react_namespaceObject = require("redux-persist/integration/react");
653
- ;// CONCATENATED MODULE: external "react-spring"
654
- const external_react_spring_namespaceObject = require("react-spring");
655
- ;// CONCATENATED MODULE: external "react-use"
656
- const external_react_use_namespaceObject = require("react-use");
657
- ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components/ajaxloader"
658
- const ajaxloader_namespaceObject = require("openstack-uicore-foundation/lib/components/ajaxloader");
659
- var ajaxloader_default = /*#__PURE__*/__webpack_require__.n(ajaxloader_namespaceObject);
660
- ;// CONCATENATED MODULE: external "@stripe/stripe-js"
661
- const stripe_js_namespaceObject = require("@stripe/stripe-js");
662
- ;// CONCATENATED MODULE: ./src/styles/general.module.scss
663
- // extracted by mini-css-extract-plugin
664
- /* harmony default export */ const general_module = ({"outerWrapper":"outerWrapper___OWXyi","innerWrapper":"innerWrapper___mIrBF","title":"title___Tbvkl"});
665
- ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
666
- // extracted by mini-css-extract-plugin
667
- /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","loginCode":"loginCode___dDBup","input":"input___QR9sA"});
668
- ;// CONCATENATED MODULE: ./src/components/login/index.js
669
- /**
670
- * Copyright 2020 OpenStack Foundation
671
- * Licensed under the Apache License, Version 2.0 (the "License");
672
- * you may not use this file except in compliance with the License.
673
- * You may obtain a copy of the License at
674
- * http://www.apache.org/licenses/LICENSE-2.0
675
- * Unless required by applicable law or agreed to in writing, software
676
- * distributed under the License is distributed on an "AS IS" BASIS,
677
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
678
- * See the License for the specific language governing permissions and
679
- * limitations under the License.
680
- **/
681
-
682
-
683
-
684
- const LoginComponent = ({
685
- options,
686
- login,
687
- allowsNativeAuth,
688
- allowsOtpAuthlogin,
689
- getLoginCode,
690
- getPasswordlessCode
691
- }) => {
692
- const [email, setEmail] = (0,external_react_namespaceObject.useState)('');
693
- const [emailError, setEmailError] = (0,external_react_namespaceObject.useState)();
694
-
695
- const isValidEmail = email => {
696
- const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
697
- return re.test(String(email).toLowerCase());
698
- };
699
-
700
- const loginCode = () => {
701
- let isValid = isValidEmail(email);
702
- setEmailError(!isValid);
703
-
704
- if (isValid) {
705
- getLoginCode(email, getPasswordlessCode);
706
- }
707
- };
708
-
709
- return /*#__PURE__*/external_react_default().createElement("div", {
710
- className: `${index_module.loginWrapper} step-wrapper`
711
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
712
- className: `${index_module.innerWrapper}`
713
- }, /*#__PURE__*/external_react_default().createElement("div", {
714
- className: index_module.loginCode
715
- }, "Enter your email address to login or signup:", /*#__PURE__*/external_react_default().createElement("div", {
716
- className: index_module.input
717
- }, /*#__PURE__*/external_react_default().createElement("input", {
718
- placeholder: "youremail@example.com",
719
- value: email,
720
- onChange: e => setEmail(e.target.value),
721
- onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
722
- "data-testid": "email-input"
723
- }), /*#__PURE__*/external_react_default().createElement("button", {
724
- onClick: () => loginCode(),
725
- "data-testid": "email-button"
726
- }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
727
- "data-testid": "email-error"
728
- }, "Please enter a valid email address")), /*#__PURE__*/external_react_default().createElement("span", null, "Or you may signup or login with a social provider:"), options.map((o, index) => {
729
- return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
730
- className: `${index_module.button}`,
731
- key: `provider-${o.provider_param}`,
732
- "data-testid": "login-button",
733
- style: {
734
- color: o.button_border_color ? o.button_border_color : '#ffffff',
735
- border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
736
- backgroundColor: o.button_color,
737
- color: o.font_color,
738
- backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
739
- backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
740
- },
741
- onClick: () => login(o.provider_param)
742
- }, o.provider_label) : allowsNativeAuth ? /*#__PURE__*/external_react_default().createElement("div", {
743
- className: `${index_module.button}`,
744
- key: `provider-fnid`,
745
- "data-testid": "login-button",
746
- style: {
747
- color: o.button_border_color ? o.button_border_color : '#ffffff',
748
- border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
749
- backgroundColor: o.button_color,
750
- color: o.font_color,
751
- backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
752
- backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
753
- },
754
- onClick: () => login(o.provider_param)
755
- }, o.provider_label) : null;
756
- }), allowsOtpAuthlogin && /*#__PURE__*/external_react_default().createElement("div", {
757
- className: index_module.loginCode
758
- }, "or get a login code emailed to you", /*#__PURE__*/external_react_default().createElement("div", {
759
- className: index_module.input
760
- }, /*#__PURE__*/external_react_default().createElement("input", {
761
- placeholder: "youremail@example.com",
762
- value: email,
763
- onChange: e => setEmail(e.target.value),
764
- onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
765
- "data-testid": "email-input"
766
- }), /*#__PURE__*/external_react_default().createElement("button", {
767
- onClick: () => loginCode(),
768
- "data-testid": "email-button"
769
- }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
770
- "data-testid": "email-error"
771
- }, "Please enter a valid email adress")))));
772
- };
773
-
774
- /* harmony default export */ const login = (LoginComponent);
775
- ;// CONCATENATED MODULE: external "prop-types"
776
- const external_prop_types_namespaceObject = require("prop-types");
777
- ;// CONCATENATED MODULE: external "@stripe/react-stripe-js"
778
- const react_stripe_js_namespaceObject = require("@stripe/react-stripe-js");
779
- ;// CONCATENATED MODULE: ./src/components/payment/index.module.scss
780
- // extracted by mini-css-extract-plugin
781
- /* harmony default export */ const payment_index_module = ({"title":"title___LksVm","form":"form___v5GIx","fieldWrapper":"fieldWrapper___Eoe61"});
782
- ;// CONCATENATED MODULE: ./src/components/stripe-form/index.module.scss
783
- // extracted by mini-css-extract-plugin
784
- /* harmony default export */ const stripe_form_index_module = ({"form":"form___DoT3x","fieldWrapper":"fieldWrapper___wa1Ks"});
785
- ;// CONCATENATED MODULE: ./src/components/stripe-form/index.js
786
- /**
787
- * Copyright 2020 OpenStack Foundation
788
- * Licensed under the Apache License, Version 2.0 (the "License");
789
- * you may not use this file except in compliance with the License.
790
- * You may obtain a copy of the License at
791
- * http://www.apache.org/licenses/LICENSE-2.0
792
- * Unless required by applicable law or agreed to in writing, software
793
- * distributed under the License is distributed on an "AS IS" BASIS,
794
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
795
- * See the License for the specific language governing permissions and
796
- * limitations under the License.
797
- **/
798
-
799
-
800
-
801
-
802
-
803
-
804
- const StripeForm = ({
805
- reservation,
806
- payTicket,
807
- userProfile,
808
- marketingData
809
- }) => {
810
- const stripe = (0,react_stripe_js_namespaceObject.useStripe)();
811
- const elements = (0,react_stripe_js_namespaceObject.useElements)();
812
- const [zipCode, setZipCode] = (0,external_react_namespaceObject.useState)('');
813
- const [zipCodeError, setZipCodeError] = (0,external_react_namespaceObject.useState)({
814
- required: false
815
- });
816
- const stripeStyle = {
817
- base: {
818
- // Add your base input styles here. For example: #d4e5f4
819
- color: marketingData.color_text_dark,
820
- fontSize: '16px',
821
- //fontFamily: 'inherit',
822
- backgroundColor: '#ffffff',
823
- '::placeholder': {
824
- color: marketingData.color_text_input_hints
825
- }
826
- },
827
- invalid: {
828
- color: '#e5424d',
829
- ':focus': {
830
- color: '#3486cd'
831
- }
832
- }
833
- };
834
-
835
- const handleSubmit = async event => {
836
- event.preventDefault();
837
-
838
- if (!zipCode) {
839
- setZipCodeError({
840
- required: true
841
- });
842
- return;
843
- } else {
844
- setZipCodeError({
845
- required: false
846
- });
847
- }
848
-
849
- if (!stripe) {
850
- // Stripe.js has not loaded yet. Make sure to disable
851
- // form submission until Stripe.js has loaded.
852
- return;
853
- }
854
-
855
- const cardElement = elements.getElement(react_stripe_js_namespaceObject.CardNumberElement);
856
- const {
857
- error,
858
- token
859
- } = await stripe.createToken(cardElement, {
860
- name: `${reservation.owner_first_name} ${reservation.owner_last_name}`,
861
- address_zip: zipCode,
862
- address_country: userProfile.country || ''
863
- });
864
-
865
- if (token) {
866
- payTicket(token, stripe, zipCode);
867
- } else if (error) {
868
- external_sweetalert2_default().fire("Payment error", "There's an error generating your payment, please retry.", "warning");
869
- }
870
- };
871
-
872
- return /*#__PURE__*/external_react_default().createElement("form", {
873
- className: stripe_form_index_module.form,
874
- id: "payment-form",
875
- onSubmit: handleSubmit
876
- }, /*#__PURE__*/external_react_default().createElement("div", {
877
- className: stripe_form_index_module.fieldWrapper
878
- }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.CardNumberElement, {
879
- options: {
880
- style: stripeStyle
881
- }
882
- }), /*#__PURE__*/external_react_default().createElement("i", {
883
- className: "fa fa-credit-card"
884
- })), /*#__PURE__*/external_react_default().createElement("div", {
885
- className: stripe_form_index_module.fieldWrapper
886
- }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.CardExpiryElement, {
887
- options: {
888
- style: stripeStyle
889
- }
890
- })), /*#__PURE__*/external_react_default().createElement("div", {
891
- className: stripe_form_index_module.fieldWrapper
892
- }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.CardCvcElement, {
893
- options: {
894
- style: stripeStyle
895
- }
896
- })), /*#__PURE__*/external_react_default().createElement("div", {
897
- className: stripe_form_index_module.fieldWrapper,
898
- style: {
899
- marginBottom: `${zipCodeError.required ? '25px' : '0px'}`
900
- }
901
- }, /*#__PURE__*/external_react_default().createElement("input", {
902
- placeholder: "Zip Code",
903
- value: zipCode,
904
- onChange: e => setZipCode(e.target.value)
905
- }), zipCodeError.required && /*#__PURE__*/external_react_default().createElement("span", null, "This field is required")));
906
- };
907
-
908
- const mapStateToProps = ({
909
- registrationLiteState
910
- }) => ({
911
- marketingData: registrationLiteState.settings.marketingData
912
- });
913
-
914
- /* harmony default export */ const stripe_form = ((0,external_react_redux_namespaceObject.connect)(mapStateToProps, null)(StripeForm));
915
- ;// CONCATENATED MODULE: ./src/components/payment/index.js
916
- function payment_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
917
-
918
- function payment_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? payment_ownKeys(Object(source), !0).forEach(function (key) { payment_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : payment_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
919
-
920
- function payment_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
921
-
922
- /**
923
- * Copyright 2020 OpenStack Foundation
924
- * Licensed under the Apache License, Version 2.0 (the "License");
925
- * you may not use this file except in compliance with the License.
926
- * You may obtain a copy of the License at
927
- * http://www.apache.org/licenses/LICENSE-2.0
928
- * Unless required by applicable law or agreed to in writing, software
929
- * distributed under the License is distributed on an "AS IS" BASIS,
930
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
931
- * See the License for the specific language governing permissions and
932
- * limitations under the License.
933
- **/
934
-
935
-
936
-
937
-
938
-
939
-
940
-
941
-
942
- const PaymentComponent = ({
943
- isActive,
944
- userProfile,
945
- reservation,
946
- payTicket,
947
- stripeKey
948
- }) => {
949
- const [ref, {
950
- height
951
- }] = (0,external_react_use_namespaceObject.useMeasure)();
952
- const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
953
- config: payment_objectSpread({
954
- bounce: 0
955
- }, external_react_spring_namespaceObject.config.stiff),
956
- from: {
957
- opacity: 0,
958
- height: 0
959
- },
960
- to: {
961
- opacity: 1,
962
- height: isActive ? height + 10 : 0,
963
- marginBottom: isActive ? 5 : 0
964
- }
965
- });
966
- return /*#__PURE__*/external_react_default().createElement("div", {
967
- className: `${payment_index_module.outerWrapper} step-wrapper`
968
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
969
- className: `${payment_index_module.innerWrapper}`
970
- }, /*#__PURE__*/external_react_default().createElement("div", {
971
- className: payment_index_module.title
972
- }, /*#__PURE__*/external_react_default().createElement("span", null, "Payment")), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
973
- style: payment_objectSpread({
974
- overflow: 'hidden'
975
- }, toggleAnimation)
976
- }, /*#__PURE__*/external_react_default().createElement("div", {
977
- ref: ref
978
- }, /*#__PURE__*/external_react_default().createElement(react_stripe_js_namespaceObject.Elements, {
979
- stripe: stripeKey
980
- }, /*#__PURE__*/external_react_default().createElement(stripe_form, {
981
- reservation: reservation,
982
- payTicket: payTicket,
983
- userProfile: userProfile
984
- })))))));
985
- };
986
-
987
- /* harmony default export */ const payment = (PaymentComponent);
988
- ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components"
989
- const components_namespaceObject = require("openstack-uicore-foundation/lib/components");
990
- ;// CONCATENATED MODULE: external "react-hook-form"
991
- const external_react_hook_form_namespaceObject = require("react-hook-form");
992
- ;// CONCATENATED MODULE: external "react-tooltip"
993
- const external_react_tooltip_namespaceObject = require("react-tooltip");
994
- var external_react_tooltip_default = /*#__PURE__*/__webpack_require__.n(external_react_tooltip_namespaceObject);
995
- ;// CONCATENATED MODULE: ./src/helpers/capitalizeFirstLetter.js
996
- const capitalizeFirstLetter = string => string.charAt(0).toUpperCase() + string.slice(1);
997
- ;// CONCATENATED MODULE: ./src/helpers/formatErrorMessage.js
998
-
999
- const formatErrorMessage = string => {
1000
- const errorMessage = capitalizeFirstLetter(string);
1001
- return `${errorMessage}${errorMessage.endsWith('.') ? '' : '.'}`;
1002
- };
1003
- ;// CONCATENATED MODULE: ./src/components/personal-information/index.module.scss
1004
- // extracted by mini-css-extract-plugin
1005
- /* harmony default export */ const personal_information_index_module = ({"title":"title___ECoNz","form":"form___lDFka","readOnly":"readOnly___WRazF","companies":"companies___kmGFB","moreInfo":"moreInfo___cQYdZ","moreInfoTooltip":"moreInfoTooltip___lslgT","formErrors":"formErrors___dQQMe"});
1006
- ;// CONCATENATED MODULE: ./src/components/personal-information/index.js
1007
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1008
-
1009
- function personal_information_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1010
-
1011
- function personal_information_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? personal_information_ownKeys(Object(source), !0).forEach(function (key) { personal_information_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : personal_information_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1012
-
1013
- function personal_information_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1014
-
1015
- /**
1016
- * Copyright 2020 OpenStack Foundation
1017
- * Licensed under the Apache License, Version 2.0 (the "License");
1018
- * you may not use this file except in compliance with the License.
1019
- * You may obtain a copy of the License at
1020
- * http://www.apache.org/licenses/LICENSE-2.0
1021
- * Unless required by applicable law or agreed to in writing, software
1022
- * distributed under the License is distributed on an "AS IS" BASIS,
1023
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1024
- * See the License for the specific language governing permissions and
1025
- * limitations under the License.
1026
- **/
1027
-
1028
-
1029
-
1030
-
1031
-
1032
-
1033
-
1034
-
1035
-
1036
-
1037
- const PersonalInfoComponent = ({
1038
- isActive,
1039
- changeForm,
1040
- reservation,
1041
- userProfile,
1042
- summitId,
1043
- handleCompanyError,
1044
- formErrors
1045
- }) => {
1046
- var _errors$email, _errors$email2;
1047
-
1048
- const [personalInfo, setPersonalInfo] = (0,external_react_namespaceObject.useState)({
1049
- firstName: userProfile.given_name || '',
1050
- lastName: userProfile.family_name || '',
1051
- email: userProfile.email || '',
1052
- company: {
1053
- id: null,
1054
- name: userProfile.company || ''
1055
- },
1056
- promoCode: ''
1057
- });
1058
- const [companyError, setCompanyError] = (0,external_react_namespaceObject.useState)(false);
1059
- const {
1060
- register,
1061
- handleSubmit,
1062
- formState: {
1063
- errors
1064
- }
1065
- } = (0,external_react_hook_form_namespaceObject.useForm)();
1066
- (0,external_react_namespaceObject.useEffect)(() => {
1067
- if (reservation) {
1068
- setPersonalInfo({
1069
- firstName: reservation.owner_first_name ? reservation.owner_first_name : personalInfo.firstName,
1070
- lastName: reservation.owner_last_name ? reservation.owner_last_name : personalInfo.lastName,
1071
- email: reservation.owner_email ? reservation.owner_email : personalInfo.email,
1072
- company: {
1073
- id: null,
1074
- name: reservation.owner_company ? reservation.owner_company : personalInfo.company
1075
- }
1076
- });
1077
- }
1078
- }, []);
1079
-
1080
- const onCompanyChange = ev => {
1081
- const newCompany = ev.target.value;
1082
- setCompanyError(false);
1083
- setPersonalInfo(personal_information_objectSpread(personal_information_objectSpread({}, personalInfo), {}, {
1084
- company: newCompany
1085
- }));
1086
- };
1087
-
1088
- const onSubmit = data => {
1089
- if (!personalInfo.company.name) {
1090
- setCompanyError(true);
1091
- return;
1092
- }
1093
-
1094
- setPersonalInfo(personal_information_objectSpread(personal_information_objectSpread({}, personalInfo), data));
1095
- changeForm(personal_information_objectSpread(personal_information_objectSpread({}, personalInfo), data));
1096
- };
1097
-
1098
- const [ref, {
1099
- height
1100
- }] = (0,external_react_use_namespaceObject.useMeasure)();
1101
- const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
1102
- config: personal_information_objectSpread({
1103
- bounce: 0
1104
- }, external_react_spring_namespaceObject.config.stiff),
1105
- from: {
1106
- opacity: 0,
1107
- height: 0
1108
- },
1109
- to: {
1110
- opacity: 1,
1111
- height: isActive ? height + 10 : 0
1112
- }
1113
- });
1114
- return /*#__PURE__*/external_react_default().createElement("div", {
1115
- className: `${personal_information_index_module.outerWrapper} step-wrapper`
1116
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1117
- className: `${personal_information_index_module.innerWrapper}`
1118
- }, /*#__PURE__*/external_react_default().createElement("div", {
1119
- className: personal_information_index_module.title
1120
- }, /*#__PURE__*/external_react_default().createElement("span", null, "Personal Information"), !isActive && /*#__PURE__*/external_react_default().createElement("div", {
1121
- "data-testid": "personal-info"
1122
- }, /*#__PURE__*/external_react_default().createElement("span", null, `${personalInfo.firstName} ${personalInfo.lastName} ${personalInfo.company.name ? `- ${personalInfo.company.name}` : ''}`), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", null, personalInfo.email))), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
1123
- style: personal_information_objectSpread({
1124
- overflow: 'hidden'
1125
- }, toggleAnimation)
1126
- }, /*#__PURE__*/external_react_default().createElement("div", {
1127
- ref: ref
1128
- }, /*#__PURE__*/external_react_default().createElement("form", {
1129
- id: "personal-info-form",
1130
- onSubmit: handleSubmit(onSubmit),
1131
- className: personal_information_index_module.form,
1132
- "data-testid": "personal-form"
1133
- }, /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("input", _extends({
1134
- type: "text",
1135
- placeholder: "First name *",
1136
- defaultValue: personalInfo.firstName || ''
1137
- }, register("firstName", {
1138
- required: true,
1139
- maxLength: 80
1140
- }), {
1141
- "data-testid": "first-name"
1142
- })), errors.firstName && /*#__PURE__*/external_react_default().createElement("span", {
1143
- "data-testid": "first-name-error"
1144
- }, "This field is required")), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("input", _extends({
1145
- type: "text",
1146
- placeholder: "Last name *",
1147
- defaultValue: personalInfo.lastName || ''
1148
- }, register("lastName", {
1149
- required: true,
1150
- maxLength: 100
1151
- }), {
1152
- "data-testid": "last-name"
1153
- })), errors.lastName && /*#__PURE__*/external_react_default().createElement("span", {
1154
- "data-testid": "last-name-error"
1155
- }, "This field is required")), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("input", _extends({
1156
- type: "text",
1157
- placeholder: "Email *",
1158
- className: personal_information_index_module.readOnly,
1159
- readOnly: true,
1160
- defaultValue: personalInfo.email || ''
1161
- }, register("email", {
1162
- required: true,
1163
- pattern: /^\S+@\S+$/i
1164
- }), {
1165
- "data-testid": "email"
1166
- })), ((_errors$email = errors.email) === null || _errors$email === void 0 ? void 0 : _errors$email.type) === 'required' && /*#__PURE__*/external_react_default().createElement("span", {
1167
- "data-testid": "email-error-required"
1168
- }, "This field is required"), ((_errors$email2 = errors.email) === null || _errors$email2 === void 0 ? void 0 : _errors$email2.type) === 'pattern' && /*#__PURE__*/external_react_default().createElement("span", {
1169
- "data-testid": "email-error-invalid"
1170
- }, "The email is invalid")), /*#__PURE__*/external_react_default().createElement("div", {
1171
- className: personal_information_index_module.companies
1172
- }, /*#__PURE__*/external_react_default().createElement(components_namespaceObject.RegistrationCompanyInput, {
1173
- id: "company",
1174
- summitId: summitId,
1175
- onChange: onCompanyChange,
1176
- onError: handleCompanyError,
1177
- value: personalInfo.company
1178
- }), companyError && /*#__PURE__*/external_react_default().createElement("span", {
1179
- "data-testid": "company-error"
1180
- }, "This field is required")), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("input", _extends({
1181
- type: "text",
1182
- placeholder: "Promo Code"
1183
- }, register("promoCode"))))), /*#__PURE__*/external_react_default().createElement("a", {
1184
- className: personal_information_index_module.moreInfo,
1185
- "data-tip": true,
1186
- "data-for": "promo-code-info"
1187
- }, /*#__PURE__*/external_react_default().createElement("i", {
1188
- className: "glyphicon glyphicon-info-sign",
1189
- "aria-hidden": "true"
1190
- }), ` `, "Have multiple promo codes?"), /*#__PURE__*/external_react_default().createElement((external_react_tooltip_default()), {
1191
- id: "promo-code-info"
1192
- }, /*#__PURE__*/external_react_default().createElement("div", {
1193
- className: personal_information_index_module.moreInfoTooltip
1194
- }, "In order to use multiple promo codes, you may place a new registration order with the new promo code after you complete this order. This promo code will be applied to all tickets in this order.")), formErrors.length > 0 && /*#__PURE__*/external_react_default().createElement("div", {
1195
- className: `${personal_information_index_module.formErrors} alert alert-danger`
1196
- }, formErrors.map((error, index) => /*#__PURE__*/external_react_default().createElement("div", {
1197
- key: index
1198
- }, formatErrorMessage(error)))))))));
1199
- };
1200
-
1201
- /* harmony default export */ const personal_information = (PersonalInfoComponent);
1202
- ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components/raw-html"
1203
- const raw_html_namespaceObject = require("openstack-uicore-foundation/lib/components/raw-html");
1204
- var raw_html_default = /*#__PURE__*/__webpack_require__.n(raw_html_namespaceObject);
1205
- ;// CONCATENATED MODULE: ./src/components/ticket-type/index.module.scss
1206
- // extracted by mini-css-extract-plugin
1207
- /* harmony default export */ const ticket_type_index_module = ({"title":"title___DNZyl","summary":"summary___quWdZ","crossOut":"crossOut___QZ7dy","discount":"discount___sEK_Q","promo":"promo___F8lPO","form":"form___aoo7w","dropdown":"dropdown____HWg0","quantity":"quantity___SIEQZ","soldOut":"soldOut___Hatfr","moreInfo":"moreInfo___LmwOe","moreInfoTooltip":"moreInfoTooltip___nOBf1","inPersonDisclaimer":"inPersonDisclaimer___PXGTz"});
1208
- ;// CONCATENATED MODULE: ./src/helpers/getTicketMaxQuantity.js
1209
- const getTicketMaxQuantity = ticket => ticket ? Math.min((ticket.quantity_2_sell || Number.MAX_SAFE_INTEGER) - ticket.quantity_sold, ticket.max_quantity_per_order || Number.MAX_SAFE_INTEGER) : 0;
1210
- ;// CONCATENATED MODULE: ./src/components/ticket-dropdown/index.module.scss
1211
- // extracted by mini-css-extract-plugin
1212
- /* harmony default export */ const ticket_dropdown_index_module = ({"placeholder":"placeholder___pcdCn","inPersonDisclaimer":"inPersonDisclaimer___z_DzO","dropdown":"dropdown___mfbPG","soldOut":"soldOut___rBLC0"});
1213
- ;// CONCATENATED MODULE: ./src/components/ticket-dropdown/index.js
1214
- /**
1215
- * Copyright 2020 OpenStack Foundation
1216
- * Licensed under the Apache License, Version 2.0 (the "License");
1217
- * you may not use this file except in compliance with the License.
1218
- * You may obtain a copy of the License at
1219
- * http://www.apache.org/licenses/LICENSE-2.0
1220
- * Unless required by applicable law or agreed to in writing, software
1221
- * distributed under the License is distributed on an "AS IS" BASIS,
1222
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1223
- * See the License for the specific language governing permissions and
1224
- * limitations under the License.
1225
- **/
1226
-
1227
-
1228
-
1229
-
1230
-
1231
- const TicketDropdownComponent = ({
1232
- selectedTicket,
1233
- ticketTypes,
1234
- onTicketSelect
1235
- }) => {
1236
- const [active, setActive] = (0,external_react_namespaceObject.useState)(false);
1237
-
1238
- const ticketSelect = ticket => {
1239
- onTicketSelect(ticket);
1240
- setActive(!active);
1241
- };
1242
-
1243
- const date = new Date();
1244
- let now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) / 1000;
1245
- return /*#__PURE__*/external_react_default().createElement("div", {
1246
- className: `${ticket_dropdown_index_module.outerWrapper}`
1247
- }, /*#__PURE__*/external_react_default().createElement("div", {
1248
- className: ticket_dropdown_index_module.placeholder,
1249
- onClick: () => setActive(!active),
1250
- "data-testid": "ticket-dropdown"
1251
- }, selectedTicket ? /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
1252
- "data-testid": "selected-ticket"
1253
- }, `${selectedTicket.name} - $${selectedTicket.cost} ${selectedTicket.currency}`), /*#__PURE__*/external_react_default().createElement("i", {
1254
- className: "fa fa-chevron-down"
1255
- })) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
1256
- "data-testid": "no-ticket"
1257
- }, "Select a ticket"), /*#__PURE__*/external_react_default().createElement("i", {
1258
- className: "fa fa-chevron-down"
1259
- }))), active && /*#__PURE__*/external_react_default().createElement("div", {
1260
- className: ticket_dropdown_index_module.dropdown,
1261
- "data-testid": "ticket-list"
1262
- }, ticketTypes.map(t => {
1263
- const maxQuantity = getTicketMaxQuantity(t);
1264
- const isTicketSoldOut = maxQuantity < 1;
1265
-
1266
- if (t.sales_start_date === null && t.sales_end_date === null || now_utc >= t.sales_start_date && now_utc <= t.sales_end_date) {
1267
- return /*#__PURE__*/external_react_default().createElement("div", {
1268
- key: t.id,
1269
- className: isTicketSoldOut ? ticket_dropdown_index_module.soldOut : '',
1270
- onClick: () => {
1271
- if (isTicketSoldOut) return;
1272
- ticketSelect(t);
1273
- }
1274
- }, t.name, " -", ` `, !isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "$", t.cost, " ", t.currency), isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "Sold Out"));
1275
- }
1276
- })));
1277
- };
1278
-
1279
- /* harmony default export */ const ticket_dropdown = (TicketDropdownComponent);
1280
- ;// CONCATENATED MODULE: ./src/helpers/formatCurrency.js
1281
- const _excluded = ["locale"];
1282
-
1283
- function formatCurrency_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1284
-
1285
- function formatCurrency_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? formatCurrency_ownKeys(Object(source), !0).forEach(function (key) { formatCurrency_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : formatCurrency_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1286
-
1287
- function formatCurrency_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1288
-
1289
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
1290
-
1291
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
1292
-
1293
- const formatCurrency = (value, _ref) => {
1294
- let {
1295
- locale = 'en-US'
1296
- } = _ref,
1297
- options = _objectWithoutProperties(_ref, _excluded);
1298
-
1299
- const defaultOptions = {
1300
- currency: 'USD',
1301
- minimumFractionDigits: 0,
1302
- maximumFractionDigits: 0
1303
- };
1304
- const formatter = new Intl.NumberFormat(locale, formatCurrency_objectSpread(formatCurrency_objectSpread({
1305
- style: 'currency'
1306
- }, defaultOptions), options));
1307
- return formatter.format(value);
1308
- };
1309
- ;// CONCATENATED MODULE: ./src/components/ticket-type/index.js
1310
- function ticket_type_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1311
-
1312
- function ticket_type_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ticket_type_ownKeys(Object(source), !0).forEach(function (key) { ticket_type_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ticket_type_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1313
-
1314
- function ticket_type_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1315
-
1316
- /**
1317
- * Copyright 2020 OpenStack Foundation
1318
- * Licensed under the Apache License, Version 2.0 (the "License");
1319
- * you may not use this file except in compliance with the License.
1320
- * You may obtain a copy of the License at
1321
- * http://www.apache.org/licenses/LICENSE-2.0
1322
- * Unless required by applicable law or agreed to in writing, software
1323
- * distributed under the License is distributed on an "AS IS" BASIS,
1324
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1325
- * See the License for the specific language governing permissions and
1326
- * limitations under the License.
1327
- **/
1328
-
1329
-
1330
-
1331
-
1332
-
1333
-
1334
-
1335
-
1336
-
1337
-
1338
-
1339
- const TicketTypeComponent = ({
1340
- ticketTypes,
1341
- isActive,
1342
- changeForm,
1343
- reservation,
1344
- inPersonDisclaimer
1345
- }) => {
1346
- const [ticket, setTicket] = (0,external_react_namespaceObject.useState)(null);
1347
- const [quantity, setQuantity] = (0,external_react_namespaceObject.useState)(1);
1348
- const minQuantity = 1;
1349
- const maxQuantity = getTicketMaxQuantity(ticket);
1350
- const [ref, {
1351
- height
1352
- }] = (0,external_react_use_namespaceObject.useMeasure)();
1353
- const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
1354
- config: ticket_type_objectSpread({
1355
- bounce: 0
1356
- }, external_react_spring_namespaceObject.config.stiff),
1357
- from: {
1358
- opacity: 0,
1359
- height: 0
1360
- },
1361
- to: {
1362
- opacity: 1,
1363
- height: isActive ? height + 10 : 0
1364
- }
1365
- });
1366
- (0,external_react_namespaceObject.useEffect)(() => {
1367
- var _reservation$tickets;
1368
-
1369
- if (reservation && ((_reservation$tickets = reservation.tickets) === null || _reservation$tickets === void 0 ? void 0 : _reservation$tickets.length) > 0) {
1370
- setTicket(ticketTypes.find(t => t.id === reservation.tickets[0].ticket_type_id));
1371
- }
1372
- }, []);
1373
- (0,external_react_namespaceObject.useEffect)(() => {
1374
- changeForm({
1375
- ticketType: ticket,
1376
- ticketQuantity: quantity
1377
- });
1378
- }, [ticket, quantity]);
1379
-
1380
- const handleTicketChange = t => {
1381
- setTicket(t);
1382
- setQuantity(minQuantity);
1383
- };
1384
-
1385
- const incrementQuantity = () => setQuantity(quantity + 1);
1386
-
1387
- const decrementQuantity = () => setQuantity(quantity - 1);
1388
-
1389
- return /*#__PURE__*/external_react_default().createElement("div", {
1390
- className: `${ticket_type_index_module.outerWrapper} step-wrapper`
1391
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1392
- className: ticket_type_index_module.innerWrapper
1393
- }, /*#__PURE__*/external_react_default().createElement("div", {
1394
- className: ticket_type_index_module.title
1395
- }, /*#__PURE__*/external_react_default().createElement("span", null, "Ticket"), /*#__PURE__*/external_react_default().createElement("div", {
1396
- className: ticket_type_index_module.summary
1397
- }, /*#__PURE__*/external_react_default().createElement("span", null, ticket && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, ticket.name, ` `, "(", quantity, "):", ` `, !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.discount_amount) > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
1398
- className: ticket_type_index_module.crossOut
1399
- }, formatCurrency(ticket.cost * quantity, {
1400
- currency: ticket.currency
1401
- })), ` `, /*#__PURE__*/external_react_default().createElement("span", {
1402
- className: ticket_type_index_module.discount
1403
- }, formatCurrency(reservation.raw_amount - reservation.discount_amount, {
1404
- currency: ticket.currency
1405
- })), ` `), !(reservation !== null && reservation !== void 0 && reservation.discount_amount) && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, formatCurrency(ticket.cost * quantity, {
1406
- currency: ticket.currency
1407
- }), ` `), ticket.currency, !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.discount_amount) > 0 && /*#__PURE__*/external_react_default().createElement("span", {
1408
- className: ticket_type_index_module.promo
1409
- }, "Promo code applied"), !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.taxes_amount) > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("br", null), "Taxes: $", reservation === null || reservation === void 0 ? void 0 : reservation.taxes_amount, " ", ticket === null || ticket === void 0 ? void 0 : ticket.currency)), !ticket && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "No ticket selected")))), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
1410
- style: ticket_type_objectSpread({
1411
- overflow: 'hidden'
1412
- }, toggleAnimation)
1413
- }, /*#__PURE__*/external_react_default().createElement("div", {
1414
- ref: ref
1415
- }, /*#__PURE__*/external_react_default().createElement("div", {
1416
- className: ticket_type_index_module.form
1417
- }, /*#__PURE__*/external_react_default().createElement("div", {
1418
- className: ticket_type_index_module.dropdown
1419
- }, /*#__PURE__*/external_react_default().createElement(ticket_dropdown, {
1420
- selectedTicket: ticket,
1421
- ticketTypes: ticketTypes,
1422
- onTicketSelect: handleTicketChange
1423
- })), ticket && /*#__PURE__*/external_react_default().createElement("div", {
1424
- className: ticket_type_index_module.quantity
1425
- }, /*#__PURE__*/external_react_default().createElement("div", {
1426
- className: "input-group"
1427
- }, /*#__PURE__*/external_react_default().createElement("span", {
1428
- className: "input-group-btn"
1429
- }, /*#__PURE__*/external_react_default().createElement("button", {
1430
- "aria-label": "remove a ticket",
1431
- className: "btn btn-default",
1432
- onClick: decrementQuantity,
1433
- disabled: maxQuantity === 0 || quantity === minQuantity
1434
- }, /*#__PURE__*/external_react_default().createElement("i", {
1435
- className: "fa fa-minus"
1436
- }))), /*#__PURE__*/external_react_default().createElement("input", {
1437
- className: "form-control",
1438
- "aria-label": "ticket quanity",
1439
- name: "ticket_quantity",
1440
- type: "text",
1441
- value: quantity,
1442
- readOnly: true,
1443
- disabled: maxQuantity === 0
1444
- }), /*#__PURE__*/external_react_default().createElement("span", {
1445
- className: "input-group-btn"
1446
- }, /*#__PURE__*/external_react_default().createElement("button", {
1447
- "aria-label": "add a ticket",
1448
- className: "btn btn-default",
1449
- onClick: incrementQuantity,
1450
- disabled: maxQuantity === 0 || quantity >= maxQuantity
1451
- }, /*#__PURE__*/external_react_default().createElement("i", {
1452
- className: "glyphicon glyphicon-plus"
1453
- })))))), /*#__PURE__*/external_react_default().createElement("a", {
1454
- className: ticket_type_index_module.moreInfo,
1455
- "data-tip": true,
1456
- "data-for": "ticket-quantity-info"
1457
- }, /*#__PURE__*/external_react_default().createElement("i", {
1458
- className: "glyphicon glyphicon-info-sign",
1459
- "aria-hidden": "true"
1460
- }), ` `, "Need multiple ticket types?"), /*#__PURE__*/external_react_default().createElement((external_react_tooltip_default()), {
1461
- id: "ticket-quantity-info"
1462
- }, /*#__PURE__*/external_react_default().createElement("div", {
1463
- className: ticket_type_index_module.moreInfoTooltip
1464
- }, "In order to select multiple tickets of a different type, you may place a new registration order after you complete this order.")))), inPersonDisclaimer && ticket && isInPersonTicketType(ticket) && /*#__PURE__*/external_react_default().createElement("div", {
1465
- className: ticket_type_index_module.inPersonDisclaimer
1466
- }, /*#__PURE__*/external_react_default().createElement((raw_html_default()), null, inPersonDisclaimer)))));
1467
- };
1468
-
1469
- /* harmony default export */ const ticket_type = (TicketTypeComponent);
1470
- ;// CONCATENATED MODULE: ./src/components/button-bar/index.module.scss
1471
- // extracted by mini-css-extract-plugin
1472
- /* harmony default export */ const button_bar_index_module = ({"button":"button___MZBIY","outerWrapper":"outerWrapper___XRnaq","innerWrapper":"innerWrapper___LFsOH","registration":"registration___jdf6T","actions":"actions___Gsf0y"});
1473
- ;// CONCATENATED MODULE: ./src/components/button-bar/index.js
1474
- /**
1475
- * Copyright 2020 OpenStack Foundation
1476
- * Licensed under the Apache License, Version 2.0 (the "License");
1477
- * you may not use this file except in compliance with the License.
1478
- * You may obtain a copy of the License at
1479
- * http://www.apache.org/licenses/LICENSE-2.0
1480
- * Unless required by applicable law or agreed to in writing, software
1481
- * distributed under the License is distributed on an "AS IS" BASIS,
1482
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1483
- * See the License for the specific language governing permissions and
1484
- * limitations under the License.
1485
- **/
1486
-
1487
-
1488
-
1489
-
1490
- const ButtonBarComponent = ({
1491
- step,
1492
- changeStep,
1493
- formValues,
1494
- removeReservedTicket,
1495
- inPersonDisclaimer
1496
- }) => {
1497
- const {
1498
- ticketType
1499
- } = formValues || {};
1500
- const nextButtonText = inPersonDisclaimer && ticketType && isInPersonTicketType(ticketType) ? 'Accept' : 'Next';
1501
- return /*#__PURE__*/external_react_default().createElement("div", {
1502
- className: `${button_bar_index_module.outerWrapper}`
1503
- }, step !== 3 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1504
- className: `${button_bar_index_module.innerWrapper}`
1505
- }, /*#__PURE__*/external_react_default().createElement("div", {
1506
- className: button_bar_index_module.required
1507
- }, step !== 0 && /*#__PURE__*/external_react_default().createElement("span", null, "* Required fields ", /*#__PURE__*/external_react_default().createElement("br", null), " ")), /*#__PURE__*/external_react_default().createElement("div", {
1508
- className: button_bar_index_module.actions
1509
- }, step !== 0 && step !== 2 && /*#__PURE__*/external_react_default().createElement("button", {
1510
- className: `${button_bar_index_module.button} button`,
1511
- onClick: () => changeStep(step - 1)
1512
- }, "< Back"), step !== 0 && step === 2 && /*#__PURE__*/external_react_default().createElement("button", {
1513
- className: `${button_bar_index_module.button} button`,
1514
- onClick: () => removeReservedTicket()
1515
- }, "< Back"), step === 0 && /*#__PURE__*/external_react_default().createElement("button", {
1516
- disabled: !ticketType,
1517
- className: `${button_bar_index_module.button} button`,
1518
- onClick: () => changeStep(step + 1)
1519
- }, nextButtonText), step === 1 && (ticketType === null || ticketType === void 0 ? void 0 : ticketType.cost) === 0 && /*#__PURE__*/external_react_default().createElement("button", {
1520
- className: `${button_bar_index_module.button} button`,
1521
- type: "submit",
1522
- form: "personal-info-form"
1523
- }, "Get Ticket"), step === 1 && (ticketType === null || ticketType === void 0 ? void 0 : ticketType.cost) > 0 && /*#__PURE__*/external_react_default().createElement("button", {
1524
- className: `${button_bar_index_module.button} button`,
1525
- type: "submit",
1526
- form: "personal-info-form"
1527
- }, "Next"), step === 2 && /*#__PURE__*/external_react_default().createElement("button", {
1528
- className: `${button_bar_index_module.button} button`,
1529
- type: "submit",
1530
- form: "payment-form"
1531
- }, "Pay Now")))));
1532
- };
1533
-
1534
- /* harmony default export */ const button_bar = (ButtonBarComponent);
1535
- ;// CONCATENATED MODULE: ./src/components/purchase-complete/index.module.scss
1536
- // extracted by mini-css-extract-plugin
1537
- /* harmony default export */ const purchase_complete_index_module = ({"button":"button___XMN8a","wrapper":"wrapper___Jd5Xg","circle":"circle___lcN86","complete":"complete___HAHzl","actions":"actions___jJdPX","footer":"footer___FL9TW"});
1538
- ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/utils/methods"
1539
- const methods_namespaceObject = require("openstack-uicore-foundation/lib/utils/methods");
1540
- ;// CONCATENATED MODULE: ./src/components/purchase-complete/index.js
1541
- /**
1542
- * Copyright 2020 OpenStack Foundation
1543
- * Licensed under the Apache License, Version 2.0 (the "License");
1544
- * you may not use this file except in compliance with the License.
1545
- * You may obtain a copy of the License at
1546
- * http://www.apache.org/licenses/LICENSE-2.0
1547
- * Unless required by applicable law or agreed to in writing, software
1548
- * distributed under the License is distributed on an "AS IS" BASIS,
1549
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1550
- * See the License for the specific language governing permissions and
1551
- * limitations under the License.
1552
- **/
1553
-
1554
-
1555
-
1556
-
1557
- const PurchaseComplete = ({
1558
- checkout,
1559
- onPurchaseComplete,
1560
- goToExtraQuestions,
1561
- goToEvent,
1562
- summit,
1563
- supportEmail = "support@fntech.com"
1564
- }) => {
1565
- (0,external_react_namespaceObject.useEffect)(() => {
1566
- onPurchaseComplete(checkout);
1567
- }, []);
1568
- const date = new Date();
1569
- let now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) / 1000;
1570
- const isActive = summit.start_date < now_utc && summit.end_date > now_utc;
1571
- const startDateFormatted = {
1572
- date: (0,methods_namespaceObject.epochToMomentTimeZone)(summit.start_date, summit.time_zone_id).format('MMMM D'),
1573
- time: (0,methods_namespaceObject.epochToMomentTimeZone)(summit.start_date, summit.time_zone_id).format('HH:mm')
1574
- };
1575
-
1576
- const needExtraQuestions = () => {
1577
- return summit.order_extra_questions.some(q => q.mandatory === true) ? true : false;
1578
- };
1579
-
1580
- return /*#__PURE__*/external_react_default().createElement("div", {
1581
- className: purchase_complete_index_module.wrapper
1582
- }, /*#__PURE__*/external_react_default().createElement("div", {
1583
- className: purchase_complete_index_module.circle
1584
- }, /*#__PURE__*/external_react_default().createElement("i", {
1585
- className: "fa fa-ticket"
1586
- })), /*#__PURE__*/external_react_default().createElement("span", {
1587
- className: purchase_complete_index_module.complete
1588
- }, "Your order is complete"), isActive ? needExtraQuestions() ? /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", null, "This ticket requires additional details. ", /*#__PURE__*/external_react_default().createElement("br", null)), /*#__PURE__*/external_react_default().createElement("button", {
1589
- className: `${purchase_complete_index_module.button} button`,
1590
- onClick: () => goToExtraQuestions()
1591
- }, "Finish now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("button", {
1592
- className: `${purchase_complete_index_module.button} button`,
1593
- onClick: () => goToEvent()
1594
- }, "Access event now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", null, "The event will start on ", startDateFormatted.date, " at ", startDateFormatted.time, " ", summit.time_zone_id, " ", /*#__PURE__*/external_react_default().createElement("br", null), "This ticket requires additional details."), /*#__PURE__*/external_react_default().createElement("div", {
1595
- className: purchase_complete_index_module.actions
1596
- }, /*#__PURE__*/external_react_default().createElement("button", {
1597
- className: `${purchase_complete_index_module.button} button`,
1598
- onClick: () => goToExtraQuestions()
1599
- }, "Finish Now"), /*#__PURE__*/external_react_default().createElement("button", {
1600
- className: `${purchase_complete_index_module.button} button`,
1601
- onClick: () => goToEvent()
1602
- }, "Do this later"))), /*#__PURE__*/external_react_default().createElement("span", {
1603
- className: purchase_complete_index_module.footer
1604
- }, "For further assistance, please email ", /*#__PURE__*/external_react_default().createElement("a", {
1605
- href: `mailto:${supportEmail}`
1606
- }, supportEmail)));
1607
- };
1608
-
1609
- /* harmony default export */ const purchase_complete = (PurchaseComplete);
1610
- ;// CONCATENATED MODULE: external "react-otp-input"
1611
- const external_react_otp_input_namespaceObject = require("react-otp-input");
1612
- var external_react_otp_input_default = /*#__PURE__*/__webpack_require__.n(external_react_otp_input_namespaceObject);
1613
- ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.module.scss
1614
- // extracted by mini-css-extract-plugin
1615
- /* harmony default export */ const login_passwordless_index_module = ({"passwordlessWrapper":"passwordlessWrapper___BRQ_s","innerWrapper":"innerWrapper___nRLDi","digits":"digits___Vu5iy","codeInput":"codeInput___LnTZe","error":"error___wZflZ","verify":"verify___IBgMl","button":"button___nBhtQ","link":"link___f6fDT","resend":"resend___Nma1U"});
1616
- ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.js
1617
- /**
1618
- * Copyright 2020 OpenStack Foundation
1619
- * Licensed under the Apache License, Version 2.0 (the "License");
1620
- * you may not use this file except in compliance with the License.
1621
- * You may obtain a copy of the License at
1622
- * http://www.apache.org/licenses/LICENSE-2.0
1623
- * Unless required by applicable law or agreed to in writing, software
1624
- * distributed under the License is distributed on an "AS IS" BASIS,
1625
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1626
- * See the License for the specific language governing permissions and
1627
- * limitations under the License.
1628
- **/
1629
-
1630
-
1631
-
1632
-
1633
-
1634
- const PasswordlessLoginComponent = ({
1635
- email,
1636
- codeLength,
1637
- passwordlessLogin,
1638
- loginWithCode,
1639
- codeError,
1640
- goToLogin,
1641
- getLoginCode,
1642
- getPasswordlessCode
1643
- }) => {
1644
- const [otpCode, setOtpCode] = (0,external_react_namespaceObject.useState)('');
1645
- const [otpError, setOtpError] = (0,external_react_namespaceObject.useState)(false);
1646
-
1647
- const tryPasswordlessLogin = code => {
1648
- if (code.length === codeLength) {
1649
- setOtpError(false);
1650
- passwordlessLogin(otpCode, loginWithCode);
1651
- } else {
1652
- setOtpError(true);
1653
- }
1654
- };
1655
-
1656
- const resendCode = () => {
1657
- getLoginCode(email, getPasswordlessCode);
1658
- };
1659
-
1660
- return /*#__PURE__*/external_react_default().createElement("div", {
1661
- className: `${login_passwordless_index_module.passwordlessWrapper} step-wrapper`
1662
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1663
- className: `${login_passwordless_index_module.innerWrapper}`
1664
- }, /*#__PURE__*/external_react_default().createElement("span", null, "We sent your single-use login code to ", /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
1665
- "data-testid": "email"
1666
- }, email), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
1667
- className: login_passwordless_index_module.digits,
1668
- "data-testid": "code-digits"
1669
- }, "Add the ", codeLength, " digit code below")), /*#__PURE__*/external_react_default().createElement("div", {
1670
- className: login_passwordless_index_module.codeInput
1671
- }, /*#__PURE__*/external_react_default().createElement((external_react_otp_input_default()), {
1672
- value: otpCode,
1673
- onChange: code => setOtpCode(code),
1674
- numInputs: codeLength,
1675
- shouldAutoFocus: true,
1676
- hasErrored: otpError || codeError,
1677
- errorStyle: {
1678
- border: '1px solid #e5424d'
1679
- },
1680
- "data-testid": "otp-input"
1681
- })), codeError && /*#__PURE__*/external_react_default().createElement("span", {
1682
- className: login_passwordless_index_module.error,
1683
- "data-testid": "error"
1684
- }, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
1685
- className: login_passwordless_index_module.verify
1686
- }, /*#__PURE__*/external_react_default().createElement("div", {
1687
- className: `${login_passwordless_index_module.button} button`,
1688
- onClick: () => tryPasswordlessLogin(otpCode),
1689
- "data-testid": "verify"
1690
- }, "Verify"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
1691
- className: login_passwordless_index_module.link,
1692
- onClick: () => goToLogin(),
1693
- "data-testid": "go-back"
1694
- }, "try another way")))), /*#__PURE__*/external_react_default().createElement("div", {
1695
- className: login_passwordless_index_module.resend
1696
- }, "Didn\u2019t receive it? Check your spam/junk folder, or ", /*#__PURE__*/external_react_default().createElement("span", {
1697
- className: login_passwordless_index_module.link,
1698
- onClick: () => resendCode(),
1699
- "data-testid": "resend"
1700
- }, "resend email"), " now.")));
1701
- };
1702
-
1703
- /* harmony default export */ const login_passwordless = (PasswordlessLoginComponent);
1704
- ;// CONCATENATED MODULE: ./src/components/ticket-owned/index.module.scss
1705
- // extracted by mini-css-extract-plugin
1706
- /* harmony default export */ const ticket_owned_index_module = ({"ticketOwnedWrapper":"ticketOwnedWrapper___nhkDY","alert":"alert___c49oP"});
1707
- ;// CONCATENATED MODULE: ./src/components/ticket-owned/index.js
1708
- /**
1709
- * Copyright 2020 OpenStack Foundation
1710
- * Licensed under the Apache License, Version 2.0 (the "License");
1711
- * you may not use this file except in compliance with the License.
1712
- * You may obtain a copy of the License at
1713
- * http://www.apache.org/licenses/LICENSE-2.0
1714
- * Unless required by applicable law or agreed to in writing, software
1715
- * distributed under the License is distributed on an "AS IS" BASIS,
1716
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1717
- * See the License for the specific language governing permissions and
1718
- * limitations under the License.
1719
- **/
1720
-
1721
-
1722
-
1723
- const TicketOwnedComponent = ({
1724
- ownedTickets,
1725
- ticketTypes
1726
- }) => {
1727
- const ownedTicketsString = (0,external_react_namespaceObject.useMemo)(() => ownedTickets.reduce((acc, ownedTicket) => {
1728
- const ticketType = ticketTypes.find(type => type.id === ownedTicket.type_id);
1729
- if (!ticketType) return acc;
1730
- return `${acc}${acc ? ', ' : ''}${ownedTicket.qty} ${ticketType.name}${!ticketType.name.toLowerCase().endsWith('ticket') ? ' ticket' : ''}${ownedTicket.qty > 1 ? 's' : ''}`;
1731
- }, ''), [ownedTickets, ticketTypes]);
1732
- return /*#__PURE__*/external_react_default().createElement("div", {
1733
- className: ticket_owned_index_module.ticketOwnedWrapper
1734
- }, /*#__PURE__*/external_react_default().createElement("div", {
1735
- className: `${ticket_owned_index_module.alert} alert alert-warning`,
1736
- role: "alert"
1737
- }, "You have already ordered ", ownedTicketsString, ". If you would like to order more tickets, please do so below."));
1738
- };
1739
-
1740
- /* harmony default export */ const ticket_owned = (TicketOwnedComponent);
1741
- ;// CONCATENATED MODULE: ./src/components/registration-lite.js
1742
- const registration_lite_excluded = ["loadSession", "setMarketingSettings", "changeStep", "removeReservedTicket", "reserveTicket", "payTicket", "onPurchaseComplete", "getTicketTypes", "getTaxesTypes", "getLoginCode", "passwordlessLogin", "goToLogin", "loginOptions", "allowsNativeAuth", "allowsOtpAuth", "reservation", "checkout", "ticketTypes", "taxTypes", "step", "passwordlessCodeSent", "passwordlessEmail", "passwordlessCode", "getPasswordlessCode", "passwordlessCodeError", "loginWithCode", "goToExtraQuestions", "goToEvent", "goToRegistration", "profileData", "summitData", "supportEmail", "ticketOwned", "ownedTickets", "widgetLoading", "loading", "inPersonDisclaimer", "userProfile", "handleCompanyError"];
1743
-
1744
- function registration_lite_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1745
-
1746
- function registration_lite_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? registration_lite_ownKeys(Object(source), !0).forEach(function (key) { registration_lite_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : registration_lite_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1747
-
1748
- function registration_lite_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1749
-
1750
- function registration_lite_objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = registration_lite_objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
1751
-
1752
- function registration_lite_objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
1753
-
1754
- /**
1755
- * Copyright 2020 OpenStack Foundation
1756
- * Licensed under the Apache License, Version 2.0 (the "License");
1757
- * you may not use this file except in compliance with the License.
1758
- * You may obtain a copy of the License at
1759
- * http://www.apache.org/licenses/LICENSE-2.0
1760
- * Unless required by applicable law or agreed to in writing, software
1761
- * distributed under the License is distributed on an "AS IS" BASIS,
1762
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1763
- * See the License for the specific language governing permissions and
1764
- * limitations under the License.
1765
- **/
1766
-
1767
-
1768
-
1769
-
1770
-
1771
-
1772
-
1773
-
1774
-
1775
-
1776
-
1777
-
1778
-
1779
-
1780
-
1781
-
1782
-
1783
-
1784
- const RegistrationLite = _ref => {
1785
- var _formValues$ticketTyp, _formValues$ticketTyp2;
1786
-
1787
- let {
1788
- loadSession,
1789
- setMarketingSettings,
1790
- changeStep,
1791
- removeReservedTicket,
1792
- reserveTicket,
1793
- payTicket,
1794
- onPurchaseComplete,
1795
- getTicketTypes,
1796
- getTaxesTypes,
1797
- getLoginCode,
1798
- passwordlessLogin,
1799
- goToLogin,
1800
- loginOptions,
1801
- allowsNativeAuth,
1802
- allowsOtpAuth,
1803
- reservation,
1804
- checkout,
1805
- ticketTypes,
1806
- taxTypes,
1807
- step,
1808
- passwordlessCodeSent,
1809
- passwordlessEmail,
1810
- passwordlessCode,
1811
- getPasswordlessCode,
1812
- passwordlessCodeError,
1813
- loginWithCode,
1814
- goToExtraQuestions,
1815
- goToEvent,
1816
- goToRegistration,
1817
- profileData,
1818
- summitData,
1819
- supportEmail,
1820
- ticketOwned,
1821
- ownedTickets,
1822
- widgetLoading,
1823
- loading,
1824
- inPersonDisclaimer,
1825
- userProfile,
1826
- handleCompanyError
1827
- } = _ref,
1828
- rest = registration_lite_objectWithoutProperties(_ref, registration_lite_excluded);
1829
-
1830
- const [registrationForm, setRegistrationForm] = (0,external_react_namespaceObject.useState)({
1831
- values: {
1832
- ticketType: null,
1833
- ticketQuantity: 1,
1834
- personalInformation: null,
1835
- paymentInformation: null
1836
- },
1837
- errors: []
1838
- });
1839
- const {
1840
- values: formValues,
1841
- errors: formErrors
1842
- } = registrationForm;
1843
-
1844
- const setFormValues = values => setRegistrationForm(registration_lite_objectSpread(registration_lite_objectSpread({}, registrationForm), {}, {
1845
- values
1846
- }));
1847
-
1848
- const setFormErrors = errors => setRegistrationForm(registration_lite_objectSpread(registration_lite_objectSpread({}, registrationForm), {}, {
1849
- errors
1850
- }));
1851
-
1852
- let publicKey = null;
1853
-
1854
- for (let profile of summitData.payment_profiles) {
1855
- if (profile.application_type === 'Registration') {
1856
- publicKey = profile.test_mode_enabled ? profile.test_publishable_key : profile.live_publishable_key;
1857
- break;
1858
- }
1859
- }
1860
-
1861
- const stripePromise = (0,external_react_namespaceObject.useMemo)(() => (0,stripe_js_namespaceObject.loadStripe)(publicKey), [publicKey]);
1862
- (0,external_react_namespaceObject.useEffect)(() => {
1863
- loadSession(registration_lite_objectSpread(registration_lite_objectSpread({}, rest), {}, {
1864
- summitData,
1865
- profileData
1866
- }));
1867
-
1868
- if (!profileData) {
1869
- changeStep(0);
1870
- }
1871
- }, [profileData]);
1872
- (0,external_react_namespaceObject.useEffect)(() => {
1873
- if (summitData && profileData) {
1874
- getTicketTypes(summitData.id).then(() => getTaxesTypes(summitData.id));
1875
- }
1876
- }, [summitData, profileData]);
1877
- (0,external_react_namespaceObject.useEffect)(() => {
1878
- if (step === 1 && formValues !== null && formValues !== void 0 && formValues.ticketType && formValues !== null && formValues !== void 0 && formValues.personalInformation) {
1879
- reserveTicket({
1880
- personalInformation: formValues === null || formValues === void 0 ? void 0 : formValues.personalInformation,
1881
- ticket: formValues === null || formValues === void 0 ? void 0 : formValues.ticketType,
1882
- ticketQuantity: formValues === null || formValues === void 0 ? void 0 : formValues.ticketQuantity
1883
- }, {
1884
- onError: (err, res) => setFormErrors(res.body.errors)
1885
- });
1886
- }
1887
-
1888
- if (step > 0 && !(formValues !== null && formValues !== void 0 && formValues.ticketType)) {
1889
- changeStep(0);
1890
- }
1891
- }, [formValues]);
1892
- (0,external_react_namespaceObject.useEffect)(() => {
1893
- setFormErrors([]);
1894
- }, [step]);
1895
- const [ref, {
1896
- height
1897
- }] = (0,external_react_use_namespaceObject.useMeasure)();
1898
- const toggleAnimation = (0,external_react_spring_namespaceObject.useSpring)({
1899
- config: registration_lite_objectSpread({
1900
- bounce: 0
1901
- }, external_react_spring_namespaceObject.config.stiff),
1902
- to: {
1903
- opacity: (formValues === null || formValues === void 0 ? void 0 : (_formValues$ticketTyp = formValues.ticketType) === null || _formValues$ticketTyp === void 0 ? void 0 : _formValues$ticketTyp.cost) === 0 ? 0 : 1,
1904
- height: (formValues === null || formValues === void 0 ? void 0 : (_formValues$ticketTyp2 = formValues.ticketType) === null || _formValues$ticketTyp2 === void 0 ? void 0 : _formValues$ticketTyp2.cost) === 0 ? 0 : height
1905
- }
1906
- });
1907
-
1908
- const handleCloseClick = () => {
1909
- // Reset the step when closed to avoid unexpected behavior from `useEffect`s w/in other steps.
1910
- // (i.e., recalling `onPurchaseComplete` after a user completes one order, closes the window, and then reopens the registration widget)
1911
- changeStep(0);
1912
- rest.closeWidget();
1913
- };
1914
-
1915
- return /*#__PURE__*/external_react_default().createElement("div", {
1916
- id: "modal",
1917
- className: "modal is-active"
1918
- }, /*#__PURE__*/external_react_default().createElement("div", {
1919
- className: "modal-background"
1920
- }), /*#__PURE__*/external_react_default().createElement("div", {
1921
- className: "modal-content"
1922
- }, /*#__PURE__*/external_react_default().createElement((ajaxloader_default()), {
1923
- relative: true,
1924
- color: '#ffffff',
1925
- show: widgetLoading || loading,
1926
- size: 80
1927
- }), /*#__PURE__*/external_react_default().createElement("div", {
1928
- className: `${general_module.outerWrapper} summit-registration-lite`
1929
- }, /*#__PURE__*/external_react_default().createElement("div", {
1930
- className: general_module.innerWrapper
1931
- }, /*#__PURE__*/external_react_default().createElement("div", {
1932
- className: general_module.title
1933
- }, /*#__PURE__*/external_react_default().createElement("span", null, summitData.name), /*#__PURE__*/external_react_default().createElement("i", {
1934
- className: "fa fa-close",
1935
- "aria-label": "close",
1936
- onClick: handleCloseClick
1937
- })), /*#__PURE__*/external_react_default().createElement("div", {
1938
- className: general_module.stepsWrapper
1939
- }, !profileData && !passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login, {
1940
- options: loginOptions,
1941
- allowsNativeAuth: allowsNativeAuth,
1942
- allowsOtpAuth: allowsOtpAuth,
1943
- login: provider => rest.authUser(provider),
1944
- getLoginCode: getLoginCode,
1945
- getPasswordlessCode: getPasswordlessCode
1946
- }), !profileData && passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login_passwordless, {
1947
- codeLength: passwordlessCode,
1948
- email: passwordlessEmail,
1949
- passwordlessLogin: passwordlessLogin,
1950
- loginWithCode: loginWithCode,
1951
- codeError: passwordlessCodeError,
1952
- goToLogin: goToLogin,
1953
- getLoginCode: getLoginCode,
1954
- getPasswordlessCode: getPasswordlessCode
1955
- }), profileData && step !== 3 && ticketTypes.length > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, ticketOwned && /*#__PURE__*/external_react_default().createElement(ticket_owned, {
1956
- ownedTickets: ownedTickets,
1957
- ticketTypes: ticketTypes
1958
- }), /*#__PURE__*/external_react_default().createElement(ticket_type, {
1959
- ticketTypes: ticketTypes,
1960
- inPersonDisclaimer: inPersonDisclaimer,
1961
- taxTypes: taxTypes,
1962
- reservation: reservation,
1963
- isActive: step === 0,
1964
- changeForm: ticketForm => setFormValues(registration_lite_objectSpread(registration_lite_objectSpread({}, formValues), ticketForm))
1965
- }), /*#__PURE__*/external_react_default().createElement(personal_information, {
1966
- isActive: step === 1,
1967
- reservation: reservation,
1968
- userProfile: profileData,
1969
- summitId: summitData.id,
1970
- changeForm: personalInformation => setFormValues(registration_lite_objectSpread(registration_lite_objectSpread({}, formValues), {}, {
1971
- personalInformation
1972
- })),
1973
- handleCompanyError: handleCompanyError,
1974
- formErrors: formErrors
1975
- }), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
1976
- style: registration_lite_objectSpread({}, toggleAnimation)
1977
- }, /*#__PURE__*/external_react_default().createElement("div", {
1978
- ref: ref
1979
- }, /*#__PURE__*/external_react_default().createElement(payment, {
1980
- isActive: step === 2,
1981
- reservation: reservation,
1982
- payTicket: payTicket,
1983
- userProfile: profileData,
1984
- stripeKey: stripePromise
1985
- })))), profileData && step === 3 && /*#__PURE__*/external_react_default().createElement(purchase_complete, {
1986
- checkout: checkout,
1987
- summit: summitData,
1988
- onPurchaseComplete: onPurchaseComplete,
1989
- supportEmail: supportEmail,
1990
- goToEvent: goToEvent,
1991
- goToExtraQuestions: goToExtraQuestions
1992
- })), profileData && step !== 3 && /*#__PURE__*/external_react_default().createElement(button_bar, {
1993
- step: step,
1994
- inPersonDisclaimer: inPersonDisclaimer,
1995
- formValues: formValues,
1996
- removeReservedTicket: removeReservedTicket,
1997
- changeStep: changeStep
1998
- })))));
1999
- };
2000
-
2001
- const registration_lite_mapStateToProps = ({
2002
- registrationLiteState
2003
- }) => ({
2004
- widgetLoading: registrationLiteState.widgetLoading,
2005
- reservation: registrationLiteState.reservation,
2006
- userProfile: registrationLiteState.settings.userProfile,
2007
- checkout: registrationLiteState.checkout,
2008
- ticketTypes: registrationLiteState.ticketTypes,
2009
- taxTypes: registrationLiteState.taxTypes,
2010
- step: registrationLiteState.step,
2011
- passwordlessEmail: registrationLiteState.passwordless.email,
2012
- passwordlessCode: registrationLiteState.passwordless.otp_length,
2013
- passwordlessCodeSent: registrationLiteState.passwordless.code_sent,
2014
- passwordlessCodeError: registrationLiteState.passwordless.error
2015
- });
2016
-
2017
- /* harmony default export */ const registration_lite = ((0,external_react_redux_namespaceObject.connect)(registration_lite_mapStateToProps, {
2018
- loadSession: loadSession,
2019
- changeStep: changeStep,
2020
- reserveTicket: reserveTicket,
2021
- removeReservedTicket: removeReservedTicket,
2022
- payTicket: payTicket,
2023
- getTicketTypes: getTicketTypes,
2024
- getTaxesTypes: getTaxesTypes,
2025
- getLoginCode: getLoginCode,
2026
- passwordlessLogin: passwordlessLogin,
2027
- goToLogin: goToLogin
2028
- })(RegistrationLite));
2029
- ;// CONCATENATED MODULE: ./src/summit-registration-lite.js
2030
- /**
2031
- * Copyright 2017 OpenStack Foundation
2032
- * Licensed under the Apache License, Version 2.0 (the "License");
2033
- * you may not use this file except in compliance with the License.
2034
- * You may obtain a copy of the License at
2035
- * http://www.apache.org/licenses/LICENSE-2.0
2036
- * Unless required by applicable law or agreed to in writing, software
2037
- * distributed under the License is distributed on an "AS IS" BASIS,
2038
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2039
- * See the License for the specific language governing permissions and
2040
- * limitations under the License.
2041
- **/
2042
-
2043
-
2044
-
2045
-
2046
-
2047
-
2048
- class RegistrationLiteWidget extends (external_react_default()).PureComponent {
2049
- constructor(props) {
2050
- super(props);
2051
- this.store = getStore(props.clientId, props.apiBaseUrl, props.getAccessToken);
2052
- }
2053
-
2054
- render() {
2055
- return /*#__PURE__*/external_react_default().createElement(external_react_redux_namespaceObject.Provider, {
2056
- store: this.store
2057
- }, /*#__PURE__*/external_react_default().createElement(react_namespaceObject.PersistGate, {
2058
- persistor: getPersistor()
2059
- }, /*#__PURE__*/external_react_default().createElement(registration_lite, this.props)));
2060
- }
2061
-
2062
- }
2063
-
2064
- /* harmony default export */ const summit_registration_lite = (RegistrationLiteWidget);
2065
- /******/ return __webpack_exports__;
2066
- /******/ })()
2067
- ;
2068
- });