tf-checkout-react 1.3.35 → 1.3.37-beta

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.
Files changed (28) hide show
  1. package/{src/components → dist}/.DS_Store +0 -0
  2. package/dist/components/common/{SelectField.d.ts → NativeSelectFeild/index.d.ts} +1 -1
  3. package/dist/components/common/SelectField/index.d.ts +18 -0
  4. package/dist/components/common/index.d.ts +2 -1
  5. package/dist/components/ticketsContainer/TicketsSection.d.ts +2 -1
  6. package/dist/components/waitingList/index.d.ts +2 -1
  7. package/dist/tf-checkout-react.cjs.development.js +97 -14
  8. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  9. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  10. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  11. package/dist/tf-checkout-react.esm.js +97 -14
  12. package/dist/tf-checkout-react.esm.js.map +1 -1
  13. package/dist/validators/index.d.ts +2 -1
  14. package/package.json +1 -1
  15. package/src/.DS_Store +0 -0
  16. package/src/assets/.DS_Store +0 -0
  17. package/src/components/addonsContainer/AddonComponent.tsx +2 -2
  18. package/src/components/billing-info-container/index.tsx +5 -1
  19. package/src/components/common/{SelectField.tsx → NativeSelectFeild/index.tsx} +1 -1
  20. package/src/components/common/SelectField/index.tsx +82 -0
  21. package/src/components/common/index.tsx +2 -1
  22. package/src/components/ticketsContainer/TicketsSection.tsx +31 -11
  23. package/src/components/ticketsContainer/index.tsx +2 -1
  24. package/src/components/waitingList/index.tsx +3 -2
  25. package/src/env.ts +2 -2
  26. package/src/normalizers/index.ts +8 -5
  27. package/src/validators/index.ts +25 -5
  28. package/src/components/common/dist/PhoneNumberField.js +0 -96
Binary file
@@ -17,5 +17,5 @@ export interface ISelectField {
17
17
  interface IOtherProps {
18
18
  [key: string]: any;
19
19
  }
20
- export declare const SelectField: ({ label, type, field, selectOptions, form: { touched, errors, setFieldValue }, theme, onChange, }: ISelectField & IOtherProps) => JSX.Element;
20
+ export declare const NativeSelectField: ({ label, type, field, selectOptions, form: { touched, errors, setFieldValue }, theme, onChange, }: ISelectField & IOtherProps) => JSX.Element;
21
21
  export {};
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import { SelectChangeEvent } from '@mui/material/Select';
3
+ import { FieldInputProps, FormikProps } from 'formik';
4
+ interface ISelectOption {
5
+ id: string | number;
6
+ name: string | number;
7
+ value: string | number;
8
+ }
9
+ interface ISelectField {
10
+ field: FieldInputProps<any>;
11
+ form: FormikProps<any>;
12
+ options: ISelectOption[];
13
+ label?: string;
14
+ isMultiple?: boolean;
15
+ onChange?: (e: SelectChangeEvent<string[]>) => void;
16
+ }
17
+ declare function SelectField({ label, isMultiple, field, form: { errors, setFieldValue }, options, onChange, }: ISelectField): JSX.Element;
18
+ export { SelectField };
@@ -3,5 +3,6 @@ export { CustomField } from './CustomField';
3
3
  export { FormikPhoneNumberField } from './FormikPhoneNumberField';
4
4
  export { PhoneNumberField } from './PhoneNumberField';
5
5
  export { Loader } from './Loader';
6
- export { SelectField } from './SelectField';
6
+ export { NativeSelectField } from './NativeSelectFeild';
7
7
  export { RadioGroupField } from './RadioGroupField';
8
+ export { SelectField } from './SelectField';
@@ -1,6 +1,7 @@
1
1
  import './style.css';
2
2
  import { ReactNode } from 'react';
3
3
  interface ITicketsSectionProps {
4
+ event: any;
4
5
  ticketsList: any;
5
6
  selectedTickets: any;
6
7
  handleTicketSelect: any;
@@ -8,5 +9,5 @@ interface ITicketsSectionProps {
8
9
  ticketsHeaderComponent?: ReactNode;
9
10
  hideTicketsHeader: boolean;
10
11
  }
11
- export declare const TicketsSection: ({ ticketsList, selectedTickets, handleTicketSelect, sortBySoldOut, ticketsHeaderComponent, hideTicketsHeader }: ITicketsSectionProps) => JSX.Element;
12
+ export declare const TicketsSection: ({ event, ticketsList, selectedTickets, handleTicketSelect, sortBySoldOut, ticketsHeaderComponent, hideTicketsHeader, }: ITicketsSectionProps) => JSX.Element;
12
13
  export {};
@@ -3,6 +3,7 @@ import './style.css';
3
3
  interface WaitingListProps {
4
4
  tickets: any;
5
5
  eventId: number;
6
+ defaultMaxQuantity: number;
6
7
  }
7
- declare const WaitingList: ({ tickets, eventId }: WaitingListProps) => JSX.Element;
8
+ declare const WaitingList: ({ tickets, eventId, defaultMaxQuantity }: WaitingListProps) => JSX.Element;
8
9
  export default WaitingList;
@@ -40,6 +40,9 @@ var FormHelperText = _interopDefault(require('@mui/material/FormHelperText'));
40
40
  var FormLabel = _interopDefault(require('@mui/material/FormLabel'));
41
41
  var Radio = _interopDefault(require('@mui/material/Radio'));
42
42
  var RadioGroup = _interopDefault(require('@mui/material/RadioGroup'));
43
+ var ListItemText = _interopDefault(require('@mui/material/ListItemText'));
44
+ var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
45
+ var OutlinedInput = _interopDefault(require('@mui/material/OutlinedInput'));
43
46
  var Yup = require('yup');
44
47
  var Box = _interopDefault(require('@mui/material/Box'));
45
48
  var Modal = _interopDefault(require('@mui/material/Modal'));
@@ -59,7 +62,6 @@ var _some = _interopDefault(require('lodash/some'));
59
62
  var Button$1 = _interopDefault(require('react-bootstrap/Button'));
60
63
  var moment = _interopDefault(require('moment-timezone'));
61
64
  var _sortBy = _interopDefault(require('lodash/sortBy'));
62
- var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
63
65
  var Autocomplete = _interopDefault(require('@mui/material/Autocomplete'));
64
66
  var Paper = _interopDefault(require('@mui/material/Paper'));
65
67
  var Table = _interopDefault(require('@mui/material/Table'));
@@ -1620,10 +1622,24 @@ var combineValidators = function combineValidators() {
1620
1622
  }
1621
1623
  };
1622
1624
  };
