@eventlook/sdk 1.4.49 → 1.4.51
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/cjs/form/PaymentOverviewBox.js +0 -6
- package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
- package/dist/cjs/form/TicketForm.js +1 -1
- package/dist/cjs/form/TicketForm.js.map +1 -1
- package/dist/cjs/form/product/ProductCard.js +3 -2
- package/dist/cjs/form/product/ProductCard.js.map +1 -1
- package/dist/cjs/form/product/ProductVariantsDialog.js +23 -8
- package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/cjs/form/services/index.js +1 -18
- package/dist/cjs/form/services/index.js.map +1 -1
- package/dist/cjs/form/tickets/ReleaseWithMerchandise.js +30 -7
- package/dist/cjs/form/tickets/ReleaseWithMerchandise.js.map +1 -1
- package/dist/cjs/form/tickets/TicketSelection.js +37 -14
- package/dist/cjs/form/tickets/TicketSelection.js.map +1 -1
- package/dist/cjs/form/tickets/TicketSelectionMap.js +7 -1
- package/dist/cjs/form/tickets/TicketSelectionMap.js.map +1 -1
- package/dist/cjs/form/tickets/TicketSelectionMobile.js +17 -7
- package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +1 -1
- package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js +30 -20
- package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js.map +1 -1
- package/dist/cjs/utils/data/ticket.js +6 -0
- package/dist/cjs/utils/data/ticket.js.map +1 -0
- package/dist/esm/form/PaymentOverviewBox.js +0 -6
- package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
- package/dist/esm/form/TicketForm.js +1 -1
- package/dist/esm/form/TicketForm.js.map +1 -1
- package/dist/esm/form/product/ProductCard.js +3 -2
- package/dist/esm/form/product/ProductCard.js.map +1 -1
- package/dist/esm/form/product/ProductVariantsDialog.js +23 -8
- package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/esm/form/services/index.js +2 -19
- package/dist/esm/form/services/index.js.map +1 -1
- package/dist/esm/form/tickets/ReleaseWithMerchandise.js +30 -7
- package/dist/esm/form/tickets/ReleaseWithMerchandise.js.map +1 -1
- package/dist/esm/form/tickets/TicketSelection.js +38 -15
- package/dist/esm/form/tickets/TicketSelection.js.map +1 -1
- package/dist/esm/form/tickets/TicketSelectionMap.js +7 -1
- package/dist/esm/form/tickets/TicketSelectionMap.js.map +1 -1
- package/dist/esm/form/tickets/TicketSelectionMobile.js +17 -7
- package/dist/esm/form/tickets/TicketSelectionMobile.js.map +1 -1
- package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js +30 -20
- package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js.map +1 -1
- package/dist/esm/utils/data/ticket.js +4 -0
- package/dist/esm/utils/data/ticket.js.map +1 -0
- package/package.json +1 -1
- package/src/form/PaymentOverviewBox.tsx +11 -11
- package/src/form/TicketForm.tsx +8 -6
- package/src/form/product/ProductCard.tsx +5 -2
- package/src/form/product/ProductVariantsDialog.tsx +29 -6
- package/src/form/services/index.tsx +36 -36
- package/src/form/tickets/ReleaseWithMerchandise.tsx +39 -8
- package/src/form/tickets/TicketSelection.tsx +50 -17
- package/src/form/tickets/TicketSelectionMap.tsx +9 -1
- package/src/form/tickets/TicketSelectionMobile.tsx +77 -67
- package/src/form/tickets/TicketWithMerchandiseSelection.tsx +49 -31
- package/src/utils/data/ticket.ts +1 -0
|
@@ -8,6 +8,7 @@ import { IReleaseShort } from '@utils/types/release.type';
|
|
|
8
8
|
import { IEvent } from '@utils/types/event.type';
|
|
9
9
|
import ReleaseWithMerchandise from '@form/tickets/ReleaseWithMerchandise';
|
|
10
10
|
import { EventType } from '@utils/data/event';
|
|
11
|
+
import { MAX_TICKETS_PER_ORDER } from '@utils/data/ticket';
|
|
11
12
|
import useGlobal from '@hooks/useGlobal.ts';
|
|
12
13
|
|
|
13
14
|
interface Props {
|
|
@@ -42,7 +43,15 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
42
43
|
item2.releaseCategoryName === item.releaseCategoryName && item2.order === item.order + 1
|
|
43
44
|
);
|
|
44
45
|
const selected = tickets.find((ticket) => ticket.releaseId === item.id);
|
|
45
|
-
|
|
46
|
+
const maxSelectable = Math.min(item.availableTickets || 0, MAX_TICKETS_PER_ORDER);
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
!!nextRelease &&
|
|
50
|
+
item.locked &&
|
|
51
|
+
!!selected &&
|
|
52
|
+
Number(selected.quantity) >= maxSelectable &&
|
|
53
|
+
index + 1 == tickets.length
|
|
54
|
+
);
|
|
46
55
|
});
|
|
47
56
|
return lockedSelectedReleases && lockedSelectedReleases.includes(true);
|
|
48
57
|
};
|
|
@@ -53,33 +62,40 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
53
62
|
|
|
54
63
|
const selectedTickets = async () => {
|
|
55
64
|
const releases = await mutate();
|
|
65
|
+
const currentReleases = releases || activeReleases || [];
|
|
56
66
|
const allFilled = tickets.filter((item) => !item.releaseId || !item.quantity);
|
|
57
67
|
|
|
58
|
-
const soldOutReleaseCategories =
|
|
68
|
+
const soldOutReleaseCategories = currentReleases.filter((release) =>
|
|
59
69
|
tickets.find(
|
|
60
70
|
(ticket) =>
|
|
61
71
|
release.id === ticket.releaseId &&
|
|
62
|
-
ticket.quantity
|
|
63
|
-
release.availableTickets !== 10
|
|
72
|
+
Number(ticket.quantity) >= Math.min(release.availableTickets || 0, MAX_TICKETS_PER_ORDER)
|
|
64
73
|
)
|
|
65
74
|
);
|
|
66
75
|
|
|
67
76
|
// Unlock next releases when current release is sold out
|
|
68
|
-
if (
|
|
77
|
+
if (currentReleases.length) {
|
|
69
78
|
let hasChanges = false;
|
|
70
|
-
const updatedReleases =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
const updatedReleases = currentReleases.map((release) => {
|
|
80
|
+
const previousRelease = currentReleases.find(
|
|
81
|
+
(item) =>
|
|
82
|
+
item.releaseCategoryName === release.releaseCategoryName &&
|
|
83
|
+
item.order === release.order - 1
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
if (!release.locked || !previousRelease) return release;
|
|
87
|
+
|
|
88
|
+
const previousTicket = tickets.find((ticket) => ticket.releaseId === previousRelease.id);
|
|
89
|
+
const previousMaxSelectable = Math.min(
|
|
90
|
+
previousRelease.availableTickets || 0,
|
|
91
|
+
MAX_TICKETS_PER_ORDER
|
|
77
92
|
);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
const shouldUnlock = Number(previousTicket?.quantity || 0) >= previousMaxSelectable;
|
|
94
|
+
|
|
95
|
+
if (!shouldUnlock) return release;
|
|
96
|
+
|
|
97
|
+
hasChanges = true;
|
|
98
|
+
return { ...release, locked: false };
|
|
83
99
|
});
|
|
84
100
|
|
|
85
101
|
if (hasChanges) {
|
|
@@ -87,7 +103,7 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
87
103
|
}
|
|
88
104
|
}
|
|
89
105
|
|
|
90
|
-
const hasSelectableRelease =
|
|
106
|
+
const hasSelectableRelease = currentReleases.some(
|
|
91
107
|
(release) => !isReleaseSelected(release.id) && !release.locked
|
|
92
108
|
);
|
|
93
109
|
|
|
@@ -96,9 +112,9 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
96
112
|
selectedReleaseIsSoldOut(releases) &&
|
|
97
113
|
tickets.length < soldOutReleaseCategories.length + countUnlockedReleases() &&
|
|
98
114
|
!allFilled.length) ||
|
|
99
|
-
(
|
|
100
|
-
soldOutReleaseCategories
|
|
101
|
-
|
|
115
|
+
(currentReleases.length &&
|
|
116
|
+
soldOutReleaseCategories.length &&
|
|
117
|
+
currentReleases.length > tickets.length &&
|
|
102
118
|
tickets.length < soldOutReleaseCategories.length + countUnlockedReleases() &&
|
|
103
119
|
!allFilled.length) ||
|
|
104
120
|
(tickets.length < countReleaseCategories() && !allFilled.length);
|
|
@@ -145,16 +161,18 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
145
161
|
}}
|
|
146
162
|
/>
|
|
147
163
|
) : (
|
|
148
|
-
activeReleases
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
164
|
+
activeReleases
|
|
165
|
+
?.filter((release) => !release.locked || isReleaseSelected(release.id))
|
|
166
|
+
.map((release, index) => (
|
|
167
|
+
<ReleaseWithMerchandise
|
|
168
|
+
key={release.id}
|
|
169
|
+
eventId={event.id}
|
|
170
|
+
release={release}
|
|
171
|
+
activeReleases={activeReleases}
|
|
172
|
+
currency={event.currency}
|
|
173
|
+
index={index}
|
|
174
|
+
/>
|
|
175
|
+
))
|
|
158
176
|
)}
|
|
159
177
|
{!activeReleases && event.type === EventType.RECURRING && (
|
|
160
178
|
<Typography variant="h5">{t('event.tickets.stepper.1.select_timeslot')}</Typography>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const MAX_TICKETS_PER_ORDER = 10;
|