summit-registration-lite 4.0.0 → 4.0.2

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/README.md CHANGED
@@ -40,6 +40,8 @@ React component for the summit registration lite widget
40
40
 
41
41
  **authUser** = method passed that will be called on user login. param -> (provider) => console.log('login with', provider)
42
42
 
43
+ **completedExtraQuestions**= method passed that will be called to evaluate if the user extra questions are completed
44
+
43
45
  **getAccessToken** = method passed that will be called to request the access token
44
46
 
45
47
  **closeWidget** = method passed that will be called if the user tries to close the widget
@@ -48,6 +50,8 @@ React component for the summit registration lite widget
48
50
 
49
51
  **goToEvent** = method passed that will be called to redirect the user to the current event
50
52
 
53
+ **goToMyOrders** = method passed that will be called to redirect the user to the my orders page
54
+
51
55
  **getPasswordlessCode** = method passed that will be called when the user generates a code to login without password
52
56
 
53
57
  **loginWithCode** = method passed that will be called when the user tries to login with a code
package/dist/index.css CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  .button___MZBIY{background-color:var(--color_secondary_contrast) !important;color:#fff !important;border:none !important;font-weight:bold !important;font-size:1em !important;cursor:pointer !important}.button___MZBIY[disabled]{background-color:var(--color_secondary_contrast) !important}.button___MZBIY:hover{color:#fff !important}.button___MZBIY:active,.button___MZBIY:focus{color:#fff !important}.outerWrapper___XRnaq{padding:10px 0px 10px 10px;margin:10px}.outerWrapper___XRnaq .innerWrapper___LFsOH{display:flex;justify-content:space-between;align-items:center}.outerWrapper___XRnaq .innerWrapper___LFsOH span{font-size:14px}.outerWrapper___XRnaq .innerWrapper___LFsOH .registration___jdf6T{cursor:pointer;color:var(--color_primary);text-decoration:underline}.outerWrapper___XRnaq .innerWrapper___LFsOH .actions___Gsf0y{display:flex}.outerWrapper___XRnaq .innerWrapper___LFsOH .actions___Gsf0y button{margin-left:10px}
20
20
 
21
- .button___XMN8a{background-color:var(--color_secondary_contrast) !important;color:#fff !important;border:none !important;font-weight:bold !important;font-size:1em !important;cursor:pointer !important}.button___XMN8a[disabled]{background-color:var(--color_secondary_contrast) !important}.button___XMN8a:hover{color:#fff !important}.button___XMN8a:active,.button___XMN8a:focus{color:#fff !important}.wrapper___Jd5Xg{height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:15px 0;padding:15px 0;border-radius:5px;border:1px solid lightgray;text-align:center}.wrapper___Jd5Xg .circle___lcN86{margin-top:auto;margin-bottom:10px;background-color:var(--color_primary50);border-radius:50px;border:1px solid var(--color_primary);padding:10px}.wrapper___Jd5Xg .circle___lcN86 i{font-size:36px;color:var(--color_primary)}.wrapper___Jd5Xg .complete___HAHzl{font-weight:bold;font-size:20px}.wrapper___Jd5Xg .actions___jJdPX{display:flex}.wrapper___Jd5Xg button{margin:10px 5px 0 5px}.wrapper___Jd5Xg span{font-size:14px}.wrapper___Jd5Xg a{color:var(--color_primary);text-decoration:underline}.wrapper___Jd5Xg .footer___FL9TW{margin-top:auto;font-size:14px;font-weight:normal}
21
+ .button___XMN8a{background-color:var(--color_secondary_contrast) !important;color:#fff !important;border:none !important;font-weight:bold !important;font-size:1em !important;cursor:pointer !important}.button___XMN8a[disabled]{background-color:var(--color_secondary_contrast) !important}.button___XMN8a:hover{color:#fff !important}.button___XMN8a:active,.button___XMN8a:focus{color:#fff !important}.wrapper___Jd5Xg{height:370px;display:flex;flex-direction:column;align-items:center;justify-content:space-around;margin:15px 0;padding:15px;border-radius:5px;border:1px solid lightgray;text-align:center}.wrapper___Jd5Xg .circle___lcN86{margin-bottom:10px;background-color:var(--color_primary50);border-radius:50px;border:1px solid var(--color_primary);padding:10px}.wrapper___Jd5Xg .circle___lcN86 i{font-size:36px;color:var(--color_primary)}.wrapper___Jd5Xg .complete___HAHzl{font-weight:bold;font-size:20px}.wrapper___Jd5Xg .actions___jJdPX{display:flex}.wrapper___Jd5Xg button{margin:10px 5px 0 5px}.wrapper___Jd5Xg span{font-size:14px}.wrapper___Jd5Xg a{color:var(--color_primary);text-decoration:underline}.wrapper___Jd5Xg .footer___FL9TW{font-size:14px;font-weight:normal}
22
22
 
23
23
  .passwordlessWrapper___BRQ_s{height:400px;display:flex;justify-content:center;align-items:center;flex-direction:column}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi{text-align:center;font-weight:bold;height:100%;width:300px;display:flex;flex-direction:column;justify-content:center}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .logo___qNVrv{width:175px;align-self:center}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .digits___Vu5iy{margin-top:15px;display:inline-block}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .codeInput___LnTZe{margin-top:20px;display:flex;justify-content:center}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .codeInput___LnTZe input{height:56px;width:56px;font-size:42px;background-color:var(--color_primary50);border:1px solid var(--color_primary);border-radius:5px;padding:5px;display:inline-flex;text-transform:uppercase;text-align:center;margin:0 5px}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .error___wZflZ{margin-top:10px;color:#e5424d;font-size:14px}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .verify___IBgMl{margin-top:20px}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .verify___IBgMl .button___nBhtQ{padding:10px 30px;font-weight:normal;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-color:var(--color_secondary_contrast);color:#FFFFFF;width:100%;font-size:1em}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .verify___IBgMl .link___f6fDT{color:var(--color_primary);text-decoration:underline;cursor:pointer}.passwordlessWrapper___BRQ_s .resend___Nma1U{margin:auto 0 0 0;font-weight:normal;font-size:14px}.passwordlessWrapper___BRQ_s .resend___Nma1U span{color:var(--color_primary);text-decoration:underline;cursor:pointer}
24
24
 
package/dist/index.js CHANGED
@@ -693,11 +693,16 @@ const GO_TO_LOGIN = 'GO_TO_LOGIN';
693
693
  const GET_MY_INVITATION = 'GET_MY_INVITATION';
694
694
  const CLEAR_MY_INVITATION = 'CLEAR_MY_INVITATION';
695
695
  const CLEAR_WIDGET_STATE = 'CLEAR_WIDGET_STATE';
696
+ const UPDATE_CLOCK = 'UPDATE_CLOCK';
697
+ const LOAD_PROFILE_DATA = 'LOAD_PROFILE_DATA';
696
698
  const startWidgetLoading = (0,actions_namespaceObject.createAction)(START_WIDGET_LOADING);
697
699
  const stopWidgetLoading = (0,actions_namespaceObject.createAction)(STOP_WIDGET_LOADING);
698
700
  const loadSession = settings => dispatch => {
699
701
  dispatch((0,actions_namespaceObject.createAction)(LOAD_INITIAL_VARS)(settings));
700
702
  };
703
+ const loadProfileData = profileData => dispatch => {
704
+ dispatch((0,actions_namespaceObject.createAction)(LOAD_PROFILE_DATA)(profileData));
705
+ };
701
706
  const clearWidgetState = () => dispatch => {
702
707
  dispatch((0,actions_namespaceObject.createAction)(CLEAR_WIDGET_STATE)({}));
703
708
  };
@@ -1048,6 +1053,11 @@ const getMyInvitation = summitId => async (dispatch, getState, {
1048
1053
  return Promise.reject(e);
1049
1054
  }
1050
1055
  };
1056
+ const updateClock = timestamp => dispatch => {
1057
+ dispatch((0,actions_namespaceObject.createAction)(UPDATE_CLOCK)({
1058
+ timestamp
1059
+ }));
1060
+ };
1051
1061
  ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/security/actions"
1052
1062
  const security_actions_namespaceObject = require("openstack-uicore-foundation/lib/security/actions");
1053
1063
  ;// CONCATENATED MODULE: ./src/reducer.js
@@ -1071,6 +1081,7 @@ function reducer_defineProperty(obj, key, value) { if (key in obj) { Object.defi
1071
1081
  **/
1072
1082
 
1073
1083
 
1084
+ const localNowUtc = Date.now();
1074
1085
  const DEFAULT_STATE = {
1075
1086
  reservation: null,
1076
1087
  checkout: null,
@@ -1093,7 +1104,8 @@ const DEFAULT_STATE = {
1093
1104
  summitId: null,
1094
1105
  marketingData: null,
1095
1106
  userProfile: null
1096
- }
1107
+ },
1108
+ nowUtc: localNowUtc
1097
1109
  };
1098
1110
 
1099
1111
  const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
@@ -1159,6 +1171,15 @@ const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
1159
1171
  })
1160
1172
  });
1161
1173
 
1174
+ case LOAD_PROFILE_DATA:
1175
+ {
1176
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
1177
+ settings: reducer_objectSpread(reducer_objectSpread({}, state.settings), {}, {
1178
+ userProfile: payload
1179
+ })
1180
+ });
1181
+ }
1182
+
1162
1183
  case CHANGE_STEP:
