tf-checkout-react 1.0.99-beta.33 → 1.0.99-beta.34

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.
@@ -5,3 +5,4 @@ export declare const getStates: (countryId: string | number) => Promise<IStatesR
5
5
  export declare const sendRSVPInfo: (eventId: number, data: IRSVPRequestData) => Promise<IRSVPResponse>;
6
6
  export declare const addToWaitingList: (id: number, data: IWaitingListRequestData) => Promise<IWaitingListResponse>;
7
7
  export declare const postReferralVisits: (eventId: string, referralId: string) => Promise<IAxiosResponseData>;
8
+ export declare const validatePhoneNumber: (phone: string) => Promise<IAxiosResponseData>;
@@ -4,6 +4,6 @@ export { setAxiosHeader, setBaseUrl } from './publicRequest';
4
4
  export { getOrders, getOrderDetails } from './orders';
5
5
  export { addToCart, getCart } from './cart';
6
6
  export { postOnCheckout } from './checkout';
7
- export { getEvent, getTickets, getCountries, getStates, addToWaitingList, sendRSVPInfo, postReferralVisits, } from './common';
7
+ export { getEvent, getTickets, getCountries, getStates, addToWaitingList, sendRSVPInfo, postReferralVisits, validatePhoneNumber, } from './common';
8
8
  export { getPaymentData, getConditions, handlePaymentSuccess, handleFreeSuccess, getConfirmationData, } from './payment';
9
9
  export { resaleTicket, removeFromResale, processTicket, declineInvitation, } from './resale';
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { FieldInputProps, FormikProps } from 'formik';
3
+ export interface IPhoneNumberField {
4
+ label: string;
5
+ field: FieldInputProps<any>;
6
+ form: FormikProps<any>;
7
+ type: string;
8
+ }
9
+ export declare const PhoneNumberField: ({ label, type, field, form: { errors, setFieldError, setStatus }, }: IPhoneNumberField) => JSX.Element;
@@ -3,3 +3,4 @@ export { CustomField } from './CustomField';
3
3
  export { FormikPhoneNumberField } from './FormikPhoneNumberField';
4
4
  export { Loader } from './Loader';
5
5
  export { SelectField } from './SelectField';
6
+ export { PhoneNumberField } from './PhoneNumberField';
@@ -1,6 +1,6 @@
1
- import { FC } from 'react';
2
- import { AxiosError } from 'axios';
3
1
  import './style.css';
