tf-checkout-react 1.0.85 → 1.0.89

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.
@@ -13,6 +13,7 @@ var _map = _interopDefault(require('lodash/map'));
13
13
  var _get = _interopDefault(require('lodash/get'));
14
14
  var _includes = _interopDefault(require('lodash/includes'));
15
15
  var _isEqual = _interopDefault(require('lodash/isEqual'));
16
+ var _isEmpty = _interopDefault(require('lodash/isEmpty'));
16
17
  var axios = _interopDefault(require('axios'));
17
18
  var _forEach = _interopDefault(require('lodash/forEach'));
18
19
  var material = require('@mui/material');
@@ -29,20 +30,21 @@ var Checkbox = _interopDefault(require('@mui/material/Checkbox'));
29
30
  var Select = _interopDefault(require('@mui/material/Select'));
30
31
  var MuiPhoneNumber = _interopDefault(require('material-ui-phone-number'));
31
32
  var styles$1 = require('@mui/material/styles');
33
+ var Backdrop = _interopDefault(require('@mui/material/Backdrop'));
32
34
  var Container = _interopDefault(require('@mui/material/Container'));
33
35
  var CircularProgress = _interopDefault(require('@mui/material/CircularProgress'));
34
36
  var Alert = _interopDefault(require('@mui/material/Alert'));
35
37
  var reactStripeJs = require('@stripe/react-stripe-js');
36
38
  var stripeJs = require('@stripe/stripe-js');
39
+ var Countdown$1 = _interopDefault(require('react-countdown'));
40
+ var _isNumber = _interopDefault(require('lodash/isNumber'));
37
41
  var reactShare = require('react-share');
38
42
  var _some = _interopDefault(require('lodash/some'));
39
43
  var _every = _interopDefault(require('lodash/every'));
40
44
  var _find = _interopDefault(require('lodash/find'));
41
- var _isEmpty = _interopDefault(require('lodash/isEmpty'));
42
45
  var Button$1 = _interopDefault(require('react-bootstrap/Button'));
43
46
  var jwt_decode = _interopDefault(require('jwt-decode'));
44
47
  var _sortBy = _interopDefault(require('lodash/sortBy'));
45
- var _has = _interopDefault(require('lodash/has'));
46
48
  var FormControl = _interopDefault(require('@mui/material/FormControl'));
47
49
  var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
48
50
  var SVG = _interopDefault(require('react-inlinesvg'));
@@ -57,6 +59,7 @@ var TableRow = _interopDefault(require('@mui/material/TableRow'));
57
59
  var Paper = _interopDefault(require('@mui/material/Paper'));
58
60
  var TablePagination = _interopDefault(require('@mui/material/TablePagination'));
59
61
  var Autocomplete = _interopDefault(require('@mui/material/Autocomplete'));
62
+ var _has = _interopDefault(require('lodash/has'));
60
63
 
61
64
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
62
65
  try {
@@ -1053,7 +1056,11 @@ var downloadPDF = function downloadPDF(pdfUrl) {
1053
1056
  });
1054
1057
  };
1055
1058
 
1056
- var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, logedInValues) {
1059
+ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, logedInValues, includeDob) {
1060
+ if (includeDob === void 0) {
1061
+ includeDob = false;
1062
+ }
1063
+
1057
1064
  var ticket_holders = [];
1058
1065
  var first_name = _get(logedInValues, 'firstName') || _get(logedInValues, 'first_name') || '';
1059
1066
  var last_name = _get(logedInValues, 'lastName', '') || _get(logedInValues, 'last_name') || '';
@@ -1086,6 +1093,14 @@ var createCheckoutDataBodyWithDefaultHolder = function createCheckoutDataBodyWit
1086
1093
  ticket_holders: ticket_holders
1087
1094
  })
1088
1095
  };
1096
+
1097
+ if (includeDob) {
1098
+ var holderAgeDate = new Date(_get(logedInValues, 'holderAge', ''));
1099
+ body.attributes.dob_day = holderAgeDate.getDate();
1100
+ body.attributes.dob_month = holderAgeDate.getMonth() + 1;
1101
+ body.attributes.dob_year = holderAgeDate.getFullYear();
1102
+ }
1103
+
1089
1104
  return body;
1090
1105
  };
1091
1106
 
@@ -1110,9 +1125,16 @@ publicRequest.interceptors.response.use(function (response) {
1110
1125
 
1111
1126
  if ((error == null ? void 0 : (_error$response = error.response) == null ? void 0 : _error$response.status) === 401) {
1112
1127
  if (isWindowDefined) {
1128
+ var _error$response2, _error$response2$data;
1129
+
1113
1130
  window.localStorage.removeItem('auth_guest_token');
1114
1131
  window.localStorage.removeItem('user_data');
1115
1132
  window.localStorage.removeItem('access_token');
1133
+ var errorType = error == null ? void 0 : (_error$response2 = error.response) == null ? void 0 : (_error$response2$data = _error$response2.data) == null ? void 0 : _error$response2$data.error;
1134
+
1135
+ if (errorType === 'invalid_token') {
1136
+ window.location.href = '/';
1137
+ }
1116
1138
  }
1117
1139
  }
1118
1140
 
@@ -1259,17 +1281,6 @@ var getProfileData = function getProfileData(accessToken) {
1259
1281
  Authorization: "Bearer " + accessToken
1260
1282
  })
1261
1283
  })["catch"](function (e) {
1262
- var _e$response, _e$response$data;
1263
-
1264
- var errorType = e == null ? void 0 : (_e$response = e.response) == null ? void 0 : (_e$response$data = _e$response.data) == null ? void 0 : _e$response$data.error;
1265
-
1266
- if (isWindowDefined) {
1267
- var event = new window.CustomEvent('auth_error', {
1268
- detail: errorType
1269
- });
1270
- window.document.dispatchEvent(event);
1271
- }
1272
-
1273
1284
  return e;
1274
1285
  });