1163
1184
  {
1164
1185
  return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
@@ -1268,6 +1289,16 @@ const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
1268
1289
  });
1269
1290
  }
1270
1291
 
1292
+ case UPDATE_CLOCK:
1293
+ {
1294
+ const {
1295
+ timestamp
1296
+ } = payload;
1297
+ return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
1298
+ nowUtc: timestamp
1299
+ });
1300
+ }
1301
+
1271
1302
  default:
1272
1303
  {
1273
1304
  return state;
@@ -1336,6 +1367,9 @@ const constants_namespaceObject = require("openstack-uicore-foundation/lib/secur
1336
1367
  ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components/ajaxloader"
1337
1368
  const ajaxloader_namespaceObject = require("openstack-uicore-foundation/lib/components/ajaxloader");
1338
1369
  var ajaxloader_default = /*#__PURE__*/__webpack_require__.n(ajaxloader_namespaceObject);
1370
+ ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components/clock"
1371
+ const clock_namespaceObject = require("openstack-uicore-foundation/lib/components/clock");
1372
+ var clock_default = /*#__PURE__*/__webpack_require__.n(clock_namespaceObject);
1339
1373
  ;// CONCATENATED MODULE: ./src/styles/general.module.scss
1340
1374
  // extracted by mini-css-extract-plugin
1341
1375
  /* harmony default export */ const general_module = ({"modal":"modal___G3Cmq","modalContent":"modalContent___lIaqw","outerWrapper":"outerWrapper___OWXyi","innerWrapper":"innerWrapper___mIrBF","title":"title___Tbvkl"});
@@ -1749,6 +1783,7 @@ const StripeForm = ({
1749
1783
  errors
1750
1784
  }
1751
1785
  } = (0,external_react_hook_form_namespaceObject.useForm)();
1786
+ if (!marketingData) return null;
1752
1787
  const stripeStyle = merge_default()({}, {
1753
1788
  base: {
1754
1789
  // Add your base input styles here. For example: #d4e5f4
@@ -2280,7 +2315,6 @@ const getTicketMaxQuantity = ticket => ticket ? Math.min((ticket.quantity_2_sell
2280
2315
 
2281
2316
 
2282
2317
 
2283
-
2284
2318
  const TicketDropdownComponent = ({
2285
2319
  selectedTicket,
2286
2320
  ticketTypes,
@@ -2293,8 +2327,6 @@ const TicketDropdownComponent = ({
2293
2327
  setActive(!active);
2294
2328
  };
2295
2329
 
2296
- const date = new Date();
2297
- let now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) / 1000;
2298
2330
  return /*#__PURE__*/external_react_default().createElement("div", {
2299
2331
  className: `${ticket_dropdown_index_module.outerWrapper}`
2300
2332
  }, /*#__PURE__*/external_react_default().createElement("div", {
@@ -2314,19 +2346,17 @@ const TicketDropdownComponent = ({
2314
2346
  className: ticket_dropdown_index_module.dropdown,
2315
2347
  "data-testid": "ticket-list"
2316
2348
  }, ticketTypes.map(t => {
2349
+ console.log('TicketDropdownComponent::render');
2317
2350
  const maxQuantity = getTicketMaxQuantity(t);
2318
2351
  const isTicketSoldOut = maxQuantity < 1;
2319
-
2320
- if (t.sales_start_date === null && t.sales_end_date === null || now_utc >= t.sales_start_date && now_utc <= t.sales_end_date) {
2321
- return /*#__PURE__*/external_react_default().createElement("div", {
2322
- key: t.id,
2323
- className: isTicketSoldOut ? ticket_dropdown_index_module.soldOut : '',
2324
- onClick: () => {
2325
- if (isTicketSoldOut) return;
2326
- ticketSelect(t);
2327
- }
2328
- }, t.name, " -", ` `, !isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, t.currency_symbol, t.cost, " ", t.currency), isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "Sold Out"));
2329
- }
2352
+ return /*#__PURE__*/external_react_default().createElement("div", {
2353
+ key: t.id,
2354
+ className: isTicketSoldOut ? ticket_dropdown_index_module.soldOut : '',
2355
+ onClick: () => {
2356
+ if (isTicketSoldOut) return;
2357
+ ticketSelect(t);
2358
+ }
2359
+ }, t.name, " -", ` `, !isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, t.currency_symbol, t.cost, " ", t.currency), isTicketSoldOut && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "Sold Out"));
2330
2360
  })));
2331
2361
  };
2332
2362
 
@@ -2463,7 +2493,6 @@ const TicketTypeComponent = ({
2463
2493
  className: ticket_type_index_module.promo
2464
2494
  }, "Subtotal: ", `${ticket === null || ticket === void 0 ? void 0 : ticket.currency_symbol} ${(((reservation === null || reservation === void 0 ? void 0 : reservation.raw_amount_in_cents) - (reservation === null || reservation === void 0 ? void 0 : reservation.discount_amount_in_cents)) / 100).toFixed(2)} ${ticket === null || ticket === void 0 ? void 0 : ticket.currency}`), !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.taxes_amount) > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, reservation === null || reservation === void 0 ? void 0 : reservation.applied_taxes.map(tax => {
2465
2495
  return /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
2466
- key: tax.id,
2467
2496
  className: ticket_type_index_module.taxes
2468
2497
  }, /*#__PURE__*/external_react_default().createElement("abbr", {
2469
2498
  title: tax.name
@@ -2618,29 +2647,35 @@ const ButtonBarComponent = ({
2618
2647
 
2619
2648
 
2620
2649
 
2650
+
2621
2651
  const PurchaseComplete = ({
2622
2652
  checkout,
2653
+ user,
2623
2654
  onPurchaseComplete,
2624
2655
  goToExtraQuestions,
2625
2656
  goToEvent,
2657
+ goToMyOrders,
2658
+ completedExtraQuestions,
2626
2659
  summit,
2627
- supportEmail = "support@fntech.com"
2660
+ nowUtc,
2661
+ clearWidgetState,
2662
+ supportEmail = 'support@fntech.com'
2628
2663
  }) => {
2629
2664
  (0,external_react_.useEffect)(() => {
2630
2665
  onPurchaseComplete(checkout);
2631
2666
  }, []);
2632
- const date = new Date();
2633
- let now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()) / 1000;
2634
- const isActive = summit.start_date < now_utc && summit.end_date > now_utc;
2667
+ const isActive = (0,external_react_.useMemo)(() => summit.start_date <= nowUtc && summit.end_date >= nowUtc, [summit]);
2668
+ const userFirstTicket = (0,external_react_.useMemo)(() => checkout === null || checkout === void 0 ? void 0 : checkout.tickets.some(t => {
2669
+ var _t$owner;
2670
+
2671
+ return (t === null || t === void 0 ? void 0 : (_t$owner = t.owner) === null || _t$owner === void 0 ? void 0 : _t$owner.email) == (user === null || user === void 0 ? void 0 : user.email);
2672
+ }), [user]);
2673
+ const requireExtraQuestions = (0,external_react_.useMemo)(() => completedExtraQuestions(checkout), [user]);
2635
2674
  const startDateFormatted = {
2636
2675
  date: (0,methods_namespaceObject.epochToMomentTimeZone)(summit.start_date, summit.time_zone_id).format('MMMM D'),
2637
2676
  time: (0,methods_namespaceObject.epochToMomentTimeZone)(summit.start_date, summit.time_zone_id).format('hh:mm A')
2638
2677
  };
2639
-
2640
- const needExtraQuestions = () => {
2641
- return summit.order_extra_questions.some(q => q.mandatory === true) ? true : false;
2642
- };
2643
-
2678
+ if (!checkout) return null;
2644
2679
  return /*#__PURE__*/external_react_default().createElement("div", {
2645
2680
  className: purchase_complete_index_module.wrapper
2646
2681
  }, /*#__PURE__*/external_react_default().createElement("div", {
@@ -2649,22 +2684,46 @@ const PurchaseComplete = ({
2649
2684
  className: "fa fa-ticket"
2650
2685
  })), /*#__PURE__*/external_react_default().createElement("span", {
2651
2686
  className: purchase_complete_index_module.complete
2652
- }, "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", {
2687
+ }, "Your order is complete"), isActive ? userFirstTicket ? requireExtraQuestions ? /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", null, "A ticket has been assigned to you. To complete your additional ticket details, please click the \"Finish Now\" button."), /*#__PURE__*/external_react_default().createElement("button", {
2653
2688
  className: `${purchase_complete_index_module.button} button`,
2654
- onClick: () => goToExtraQuestions()
2655
- }, "Finish now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("button", {
2689
+ onClick: () => {
2690
+ clearWidgetState();
2691
+ goToExtraQuestions();
2692
+ }
2693
+ }, "Finish Now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("button", {
2656
2694
  className: `${purchase_complete_index_module.button} button`,
2657
- onClick: () => goToEvent()
2658
- }, "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_label, " ", /*#__PURE__*/external_react_default().createElement("br", null), "This ticket requires additional details."), /*#__PURE__*/external_react_default().createElement("div", {
2695
+ onClick: () => {
2696
+ clearWidgetState();
2697
+ goToEvent();
2698
+ }
2699
+ }, "Access event now")) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", null, "You may visit the My Orders/Tickets tab in the top right-hand corner of the navigation bar to assign/reassign tickets or to complete any required ticket details."), /*#__PURE__*/external_react_default().createElement("button", {
2700
+ className: `${purchase_complete_index_module.button} button`,
2701
+ onClick: () => {
2702
+ clearWidgetState();
2703
+ goToMyOrders();
2704
+ }
2705
+ }, "View My Orders/Tickets")) : /*#__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_label, /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("br", null), userFirstTicket ? `A ticket has been assigned to you. To complete your additional ticket details, please click the "Finish Now" button.` : `You may visit the My Orders/Tickets tab in the top right-hand corner of the navigation bar to
2706
+ assign/reassign tickets or to complete any required ticket details.`), /*#__PURE__*/external_react_default().createElement("div", {
2659
2707
  className: purchase_complete_index_module.actions
2660
- }, /*#__PURE__*/external_react_default().createElement("button", {
2708
+ }, userFirstTicket ? /*#__PURE__*/external_react_default().createElement("button", {
2709
+ className: `${purchase_complete_index_module.button} button`,
2710
+ onClick: () => {
2711
+ clearWidgetState();
2712
+ goToExtraQuestions();
2713
+ }
2714
+ }, "Finish Now") : /*#__PURE__*/external_react_default().createElement("button", {
2661
2715
  className: `${purchase_complete_index_module.button} button`,
2662
- onClick: () => goToExtraQuestions()
2663
- }, "Finish Now"))), /*#__PURE__*/external_react_default().createElement("span", {
2716
+ onClick: () => {
2717
+ clearWidgetState();
2718
+ goToMyOrders();
2719
+ }
2720
+ }, "View My Orders/Tickets"))), /*#__PURE__*/external_react_default().createElement("span", {
2664
2721
  className: purchase_complete_index_module.footer
2665
- }, "For further assistance, please email ", /*#__PURE__*/external_react_default().createElement("a", {
2722
+ }, userFirstTicket ? /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "If you wish to transfer your assigned ticket, close this window and visit the \"My Orders/Tickets\" tab in the top navigation bar. For further assistance, please email ", /*#__PURE__*/external_react_default().createElement("a", {
2723
+ href: `mailto:${supportEmail}`
2724
+ }, supportEmail)) : /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, "For further assistance, please email ", /*#__PURE__*/external_react_default().createElement("a", {
2666
2725
  href: `mailto:${supportEmail}`
2667
- }, supportEmail)));
2726
+ }, supportEmail))));
2668
2727
  };