2
+ import { AxiosError } from 'axios';
3
+ import { FC } from 'react';
4
4
  interface Props {
5
5
  onClose: () => void;
6
6
  onRegister: () => void;
@@ -16,6 +16,7 @@ var _includes = _interopDefault(require('lodash/includes'));
16
16
  var _isEmpty = _interopDefault(require('lodash/isEmpty'));
17
17
  var _isEqual = _interopDefault(require('lodash/isEqual'));
18
18
  var _map = _interopDefault(require('lodash/map'));
19
+ var _some = _interopDefault(require('lodash/some'));
19
20
  var nanoid = require('nanoid');
20
21
  var React = require('react');
21
22
  var React__default = _interopDefault(React);
@@ -25,9 +26,10 @@ var FormControlLabel = _interopDefault(require('@mui/material/FormControlLabel')
25
26
  var FormGroup = _interopDefault(require('@mui/material/FormGroup'));
26
27
  var styles$1 = require('@mui/styles');
27
28
  var TextField = _interopDefault(require('@mui/material/TextField'));
28
- var MuiPhoneNumber = _interopDefault(require('material-ui-phone-number'));
29
+ require('material-ui-phone-number');
29
30
  var CircularProgress = _interopDefault(require('@mui/material/CircularProgress'));
30
31
  var Select = _interopDefault(require('@mui/material/Select'));
32
+ var _debounce = _interopDefault(require('lodash/debounce'));
31
33
  var Modal = _interopDefault(require('@mui/material/Modal'));
32
34
  var Box = _interopDefault(require('@mui/material/Box'));
33
35
  var Countdown$1 = _interopDefault(require('react-countdown'));
@@ -45,7 +47,6 @@ var stripeJs = require('@stripe/stripe-js');
45
47
  var reactShare = require('react-share');
46
48
  var privateTheming = require('@mui/private-theming');
47
49
  var _find = _interopDefault(require('lodash/find'));
48
- var _some = _interopDefault(require('lodash/some'));
49
50
  var Button$1 = _interopDefault(require('react-bootstrap/Button'));
50
51
  var moment = _interopDefault(require('moment-timezone'));
51
52
  var _sortBy = _interopDefault(require('lodash/sortBy'));
@@ -938,7 +939,8 @@ var setBaseUrl = function setBaseUrl(baseUrl) {
938
939
  };
939
940
 
940
941
  var CONFIGS = {
941
- BASE_URL: 'https://www.ticketfairy.com/api'
942
+ BASE_URL: 'https://www.ticketfairy.com/api',
943
+ X_SOURCE_ORIGIN: 'preview2.restlessnit.es'
942
944
  };
943
945
  var setConfigs = function setConfigs(configs) {
944
946
  _forEach(configs, function (value, key) {
@@ -1713,6 +1715,32 @@ var postReferralVisits = /*#__PURE__*/function () {
1713
1715
  return _ref7.apply(this, arguments);
1714
1716
  };
1715
1717
  }();
1718
+ var validatePhoneNumber = /*#__PURE__*/function () {
1719
+ var _ref8 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee8(phone) {
1720
+ var response;
1721
+ return runtime_1.wrap(function _callee8$(_context8) {
1722
+ while (1) {
1723
+ switch (_context8.prev = _context8.next) {
1724
+ case 0:
1725
+ _context8.next = 2;
1726
+ return publicRequest.get("/v1/account/validate_phone?phone=" + phone);
1727
+
1728
+ case 2:
1729
+ response = _context8.sent;
1730
+ return _context8.abrupt("return", response.data);
1731
+
1732
+ case 4:
1733
+ case "end":
1734
+ return _context8.stop();
1735
+ }
1736
+ }
1737
+ }, _callee8);
1738
+ }));
1739
+
1740
+ return function validatePhoneNumber(_x11) {
1741
+ return _ref8.apply(this, arguments);
1742
+ };
1743
+ }();
1716
1744
 
1717
1745
  var getPaymentData = /*#__PURE__*/function () {
1718
1746
  var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(hash) {
@@ -2090,51 +2118,6 @@ var getCurrencySymbolByCurrency = function getCurrencySymbolByCurrency(currency)
2090
2118
  return 'US$';
2091
2119
  }
2092
2120
  };
2093
- var removePlusSign = function removePlusSign(string) {
2094
- if (string === void 0) {
2095
- string = '';
2096
- }
2097
-
2098
- return string.replace('+', '');
2099
- };
2100
-
2101
- var _excluded$1 = ["label", "field", "form", "setFieldValue", "selectOptions"];
2102
- var FormikPhoneNumberField = function FormikPhoneNumberField(_ref) {
2103
- var label = _ref.label,
2104
- field = _ref.field,
2105
- _ref$form = _ref.form,
2106
- touched = _ref$form.touched,
2107
- errors = _ref$form.errors,
2108
- initialValues = _ref$form.initialValues,
2109
- setFieldValue = _ref.setFieldValue,
2110
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
2111
-
2112
- var error = _get(errors, field.name);
2113
-
2114
- var isTouched = Boolean(_get(touched, field.name));
2115
- var customTheme = styles$1.useTheme();
2116
- return React__default.createElement(MuiPhoneNumber, Object.assign({
2117
- name: 'phone',
2118
- value: initialValues.phone,
2119
- onChange: function onChange(e) {
2120
- return setFieldValue("phone", removePlusSign(e));
2121
- },
2122
- variant: "outlined",
2123
- defaultCountry: 'us',
2124
- disableDropdown: true,
2125
- label: label,
2126
- error: !!error && isTouched,
2127
- helperText: isTouched && error,
2128
- fullWidth: true,
2129
- InputLabelProps: {
2130
- sx: customTheme == null ? void 0 : customTheme.input
2131
- },
2132
- InputProps: {
2133
- sx: customTheme == null ? void 0 : customTheme.input
2134
- },
2135
- autoFormat: false
2136
- }, rest));
2137
- };
2138
2121
 
2139
2122
  function Loader() {
2140
2123
  return React__default.createElement("div", {
@@ -2192,6 +2175,81 @@ var SelectField = function SelectField(_ref) {
2192
2175
  }, error) : null);
2193
2176
  };
2194
2177
 
2178
+ var PhoneNumberField = function PhoneNumberField(_ref) {
2179
+ var label = _ref.label,
2180
+ _ref$type = _ref.type,
2181
+ type = _ref$type === void 0 ? 'text' : _ref$type,
2182
+ field = _ref.field,
2183
+ _ref$form = _ref.form,
2184
+ errors = _ref$form.errors,
2185
+ setFieldError = _ref$form.setFieldError,
2186
+ setStatus = _ref$form.setStatus;
2187
+
2188
+ var error = _get(errors, field.name); // eslint-disable-next-line react-hooks/exhaustive-deps
2189
+
2190
+
2191
+ var debounceCb = React.useCallback(_debounce(function (cb) {
2192
+ return void cb();
2193
+ }, 1000), []);
2194
+ React.useEffect(function () {
2195
+ if (field.value) {
2196
+ var _setStatus;
2197
+
2198
+ setStatus((_setStatus = {}, _setStatus[field.name] = true, _setStatus));
2199
+ }
2200
+
2201
+ debounceCb( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {
2202
+ var message, _setStatus2;
2203
+
2204
+ return runtime_1.wrap(function _callee$(_context) {
2205
+ while (1) {
2206
+ switch (_context.prev = _context.next) {
2207
+ case 0:
2208
+ _context.prev = 0;
2209
+
2210
+ if (!field.value) {
2211
+ _context.next = 4;
2212
+ break;
2213
+ }
2214
+
2215
+ _context.next = 4;
2216
+ return validatePhoneNumber(field.value);
2217
+
2218
+ case 4:
2219
+ setFieldError(field.name, '');
2220
+ _context.next = 11;
2221
+ break;
2222
+
2223
+ case 7:
2224
+ _context.prev = 7;
2225
+ _context.t0 = _context["catch"](0);
2226
+ message = _get(_context.t0, 'response.data.message', 'Invalid phone number');
2227
+ setFieldError(field.name, message);
2228
+
2229
+ case 11:
2230
+ _context.prev = 11;
2231
+ setStatus((_setStatus2 = {}, _setStatus2[field.name] = false, _setStatus2));
2232
+ return _context.finish(11);
2233
+
2234
+ case 14:
2235
+ case "end":
2236
+ return _context.stop();
2237
+ }
2238
+ }
2239
+ }, _callee, null, [[0, 7, 11, 14]]);
2240
+ }))); // eslint-disable-next-line
2241
+ }, [field.value]);
2242
+ return React__default.createElement(TextField, Object.assign({}, field, {
2243
+ id: field.name,
2244
+ label: label,
2245
+ type: type,
2246
+ fullWidth: true,
2247
+ error: !!error,
2248
+ helperText: error,
2249
+ value: field.value || ''
2250
+ }));
2251
+ };
2252
+
2195
2253
  var SnackbarAlert = function SnackbarAlert(_ref) {
2196
2254
  var isOpen = _ref.isOpen,
2197
2255
  message = _ref.message,
@@ -2420,9 +2478,9 @@ var LoginModal = function LoginModal(_ref) {
2420
2478
  var RegisterModal = function RegisterModal(_ref) {
2421
2479
  var onClose = _ref.onClose,
2422
2480
  _ref$onGetProfileData = _ref.onGetProfileDataSuccess,
2423
- onGetProfileDataSuccess = _ref$onGetProfileData === void 0 ? function () {} : _ref$onGetProfileData,
2481
+ onGetProfileDataSuccess = _ref$onGetProfileData === void 0 ? _identity : _ref$onGetProfileData,
2424
2482
  _ref$onGetProfileData2 = _ref.onGetProfileDataError,
2425
- onGetProfileDataError = _ref$onGetProfileData2 === void 0 ? function () {} : _ref$onGetProfileData2;
2483
+ onGetProfileDataError = _ref$onGetProfileData2 === void 0 ? _identity : _ref$onGetProfileData2;
2426
2484
  return React__default.createElement("div", {
2427
2485
  style: {
2428
2486
  display: 'flex',
@@ -2767,7 +2825,7 @@ var DatePickerField = function DatePickerField(_ref) {
2767
2825
  })));
2768
2826
  };
2769
2827
 
2770
- var _excluded$2 = ["firstName", "lastName", "holderAge", "confirmEmail", "confirmPassword"];
2828
+ var _excluded$1 = ["firstName", "lastName", "holderAge", "confirmEmail", "confirmPassword"];
2771
2829
  var getInitialValues = function getInitialValues(data, propsInitialValues, userValues) {
2772
2830
  if (data === void 0) {
2773
2831
  data = [];
@@ -2850,7 +2908,7 @@ var createCheckoutDataBody = function createCheckoutDataBody(ticketsQuantity, va
2850
2908
 
2851
2909
  var _values = values,
2852
2910
  holderAge = _values.holderAge,
2853
- restValues = _objectWithoutPropertiesLoose(_values, _excluded$2);
2911
+ restValues = _objectWithoutPropertiesLoose(_values, _excluded$1);
2854
2912
 
2855
2913
  var holders = [];
2856
2914
  var ticketHolders = [];
@@ -3054,7 +3112,7 @@ var FieldsSection = function FieldsSection(_ref2) {
3054
3112
  }),
3055
3113
  setFieldValue: setFieldValue,
3056
3114
  onBlur: handleBlur,
3057
- component: type === 'checkbox' ? CheckboxField : type === 'select' ? SelectField : type === 'phone' ? FormikPhoneNumberField : type === 'date' ? DatePickerField : CustomField,
3115
+ component: type === 'checkbox' ? CheckboxField : type === 'select' ? SelectField : type === 'phone' ? PhoneNumberField : type === 'date' ? DatePickerField : CustomField,
3058
3116
  selectOptions: name === 'country' ? countries : name === 'state' ? states : [],
3059
3117
  theme: theme
3060
3118
  }));
@@ -3085,7 +3143,7 @@ var LogicRunner = function LogicRunner(_ref) {
3085
3143
  case 0:
3086
3144
  _context.prev = 0;
3087
3145
  _context.next = 3;
3088
- return getStates(values.country);
3146
+ return getStates(values.country || 1);
3089
3147
 
3090
3148
  case 3:
3091
3149
  res = _context.sent;
@@ -3827,13 +3885,17 @@ var BillingInfoContainer = function BillingInfoContainer(_ref) {
3827
3885
  return React__default.createElement("div", {
3828
3886
  className: element.className,
3829
3887
  key: element.name
3830
- }, React__default.createElement(formik.Field, {
3888
+ }, React__default.createElement(formik.FastField, {
3831
3889
  name: element.name + "-" + index,
3832
3890
  label: element.label,
3833
3891
  type: element.type,
3834
3892
  required: true,
3835
- component: element.type === 'checkbox' ? CheckboxField : CustomField,
3836
- validate: combineValidators(element.required ? requiredValidator : null, element.onValidate ? element.onValidate : null)
3893
+ component: element.type === 'phone' ? PhoneNumberField : element.type === 'checkbox' ? CheckboxField : CustomField,
3894
+ validate: combineValidators(element.required ? requiredValidator : function () {
3895
+ return props.errors[element.name + "-" + index];
3896
+ }, element.onValidate ? element.onValidate : function () {
3897
+ return props.errors[element.name + "-" + index];
3898
+ })
3837
3899
  }));
3838
3900
  })));
3839
3901
  }));
@@ -3843,7 +3905,7 @@ var BillingInfoContainer = function BillingInfoContainer(_ref) {
3843
3905
  type: "submit",
3844
3906
  variant: "contained",
3845
3907
  className: "login-register-button",
3846
- disabled: props.isSubmitting
3908
+ disabled: props.isSubmitting || _some(props.status, Boolean)
3847
3909
  }, props.isSubmitting ? React__default.createElement(material.CircularProgress, {
3848
3910
  size: 26
3849
3911
  }) : buttonName))));
@@ -6155,11 +6217,11 @@ var ConfirmModal = function ConfirmModal(_ref) {
6155
6217
  }, "OK"))));
6156
6218
  };
6157
6219
 
6158
- var _excluded$3 = ["label", "field", "theme"];
6220
+ var _excluded$2 = ["label", "field", "theme"];
6159
6221
  var RadioField = function RadioField(_ref) {
6160
6222
  var label = _ref.label,
6161
6223
  field = _ref.field,
6162
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
6224
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
6163
6225
 
6164
6226
  var customTheme = styles$1.useTheme();
6165
6227
  return React__default.createElement(FormGroup, null, React__default.createElement(FormControlLabel, {