tf-checkout-react 1.3.34 → 1.3.36
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/components/common/{SelectField.d.ts → NativeSelectFeild/index.d.ts} +1 -1
- package/dist/components/common/SelectField/index.d.ts +18 -0
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/ticketsContainer/TicketsSection.d.ts +2 -1
- package/dist/tf-checkout-react.cjs.development.js +103 -22
- package/dist/tf-checkout-react.cjs.development.js.map +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js +1 -1
- package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
- package/dist/tf-checkout-react.esm.js +103 -22
- package/dist/tf-checkout-react.esm.js.map +1 -1
- package/dist/validators/index.d.ts +2 -1
- package/package.json +1 -1
- package/src/components/addonsContainer/AddonComponent.tsx +2 -2
- package/src/components/billing-info-container/index.tsx +16 -18
- package/src/components/common/{SelectField.tsx → NativeSelectFeild/index.tsx} +1 -1
- package/src/components/common/SelectField/index.tsx +82 -0
- package/src/components/common/index.tsx +2 -1
- package/src/components/ticketsContainer/TicketsSection.tsx +29 -11
- package/src/components/ticketsContainer/index.tsx +1 -0
- package/src/normalizers/index.ts +8 -5
- package/src/validators/index.ts +25 -5
|
@@ -17,5 +17,5 @@ export interface ISelectField {
|
|
|
17
17
|
interface IOtherProps {
|
|
18
18
|
[key: string]: any;
|
|
19
19
|
}
|
|
20
|
-
export declare const
|
|
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 {
|
|
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 {};
|
|
@@ -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 (
|
|
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
|
|
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,
|
|
@@ -3269,13 +3341,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
|
|
|
3269
3341
|
case 3:
|
|
3270
3342
|
res = _context2.sent;
|
|
3271
3343
|
setCustomHeader(res);
|
|
3272
|
-
setCountries(
|
|
3273
|
-
return {
|
|
3274
|
-
label: item.name,
|
|
3275
|
-
value: item.id,
|
|
3276
|
-
code: item.code
|
|
3277
|
-
};
|
|
3278
|
-
}));
|
|
3344
|
+
setCountries(_get(res, 'data.data'));
|
|
3279
3345
|
setIsCountriesLoading(false);
|
|
3280
3346
|
onGetCountriesSuccess(res.data);
|
|
3281
3347
|
_context2.next = 14;
|
|
@@ -3504,6 +3570,10 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
|
|
|
3504
3570
|
}
|
|
3505
3571
|
}
|
|
3506
3572
|
|
|
3573
|
+
var selectedCountry = _find(countries, function (item) {
|
|
3574
|
+
return item.code.toLowerCase() === defaultCountry;
|
|
3575
|
+
}) || {};
|
|
3576
|
+
var initialCountry = selectedCountry.id || _get(userData, 'country', '') || '1';
|
|
3507
3577
|
return React__default.createElement(styles.ThemeProvider, {
|
|
3508
3578
|
theme: themeMui
|
|
3509
3579
|
}, (loading || isCountriesLoading) && React__default.createElement(Backdrop, {
|
|
@@ -3520,9 +3590,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
|
|
|
3520
3590
|
onCountdownFinish: onCountdownFinish
|
|
3521
3591
|
}), !isCountriesLoading && React__default.createElement(formik.Formik, {
|
|
3522
3592
|
initialValues: getInitialValues(dataWithUniqueIds, _extends({
|
|
3523
|
-
country:
|
|
3524
|
-
return item.code.toLowerCase() === defaultCountry;
|
|
3525
|
-
}) || {}).value || _get(userData, 'country', '') || '1',
|
|
3593
|
+
country: initialCountry,
|
|
3526
3594
|
state: _get(userData, 'state', '') || '1',
|
|
3527
3595
|
brand_opt_in: optedInFieldValue,
|
|
3528
3596
|
ttf_opt_in: ttfOptIn
|
|
@@ -3819,8 +3887,13 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
|
|
|
3819
3887
|
validate: getValidateFunctions(element, states, props.values, props.errors),
|
|
3820
3888
|
setFieldValue: props.setFieldValue,
|
|
3821
3889
|
onBlur: props.handleBlur,
|
|
3822
|
-
component: element.type === 'checkbox' ? CheckboxField : element.type === 'select' ?
|
|
3823
|
-
selectOptions: element.name === 'country' ? countries
|
|
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,
|
|
3891
|
+
selectOptions: element.name === 'country' ? _map(countries, function (item) {
|
|
3892
|
+
return {
|
|
3893
|
+
value: item.id,
|
|
3894
|
+
label: item.name
|
|
3895
|
+
};
|
|
3896
|
+
}) : element.name === 'state' ? states : [],
|
|
3824
3897
|
radios: element.radios,
|
|
3825
3898
|
theme: theme,
|
|
3826
3899
|
disableDropdown: element.disableDropdown,
|
|
@@ -3933,7 +4006,7 @@ var BillingInfoContainer = /*#__PURE__*/React__default.memo(function (_ref4) {
|
|
|
3933
4006
|
});
|
|
3934
4007
|
|
|
3935
4008
|
var currencyNormalizerCreator = function currencyNormalizerCreator(value, currency) {
|
|
3936
|
-
return !value ? '' :
|
|
4009
|
+
return !value ? '' : getCurrencySymbolByCurrency(currency) + " " + value;
|
|
3937
4010
|
};
|
|
3938
4011
|
var createFixedFloatNormalizer = function createFixedFloatNormalizer(fixedValue) {
|
|
3939
4012
|
return function (value) {
|
|
@@ -5575,12 +5648,17 @@ var TicketRow = function TicketRow(_ref) {
|
|
|
5575
5648
|
};
|
|
5576
5649
|
|
|
5577
5650
|
var TicketsSection = function TicketsSection(_ref) {
|
|
5578
|
-
var
|
|
5651
|
+
var _ref$event = _ref.event,
|
|
5652
|
+
event = _ref$event === void 0 ? {
|
|
5653
|
+
currency: 'GBP'
|
|
5654
|
+
} : _ref$event,
|
|
5655
|
+
ticketsList = _ref.ticketsList,
|
|
5579
5656
|
selectedTickets = _ref.selectedTickets,
|
|
5580
5657
|
handleTicketSelect = _ref.handleTicketSelect,
|
|
5581
5658
|
sortBySoldOut = _ref.sortBySoldOut,
|
|
5582
5659
|
ticketsHeaderComponent = _ref.ticketsHeaderComponent,
|
|
5583
5660
|
hideTicketsHeader = _ref.hideTicketsHeader;
|
|
5661
|
+
var currency = event.currency;
|
|
5584
5662
|
var sortedTicketsList = sortBySoldOut ? _sortBy(_sortBy(ticketsList, 'sortOrder'), 'soldOut') : _sortBy(ticketsList, 'sortOrder');
|
|
5585
5663
|
var showGroup = !!sortedTicketsList.find(function (ticket) {
|
|
5586
5664
|
return ticket.groupName;
|
|
@@ -5588,6 +5666,8 @@ var TicketsSection = function TicketsSection(_ref) {
|
|
|
5588
5666
|
return React__default.createElement(React__default.Fragment, null, !hideTicketsHeader && ticketsHeaderComponent, sortedTicketsList.map(function (ticket, i, arr) {
|
|
5589
5667
|
var _arr;
|
|
5590
5668
|
|
|
5669
|
+
var ticketPrice = currencyNormalizerCreator((+ticket.price).toFixed(2), currency);
|
|
5670
|
+
var ticketOldPrice = currencyNormalizerCreator((+ticket.oldPrice).toFixed(2), currency);
|
|
5591
5671
|
var isSoldOut = ticket.sold_out || !ticket.displayTicket || ticket.soldOut;
|
|
5592
5672
|
|
|
5593
5673
|
var ticketSelect = function ticketSelect(event) {
|
|
@@ -5602,12 +5682,12 @@ var TicketsSection = function TicketsSection(_ref) {
|
|
|
5602
5682
|
}
|
|
5603
5683
|
|
|
5604
5684
|
var ticketIsFree = +ticket.price === 0;
|
|
5605
|
-
var
|
|
5685
|
+
var ticketPriceElem = isSoldOut ? 'SOLD OUT' : ticketIsFree ? 'FREE' : ticketPrice;
|
|
5606
5686
|
var isNewGroupTicket = (ticket == null ? void 0 : ticket.groupName) !== ((_arr = arr[i - 1]) == null ? void 0 : _arr.groupName);
|
|
5607
5687
|
return React__default.createElement(React__default.Fragment, {
|
|
5608
5688
|
key: ticket.id || ticket.name
|
|
5609
5689
|
}, showGroup && isNewGroupTicket ? React__default.createElement("div", {
|
|
5610
|
-
className:
|
|
5690
|
+
className: "event-detail__tier group-title"
|
|
5611
5691
|
}, ticket.groupName || '') : null, React__default.createElement("div", {
|
|
5612
5692
|
className: "event-detail__tier " + (isSoldOut ? 'disabled' : '')
|
|
5613
5693
|
}, React__default.createElement("div", {
|
|
@@ -5618,9 +5698,9 @@ var TicketsSection = function TicketsSection(_ref) {
|
|
|
5618
5698
|
className: "event-detail__tier-price"
|
|
5619
5699
|
}, ticketIsDiscounted && React__default.createElement("p", {
|
|
5620
5700
|
className: "old-price"
|
|
5621
|
-
},
|
|
5701
|
+
}, ticketOldPrice), React__default.createElement("p", {
|
|
5622
5702
|
className: isSoldOut ? 'sold-out' : ''
|
|
5623
|
-
},
|
|
5703
|
+
}, ticketPriceElem), !isSoldOut && !ticketIsFree && React__default.createElement("p", {
|
|
5624
5704
|
className: "fees"
|
|
5625
5705
|
}, ticket.feeIncluded ? '(incl. Fees)' : '(excl. Fees)')), React__default.createElement("div", {
|
|
5626
5706
|
className: "event-detail__tier-state",
|
|
@@ -6268,6 +6348,7 @@ var TicketsContainer = function TicketsContainer(_ref) {
|
|
|
6268
6348
|
}, error), isLoading ? React__default.createElement(Loader, null) : React__default.createElement("div", {
|
|
6269
6349
|
ref: ticketsContainerRef
|
|
6270
6350
|
}, !isSalesClosed && React__default.createElement(TicketsSection, {
|
|
6351
|
+
event: event,
|
|
6271
6352
|
ticketsList: tickets,
|
|
6272
6353
|
selectedTickets: selectedTickets,
|
|
6273
6354
|
handleTicketSelect: handleTicketSelect,
|
|
@@ -7623,7 +7704,7 @@ var AddonComponent = function AddonComponent(_ref) {
|
|
|
7623
7704
|
}, React__default.createElement(formik.Field, {
|
|
7624
7705
|
name: id,
|
|
7625
7706
|
selectOptions: selectOptions,
|
|
7626
|
-
component:
|
|
7707
|
+
component: NativeSelectField,
|
|
7627
7708
|
onChange: function onChange(e) {
|
|
7628
7709
|
var value = e.target.value;
|
|
7629
7710
|
handleAddonChange(id, value);
|