1625
+ function isFalsy(item) {
1626
+ try {
1627
+ if (!item || // handles most, like false, 0, null, etc
1628
+ typeof item == 'object' && Object.keys(item).length === 0 && // for empty objects, like {}, []
1629
+ !(typeof item.addEventListener == 'function') // omit webpage elements
1630
+ ) {
1631
+ return true;
1632
+ }
1633
+ } catch (err) {
1634
+ return true;
1635
+ }
1636
+
1637
+ return false;
1638
+ }
1623
1639
  var requiredValidator = function requiredValidator(value, message) {
1624
1640
  var errorMessage = '';
1625
1641
 
1626
- if (!value) {
1642
+ if (isFalsy(value)) {
1627
1643
  errorMessage = message || 'Required';
1628
1644
  }
1629
1645
 
@@ -1951,7 +1967,7 @@ function Loader() {
1951
1967
  }, React__default.createElement(CircularProgress, null));
1952
1968
  }
1953
1969
 
1954
- var SelectField = function SelectField(_ref) {
1970
+ var NativeSelectField = function NativeSelectField(_ref) {
1955
1971
  var label = _ref.label,
1956
1972
  _ref$type = _ref.type,
1957
1973
  type = _ref$type === void 0 ? 'text' : _ref$type,
@@ -2052,6 +2068,62 @@ var RadioGroupField = function RadioGroupField(_ref) {
2052
2068
  })));
2053
2069
  };
2054
2070
 