1275
1286
  };
@@ -1912,7 +1923,8 @@ var CustomField = function CustomField(_ref) {
1912
1923
  }
1913
1924
  },
1914
1925
  InputLabelProps: {
1915
- sx: customTheme == null ? void 0 : customTheme.input
1926
+ sx: customTheme == null ? void 0 : customTheme.input,
1927
+ shrink: field.name === 'holderAge' ? true : undefined
1916
1928
  },
1917
1929
  inputProps: {
1918
1930
  sx: customTheme == null ? void 0 : customTheme.input
@@ -2188,7 +2200,7 @@ var LogicRunner = function LogicRunner(_ref) {
2188
2200
  confirmEmail: (parsedData == null ? void 0 : parsedData.email) || '',
2189
2201
  state: (parsedData == null ? void 0 : parsedData.state) || '',
2190
2202
  street_address: (parsedData == null ? void 0 : parsedData.street_address) || '',
2191
- country: (parsedData == null ? void 0 : parsedData.country) || "1",
2203
+ country: (parsedData == null ? void 0 : parsedData.country) || '1',
2192
2204
  zip: (parsedData == null ? void 0 : parsedData.zip) || '',
2193
2205
  brand_opt_in: (parsedData == null ? void 0 : parsedData.brand_opt_in) || '',
2194
2206
  city: (parsedData == null ? void 0 : parsedData.city) || '',
@@ -2262,7 +2274,15 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2262
2274
  hideLogo = _ref3.hideLogo,
2263
2275
  themeOptions = _ref3.themeOptions,
2264
2276
  _ref3$onErrorClose = _ref3.onErrorClose,
2265
- onErrorClose = _ref3$onErrorClose === void 0 ? function () {} : _ref3$onErrorClose;
2277
+ onErrorClose = _ref3$onErrorClose === void 0 ? function () {} : _ref3$onErrorClose,
2278
+ _ref3$hideErrorsAlert = _ref3.hideErrorsAlertSection,
2279
+ hideErrorsAlertSection = _ref3$hideErrorsAlert === void 0 ? false : _ref3$hideErrorsAlert,
2280
+ _ref3$onSkipBillingPa = _ref3.onSkipBillingPage,
2281
+ onSkipBillingPage = _ref3$onSkipBillingPa === void 0 ? function () {} : _ref3$onSkipBillingPa,
2282
+ _ref3$skipPage = _ref3.skipPage,
2283
+ skipPage = _ref3$skipPage === void 0 ? false : _ref3$skipPage,
2284
+ _ref3$canSkipHolderNa = _ref3.canSkipHolderNames,
2285
+ canSkipHolderNames = _ref3$canSkipHolderNa === void 0 ? false : _ref3$canSkipHolderNa;
2266
2286
 
2267
2287
  var themeMui = styles$1.createTheme(themeOptions);
2268
2288
  var isWindowDefined = typeof window !== 'undefined';
@@ -2327,9 +2347,13 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2327
2347
  userValues = _useState11[0],
2328
2348
  setUserValues = _useState11[1];
2329
2349
 
2330
- var _useState12 = React.useState(null),
2331
- error = _useState12[0],
2332
- setError = _useState12[1];
2350
+ var _useState12 = React.useState(true),
2351
+ loading = _useState12[0],
2352
+ setLoading = _useState12[1];
2353
+
2354
+ var _useState13 = React.useState(null),
2355
+ error = _useState13[0],
2356
+ setError = _useState13[1];
2333
2357
 
2334
2358
  var emailLogged = _get(userData, 'email', '') || _get(userValues, 'email', '');
2335
2359
 
@@ -2338,6 +2362,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2338
2362
  var lastNameLogged = _get(userData, 'last_name', '') || _get(userValues, 'last_name', '');
2339
2363
 
2340
2364
  var showDOB = getQueryVariable('age_required') === 'true';
2365
+ var showTicketHolders = getQueryVariable('names_required') === 'true';
2341
2366
  var eventId = getQueryVariable('event_id');
2342
2367
 
2343
2368
  var optedInFieldValue = _get(cartInfoData, 'optedIn', false);
@@ -2374,19 +2399,6 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2374
2399
  return qty;
2375
2400
  };
2376
2401
 
2377
- var handleAuthErrors = React.useCallback(function (e) {
2378
- setIsLoggedIn(false);
2379
-
2380
- if (isWindowDefined && (e == null ? void 0 : e.detail) === 'invalid_token') {
2381
- window.location.href = '/';
2382
- }
2383
- }, []);
2384
- React.useEffect(function () {
2385
- isWindowDefined && window.document.addEventListener('auth_error', handleAuthErrors);
2386
- return function () {
2387
- isWindowDefined && window.document.removeEventListener('auth_error', handleAuthErrors);
2388
- };
2389
- }, [handleAuthErrors]);
2390
2402
  React.useEffect(function () {
2391
2403
  if ((pIsLoggedIn || access_token) && !isLoggedIn) {
2392
2404
  setIsLoggedIn(true);
@@ -2548,41 +2560,106 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2548
2560
  React.useEffect(function () {
2549
2561
  fetchUserData(access_token);
2550
2562
  }, [access_token]);
2563
+ React.useEffect(function () {
2564
+ var collectPaymentData = /*#__PURE__*/function () {
2565
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee5() {
2566
+ var checkoutBody, res;
2567
+ return runtime_1.wrap(function _callee5$(_context5) {
2568
+ while (1) {
2569
+ switch (_context5.prev = _context5.next) {
2570
+ case 0:
2571
+ if (!(skipPage && !_isEmpty(ticketsQuantity))) {
2572
+ _context5.next = 16;
2573
+ break;
2574
+ }
2575
+
2576
+ setLoading(true);
2577
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity.length, userData);
2578
+ _context5.prev = 3;
2579
+ _context5.next = 6;
2580
+ return postOnCheckout(checkoutBody, access_token);
2581
+
2582
+ case 6:
2583
+ res = _context5.sent;
2584
+ onSkipBillingPage(_get(res, 'data.data.attributes'));
2585
+ setLoading(false);
2586
+ _context5.next = 14;
2587
+ break;
2588
+
2589
+ case 11:
2590
+ _context5.prev = 11;
2591
+ _context5.t0 = _context5["catch"](3);
2592
+ onSubmitError(_context5.t0);
2593
+
2594
+ case 14:
2595
+ _context5.next = 17;
2596
+ break;
2597
+
2598
+ case 16:
2599
+ setLoading(false);
2600
+
2601
+ case 17:
2602
+ case "end":
2603
+ return _context5.stop();
2604
+ }
2605
+ }
2606
+ }, _callee5, null, [[3, 11]]);
2607
+ }));
2608
+
2609
+ return function collectPaymentData() {
2610
+ return _ref7.apply(this, arguments);
2611
+ };
2612
+ }();
2613
+
2614
+ collectPaymentData();
2615
+ }, [skipPage, ticketsQuantity]); // Displaying loader
2616
+
2617
+ if (loading) {
2618
+ return React__default.createElement(Backdrop, {
2619
+ sx: {
2620
+ color: '#fff'
2621
+ },
2622
+ open: true
2623
+ }, React__default.createElement(material.CircularProgress, {
2624
+ color: "inherit"
2625
+ }));
2626
+ }
2627
+
2551
2628
  return React__default.createElement(styles$1.ThemeProvider, {
2552
2629
  theme: themeMui
2553
2630
  }, React__default.createElement(formik.Formik, {
2554
2631
  initialValues: getInitialValues(dataWithUniqueIds, _extends({}, initialValues, {
2555
- country: _get(userData, 'country', '') || "1",
2556
- state: _get(userData, 'state', '') || "1",
2632
+ country: _get(userData, 'country', '') || '1',
2633
+ state: _get(userData, 'state', '') || '1',
2557
2634
  brand_opt_in: optedInFieldValue,
2558
2635
  ttf_opt_in: ttfOptIn
2559
2636
  }), userValues),
2560
2637
  enableReinitialize: true,
2561
2638
  onSubmit: function () {
2562
- var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee5(values, formikHelpers) {
2639
+ var _onSubmit = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee6(values, formikHelpers) {
2563
2640
  var updatedUserData, _profileSpecifiedData, _profileDataObj, _checkoutBody, _res, checkoutBodyForRegistration, bodyFormData, access_token_register, resRegister, refreshToken, tokens, _e$response, _e$response$data, _error, profileData, profileSpecifiedData, profileDataObj, checkoutBody, res, _e$response2, _e$response3;
2564
2641
 
2565
- return runtime_1.wrap(function _callee5$(_context5) {
2642
+ return runtime_1.wrap(function _callee6$(_context6) {
2566
2643
  while (1) {
2567
- switch (_context5.prev = _context5.next) {
2644
+ switch (_context6.prev = _context6.next) {
2568
2645
  case 0:
2569
- _context5.prev = 0;
2646
+ _context6.prev = 0;
2570
2647
 
2571
2648
  if (!isLoggedIn) {
2572
- _context5.next = 17;
2649
+ _context6.next = 18;
2573
2650
  break;
2574
2651
  }
2575
2652
 
2576
2653
  if (!access_token) {
2577
- _context5.next = 9;
2654
+ _context6.next = 9;
2578
2655
  break;
2579
2656
  }
2580
2657
 
2581
- _context5.next = 5;
2658
+ _context6.next = 5;
2582
2659
  return getProfileData(access_token);
2583
2660
 
2584
2661
  case 5:
2585
- updatedUserData = _context5.sent;
2662
+ updatedUserData = _context6.sent;
2586
2663
  _profileSpecifiedData = _get(updatedUserData, 'data.data');
2587
2664
  _profileDataObj = setLoggedUserData(_profileSpecifiedData);
2588
2665
 
@@ -2591,24 +2668,31 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2591
2668
  }
2592
2669
 
2593
2670
  case 9:
2594
- _checkoutBody = createCheckoutDataBody(ticketsQuantity.length, values, {
2595
- emailLogged: emailLogged,
2596
- firstNameLogged: firstNameLogged,
2597
- lastNameLogged: lastNameLogged
2598
- }, showDOB);
2599
- _context5.next = 12;
2671
+ _checkoutBody = {}; // Auto collect ticket holders name when it was skipped optionally
2672
+
2673
+ if (showDOB && !showTicketHolders && canSkipHolderNames) {
2674
+ _checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity.length, values, true);
2675
+ } else {
2676
+ _checkoutBody = createCheckoutDataBody(ticketsQuantity.length, values, {
2677
+ emailLogged: emailLogged,
2678
+ firstNameLogged: firstNameLogged,
2679
+ lastNameLogged: lastNameLogged
2680
+ }, showDOB);
2681
+ }
2682
+
2683
+ _context6.next = 13;
2600
2684
  return postOnCheckout(_checkoutBody, access_token);
2601
2685
 
2602
- case 12:
2603
- _res = _context5.sent;
2604
- _context5.next = 15;
2686
+ case 13:
2687
+ _res = _context6.sent;
2688
+ _context6.next = 16;
2605
2689
  return getPaymentData(_res.data.data.attributes.hash);
2606
2690
 
2607
- case 15:
2691
+ case 16:
2608
2692
  handleSubmit(values, formikHelpers, eventId, _res);
2609
- return _context5.abrupt("return");
2693
+ return _context6.abrupt("return");
2610
2694
 
2611
- case 17:
2695
+ case 18:
2612
2696
  checkoutBodyForRegistration = createCheckoutDataBody(ticketsQuantity.length, values, {
2613
2697
  emailLogged: emailLogged,
2614
2698
  firstNameLogged: firstNameLogged,
@@ -2616,12 +2700,12 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2616
2700
  }, showDOB);
2617
2701
  bodyFormData = createRegisterFormData(values, checkoutBodyForRegistration);
2618
2702
  access_token_register = null;
2619
- _context5.prev = 20;
2620
- _context5.next = 23;
2703
+ _context6.prev = 21;
2704
+ _context6.next = 24;
2621
2705
  return register(bodyFormData);
2622
2706
 
2623
- case 23:
2624
- resRegister = _context5.sent;
2707
+ case 24:
2708
+ resRegister = _context6.sent;
2625
2709
  access_token_register = _get(resRegister, 'data.data.attributes.access_token');
2626
2710
  refreshToken = _get(resRegister, 'data.data.attributes.refresh_token');
2627
2711
  handleSetAccessToken(access_token_register);
@@ -2630,15 +2714,15 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2630
2714
  refreshToken: refreshToken
2631
2715
  };
2632
2716
  onRegisterSuccess(tokens);
2633
- _context5.next = 35;
2717
+ _context6.next = 36;
2634
2718
  break;
2635
2719
 
2636
- case 31:
2637
- _context5.prev = 31;
2638
- _context5.t0 = _context5["catch"](20);
2720
+ case 32:
2721
+ _context6.prev = 32;
2722
+ _context6.t0 = _context6["catch"](21);
2639
2723
 
2640
- if (axios.isAxiosError(_context5.t0)) {
2641
- _error = _context5.t0 == null ? void 0 : (_e$response = _context5.t0.response) == null ? void 0 : (_e$response$data = _e$response.data) == null ? void 0 : _e$response$data.message;
2724
+ if (axios.isAxiosError(_context6.t0)) {
2725
+ _error = _context6.t0 == null ? void 0 : (_e$response = _context6.t0.response) == null ? void 0 : (_e$response$data = _e$response.data) == null ? void 0 : _e$response$data.message;
2642
2726
 
2643
2727
  if (_includes(_error, 'You must be aged')) {
2644
2728
  formikHelpers.setFieldError('holderAge', _error);
@@ -2655,17 +2739,17 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2655
2739
  setShowModalLogin(true);
2656
2740
  }
2657
2741
 
2658
- onRegisterError(_context5.t0, values.email);
2742
+ onRegisterError(_context6.t0, values.email);
2659
2743
  }
2660
2744
 
2661
- return _context5.abrupt("return");
2745
+ return _context6.abrupt("return");
2662
2746
 
2663
- case 35:
2664
- _context5.next = 37;
2747
+ case 36:
2748
+ _context6.next = 38;
2665
2749
  return getProfileData(access_token_register);
2666
2750
 
2667
- case 37:
2668
- profileData = _context5.sent;
2751
+ case 38:
2752
+ profileData = _context6.sent;
2669
2753
  profileSpecifiedData = _get(profileData, 'data.data');
2670
2754
  profileDataObj = setLoggedUserData(profileSpecifiedData);
2671
2755
 
@@ -2678,25 +2762,25 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2678
2762
  firstNameLogged: firstNameLogged,
2679
2763
  lastNameLogged: lastNameLogged
2680
2764
  }, showDOB);
2681
- _context5.next = 44;
2765
+ _context6.next = 45;
2682
2766
  return postOnCheckout(checkoutBody, access_token_register);
2683
2767
 
2684
- case 44:
2685
- res = _context5.sent;
2686
- _context5.next = 47;
2768
+ case 45:
2769
+ res = _context6.sent;
2770
+ _context6.next = 48;
2687
2771
  return getPaymentData(res.data.data.attributes.hash);
2688
2772
 
2689
- case 47:
2773
+ case 48:
2690
2774
  handleSubmit(values, formikHelpers, eventId, res);
2691
- _context5.next = 53;
2775
+ _context6.next = 54;
2692
2776
  break;
2693
2777
 
2694
- case 50:
2695
- _context5.prev = 50;
2696
- _context5.t1 = _context5["catch"](0);
2778
+ case 51:
2779
+ _context6.prev = 51;
2780
+ _context6.t1 = _context6["catch"](0);
2697
2781
 
2698
- if (axios.isAxiosError(_context5.t1)) {
2699
- if (((_e$response2 = _context5.t1.response) == null ? void 0 : _e$response2.data.error) === 'invalid_token') {
2782
+ if (axios.isAxiosError(_context6.t1)) {
2783
+ if (((_e$response2 = _context6.t1.response) == null ? void 0 : _e$response2.data.error) === 'invalid_token') {
2700
2784
  if (isWindowDefined) {
2701
2785
  window.localStorage.removeItem('user_data');
2702
2786
  window.localStorage.removeItem('access_token');
@@ -2705,23 +2789,23 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2705
2789
  }
2706
2790
  }
2707
2791
 
2708
- if ((_e$response3 = _context5.t1.response) != null && _e$response3.data.message) {
2792
+ if ((_e$response3 = _context6.t1.response) != null && _e$response3.data.message) {
2709
2793
  if (typeof document !== undefined) {
2710
2794
  document.body.scrollTop = document.documentElement.scrollTop = 0;
2711
2795
  }
2712
2796
 
2713
- setError(_get(_context5.t1, 'response.data.message'));
2797
+ setError(_get(_context6.t1, 'response.data.message'));
2714
2798
  }
2715
2799
 
2716
- onSubmitError(_context5.t1);
2800
+ onSubmitError(_context6.t1);
2717
2801
  }
2718
2802
 
2719
- case 53:
2803
+ case 54:
2720
2804
  case "end":
2721
- return _context5.stop();
2805
+ return _context6.stop();
2722
2806
  }
2723
2807
  }
2724
- }, _callee5, null, [[0, 50], [20, 31]]);
2808
+ }, _callee6, null, [[0, 51], [21, 32]]);
2725
2809
  }));
2726
2810
 
2727
2811
  function onSubmit(_x2, _x3) {
@@ -2743,7 +2827,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2743
2827
  onGetStatesError: onGetStatesError
2744
2828
  }), React__default.createElement("div", {
2745
2829
  className: "billing-info-container " + theme
2746
- }, error && React__default.createElement(material.Alert, {
2830
+ }, error && !hideErrorsAlertSection && React__default.createElement(material.Alert, {
2747
2831
  severity: "error",
2748
2832
  onClose: onErrorClose,
2749
2833
  variant: "filled"
@@ -2810,7 +2894,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref3) {
2810
2894
  })));
2811
2895
  })));
