summit-registration-lite 5.0.20-alpha.1 → 5.0.20-alpha.3

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.css CHANGED
@@ -12,11 +12,11 @@
12
12
 
13
13
  .title___ECoNz{font-weight:bold;cursor:pointer;display:flex;justify-content:space-between}.title___ECoNz div{font-weight:normal}.form___lDFka{display:flex;flex-wrap:wrap;justify-content:space-between;margin:10px 0 0}.form___lDFka div.fieldWrapper___Mi_nL{width:48%;margin-bottom:5px}.form___lDFka div.fieldWrapperRadio___x18VG{width:100%;margin-bottom:10px}.form___lDFka div.fieldWrapperRadio___x18VG label{display:inline-block;margin-bottom:5px}.form___lDFka div.fieldWrapperRadio___x18VG>div>div{padding-left:0px !important}.form___lDFka div.inputWrapper___PEQFR{display:flex;border-radius:5px;border:1px solid var(--color_input_border_color);background-color:var(--color_input_background_color);height:36px;padding:5px 10px;justify-content:space-between;align-items:center}.form___lDFka div.inputWrapper___PEQFR input{width:100%;background-color:transparent;color:var(--color_input_text_color);border:none;padding:0;font-size:16px;display:flex;justify-content:space-between;align-items:center}.form___lDFka div.inputWrapper___PEQFR input::placeholder{color:var(--color_text_input_hints);font-size:16px}.form___lDFka div.inputWrapper___PEQFR input:focus-visible{outline:none}.form___lDFka div.inputWrapper___PEQFR .readOnly___WRazF{opacity:0.6;cursor:default}.form___lDFka div.fieldError___ksJVe{margin-top:5px;margin-bottom:5px;color:#e5424d;font-size:14px;line-height:1.5;justify-content:left !important}.form___lDFka div.fieldError___ksJVe::before{font-family:FontAwesome;content:'\f071';margin-right:5px}.form___lDFka .fieldWrapperRadio___x18VG>div{display:flex;flex-direction:row}.moreInfo___cQYdZ{display:inline-block;margin-top:10px}.moreInfoTooltip___lslgT{max-width:280px}.ticketQuantityNotice___L6gis{margin:10px 0 0 !important}.formErrors___dQQMe{margin-top:10px}.formErrors___dQQMe div+div{margin-top:10px}
14
14
 
15
- .title___DNZyl{font-weight:bold;cursor:pointer;display:flex;justify-content:space-between}.summary___quWdZ{text-align:right}.promoCode___bqTCw{display:inline-flex}.promoCode___bqTCw abbr{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:10ch}.crossOut___QZ7dy{text-decoration:line-through}.discount___sEK_Q{color:red}.taxes___fe8oJ{display:inline-flex}.taxes___fe8oJ abbr{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:15ch}.promo___F8lPO{font-weight:bold;display:flex;justify-content:flex-end}.form___aoo7w{display:flex;gap:10px;margin-top:10px}.dropdown____HWg0{flex:1 1 auto}.quantity___SIEQZ{flex-shrink:0}.quantity___SIEQZ input,.quantity___SIEQZ button{height:36px;text-align:center;border:1px solid var(--color_input_border_color)}.quantity___SIEQZ input{padding:0 8px;width:48px !important}.quantity___SIEQZ input,.quantity___SIEQZ input:read-only{border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color)}.quantity___SIEQZ button{display:flex;align-items:center}.quantity___SIEQZ button:disabled,.quantity___SIEQZ button:disabled:hover{opacity:0.65;background:#dedede;border-color:#bebebe}.soldOut___Hatfr{height:36px;padding:0 16px;line-height:34px;font-weight:700px;background:#dedede;border:solid 1px #bebebe;border-radius:5px;opacity:0.65;font-weight:700;flex-shrink:0}.moreInfo___LmwOe{display:inline-block;margin-top:10px}.moreInfoTooltip___nOBf1{max-width:280px}.inPersonDisclaimer___PXGTz{margin-top:15px;padding-right:10px;max-height:150px;overflow-y:auto}
15
+ .title___DNZyl{font-weight:bold;cursor:pointer;display:flex;justify-content:space-between}.summary___quWdZ{text-align:right}.promoCode___bqTCw{display:inline-flex}.promoCode___bqTCw abbr{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:10ch}.crossOut___QZ7dy{text-decoration:line-through}.discount___sEK_Q{color:red}.promocodeError___oxk4p{margin-top:10px;color:red}.promocodeError___oxk4p::before{font-family:FontAwesome;content:'\f071';margin-right:5px}.taxes___fe8oJ{display:inline-flex}.taxes___fe8oJ abbr{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:15ch}.promo___F8lPO{font-weight:bold;display:flex;justify-content:flex-end}.form___aoo7w{display:flex;gap:10px;margin-top:10px}.dropdown____HWg0{flex:1 1 auto}.quantity___SIEQZ{flex-shrink:0}.quantity___SIEQZ input,.quantity___SIEQZ button{height:36px;text-align:center;border:1px solid var(--color_input_border_color)}.quantity___SIEQZ input{padding:0 8px;width:48px !important}.quantity___SIEQZ input,.quantity___SIEQZ input:read-only{border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color)}.quantity___SIEQZ button{display:flex;align-items:center}.quantity___SIEQZ button:disabled,.quantity___SIEQZ button:disabled:hover{opacity:0.65;background:#dedede;border-color:#bebebe}.soldOut___Hatfr{height:36px;padding:0 16px;line-height:34px;font-weight:700px;background:#dedede;border:solid 1px #bebebe;border-radius:5px;opacity:0.65;font-weight:700;flex-shrink:0}.moreInfo___LmwOe{display:inline-block;margin-top:10px}.moreInfoTooltip___nOBf1{max-width:280px}.inPersonDisclaimer___PXGTz{margin-top:15px;padding-right:10px;max-height:150px;overflow-y:auto}
16
16
 
17
17
  .placeholder___pcdCn{border-radius:5px;width:100%;border:1px solid var(--color_primary);background-color:var(--color_primary50);padding:5px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;height:36px}.placeholder___pcdCn i{padding:2px 5px;border-left:1px solid var(--color_primary)}.placeholder___pcdCn .selectedTicket___qkbpH{max-height:25px;word-wrap:break-word;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px}@media screen and (max-width: 630px){.placeholder___pcdCn .selectedTicket___qkbpH{max-width:300px}}@media screen and (max-width: 500px){.placeholder___pcdCn .selectedTicket___qkbpH{max-width:200px}}@media screen and (max-width: 400px){.placeholder___pcdCn .selectedTicket___qkbpH{max-width:100px}}.inPersonDisclaimer___z_DzO{padding:4px}.dropdown___mfbPG{margin-top:10px;border-radius:5px;width:100%;border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color);cursor:pointer}.dropdown___mfbPG div{padding:5px}.dropdown___mfbPG div:hover{background-color:var(--color_primary);color:var(--color_input_text_color)}.soldOut___rBLC0,.soldOut___rBLC0:hover,.soldOut___rBLC0:focus{color:inherit !important;background-color:#dedede !important;opacity:0.65;cursor:not-allowed}
18
18
 
19
- .promoCodeWrapper___aw3Zx{padding-top:16px;display:flex;justify-content:space-between;align-items:baseline;gap:15px}.promoCodeWrapper___aw3Zx span{color:var(--color_text_dark);font-size:14px;font-weight:600;line-height:140%}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET{display:flex;align-items:center;position:relative;flex:1}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET input{display:inline-flex;border-radius:4px;height:33px;padding:8px 42px 7px 8px;width:100%;color:var(--color_input_text_color);background-color:var(--color_input_background_color);border:1.5px solid var(--color_input_border_color)}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET input.promoCodeActive___j7xnn{padding:8px 80px 7px 8px}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .appliedCode___rQufS{display:flex;align-items:center;position:absolute;right:0px}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .appliedCode___rQufS button{position:relative}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .appliedCode___rQufS img{margin-right:10px}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET button{background-color:transparent;border:none;font-size:12px;font-style:normal;font-weight:400;line-height:16.693px;letter-spacing:-0.12px;position:absolute;right:8px;padding:0;cursor:pointer}.promoCodeWrapper___aw3Zx .moreInfo___Ru3Rv{display:inline-block}.promoCodeWrapper___aw3Zx .moreInfoTooltip___eaYWm{max-width:280px}
19
+ .promoCodeWrapper___aw3Zx{padding-top:16px;display:flex;justify-content:space-between;align-items:baseline;gap:15px}.promoCodeWrapper___aw3Zx span{color:var(--color_text_dark);font-size:14px;font-weight:600;line-height:140%}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET{display:flex;align-items:center;position:relative;flex:1;height:33px}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET input{display:inline-flex;padding:13px 8px;width:70%;height:100%;color:var(--color_input_text_color);background-color:var(--color_input_background_color);border:1.5px solid var(--color_input_border_color);border-radius:4px 0px 0px 4px}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET input.promoCodeActive___j7xnn{padding-right:25px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .codeButtonWrapper___jVZh5{display:flex;align-items:center;width:30%;height:100%;background-color:#818181;border-radius:0px 4px 4px 0px}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .codeButtonWrapper___jVZh5.noCode___YUmVy{background-color:#CFCFCF;cursor:not-allowed}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .codeButtonWrapper___jVZh5 button{color:#fff;font-size:14px;font-style:normal;font-weight:600;line-height:120%;letter-spacing:-0.14px;width:100%;height:100%;border:none;background-color:transparent}.promoCodeWrapper___aw3Zx .promoCodeInput___rDiET .appliedCodeIcon___pa3B4{position:absolute;left:60%}.promoCodeWrapper___aw3Zx .moreInfo___Ru3Rv{display:inline-block}.promoCodeWrapper___aw3Zx .moreInfoTooltip___eaYWm{max-width:280px}
20
20
 
21
21
  .button___MZBIY{font-weight:bold !important;font-size:1em !important;cursor:pointer !important;border:1px solid var(--color_input_border_color) !important;color:var(--color_input_text_color) !important;background-color:var(--color_input_background_color) !important}.button___MZBIY[disabled]{background-color:var(--color_secondary_contrast) !important}.button___MZBIY:hover{color:var(--color_input_text_color) !important}.button___MZBIY:active,.button___MZBIY:focus{color:var(--color_input_text_color) !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}
22
22
 
package/dist/index.js CHANGED
@@ -888,6 +888,9 @@ payment_provider_factory_defineProperty(PaymentProviderFactory, "build", (provid
888
888
 
889
889
  return currentProvider;
890
890
  });
891
+ ;// CONCATENATED MODULE: external "urijs"
892
+ const external_urijs_namespaceObject = require("urijs");
893
+ var external_urijs_default = /*#__PURE__*/__webpack_require__.n(external_urijs_namespaceObject);
891
894
  ;// CONCATENATED MODULE: ./src/actions.js
892
895
  function actions_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; }
893
896
 
@@ -913,6 +916,7 @@ function actions_defineProperty(obj, key, value) { if (key in obj) { Object.defi
913
916
 
914
917
 
915
918
 
919
+
916
920
  const START_WIDGET_LOADING = 'START_WIDGET_LOADING';
917
921
  const STOP_WIDGET_LOADING = 'STOP_WIDGET_LOADING';
918
922
  const LOAD_INITIAL_VARS = 'LOAD_INITIAL_VARS';
@@ -939,6 +943,7 @@ const UPDATE_CLOCK = 'UPDATE_CLOCK';
939
943
  const LOAD_PROFILE_DATA = 'LOAD_PROFILE_DATA';
940
944
  const SET_CURRENT_PROMO_CODE = 'SET_CURRENT_PROMO_CODE';
941
945
  const CLEAR_CURRENT_PROMO_CODE = 'CLEAR_CURRENT_PROMO_CODE';
946
+ const VALIDATE_PROMO_CODE = 'VALIDATE_PROMO_CODE';
942
947
  const startWidgetLoading = (0,actions_namespaceObject.createAction)(START_WIDGET_LOADING);
943
948
  const stopWidgetLoading = (0,actions_namespaceObject.createAction)(STOP_WIDGET_LOADING);
944
949
  const loadSession = settings => dispatch => {
@@ -1081,6 +1086,62 @@ const removePromoCode = () => (dispatch, getState) => {
1081
1086
  return Promise.reject(e);
1082
1087
  }
1083
1088
  };
1089
+ const validatePromoCode = (ticketData, {
1090
+ onError
1091
+ }) => async (dispatch, getState, {
1092
+ apiBaseUrl,
1093
+ getAccessToken
1094
+ }) => {
1095
+ const {
1096
+ registrationLiteState: {
1097
+ settings: {
1098
+ summitId
1099
+ },
1100
+ promoCode: currentPromoCode
1101
+ }
1102
+ } = getState();
1103
+
1104
+ if (summitId && currentPromoCode) {
1105
+ dispatch(startWidgetLoading());
1106
+ const {
1107
+ ticketQuantity,
1108
+ id,
1109
+ sub_type
1110
+ } = ticketData;
1111
+ const access_token = await getAccessToken();
1112
+ let apiUrl = external_urijs_default()(`${apiBaseUrl}/api/v1/summits/${summitId}/promo-codes/${currentPromoCode}/apply`);
1113
+ apiUrl.addQuery('access_token', access_token);
1114
+ apiUrl.addQuery('filter[]', `ticket_type_id==${id}`);
1115
+ apiUrl.addQuery('filter[]', `ticket_type_qty==${ticketQuantity}`);
1116
+ apiUrl.addQuery('filter[]', `ticket_type_subtype==${sub_type}`);
1117
+
1118
+ const errorHandler = (err, res) => (dispatch, state) => {
1119
+ if (res && res.statusCode === 404 && onError) return onError(err, res);
1120
+ if (res && res.statusCode === 412 && onError) return onError(err, res);
1121
+ if (res && res.statusCode === 429 && onError) return onError(err, res);
1122
+
1123
+ if (res && res.statusCode === 500) {
1124
+ const defaultMessage = 'Server Error';
1125
+ const msg = res?.body?.message || defaultMessage;
1126
+ external_sweetalert2_default().fire("Server Error", msg, "error");
1127
+ return;
1128
+ }
1129
+
1130
+ return (0,actions_namespaceObject.authErrorHandler)(err, res)(dispatch, state);
1131
+ };
1132
+
1133
+ return (0,actions_namespaceObject.getRequest)(null, (0,actions_namespaceObject.createAction)(VALIDATE_PROMO_CODE), `${apiUrl}`, errorHandler)({})(dispatch).then(res => {
1134
+ dispatch(changeStep(STEP_PERSONAL_INFO));
1135
+ dispatch(stopWidgetLoading());
1136
+ return res;
1137
+ }).catch(error => {
1138
+ dispatch(stopWidgetLoading());
1139
+ return Promise.reject(error);
1140
+ });
1141
+ }
1142
+
1143
+ return dispatch(changeStep(STEP_PERSONAL_INFO));
1144
+ };
1084
1145
  const reserveTicket = ({
1085
1146
  provider,
1086
1147
  personalInformation,
@@ -1544,14 +1605,11 @@ const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
1544
1605
  }
1545
1606
 
1546
1607
  case DELETE_RESERVATION_SUCCESS:
1547
- return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
1548
- reservation: null
1549
- });
1550
-
1551
1608
  case CLEAR_RESERVATION:
1552
1609
  {
1553
1610
  return reducer_objectSpread(reducer_objectSpread({}, state), {}, {
1554
- reservation: null
1611
+ reservation: null,
1612
+ promoCode: ''
1555
1613
  });
1556
1614
  }
1557
1615
 
@@ -1561,7 +1619,8 @@ const RegistrationLiteReducer = (state = DEFAULT_STATE, action) => {
1561
1619
  checkout: payload.response,
1562
1620
  reservation: null,
1563
1621
  userProfile: null,
1564
- invitation: null
1622
+ invitation: null,
1623
+ promoCode: ''
1565
1624
  });
1566
1625
  }
1567
1626
 
@@ -2720,7 +2779,7 @@ const raw_html_namespaceObject = require("openstack-uicore-foundation/lib/compon
2720
2779
  var raw_html_default = /*#__PURE__*/__webpack_require__.n(raw_html_namespaceObject);
2721
2780
  ;// CONCATENATED MODULE: ./src/components/ticket-type/index.module.scss
2722
2781
  // extracted by mini-css-extract-plugin
2723
- /* harmony default export */ const ticket_type_index_module = ({"title":"title___DNZyl","summary":"summary___quWdZ","promoCode":"promoCode___bqTCw","crossOut":"crossOut___QZ7dy","discount":"discount___sEK_Q","taxes":"taxes___fe8oJ","promo":"promo___F8lPO","form":"form___aoo7w","dropdown":"dropdown____HWg0","quantity":"quantity___SIEQZ","soldOut":"soldOut___Hatfr","moreInfo":"moreInfo___LmwOe","moreInfoTooltip":"moreInfoTooltip___nOBf1","inPersonDisclaimer":"inPersonDisclaimer___PXGTz"});
2782
+ /* harmony default export */ const ticket_type_index_module = ({"title":"title___DNZyl","summary":"summary___quWdZ","promoCode":"promoCode___bqTCw","crossOut":"crossOut___QZ7dy","discount":"discount___sEK_Q","promocodeError":"promocodeError___oxk4p","taxes":"taxes___fe8oJ","promo":"promo___F8lPO","form":"form___aoo7w","dropdown":"dropdown____HWg0","quantity":"quantity___SIEQZ","soldOut":"soldOut___Hatfr","moreInfo":"moreInfo___LmwOe","moreInfoTooltip":"moreInfoTooltip___nOBf1","inPersonDisclaimer":"inPersonDisclaimer___PXGTz"});
2724
2783
  ;// CONCATENATED MODULE: ./src/components/ticket-dropdown/index.module.scss
2725
2784
  // extracted by mini-css-extract-plugin
2726
2785
  /* harmony default export */ const ticket_dropdown_index_module = ({"placeholder":"placeholder___pcdCn","selectedTicket":"selectedTicket___qkbpH","inPersonDisclaimer":"inPersonDisclaimer___z_DzO","dropdown":"dropdown___mfbPG","soldOut":"soldOut___rBLC0"});
@@ -2794,7 +2853,7 @@ var icon_check_circle = __webpack_require__(60);
2794
2853
  var icon_check_circle_default = /*#__PURE__*/__webpack_require__.n(icon_check_circle);
2795
2854
  ;// CONCATENATED MODULE: ./src/components/promocode-input/index.module.scss
2796
2855
  // extracted by mini-css-extract-plugin
2797
- /* harmony default export */ const promocode_input_index_module = ({"promoCodeWrapper":"promoCodeWrapper___aw3Zx","promoCodeInput":"promoCodeInput___rDiET","promoCodeActive":"promoCodeActive___j7xnn","appliedCode":"appliedCode___rQufS","moreInfo":"moreInfo___Ru3Rv","moreInfoTooltip":"moreInfoTooltip___eaYWm"});
2856
+ /* harmony default export */ const promocode_input_index_module = ({"promoCodeWrapper":"promoCodeWrapper___aw3Zx","promoCodeInput":"promoCodeInput___rDiET","promoCodeActive":"promoCodeActive___j7xnn","codeButtonWrapper":"codeButtonWrapper___jVZh5","noCode":"noCode___YUmVy","appliedCodeIcon":"appliedCodeIcon___pa3B4","moreInfo":"moreInfo___Ru3Rv","moreInfoTooltip":"moreInfoTooltip___eaYWm"});
2798
2857
  ;// CONCATENATED MODULE: ./src/components/promocode-input/index.js
2799
2858
  /**
2800
2859
  * Copyright 2020 OpenStack Foundation
@@ -2838,16 +2897,17 @@ const PromoCodeInput = ({
2838
2897
  if (e.key === "Enter") applyPromoCode(statePromoCode);
2839
2898
  },
2840
2899
  readOnly: !isEmptyString(promoCode)
2841
- }), promoCode !== '' ? /*#__PURE__*/external_react_default().createElement("div", {
2842
- className: promocode_input_index_module.appliedCode
2843
- }, /*#__PURE__*/external_react_default().createElement("img", {
2900
+ }), promoCode && /*#__PURE__*/external_react_default().createElement("img", {
2844
2901
  src: (icon_check_circle_default()),
2845
2902
  className: promocode_input_index_module.appliedCodeIcon
2846
- }), /*#__PURE__*/external_react_default().createElement("button", {
2903
+ }), /*#__PURE__*/external_react_default().createElement("div", {
2904
+ className: `${promocode_input_index_module.codeButtonWrapper} ${statePromoCode ? '' : promocode_input_index_module.noCode}`
2905
+ }, promoCode !== '' ? /*#__PURE__*/external_react_default().createElement("button", {
2847
2906
  onClick: () => removePromoCode()
2848
- }, "Remove")) : /*#__PURE__*/external_react_default().createElement("button", {
2907
+ }, "Remove") : /*#__PURE__*/external_react_default().createElement("button", {
2908
+ disabled: !statePromoCode,
2849
2909
  onClick: () => applyPromoCode(statePromoCode)
2850
- }, "Apply")), showMultipleTicketTexts && /*#__PURE__*/external_react_default().createElement("a", {
2910
+ }, "Apply"))), showMultipleTicketTexts && /*#__PURE__*/external_react_default().createElement("a", {
2851
2911
  className: promocode_input_index_module.moreInfo,
2852
2912
  "data-tip": true,
2853
2913
  "data-for": "promo-code-info"
@@ -2901,6 +2961,7 @@ const TicketTypeComponent = ({
2901
2961
  taxTypes,
2902
2962
  isActive,
2903
2963
  changeForm,
2964
+ formErrors,
2904
2965
  reservation,
2905
2966
  inPersonDisclaimer,
2906
2967
  showMultipleTicketTexts,
@@ -2966,6 +3027,7 @@ const TicketTypeComponent = ({
2966
3027
 
2967
3028
  const decrementQuantity = () => setQuantity(quantity - 1);
2968
3029
 
3030
+ const promoCodeError = Object.keys(formErrors).length > 0 ? formErrors : null;
2969
3031
  return /*#__PURE__*/external_react_default().createElement("div", {
2970
3032
  className: `${ticket_type_index_module.outerWrapper} step-wrapper`
2971
3033
  }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
@@ -3041,12 +3103,14 @@ const TicketTypeComponent = ({
3041
3103
  disabled: maxQuantity === 0 || quantity >= maxQuantity
3042
3104
  }, /*#__PURE__*/external_react_default().createElement("i", {
3043
3105
  className: "glyphicon glyphicon-plus"
3044
- }))))))), allowPromoCodes && /*#__PURE__*/external_react_default().createElement(promocode_input, {
3106
+ }))))))), allowPromoCodes && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement(promocode_input, {
3045
3107
  promoCode: promoCode,
3046
3108
  applyPromoCode: applyPromoCode,
3047
3109
  showMultipleTicketTexts: showMultipleTicketTexts,
3048
3110
  removePromoCode: removePromoCode
3049
- }), showMultipleTicketTexts && /*#__PURE__*/external_react_default().createElement("a", {
3111
+ }), promoCodeError && Object.values(promoCodeError).map(er => /*#__PURE__*/external_react_default().createElement("div", {
3112
+ className: `${ticket_type_index_module.promocodeError} alert alert-danger`
3113
+ }, er))), showMultipleTicketTexts && /*#__PURE__*/external_react_default().createElement("a", {
3050
3114
  className: ticket_type_index_module.moreInfo,
3051
3115
  "data-tip": true,
3052
3116
  "data-for": "ticket-quantity-info"
@@ -3067,6 +3131,12 @@ const TicketTypeComponent = ({
3067
3131
  // extracted by mini-css-extract-plugin
3068
3132
  /* harmony default export */ const button_bar_index_module = ({"button":"button___MZBIY","outerWrapper":"outerWrapper___XRnaq","innerWrapper":"innerWrapper___LFsOH","registration":"registration___jdf6T","actions":"actions___Gsf0y"});
3069
3133
  ;// CONCATENATED MODULE: ./src/components/button-bar/index.js
3134
+ function button_bar_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; }
3135
+
3136
+ function button_bar_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? button_bar_ownKeys(Object(source), !0).forEach(function (key) { button_bar_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : button_bar_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3137
+
3138
+ function button_bar_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; }
3139
+
3070
3140
  /**
3071
3141
  * Copyright 2020 OpenStack Foundation
3072
3142
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3083,15 +3153,19 @@ const TicketTypeComponent = ({
3083
3153
 
3084
3154
 
3085
3155
 
3156
+
3086
3157
  const ButtonBarComponent = ({
3087
3158
  step,
3088
3159
  changeStep,
3160
+ validatePromoCode,
3161
+ onValidateError,
3089
3162
  formValues,
3090
3163
  removeReservedTicket,
3091
3164
  inPersonDisclaimer
3092
3165
  }) => {
3093
3166
  const {
3094
- ticketType
3167
+ ticketType,
3168
+ ticketQuantity
3095
3169
  } = formValues || {};
3096
3170
  const nextButtonText = inPersonDisclaimer && ticketType && isInPersonTicketType(ticketType) ? 'Accept' : 'Next';
3097
3171
  return /*#__PURE__*/external_react_default().createElement("div", {
@@ -3102,25 +3176,27 @@ const ButtonBarComponent = ({
3102
3176
  className: button_bar_index_module.required
3103
3177
  }, step !== 0 && /*#__PURE__*/external_react_default().createElement("span", null, "* Required fields ", /*#__PURE__*/external_react_default().createElement("br", null), " ")), /*#__PURE__*/external_react_default().createElement("div", {
3104
3178
  className: button_bar_index_module.actions
3105
- }, step !== 0 && step !== 2 && /*#__PURE__*/external_react_default().createElement("button", {
3179
+ }, step !== STEP_SELECT_TICKET_TYPE && step !== STEP_PAYMENT && /*#__PURE__*/external_react_default().createElement("button", {
3106
3180
  className: `${button_bar_index_module.button} button`,
3107
3181
  onClick: () => changeStep(step - 1)
3108
- }, "< Back"), step !== 0 && step === 2 && /*#__PURE__*/external_react_default().createElement("button", {
3182
+ }, "< Back"), step !== STEP_SELECT_TICKET_TYPE && step === STEP_PAYMENT && /*#__PURE__*/external_react_default().createElement("button", {
3109
3183
  className: `${button_bar_index_module.button} button`,
3110
3184
  onClick: () => removeReservedTicket()
3111
- }, "< Back"), step === 0 && /*#__PURE__*/external_react_default().createElement("button", {
3185
+ }, "< Back"), step === STEP_SELECT_TICKET_TYPE && /*#__PURE__*/external_react_default().createElement("button", {
3112
3186
  disabled: !ticketType,
3113
3187
  className: `${button_bar_index_module.button} button`,
3114
- onClick: () => changeStep(step + 1)
3115
- }, nextButtonText), step === 1 && ticketType?.cost === 0 && /*#__PURE__*/external_react_default().createElement("button", {
3188
+ onClick: () => validatePromoCode(button_bar_objectSpread(button_bar_objectSpread({}, ticketType), {}, {
3189
+ ticketQuantity
3190
+ }), onValidateError)
3191
+ }, nextButtonText), step === STEP_PERSONAL_INFO && ticketType?.cost === 0 && /*#__PURE__*/external_react_default().createElement("button", {
3116
3192
  className: `${button_bar_index_module.button} button`,
3117
3193
  type: "submit",
3118
3194
  form: "personal-info-form"
3119
- }, "Get Ticket"), step === 1 && ticketType?.cost > 0 && /*#__PURE__*/external_react_default().createElement("button", {
3195
+ }, "Get Ticket"), step === STEP_PERSONAL_INFO && ticketType?.cost > 0 && /*#__PURE__*/external_react_default().createElement("button", {
3120
3196
  className: `${button_bar_index_module.button} button`,
3121
3197
  type: "submit",
3122
3198
  form: "personal-info-form"
3123
- }, "Next"), step === 2 && /*#__PURE__*/external_react_default().createElement("button", {
3199
+ }, "Next"), step === STEP_PAYMENT && /*#__PURE__*/external_react_default().createElement("button", {
3124
3200
  className: `${button_bar_index_module.button} button`,
3125
3201
  type: "submit",
3126
3202
  form: "payment-form"
@@ -3377,7 +3453,7 @@ const TicketTaxesError = ({
3377
3453
 
3378
3454
  /* harmony default export */ const ticket_taxes_error = (TicketTaxesError);
3379
3455
  ;// CONCATENATED MODULE: ./src/components/registration-lite.js
3380
- 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", "showCompanyInput", "companyDDLPlaceholder", "nowUtc", "updateClock", "completedExtraQuestions", "loadProfileData", "closeWidget", "hasVirtualAccessLevel", "logoLight", "logoDark", "showCompanyInputDefaultOptions", "companyDDLOptions2Show", "promoCode", "hasDiscount", "getTicketDiscount", "removePromoCode", "applyPromoCode"];
3456
+ 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", "showCompanyInput", "companyDDLPlaceholder", "nowUtc", "updateClock", "completedExtraQuestions", "loadProfileData", "closeWidget", "hasVirtualAccessLevel", "logoLight", "logoDark", "showCompanyInputDefaultOptions", "companyDDLOptions2Show", "promoCode", "hasDiscount", "getTicketDiscount", "removePromoCode", "applyPromoCode", "validatePromoCode"];
3381
3457
 
3382
3458
  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; }
3383
3459
 
@@ -3508,7 +3584,8 @@ const RegistrationLite = _ref => {
3508
3584
  hasDiscount,
3509
3585
  getTicketDiscount,
3510
3586
  removePromoCode,
3511
- applyPromoCode
3587
+ applyPromoCode,
3588
+ validatePromoCode
3512
3589
  } = _ref,
3513
3590
  rest = registration_lite_objectWithoutProperties(_ref, registration_lite_excluded);
3514
3591
 
@@ -3686,8 +3763,12 @@ const RegistrationLite = _ref => {
3686
3763
  isActive: step === STEP_SELECT_TICKET_TYPE,
3687
3764
  allowPromoCodes: allowPromoCodes,
3688
3765
  applyPromoCode: applyPromoCode,
3689
- removePromoCode: removePromoCode,
3766
+ removePromoCode: () => {
3767
+ setFormErrors({});
3768
+ removePromoCode();
3769
+ },
3690
3770
  promoCode: promoCode,
3771
+ formErrors: formErrors,
3691
3772
  changeForm: ticketForm => setFormValues(registration_lite_objectSpread(registration_lite_objectSpread({}, formValues), ticketForm)),
3692
3773
  showMultipleTicketTexts: showMultipleTicketTexts
3693
3774
  }), /*#__PURE__*/external_react_default().createElement(personal_information, {
@@ -3765,6 +3846,10 @@ const RegistrationLite = _ref => {
3765
3846
  inPersonDisclaimer: inPersonDisclaimer,
3766
3847
  formValues: formValues,
3767
3848
  removeReservedTicket: removeReservedTicket,
3849
+ validatePromoCode: validatePromoCode,
3850
+ onValidateError: {
3851
+ onError: (err, res) => setFormErrors(res.body.errors)
3852
+ },
3768
3853
  changeStep: changeStep
3769
3854
  })))));
3770
3855
  };
@@ -3840,7 +3925,8 @@ RegistrationLite.propTypes = {
3840
3925
  updateClock: updateClock,
3841
3926
  loadProfileData: loadProfileData,
3842
3927
  applyPromoCode: applyPromoCode,
3843
- removePromoCode: removePromoCode
3928
+ removePromoCode: removePromoCode,
3929
+ validatePromoCode: validatePromoCode
3844
3930
  })(RegistrationLite));
3845
3931
  ;// CONCATENATED MODULE: ./src/summit-registration-lite.js
3846
3932
  /**