@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.
Files changed (56) hide show
  1. package/dist/cjs/form/PaymentOverviewBox.js +0 -6
  2. package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
  3. package/dist/cjs/form/TicketForm.js +1 -1
  4. package/dist/cjs/form/TicketForm.js.map +1 -1
  5. package/dist/cjs/form/product/ProductCard.js +3 -2
  6. package/dist/cjs/form/product/ProductCard.js.map +1 -1
  7. package/dist/cjs/form/product/ProductVariantsDialog.js +23 -8
  8. package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
  9. package/dist/cjs/form/services/index.js +1 -18
  10. package/dist/cjs/form/services/index.js.map +1 -1
  11. package/dist/cjs/form/tickets/ReleaseWithMerchandise.js +30 -7
  12. package/dist/cjs/form/tickets/ReleaseWithMerchandise.js.map +1 -1
  13. package/dist/cjs/form/tickets/TicketSelection.js +37 -14
  14. package/dist/cjs/form/tickets/TicketSelection.js.map +1 -1
  15. package/dist/cjs/form/tickets/TicketSelectionMap.js +7 -1
  16. package/dist/cjs/form/tickets/TicketSelectionMap.js.map +1 -1
  17. package/dist/cjs/form/tickets/TicketSelectionMobile.js +17 -7
  18. package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +1 -1
  19. package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js +30 -20
  20. package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js.map +1 -1
  21. package/dist/cjs/utils/data/ticket.js +6 -0
  22. package/dist/cjs/utils/data/ticket.js.map +1 -0
  23. package/dist/esm/form/PaymentOverviewBox.js +0 -6
  24. package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
  25. package/dist/esm/form/TicketForm.js +1 -1
  26. package/dist/esm/form/TicketForm.js.map +1 -1
  27. package/dist/esm/form/product/ProductCard.js +3 -2
  28. package/dist/esm/form/product/ProductCard.js.map +1 -1
  29. package/dist/esm/form/product/ProductVariantsDialog.js +23 -8
  30. package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
  31. package/dist/esm/form/services/index.js +2 -19
  32. package/dist/esm/form/services/index.js.map +1 -1
  33. package/dist/esm/form/tickets/ReleaseWithMerchandise.js +30 -7
  34. package/dist/esm/form/tickets/ReleaseWithMerchandise.js.map +1 -1
  35. package/dist/esm/form/tickets/TicketSelection.js +38 -15
  36. package/dist/esm/form/tickets/TicketSelection.js.map +1 -1
  37. package/dist/esm/form/tickets/TicketSelectionMap.js +7 -1
  38. package/dist/esm/form/tickets/TicketSelectionMap.js.map +1 -1
  39. package/dist/esm/form/tickets/TicketSelectionMobile.js +17 -7
  40. package/dist/esm/form/tickets/TicketSelectionMobile.js.map +1 -1
  41. package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js +30 -20
  42. package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js.map +1 -1
  43. package/dist/esm/utils/data/ticket.js +4 -0
  44. package/dist/esm/utils/data/ticket.js.map +1 -0
  45. package/package.json +1 -1
  46. package/src/form/PaymentOverviewBox.tsx +11 -11
  47. package/src/form/TicketForm.tsx +8 -6
  48. package/src/form/product/ProductCard.tsx +5 -2
  49. package/src/form/product/ProductVariantsDialog.tsx +29 -6
  50. package/src/form/services/index.tsx +36 -36
  51. package/src/form/tickets/ReleaseWithMerchandise.tsx +39 -8
  52. package/src/form/tickets/TicketSelection.tsx +50 -17
  53. package/src/form/tickets/TicketSelectionMap.tsx +9 -1
  54. package/src/form/tickets/TicketSelectionMobile.tsx +77 -67
  55. package/src/form/tickets/TicketWithMerchandiseSelection.tsx +49 -31
  56. 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
- return !!nextRelease && item.locked && !!selected && index + 1 == tickets.length;
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 = activeReleases?.filter((release) =>
68
+ const soldOutReleaseCategories = currentReleases.filter((release) =>
59
69
  tickets.find(
60
70
  (ticket) =>
61
71
  release.id === ticket.releaseId &&
62
- ticket.quantity === release.availableTickets &&
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 (soldOutReleaseCategories?.length && activeReleases) {
77
+ if (currentReleases.length) {
69
78
  let hasChanges = false;
70
- const updatedReleases = activeReleases.map((release) => {
71
- // For each sold-out release, find and unlock the next one
72
- const soldOutRelease = soldOutReleaseCategories.find(
73
- (soldOut) =>
74
- soldOut.releaseCategoryName === release.releaseCategoryName &&
75
- soldOut.order === release.order - 1 &&
76
- release.locked
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
- if (soldOutRelease) {
79
- hasChanges = true;
80
- return { ...release, locked: false };
81
- }
82
- return release;
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 = activeReleases?.some(
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
- (activeReleases &&
100
- soldOutReleaseCategories?.length &&
101
- activeReleases?.length > tickets.length &&
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?.map((release, index) => (
149
- <ReleaseWithMerchandise
150
- key={release.id}
151
- eventId={event.id}
152
- release={release}
153
- activeReleases={activeReleases}
154
- currency={event.currency}
155
- index={index}
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;