2812
2896
  }));
2813
- }), React__default.createElement("div", {
2897
+ }), !_isEmpty(ticketHoldersFields.fields) && React__default.createElement("div", {
2814
2898
  className: "ticket-holders-fields"
2815
2899
  }, React__default.createElement("p", null, ticketHoldersFields.label), _map(ticketsQuantity, function (_item, index) {
2816
2900
  return React__default.createElement("div", {
@@ -3149,6 +3233,63 @@ var CheckoutForm = function CheckoutForm(_ref) {
3149
3233
  }) : "Pay " + getCurrencySymbolByCurrency(currency) + total))));
3150
3234
  };
3151
3235
 
3236
+ var showZero = function showZero(value) {
3237
+ if (value === void 0) {
3238
+ value = 0;
3239
+ }
3240
+
3241
+ var intNumber = Number(value);
3242
+ return _isNumber(intNumber) ? intNumber >= 0 && intNumber < 10 ? '0' + intNumber : intNumber : null;
3243
+ };
3244
+
3245
+ var TimerWidget = function TimerWidget(_ref) {
3246
+ var expires_at = _ref.expires_at,
3247
+ buyLoading = _ref.buyLoading,
3248
+ _ref$onCountdownFinis = _ref.onCountdownFinish,
3249
+ onCountdownFinish = _ref$onCountdownFinis === void 0 ? function () {} : _ref$onCountdownFinis;
3250
+
3251
+ var _useState = React.useState(true),
3252
+ showTimer = _useState[0],
3253
+ setShowTimer = _useState[1];
3254
+
3255
+ var handleCountdownFinish = function handleCountdownFinish() {
3256
+ setShowTimer(false);
3257
+
3258
+ if (!buyLoading) {
3259
+ onCountdownFinish();
3260
+ }
3261
+ };
3262
+
3263
+ var _renderer = function renderer(_ref2) {
3264
+ var minutes = _ref2.minutes,
3265
+ seconds = _ref2.seconds,
3266
+ completed = _ref2.completed,
3267
+ handleCountdownFinish = _ref2.handleCountdownFinish;
3268
+
3269
+ if (completed) {
3270
+ handleCountdownFinish();
3271
+ return null;
3272
+ }
3273
+
3274
+ return React__default.createElement("span", null, showZero(minutes), ":", showZero(seconds));
3275
+ };
3276
+
3277
+ return showTimer && !!expires_at ? React__default.createElement("div", {
3278
+ className: "timer"
3279
+ }, React__default.createElement("div", {
3280
+ className: "toast-message"
3281
+ }, React__default.createElement("p", null, "Please complete your purchase before the timer reaches zero."), React__default.createElement("p", {
3282
+ className: "countdown"
3283
+ }, React__default.createElement(Countdown$1, {
3284
+ date: Date.now() + expires_at * 1000,
3285
+ renderer: function renderer(props) {
3286
+ return _renderer(_extends({}, props, {
3287
+ handleCountdownFinish: handleCountdownFinish
3288
+ }));
3289
+ }
3290
+ })))) : null;
3291
+ };
3292
+
3152
3293
  var publishableKey = CONFIGS.STRIPE_PUBLISHABLE_KEY || '';