2071
+ function SelectField(_ref) {
2072
+ var label = _ref.label,
2073
+ isMultiple = _ref.isMultiple,
2074
+ field = _ref.field,
2075
+ _ref$form = _ref.form,
2076
+ errors = _ref$form.errors,
2077
+ setFieldValue = _ref$form.setFieldValue,
2078
+ options = _ref.options,
2079
+ _ref$onChange = _ref.onChange,
2080
+ onChange = _ref$onChange === void 0 ? _identity : _ref$onChange;
2081
+ var name = field.name,
2082
+ value = field.value;
2083
+ var selectId = "select-field-" + name;
2084
+
2085
+ var error = _get(errors, name);
2086
+
2087
+ var handleChange = function handleChange(event) {
2088
+ var value = event.target.value;
2089
+ setFieldValue(name, value);
2090
+ onChange(event);
2091
+ };
2092
+
2093
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(material.FormControl, {
2094
+ fullWidth: true,
2095
+ error: Boolean(error)
2096
+ }, label && React__default.createElement(material.InputLabel, {
2097
+ id: selectId
2098
+ }, label), React__default.createElement(Select, {
2099
+ id: name,
2100
+ labelId: selectId,
2101
+ multiple: isMultiple,
2102
+ value: value,
2103
+ onChange: handleChange,
2104
+ input: React__default.createElement(OutlinedInput, {
2105
+ label: label
2106
+ }),
2107
+ renderValue: function renderValue(selected) {
2108
+ return isMultiple ? selected.join(', ') : selected;
2109
+ },
2110
+ sx: {
2111
+ textAlign: 'start'
2112
+ }
2113
+ }, options.map(function (option) {
2114
+ return React__default.createElement(MenuItem, {
2115
+ key: option.name,
2116
+ value: option.value
2117
+ }, isMultiple && React__default.createElement(Checkbox, {
2118
+ checked: value.indexOf(option.value) > -1
2119
+ }), React__default.createElement(ListItemText, {
2120
+ primary: option.name
2121
+ }));
2122
+ })), error ? React__default.createElement(FormHelperText, {
2123
+ error: true
2124
+ }, error) : null));
2125
+ }
2126
+
2055
2127
  var SnackbarAlert = function SnackbarAlert(_ref) {
2056
2128
  var isOpen = _ref.isOpen,
2057
2129
  message = _ref.message,
@@ -3815,7 +3887,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
3815
3887
  validate: getValidateFunctions(element, states, props.values, props.errors),
3816
3888
  setFieldValue: props.setFieldValue,
3817
3889
  onBlur: props.handleBlur,
3818
- component: element.type === 'checkbox' ? CheckboxField : element.type === 'select' ? SelectField : element.type === 'phone' ? PhoneNumberField : element.type === 'date' ? DatePickerField : element.type === 'radio' ? RadioGroupField : CustomField,
3890
+ component: element.type === 'checkbox' ? CheckboxField : element.type === 'select' ? NativeSelectField : element.type === 'phone' ? PhoneNumberField : element.type === 'date' ? DatePickerField : element.type === 'radio' ? RadioGroupField : element.type === 'select_multi' ? SelectField : CustomField,
3819
3891
  selectOptions: element.name === 'country' ? _map(countries, function (item) {
3820
3892
  return {
3821
3893
  value: item.id,
@@ -3934,7 +4006,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
3934
4006
  });
3935
4007
 
3936
4008
  var currencyNormalizerCreator = function currencyNormalizerCreator(value, currency) {
3937
- return !value ? '' : "" + getCurrencySymbolByCurrency(currency) + value;
4009
+ return !value ? '' : getCurrencySymbolByCurrency(currency) + " " + value;
3938
4010
  };
3939
4011
  var createFixedFloatNormalizer = function createFixedFloatNormalizer(fixedValue) {
3940
4012
  return function (value) {
@@ -5201,7 +5273,9 @@ var generateQuantity = function generateQuantity(n) {
5201
5273
  var WaitingList = function WaitingList(_ref) {
5202
5274
  var _ref$tickets = _ref.tickets,
5203
5275
  tickets = _ref$tickets === void 0 ? {} : _ref$tickets,
5204
- eventId = _ref.eventId;
5276
+ eventId = _ref.eventId,
5277
+ _ref$defaultMaxQuanti = _ref.defaultMaxQuantity,
5278
+ defaultMaxQuantity = _ref$defaultMaxQuanti === void 0 ? 10 : _ref$defaultMaxQuanti;
5205
5279
  var isWindowDefined = typeof window !== 'undefined';
5206
5280
  var userData = isWindowDefined && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {};
5207
5281
 
@@ -5310,7 +5384,7 @@ var WaitingList = function WaitingList(_ref) {
5310
5384
  label: 'Quantity Requested',
5311
5385
  value: '',
5312
5386
  disabled: true
5313
- }].concat(generateQuantity(10))
5387
+ }].concat(generateQuantity(defaultMaxQuantity != null ? defaultMaxQuantity : 10))
5314
5388
  }))), React__default.createElement("div", {
5315
5389
  className: "field-item"
5316
5390
  }, React__default.createElement(formik.Field, {
@@ -5576,12 +5650,17 @@ var TicketRow = function TicketRow(_ref) {
5576
5650
  };
5577
5651
 
5578
5652
  var TicketsSection = function TicketsSection(_ref) {
5579
- var ticketsList = _ref.ticketsList,
5653
+ var _ref$event = _ref.event,
5654
+ event = _ref$event === void 0 ? {
5655
+ currency: {}
5656
+ } : _ref$event,
5657
+ ticketsList = _ref.ticketsList,
5580
5658
  selectedTickets = _ref.selectedTickets,
5581
5659
  handleTicketSelect = _ref.handleTicketSelect,
5582
5660
  sortBySoldOut = _ref.sortBySoldOut,
5583
5661
  ticketsHeaderComponent = _ref.ticketsHeaderComponent,
5584
5662
  hideTicketsHeader = _ref.hideTicketsHeader;
5663
+ var currency = event.currency.currency;
5585
5664
  var sortedTicketsList = sortBySoldOut ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut') : _sortBy(ticketsList, 'sortOrder');
5586
5665
  var showGroup = !!sortedTicketsList.find(function (ticket) {
5587
5666
  return ticket.groupName;
@@ -5589,6 +5668,8 @@ var TicketsSection = function TicketsSection(_ref) {
5589
5668
  return React__default.createElement(React__default.Fragment, null, !hideTicketsHeader && ticketsHeaderComponent, sortedTicketsList.map(function (ticket, i, arr) {
5590
5669
  var _arr;
5591
5670
 
5671
+ var ticketPrice = currencyNormalizerCreator((+ticket.price).toFixed(2), currency);
5672
+ var ticketOldPrice = currencyNormalizerCreator((+ticket.oldPrice).toFixed(2), currency);
5592
5673
  var isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut;
5593
5674
 
5594
5675
  var ticketSelect = function ticketSelect(event) {
@@ -5603,12 +5684,12 @@ var TicketsSection = function TicketsSection(_ref) {
5603
5684
  }
5604
5685
 
5605
5686
  var ticketIsFree = +ticket.price === 0;
5606
- var ticketPrice = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : "$ " + (+ticket.price).toFixed(2);
5687
+ var ticketPriceElem = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : ticketPrice;
5607
5688
  var isNewGroupTicket = (ticket == null ? void 0 : ticket.groupName) !== ((_arr = arr[i - 1]) == null ? void 0 : _arr.groupName);
5608
5689
  return React__default.createElement(React__default.Fragment, {
5609
5690
  key: ticket.id || ticket.name
5610
5691
  }, showGroup && isNewGroupTicket ? React__default.createElement("div", {
5611
- className: 'event-detail__tier group-title'
5692
+ className: "event-detail__tier group-title"
5612
5693
  }, ticket.groupName || '') : null, React__default.createElement("div", {
5613
5694
  className: "event-detail__tier " + (isSoldOut ? 'disabled' : '')
5614
5695
  }, React__default.createElement("div", {
@@ -5619,9 +5700,9 @@ var TicketsSection = function TicketsSection(_ref) {
5619
5700
  className: "event-detail__tier-price"
5620
5701
  }, ticketIsDiscounted && React__default.createElement("p", {
5621
5702
  className: "old-price"
5622
- }, "$ ", (+ticket.oldPrice).toFixed(2)), React__default.createElement("p", {
5703
+ }, ticketOldPrice), React__default.createElement("p", {
5623
5704
  className: isSoldOut ? 'sold-out' : ''
5624
- }, ticketPrice), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
5705
+ }, ticketPriceElem), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
5625
5706
  className: "fees"
5626
5707
  }, ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)')), React__default.createElement("div", {
5627
5708
  className: "event-detail__tier-state",
@@ -6269,6 +6350,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
6269
6350
  }, error), isLoading ? React__default.createElement(Loader, null) : React__default.createElement("div", {
6270
6351
  ref: ticketsContainerRef
6271
6352
  }, !isSalesClosed && React__default.createElement(TicketsSection, {
6353
+ event: event,
6272
6354
  ticketsList: tickets,
6273
6355
  selectedTickets: selectedTickets,
6274
6356
  handleTicketSelect: handleTicketSelect,
@@ -6288,7 +6370,8 @@ var TicketsContainer = function TicketsContainer(_ref) {
6288
6370
  isLoggedIn: isLoggedIn
6289
6371
  }) : null, showWaitingList && event.salesStarted && !hideWaitingList && React__default.createElement(WaitingList, {
6290
6372
  tickets: tickets,
6291
- eventId: eventId
6373
+ eventId: eventId,
6374
+ defaultMaxQuantity: event.waitingListMaxQuantity
6292
6375
  }), codeIsLoading ? React__default.createElement(Loader, null) : isSalesClosed ? null : showAccessCodeSection ? React__default.createElement(AccessCodeSection, {
6293
6376
  code: code,
6294
6377
  setCode: setCode,
@@ -7624,7 +7707,7 @@ var AddonComponent = function AddonComponent(_ref) {
7624
7707
  }, React__default.createElement(formik.Field, {
7625
7708
  name: id,
7626
7709
  selectOptions: selectOptions,
7627
- component: SelectField,
7710
+ component: NativeSelectField,
7628
7711
  onChange: function onChange(e) {
7629
7712
  var value = e.target.value;
7630
7713
  handleAddonChange(id, value);