tf-checkout-react 1.2.21 → 1.2.24

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.21",
2
+ "version": "1.2.24",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
package/src/.DS_Store ADDED
Binary file
package/src/api/index.ts CHANGED
@@ -329,7 +329,7 @@ export const getStates = (countryId: string) =>
329
329
 
330
330
  export const getOrders = (page: number, limit: number, eventSlug: string) =>
331
331
  publicRequest.get(
332
- `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${eventSlug}&filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=yes`
332
+ `v1/account/orders/?page=${page}&limit=${limit}&filter[event]=${eventSlug}&filter[brand]=${CONFIGS.BRAND_SLUG}&filter[subbrands]=true`
333
333
  )
334
334
 
335
335
  export const getOrderDetails = (orderId: string) =>
Binary file
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ exports.__esModule = true;
50
+ exports.PhoneNumberField = void 0;
51
+ var TextField_1 = require("@mui/material/TextField");
52
+ var debounce_1 = require("lodash/debounce");
53
+ var get_1 = require("lodash/get");
54
+ var react_1 = require("react");
55
+ var api_1 = require("../../api");
56
+ exports.PhoneNumberField = function (_a) {
57
+ var label = _a.label, _b = _a.type, type = _b === void 0 ? 'text' : _b, field = _a.field, _c = _a.form, errors = _c.errors, setFieldError = _c.setFieldError, setStatus = _c.setStatus;
58
+ var error = get_1["default"](errors, field.name);
59
+ // eslint-disable-next-line react-hooks/exhaustive-deps
60
+ var debounceCb = react_1.useCallback(debounce_1["default"](function (cb) { return void cb(); }, 1000), []);
61
+ react_1.useEffect(function () {
62
+ var _a;
63
+ if (field.value) {
64
+ setStatus((_a = {}, _a[field.name] = true, _a));
65
+ }
66
+ debounceCb(function () { return __awaiter(void 0, void 0, void 0, function () {
67
+ var error_1, message;
68
+ var _a;
69
+ return __generator(this, function (_b) {
70
+ switch (_b.label) {
71
+ case 0:
72
+ _b.trys.push([0, 3, 4, 5]);
73
+ if (!field.value) return [3 /*break*/, 2];
74
+ return [4 /*yield*/, api_1.validatePhoneNumber(field.value)];
75
+ case 1:
76
+ _b.sent();
77
+ _b.label = 2;
78
+ case 2:
79
+ setFieldError(field.name, '');
80
+ return [3 /*break*/, 5];
81
+ case 3:
82
+ error_1 = _b.sent();
83
+ message = get_1["default"](error_1, 'response.data.message', 'Invalid phone number');
84
+ setFieldError(field.name, message);
85
+ return [3 /*break*/, 5];
86
+ case 4:
87
+ setStatus((_a = {}, _a[field.name] = false, _a));
88
+ return [7 /*endfinally*/];
89
+ case 5: return [2 /*return*/];
90
+ }
91
+ });
92
+ }); });
93
+ // eslint-disable-next-line
94
+ }, [field.value]);
95
+ return (react_1["default"].createElement(TextField_1["default"], __assign({}, field, { id: field.name, label: label, type: type, fullWidth: true, error: !!error, helperText: error, value: field.value || '', inputProps: { pattern: '[+0-9]/d+' } })));
96
+ };
@@ -1,6 +1,7 @@
1
- import React from 'react'
2
- import TableRow from '@mui/material/TableRow'
3
1
  import TableCell from '@mui/material/TableCell'
2
+ import TableRow from '@mui/material/TableRow'
3
+ import React from 'react'
4
+
4
5
  import tableConfig from './tableConfig'
5
6
 