3153
3294
 
3154
3295
  var getStripePromise = function getStripePromise(reviewData) {
@@ -3209,7 +3350,11 @@ var PaymentContainer = function PaymentContainer(_ref) {
3209
3350
  _ref$disableZipSectio = _ref.disableZipSection,
3210
3351
  disableZipSection = _ref$disableZipSectio === void 0 ? false : _ref$disableZipSectio,
3211
3352
  themeOptions = _ref.themeOptions,
3212
- elementsOptions = _ref.elementsOptions;
3353
+ elementsOptions = _ref.elementsOptions,
3354
+ _ref$onCountdownFinis = _ref.onCountdownFinish,
3355
+ onCountdownFinish = _ref$onCountdownFinis === void 0 ? function () {} : _ref$onCountdownFinis,
3356
+ _ref$enableTimer = _ref.enableTimer,
3357
+ enableTimer = _ref$enableTimer === void 0 ? false : _ref$enableTimer;
3213
3358
 
3214
3359
  var _useState = React.useState(initialReviewValues),
3215
3360
  reviewData = _useState[0],
@@ -3398,7 +3543,11 @@ var PaymentContainer = function PaymentContainer(_ref) {
3398
3543
  theme: themeMui
3399
3544
  }, React__default.createElement("div", {
3400
3545
  className: "payment_page"
3401
- }, error && React__default.createElement(Alert, {
3546
+ }, !paymentIsLoading && !error && enableTimer && React__default.createElement(TimerWidget, {
3547
+ expires_at: _get(reviewData, 'expires_at', 0),
3548
+ buyLoading: paymentIsLoading,
3549
+ onCountdownFinish: onCountdownFinish
3550
+ }), error && React__default.createElement(Alert, {
3402
3551
  severity: "error",
3403
3552
  onClose: onErrorClose,
3404
3553
  variant: "filled"
@@ -3821,9 +3970,10 @@ var TicketRow = function TicketRow(_ref) {
3821
3970
  selectedTickets = _ref.selectedTickets,
3822
3971
  handleTicketSelect = _ref.handleTicketSelect;
3823
3972
  var soldOutMessage = ticketTier.soldOutMessage ? ("" + ticketTier.soldOutMessage).toUpperCase() : 'SOLD OUT';
3824
- var isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded || !_has(ticketTier, 'maxQuantity') || ticketTier.maxQuantity === 0;
3973
+ var isSalesClosed = !ticketTier.salesStarted || ticketTier.salesEnded;
3825
3974
  var options = getTicketSelectOptions(ticketTier.maxQuantity, ticketTier.minQuantity, ticketTier.multiplier);
3826
- var onSaleContent = isSalesClosed ? null : React__default.createElement("div", {
3975
+ var ticketsClosedMessage = !ticketTier.salesStarted ? 'Sales not started' : 'Sales Ended';
3976
+ var onSaleContent = isSalesClosed ? ticketsClosedMessage : React__default.createElement("div", {
3827
3977
  className: "get-tickets"
3828
3978
  }, React__default.createElement(Box, {
3829
3979
  className: "get-tickets__selectbox"
@@ -3859,10 +4009,6 @@ var TicketRow = function TicketRow(_ref) {
3859
4009
  returnValue = soldOutMessage;
3860
4010
  }
3861
4011
 
3862
- if (!+ticketTier.cost && !+ticketTier.price) {
3863
- returnValue = 'FREE';
3864
- }
3865
-
3866
4012
  if (ticketTier.displayTicket) {
3867
4013
  returnValue = onSaleContent;
3868
4014
  }
@@ -3896,6 +4042,8 @@ var TicketsSection = function TicketsSection(_ref) {
3896
4042
  ticketIsDiscounted = true;
3897
4043
  }
3898
4044
 
4045
+ var ticketIsFree = (+ticket.cost || +ticket.price) === 0;
4046
+ var ticketPrice = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : "$ " + (+ticket.cost || +ticket.price).toFixed(2);
3899
4047
  return React__default.createElement("div", {
3900
4048
  key: ticket.id || ticket.name,
3901
4049
  className: "event-detail__tier " + (isSoldOut ? 'disabled' : '')
@@ -3907,21 +4055,19 @@ var TicketsSection = function TicketsSection(_ref) {
3907
4055
  className: "event-detail__tier-price"
3908
4056
  }, ticketIsDiscounted && React__default.createElement("p", {
3909
4057
  className: "old-price"
3910
- }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", null, isSoldOut ? 'SOLD OUT' : "$ " + (+ticket.cost || +ticket.price).toFixed(2)), !isSoldOut && React__default.createElement("p", {
4058
+ }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", null, ticketPrice), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
3911
4059
  className: "fees"
3912
4060
  }, ticket.taxesIncluded ? '(incl. Fees)' : '(excl. Fees)')), React__default.createElement("div", {
3913
4061
  className: "event-detail__tier-state",
3914
4062
  style: {
3915
4063
  minWidth: 55
3916
4064
  }
3917
- }, ticket.salesStarted ? React__default.createElement(TicketRow, {
4065
+ }, React__default.createElement(TicketRow, {
3918
4066
  ticketTier: ticket,
3919
4067
  prevTicketTier: arr[i - 1],
3920
4068
  selectedTickets: selectedTickets,
3921
4069
  handleTicketSelect: ticketSelect
3922
- }) : React__default.createElement("p", {
3923
- className: 'ticket-not-started-message'
3924
- }, "Sales not started"))));
4070
+ }))));
3925
4071
  }));
3926
4072
  };
3927
4073
 
@@ -3942,6 +4088,8 @@ var WaitingList = function WaitingList(_ref) {
3942
4088
  var _ref$tickets = _ref.tickets,
3943
4089
  tickets = _ref$tickets === void 0 ? {} : _ref$tickets,
3944
4090
  eventId = _ref.eventId;
4091
+ var isWindowDefined = typeof window !== 'undefined';
4092
+ var userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
3945
4093
 
3946
4094
  var _useState = React.useState(false),
3947
4095
  showSuccessMessage = _useState[0],
@@ -4020,9 +4168,9 @@ var WaitingList = function WaitingList(_ref) {
4020
4168
  initialValues: {
4021
4169
  ticketTypeId: '',
4022
4170
  quantity: '',
4023
- firstName: '',
4024
- lastName: '',
4025
- email: ''
4171
+ firstName: userData.first_name || '',
4172
+ lastName: userData.last_name || '',
4173
+ email: userData.email || ''
4026
4174
  },
4027
4175
  onSubmit: handleSubmit
4028
4176
  }, React__default.createElement(formik.Form, null, React__default.createElement(ErrorFocus, null), showTicketsField && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
@@ -4267,7 +4415,9 @@ var TicketsContainer = function TicketsContainer(_ref) {
4267
4415
  _ref$isAccessCodeEnab = _ref.isAccessCodeEnabled,
4268
4416
  isAccessCodeEnabled = _ref$isAccessCodeEnab === void 0 ? false : _ref$isAccessCodeEnab,
4269
4417
  _ref$hideSessionButto = _ref.hideSessionButtons,
4270
- hideSessionButtons = _ref$hideSessionButto === void 0 ? false : _ref$hideSessionButto;
4418
+ hideSessionButtons = _ref$hideSessionButto === void 0 ? false : _ref$hideSessionButto,
4419
+ _ref$hideWaitingList = _ref.hideWaitingList,
4420
+ hideWaitingList = _ref$hideWaitingList === void 0 ? false : _ref$hideWaitingList;
4271
4421
 
4272
4422
  var _useState = React.useState({}),
4273
4423
  selectedTickets = _useState[0],
@@ -4307,7 +4457,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4307
4457
  promoCode = _useState8[0],
4308
4458
  setPromoCode = _useState8[1];
4309
4459
 
4310
- var _useState9 = React.useState(queryPromoCode),
4460
+ var _useState9 = React.useState(getQueryVariable('r') || queryPromoCode),
4311
4461
  promoCodeUpdated = _useState9[0],
4312
4462
  setPromoCodeUpdated = _useState9[1];
4313
4463
 
@@ -4334,7 +4484,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4334
4484
  }
4335
4485
  }, []);
4336
4486
  React.useEffect(function () {
4337
- getTicketsApi();
4487
+ !!eventId && getTicketsApi();
4338
4488
  }, [eventId, promoCodeUpdated]);
4339
4489
 
4340
4490
  var handleLogout = function handleLogout() {
@@ -4454,7 +4604,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4454
4604
  var _ref3 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
4455
4605
  var _product_options, _product_options2, _ticket_types;
4456
4606
 
4457
- var ticket, optionName, ticketId, ticketQuantity, data, result, _result$data$data$att, _result$data, _result$data$data, _result$data$data$att2, _result$data$data$att3, _result$data2, _result$data2$data, _result$data2$data$at, _result$data$data$att4, _result$data3, _result$data3$data, _result$data3$data$at, skipBillingPage, nameIsRequired, ageIsRequired, hash, _isWindowDefined, userData, access_token, ticketsQuantity, checkoutBody, checkoutResult;
4607
+ var ticket, optionName, ticketId, ticketQuantity, data, result, _result$data$data$att, _result$data, _result$data$data, _result$data$data$att2, _result$data$data$att3, _result$data2, _result$data2$data, _result$data2$data$at, _result$data$data$att4, _result$data3, _result$data3$data, _result$data3$data$at, skipBillingPage, nameIsRequired, ageIsRequired, hash, _isWindowDefined, userData, access_token, checkoutBody, checkoutResult;
4458
4608
 
4459
4609
  return runtime_1.wrap(function _callee$(_context) {
4460
4610
  while (1) {
@@ -4487,7 +4637,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4487
4637
  result = _context.sent;
4488
4638
 
4489
4639
  if (!(result.status === 200)) {
4490
- _context.next = 27;
4640
+ _context.next = 26;
4491
4641
  break;
4492
4642
  }
4493
4643
 
@@ -4498,7 +4648,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4498
4648
  hash = '';
4499
4649
 
4500
4650
  if (!skipBillingPage) {
4501
- _context.next = 26;
4651
+ _context.next = 25;
4502
4652
  break;
4503
4653
  }
4504
4654
 
@@ -4506,16 +4656,15 @@ var TicketsContainer = function TicketsContainer(_ref) {
4506
4656
  _isWindowDefined = typeof window !== 'undefined';
4507
4657
  userData = _isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
4508
4658
  access_token = _isWindowDefined && window.localStorage.getItem('access_token') ? window.localStorage.getItem('access_token') || '' : '';
4509
- ticketsQuantity = Object.keys(selectedTickets).length;
4510
- checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketsQuantity, userData);
4511
- _context.next = 24;
4659
+ checkoutBody = createCheckoutDataBodyWithDefaultHolder(ticketQuantity, userData);
4660
+ _context.next = 23;
4512
4661
  return postOnCheckout(checkoutBody, access_token);
4513
4662
 
4514
- case 24:
4663
+ case 23:
4515
4664
  checkoutResult = _context.sent;
4516
4665
  hash = _get(checkoutResult, 'data.data.attributes.hash');
4517
4666
 
4518
- case 26:
4667
+ case 25:
4519
4668
  onAddToCartSuccess({
4520
4669
  skip_billing_page: skipBillingPage,
4521
4670
  names_required: nameIsRequired,
@@ -4524,29 +4673,29 @@ var TicketsContainer = function TicketsContainer(_ref) {
4524
4673
  hash: hash
4525
4674
  });
4526
4675
 
4527
- case 27:
4528
- _context.next = 32;
4676
+ case 26:
4677
+ _context.next = 31;
4529
4678
  break;
4530
4679
 
4531
- case 29:
4532
- _context.prev = 29;
4680
+ case 28:
4681
+ _context.prev = 28;
4533
4682
  _context.t0 = _context["catch"](6);
4534
4683
 
4535
4684
  if (axios.isAxiosError(_context.t0)) {
4536
4685
  onAddToCartError(_context.t0);
4537
4686
  }
4538
4687
 
4539
- case 32:
4540
- _context.prev = 32;
4688
+ case 31:
4689
+ _context.prev = 31;
4541
4690
  setHandleBookIsLoading(false);
4542
- return _context.finish(32);
4691
+ return _context.finish(31);
4543
4692
 
4544
- case 35:
4693
+ case 34:
4545
4694
  case "end":
4546
4695
  return _context.stop();
4547
4696
  }
4548
4697
  }
4549
- }, _callee, null, [[6, 29, 32, 35]]);
4698
+ }, _callee, null, [[6, 28, 31, 34]]);
4550
4699
  }));