2669
2728
 
2670
2729
  /* harmony default export */ const purchase_complete = (PurchaseComplete);
@@ -2810,7 +2869,7 @@ const TicketTaxesError = ({
2810
2869
 
2811
2870
  /* harmony default export */ const ticket_taxes_error = (TicketTaxesError);
2812
2871
  ;// CONCATENATED MODULE: ./src/components/registration-lite.js
2813
- const registration_lite_excluded = ["loadSession", "setMarketingSettings", "changeStep", "removeReservedTicket", "reserveTicket", "payTicketWithProvider", "onPurchaseComplete", "getTicketTypesAndTaxes", "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", "stripeOptions", "invitation", "loginInitialEmailInputValue", "getMyInvitation", "showMultipleTicketTexts", "noAllowedTicketsMessage", "ticketTaxesErrorMessage", "authErrorCallback", "clearWidgetState", "requestedTicketTypes", "allowPromoCodes", "companyInputPlaceholder", "companyDDLPlaceholder"];
2872
+ const registration_lite_excluded = ["loadSession", "setMarketingSettings", "changeStep", "removeReservedTicket", "reserveTicket", "payTicketWithProvider", "onPurchaseComplete", "getTicketTypesAndTaxes", "getLoginCode", "passwordlessLogin", "goToLogin", "loginOptions", "allowsNativeAuth", "allowsOtpAuth", "reservation", "checkout", "ticketTypes", "taxTypes", "step", "passwordlessCodeSent", "passwordlessEmail", "passwordlessCode", "getPasswordlessCode", "passwordlessCodeError", "loginWithCode", "goToExtraQuestions", "goToMyOrders", "goToEvent", "profileData", "summitData", "supportEmail", "ticketOwned", "ownedTickets", "widgetLoading", "loading", "inPersonDisclaimer", "userProfile", "handleCompanyError", "stripeOptions", "invitation", "loginInitialEmailInputValue", "getMyInvitation", "showMultipleTicketTexts", "noAllowedTicketsMessage", "ticketTaxesErrorMessage", "authErrorCallback", "clearWidgetState", "requestedTicketTypes", "allowPromoCodes", "companyInputPlaceholder", "companyDDLPlaceholder", "nowUtc", "updateClock", "completedExtraQuestions", "loadProfileData"];
2814
2873
 
2815
2874
  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; }
2816
2875
 
@@ -2854,6 +2913,7 @@ function registration_lite_objectWithoutPropertiesLoose(source, excluded) { if (
2854
2913
 
2855
2914
 
2856
2915
 
2916
+
2857
2917
 
2858
2918
 
2859
2919
  const RegistrationLite = _ref => {
@@ -2886,8 +2946,8 @@ const RegistrationLite = _ref => {
2886
2946
  passwordlessCodeError,
2887
2947
  loginWithCode,
2888
2948
  goToExtraQuestions,
2949
+ goToMyOrders,
2889
2950
  goToEvent,
2890
- goToRegistration,
2891
2951
  profileData,
2892
2952
  summitData,
2893
2953
  supportEmail,
@@ -2910,7 +2970,11 @@ const RegistrationLite = _ref => {
2910
2970
  requestedTicketTypes,
2911
2971
  allowPromoCodes,
2912
2972
  companyInputPlaceholder,
2913
- companyDDLPlaceholder
2973
+ companyDDLPlaceholder,
2974
+ nowUtc,
2975
+ updateClock,
2976
+ completedExtraQuestions,
2977
+ loadProfileData
2914
2978
  } = _ref,
2915
2979
  rest = registration_lite_objectWithoutProperties(_ref, registration_lite_excluded);
2916
2980
 
@@ -2941,6 +3005,10 @@ const RegistrationLite = _ref => {
2941
3005
  publicKey,
2942
3006
  provider
2943
3007
  } = getCurrentProvider(summitData);
3008
+ (0,external_react_.useEffect)(() => {
3009
+ if (profileData) loadProfileData(profileData);
3010
+ }, [profileData]); // just initial load ( once )
3011
+
2944
3012
  (0,external_react_.useEffect)(() => {
2945
3013
  loadSession(registration_lite_objectSpread(registration_lite_objectSpread({}, rest), {}, {
2946
3014
  summitData,
@@ -2950,7 +3018,7 @@ const RegistrationLite = _ref => {
2950
3018
  if (!profileData) {
2951
3019
  changeStep(0);
2952
3020
  }
2953
- }, [profileData]);
3021
+ }, []);
2954
3022
  (0,external_react_.useEffect)(() => {
2955
3023
  if (summitData && profileData) {
2956
3024
  handleGetTicketTypesAndTaxes(summitData.id);
@@ -3007,7 +3075,8 @@ const RegistrationLite = _ref => {
3007
3075
  // Reset the step when closed to avoid unexpected behavior from `useEffect`s w/in other steps.
3008
3076
  // (i.e., recalling `onPurchaseComplete` after a user completes one order, closes the window, and then reopens the registration widget)
3009
3077
  changeStep(0);
3010
- rest.closeWidget();
3078
+ clearWidgetState();
3079
+ if (rest.closeWidget) rest.closeWidget();
3011
3080
  };
3012
3081
 
3013
3082
  const handleGetTicketTypesAndTaxes = summitId => {
@@ -3027,6 +3096,7 @@ const RegistrationLite = _ref => {
3027
3096
  });
3028
3097
  };
3029
3098
 
3099
+ const allowedTicketTypes = ticketTypes.filter(tt => tt.sales_start_date === null && tt.sales_end_date === null || nowUtc >= tt.sales_start_date && nowUtc <= tt.sales_end_date);
3030
3100
  return /*#__PURE__*/external_react_default().createElement("div", {
3031
3101
  id: `${general_module.modal}`,
3032
3102
  className: "modal is-active"
@@ -3039,6 +3109,9 @@ const RegistrationLite = _ref => {
3039
3109
  color: '#ffffff',
3040
3110
  show: widgetLoading || loading,
3041
3111
  size: 80
3112
+ }), /*#__PURE__*/external_react_default().createElement((clock_default()), {
3113
+ onTick: timestamp => updateClock(timestamp),
3114
+ timezone: summitData.time_zone_id
3042
3115
  }), /*#__PURE__*/external_react_default().createElement("div", {
3043
3116
  className: `${general_module.outerWrapper} summit-registration-lite`
3044
3117
  }, /*#__PURE__*/external_react_default().createElement("div", {
@@ -3052,7 +3125,7 @@ const RegistrationLite = _ref => {
3052
3125
  })), ticketTaxesError && profileData && /*#__PURE__*/external_react_default().createElement(ticket_taxes_error, {
3053
3126
  ticketTaxesErrorMessage: ticketTaxesErrorMessage,
3054
3127
  retryTicketTaxes: () => handleGetTicketTypesAndTaxes(summitData === null || summitData === void 0 ? void 0 : summitData.id)
3055
- }), !ticketTaxesError && profileData && ticketTypes.length === 0 && requestedTicketTypes && /*#__PURE__*/external_react_default().createElement(no_allowed_tickets, {
3128
+ }), !ticketTaxesError && profileData && allowedTicketTypes.length === 0 && requestedTicketTypes && /*#__PURE__*/external_react_default().createElement(no_allowed_tickets, {
3056
3129
  noAllowedTicketsMessage: noAllowedTicketsMessage
3057
3130
  }), !ticketTaxesError && /*#__PURE__*/external_react_default().createElement("div", {
3058
3131
  className: general_module.stepsWrapper
@@ -3073,11 +3146,11 @@ const RegistrationLite = _ref => {
3073
3146
  goToLogin: goToLogin,
3074
3147
  getLoginCode: getLoginCode,
3075
3148
  getPasswordlessCode: getPasswordlessCode
3076
- }), profileData && step !== 3 && ticketTypes.length > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, ticketOwned && /*#__PURE__*/external_react_default().createElement(ticket_owned, {
3149
+ }), profileData && step !== 3 && allowedTicketTypes.length > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, ticketOwned && /*#__PURE__*/external_react_default().createElement(ticket_owned, {
3077
3150
  ownedTickets: ownedTickets,
3078
- ticketTypes: ticketTypes
3151
+ ticketTypes: allowedTicketTypes
3079
3152
  }), /*#__PURE__*/external_react_default().createElement(ticket_type, {
3080
- ticketTypes: ticketTypes,
3153
+ ticketTypes: allowedTicketTypes,
3081
3154
  inPersonDisclaimer: inPersonDisclaimer,
3082
3155
  taxTypes: taxTypes,
3083
3156
  reservation: reservation,
@@ -3115,12 +3188,17 @@ const RegistrationLite = _ref => {
3115
3188
  stripeOptions: stripeOptions
3116
3189
  })))), profileData && step === 3 && /*#__PURE__*/external_react_default().createElement(purchase_complete, {
3117
3190
  checkout: checkout,
3191
+ user: profileData,
3118
3192
  summit: summitData,
3119
3193
  onPurchaseComplete: onPurchaseComplete,
3120
3194
  supportEmail: supportEmail,
3121
3195
  goToEvent: goToEvent,
3122
- goToExtraQuestions: goToExtraQuestions
3123
- })), !ticketTaxesError && profileData && step !== 3 && ticketTypes.length > 0 && /*#__PURE__*/external_react_default().createElement(button_bar, {
3196
+ goToMyOrders: goToMyOrders,
3197
+ goToExtraQuestions: goToExtraQuestions,
3198
+ completedExtraQuestions: completedExtraQuestions,
3199
+ nowUtc: nowUtc,
3200
+ clearWidgetState: clearWidgetState
3201
+ })), !ticketTaxesError && profileData && step !== 3 && allowedTicketTypes.length > 0 && /*#__PURE__*/external_react_default().createElement(button_bar, {
3124
3202
  step: step,
3125
3203
  inPersonDisclaimer: inPersonDisclaimer,
3126
3204
  formValues: formValues,
@@ -3144,7 +3222,8 @@ const registration_lite_mapStateToProps = ({
3144
3222
  passwordlessEmail: registrationLiteState.passwordless.email,
3145
3223
  passwordlessCode: registrationLiteState.passwordless.otp_length,
3146
3224
  passwordlessCodeSent: registrationLiteState.passwordless.code_sent,
3147
- passwordlessCodeError: registrationLiteState.passwordless.error
3225
+ passwordlessCodeError: registrationLiteState.passwordless.error,
3226
+ nowUtc: registrationLiteState.nowUtc
3148
3227
  });
3149
3228
 
3150
3229
  RegistrationLite.defaultProps = {
@@ -3162,7 +3241,10 @@ RegistrationLite.defaultProps = {
3162
3241
  RegistrationLite.propTypes = {
3163
3242
  loginInitialEmailInputValue: (external_prop_types_default()).string,
3164
3243
  showMultipleTicketTexts: (external_prop_types_default()).bool,
3165
- authErrorCallback: (external_prop_types_default()).func
3244
+ authErrorCallback: (external_prop_types_default()).func,
3245
+ goToMyOrders: (external_prop_types_default()).func.isRequired,
3246
+ goToExtraQuestions: (external_prop_types_default()).func.isRequired,
3247
+ completedExtraQuestions: (external_prop_types_default()).func.isRequired
3166
3248
  };
3167
3249
  /* harmony default export */ const registration_lite = ((0,external_react_redux_namespaceObject.connect)(registration_lite_mapStateToProps, {
3168
3250
  loadSession: loadSession,
@@ -3175,7 +3257,9 @@ RegistrationLite.propTypes = {
3175
3257
  passwordlessLogin: passwordlessLogin,
3176
3258
  goToLogin: goToLogin,
3177
3259
  getMyInvitation: getMyInvitation,
3178
- clearWidgetState: clearWidgetState
3260
+ clearWidgetState: clearWidgetState,
3261
+ updateClock: updateClock,
3262
+ loadProfileData: loadProfileData
3179
3263
  })(RegistrationLite));
3180
3264
  ;// CONCATENATED MODULE: ./src/summit-registration-lite.js
3181
3265
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "summit-registration-lite",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "Summit Registration Lite",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -61,7 +61,7 @@
61
61
  "moment": "^2.22.2",
62
62
  "moment-timezone": "^0.5.21",
63
63
  "node-sass": "^7.0.1",
64
- "openstack-uicore-foundation": "^4.0.80",
64
+ "openstack-uicore-foundation": "4.0.88",
65
65
  "optimize-css-assets-webpack-plugin": "^6.0.1",
66
66
  "path": "^0.12.7",
67
67
  "react": "^16.8.4",