6
7
  export interface RowItems {
@@ -17,25 +18,23 @@ interface RowPropsTypes {
17
18
  handleDetailsInfo: (id: string) => void;
18
19
  }
19
20
 
20
- const Row = ({ row, handleDetailsInfo }: RowPropsTypes) => {
21
- return (
22
- <TableRow sx={{ '& > *': { borderBottom: 'unset' } }}>
23
- {tableConfig().body.map((column: any, index: number) => (
24
- <TableCell component="th" scope="row" key={index}>
25
- {column(row)}
26
- </TableCell>
27
- ))}
28
- <TableCell component="th" scope="row">
29
- <button
30
- type='button'
31
- className="order-details-button"
32
- onClick={() => handleDetailsInfo(row.id)}
33
- >
34
- Details
35
- </button>
21
+ const Row = ({ row, handleDetailsInfo }: RowPropsTypes) => (
22
+ <TableRow sx={{ '& > *': { borderBottom: 'unset' } }}>
23
+ {tableConfig().body.map((column: any, index: number) => (
24
+ <TableCell component="th" scope="row" key={index}>
25
+ {column(row)}
36
26
  </TableCell>
37
- </TableRow>
38
- );
39
- }
27
+ ))}
28
+ <TableCell component="th" scope="row">
29
+ <button
30
+ type="button"
31
+ className="order-details-button"
32
+ onClick={() => handleDetailsInfo(row.id)}
33
+ >
34
+ Details
35
+ </button>
36
+ </TableCell>
37
+ </TableRow>
38
+ )
40
39
 
41
40
  export default Row
@@ -11,6 +11,7 @@ import TableRow from '@mui/material/TableRow'
11
11
  import _find from 'lodash/find'
12
12
  import _get from 'lodash/get'
13
13
  import _has from 'lodash/has'
14
+ import _identity from 'lodash/identity'
14
15
  import _map from 'lodash/map'
15
16
  import moment from 'moment-timezone'
16
17
  import React, { useEffect, useState } from 'react'
@@ -18,7 +19,7 @@ import React, { useEffect, useState } from 'react'
18
19
  import { getOrderDetails, removeFromResale, resaleTicket } from '../../api'
19
20
  import ConfirmModal from '../confirmModal'
20
21
  import { InitialValuesTypes, TicketResaleModal } from '../ticketResaleModal'
21
- import TicketsTable, { ITicketTypes } from './ticketsTable'
22
+ import TicketsTable, { IActionColumns, ITicketTypes } from './ticketsTable'
22
23
 
23
24
  interface TicketTypes {
24
25
  currency: string;
@@ -39,6 +40,12 @@ interface OrderDetailsTypes {
39
40
  onResaleTicketSuccess: () => void;
40
41
  onResaleTicketError: (err: any) => void;
41
42
  personalLinkIcon?: string;
43
+ displayColumnNameInRow?: boolean;
44
+ ticketsTableColumns?: Array<{
45
+ id?: string | number;
46
+ key: keyof ITicketTypes & keyof IActionColumns;
47
+ label: string | number | null | undefined;
48
+ }>;
42
49
  }
43
50
 
44
51
  const getTotal = (data: any) => {
@@ -49,14 +56,16 @@ const getTotal = (data: any) => {
49
56
 
50
57
  export const OrderDetailsContainer = ({
51
58
  columns = [],
52
- onGetOrdersSuccess = () => {},
53
- onGetOrdersError = () => {},
54
- onRemoveFromResaleSuccess = () => {},
55
- onRemoveFromResaleError = () => {},
56
- onResaleTicketSuccess = () => {},
57
- onResaleTicketError = () => {},
59
+ onGetOrdersSuccess = _identity,
60
+ onGetOrdersError = _identity,
61
+ onRemoveFromResaleSuccess = _identity,
62
+ onRemoveFromResaleError = _identity,
63
+ onResaleTicketSuccess = _identity,
64
+ onResaleTicketError = _identity,
58
65
  onReturnButtonClick,
59
66
  personalLinkIcon = '',
67
+ displayColumnNameInRow = false,
68
+ ticketsTableColumns,
60
69
  }: OrderDetailsTypes) => {
61
70
  const [data, setData] = useState<any>({})
62
71
  const [loading, setLoading] = useState(true)
@@ -259,8 +268,7 @@ export const OrderDetailsContainer = ({
259
268
  (ticket: TicketTypes, index: number) => (
260
269
  <TableRow key={index}>
261
270
  <TableCell>
262
- <b>Ticket Type: </b>
263
- {ticket.name}
271
+ <b>Ticket Type:</b> {ticket.name}
264
272
  </TableCell>
265
273
  <TableCell>{ticket.currency + ticket.price}</TableCell>
266
274
  <TableCell>{ticket.quantity}</TableCell>
@@ -293,8 +301,21 @@ export const OrderDetailsContainer = ({
293
301
  </div>
294
302
  <TicketsTable
295
303
  tickets={data.tickets}
304
+ columns={
305
+ ticketsTableColumns?.length
306
+ ? ticketsTableColumns
307
+ : [
308
+ { key: 'hash' as never, label: 'Ticket ID' },
309
+ { key: 'ticket_type' as never, label: 'Ticket Type' },
310
+ { key: 'holder_name' as never, label: 'Ticket Holder' },
311
+ { key: 'status' as never, label: 'Status' },
312
+ { key: 'download' as never, label: '' },
313
+ { key: 'sell_ticket' as never, label: '' },
314
+ ]
315
+ }
296
316
  handleSellTicket={handleSellTicket}
297
317
  handleRemoveFromResale={handleRemoveFromResale}
318
+ displayColumnNameInRow={displayColumnNameInRow}
298
319
  />
299
320
  <div className="return-button-container">
300
321
  <button
@@ -6,6 +6,7 @@ import TableContainer from '@mui/material/TableContainer'
6
6
  import TableHead from '@mui/material/TableHead'
7
7
  import TableRow from '@mui/material/TableRow'
8
8
  import _identity from 'lodash/identity'
9
+ import _map from 'lodash/map'
9
10
  import React, { Fragment, useState } from 'react'
10
11
 
11
12
  import { downloadPDF } from '../../utils'
@@ -31,21 +32,105 @@ export interface ITicketTypes {
31
32
  ticket_type_is_active?: boolean;
32
33
  }
33
34
 
35
+ export interface IActionColumns {
36
+ download?: boolean;
37
+ sell_ticket?: boolean;
38
+ }
39
+
34
40
  interface TicketsTableTypes {
35
41
  tickets: ITicketTypes[];
42
+ columns: Array<{
43
+ id?: string | number;
44
+ key: keyof ITicketTypes & keyof IActionColumns;
45
+ label: string | number | null | undefined;
46
+ }>;
36
47
  handleSellTicket: (ticket: ITicketTypes) => void;
37
48
  handleRemoveFromResale: (ticket: ITicketTypes) => void;
38
49
 
39
50
  icon?: string;
51
+ displayColumnNameInRow?: boolean;
40
52
  }
41
53
 
42
54
  const TicketsTable = ({
43
55
  tickets = [],
56
+ columns = [],
44
57
  handleSellTicket = _identity,
45
58
  handleRemoveFromResale = _identity,
46
59
  icon = '',
60
+ displayColumnNameInRow = false,
47
61
  }: TicketsTableTypes) => {
48
62
  const [pdfError, setPdfError] = useState<string | null>(null)
63
+
64
+ const getRow = (ticket: ITicketTypes) =>
65
+ _map(columns, (column, columnIndex) => {
66
+ if (column.key === 'download') {
67
+ if (ticket.pdf_link && ticket.status === 'Sold') return null
68
+ return (
69
+ <TableCell key={columnIndex}>
70
+ {Boolean(icon) && <img src={icon} alt="nodata" />}
71
+ <span
72
+ aria-hidden={true}
73
+ className="action-button"
74
+ onClick={async () => {
75
+ try {
76
+ const pdfDownloadError = await downloadPDF(ticket.pdf_link)
77
+ if (pdfDownloadError) {
78
+ setPdfError(pdfDownloadError?.message)
79
+ }
80
+ } catch (err) {
81
+ if (err && typeof err === 'string') {
82
+ setPdfError(err)
83
+ }
84
+ }
85
+ }}
86
+ >
87
+ Download
88
+ </span>
89
+ </TableCell>
90
+ )
91
+ }
92
+
93
+ if (column.key === 'sell_ticket') {
94
+ return (
95
+ <TableCell key={columnIndex}>
96
+ {ticket.is_sellable && (
97
+ <span
98
+ aria-hidden={true}
99
+ className="action-button"
100
+ onClick={() => handleSellTicket(ticket)}
101
+ >
102
+ Sell Ticket
103
+ </span>
104
+ )}
105
+ {ticket.is_on_sale && (
106
+ <span
107
+ aria-hidden={true}
108
+ className="action-button"
109
+ onClick={() => handleRemoveFromResale(ticket)}
110
+ >
111
+ Remove from Resale
112
+ </span>
113
+ )}
114
+ </TableCell>
115
+ )
116
+ }
117
+
118
+ return displayColumnNameInRow ? (
119
+ <TableCell key={columnIndex}>
120
+ <div className="cell-block">
121
+ <span>{column.label}</span>
122
+ <span>{ticket[column.key]}</span>
123
+ </div>
124
+ </TableCell>
125
+ ) : (
126
+ <TableCell key={columnIndex}>
127
+ <div className="cell-block">
128
+ <span>{ticket[column.key]}</span>
129
+ </div>
130
+ </TableCell>
131
+ )
132
+ })
133
+
49
134
  return (
50
135
  <div className="tickets-box">
51
136
  <SnackbarAlert
@@ -57,90 +142,19 @@ const TicketsTable = ({
57
142
  <h4 className="sub-title">Your Tickets</h4>
58
143
  <TableContainer component={Paper}>
59
144
  <Table aria-label="collapsible table">
60
- <TableHead>
61
- <TableRow>
62
- <TableCell />
63
- <TableCell />
64
- <TableCell />
65
- <TableCell />
66
- <TableCell />
67
- <TableCell />
68
- </TableRow>
69
- </TableHead>
145
+ {displayColumnNameInRow ? null : (
146
+ <TableHead>
147
+ <TableRow>
148
+ {_map(columns, item => (
149
+ <TableCell key={item.key}>{item.label || ''}</TableCell>
150
+ ))}
151
+ </TableRow>
152
+ </TableHead>
153
+ )}
70
154
  <TableBody>
71
155
  {tickets.map((ticket: ITicketTypes, index: number) => (
72
156
  <Fragment key={index}>
73
- <TableRow>
74
- <TableCell>
75
- <div className="cell-block">
76
- <span>Ticket ID</span>
77
- <span>{ticket.hash}</span>
78
- </div>
79
- </TableCell>
80
- <TableCell>
81
- <div className="cell-block">
82
- <span>Ticket Type</span>
83
- <span>{ticket.ticket_type}</span>
84
- </div>
85
- </TableCell>
86
- <TableCell>
87
- <div className="cell-block">
88
- <span>Ticket Holder</span>
89
- <span>{ticket.holder_name}</span>
90
- </div>
91
- </TableCell>
92
- <TableCell>
93
- <div className="cell-block">
94
- <span>Status</span>
95
- <span>{ticket.status}</span>
96
- </div>
97
- </TableCell>
98
- {ticket.pdf_link && ticket.status !== "Sold" ? (
99
- <TableCell>
100
- {Boolean(icon) && <img src={icon} alt="nodata" />}
101
- <span
102
- aria-hidden={true}
103
- className="action-button"
104
- onClick={async () => {
105
- try {
106
- const pdfDownloadError = await downloadPDF(
107
- ticket.pdf_link
108
- )
109
- if (pdfDownloadError) {
110
- setPdfError(pdfDownloadError?.message)
111
- }
112
- } catch (err) {
113
- if (err && typeof err === 'string') {
114
- setPdfError(err)
115
- }
116
- }
117
- }}
118
- >
119
- Download
120
- </span>
121
- </TableCell>
122
- ) : null}
123
- <TableCell>
124
- {ticket.is_sellable && (
125
- <span
126
- aria-hidden={true}
127
- className="action-button"
128
- onClick={() => handleSellTicket(ticket)}
129
- >
130
- Sell Ticket
131
- </span>
132
- )}
133
- {ticket.is_on_sale && (
134
- <span
135
- aria-hidden={true}
136
- className="action-button"
137
- onClick={() => handleRemoveFromResale(ticket)}
138
- >
139
- Remove from Resale
140
- </span>
141
- )}
142
- </TableCell>
143
- </TableRow>
157
+ <TableRow>{getRow(ticket)}</TableRow>
144
158
  {!!ticket.add_ons?.length && (
145
159
  <TableRow>
146
160
  <TableCell colSpan={6}>
@@ -174,4 +188,4 @@ const TicketsTable = ({
174
188
  )
175
189
  }
176
190
 
177
- export default TicketsTable
191
+ export default TicketsTable
@@ -413,6 +413,7 @@ export const TicketsContainer = ({
413
413
  const externalUrl = event?.redirectUrl
414
414
  const eventSaleIsNotStarted = !event?.salesStarted && event?.salesStart
415
415
  const influencers = event?.referralsEnabled ? event?.referrals : []
416
+ const previewKey = getQueryVariable('pk') || undefined
416
417
 
417
418
  return (
418
419
  <ThemeProvider theme={themeMui}>
@@ -476,7 +477,8 @@ export const TicketsContainer = ({
476
477
  !eventSaleIsNotStarted &&
477
478
  isTicketOnSale &&
478
479
  !event?.salesEnded &&
479
- !externalUrl && (
480
+ !externalUrl &&
481
+ !previewKey && (
480
482
  <Button
481
483
  aria-hidden={true}
482
484
  className={`book-button