4551
4700
 
4552
4701
  return function handleBook() {
@@ -4597,7 +4746,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4597
4746
  title: "Sales start in:",
4598
4747
  message: "No tickets are currently available for this event.",
4599
4748
  callback: updateTickets
4600
- }) : null, showWaitingList && event.salesStarted && React__default.createElement(WaitingList, {
4749
+ }) : null, showWaitingList && event.salesStarted && !hideWaitingList && React__default.createElement(WaitingList, {
4601
4750
  tickets: tickets,
4602
4751
  eventId: eventId
4603
4752
  }), React__default.createElement(PromoCodeSection, {
@@ -4610,7 +4759,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
4610
4759
  isPromotionsEnabled: isPromotionsEnabled,
4611
4760
  isAccessCodeEnabled: isAccessCodeEnabled,
4612
4761
  isAllTicketsSoldOut: isAllTicketsSoldOut
4613
- }), isTicketOnSale && React__default.createElement(Button$1, {
4762
+ }), (isTicketOnSale || !(event != null && event.salesEnded)) && React__default.createElement(Button$1, {
4614
4763
  "aria-hidden": true,
4615
4764
  className: "book-button " + (handleBookIsLoading || _isEmpty(selectedTickets) || Object.values(selectedTickets)[0] === 0 ? 'disabled' : ''),
4616
4765
  onClick: !handleBookIsLoading && !_isEmpty(selectedTickets) && Object.values(selectedTickets)[0] > 0 ? handleBook : function () {}