@eventlook/sdk 1.4.28 → 1.4.38
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/.env +1 -0
- package/dist/cjs/context/GlobalContext.js +1 -2
- package/dist/cjs/context/GlobalContext.js.map +1 -1
- package/dist/cjs/form/PaymentOverviewBox.js +31 -1
- package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
- package/dist/cjs/form/TicketForm.js +9 -5
- package/dist/cjs/form/TicketForm.js.map +1 -1
- package/dist/cjs/form/TicketSelection.js.map +1 -1
- package/dist/cjs/form/index.js +2 -2
- package/dist/cjs/form/index.js.map +1 -1
- package/dist/cjs/form/payment/PaymentOverviewCheckbox.js +48 -0
- package/dist/cjs/form/payment/PaymentOverviewCheckbox.js.map +1 -0
- package/dist/cjs/locales/cs.js +19 -1
- package/dist/cjs/locales/cs.js.map +1 -1
- package/dist/cjs/locales/en.js +12 -1
- package/dist/cjs/locales/en.js.map +1 -1
- package/dist/cjs/locales/es.js +12 -1
- package/dist/cjs/locales/es.js.map +1 -1
- package/dist/cjs/locales/pl.js +12 -1
- package/dist/cjs/locales/pl.js.map +1 -1
- package/dist/cjs/locales/sk.js +12 -1
- package/dist/cjs/locales/sk.js.map +1 -1
- package/dist/cjs/locales/uk.js +12 -1
- package/dist/cjs/locales/uk.js.map +1 -1
- package/dist/esm/context/GlobalContext.js +1 -2
- package/dist/esm/context/GlobalContext.js.map +1 -1
- package/dist/esm/form/PaymentOverviewBox.js +31 -1
- package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
- package/dist/esm/form/TicketForm.js +9 -5
- package/dist/esm/form/TicketForm.js.map +1 -1
- package/dist/esm/form/TicketSelection.js.map +1 -1
- package/dist/esm/form/index.js +2 -2
- package/dist/esm/form/index.js.map +1 -1
- package/dist/esm/form/payment/PaymentOverviewCheckbox.js +44 -0
- package/dist/esm/form/payment/PaymentOverviewCheckbox.js.map +1 -0
- package/dist/esm/locales/cs.js +19 -1
- package/dist/esm/locales/cs.js.map +1 -1
- package/dist/esm/locales/en.js +12 -1
- package/dist/esm/locales/en.js.map +1 -1
- package/dist/esm/locales/es.js +12 -1
- package/dist/esm/locales/es.js.map +1 -1
- package/dist/esm/locales/pl.js +12 -1
- package/dist/esm/locales/pl.js.map +1 -1
- package/dist/esm/locales/sk.js +12 -1
- package/dist/esm/locales/sk.js.map +1 -1
- package/dist/esm/locales/uk.js +12 -1
- package/dist/esm/locales/uk.js.map +1 -1
- package/dist/types/context/GlobalContext.d.ts +1 -2
- package/dist/types/form/index.d.ts +0 -1
- package/dist/types/form/payment/PaymentOverviewCheckbox.d.ts +12 -0
- package/dist/types/locales/cs.d.ts +19 -1
- package/dist/types/locales/en.d.ts +12 -1
- package/dist/types/locales/es.d.ts +12 -1
- package/dist/types/locales/pl.d.ts +12 -1
- package/dist/types/locales/sk.d.ts +12 -1
- package/dist/types/locales/uk.d.ts +12 -1
- package/dist/types/utils/types/event.type.d.ts +0 -1
- package/dist/types/utils/types/global.type.d.ts +0 -1
- package/dist/types/utils/types/shopping-cart.type.d.ts +7 -0
- package/dist/types/utils/types/ticket.type.d.ts +8 -17
- package/package.json +3 -8
- package/rollup.config.mjs +1 -15
- package/src/context/GlobalContext.tsx +0 -3
- package/src/form/PaymentOverviewBox.tsx +83 -0
- package/src/form/TicketForm.tsx +9 -9
- package/src/form/TicketSelection.tsx +0 -1
- package/src/form/index.tsx +0 -3
- package/src/form/payment/PaymentOverviewCheckbox.tsx +87 -0
- package/src/locales/cs.tsx +22 -1
- package/src/locales/en.tsx +14 -1
- package/src/locales/es.tsx +14 -1
- package/src/locales/pl.tsx +14 -1
- package/src/locales/sk.tsx +14 -1
- package/src/locales/uk.tsx +14 -1
- package/src/utils/types/event.type.ts +0 -1
- package/src/utils/types/global.type.ts +0 -1
- package/src/utils/types/shopping-cart.type.ts +7 -0
- package/src/utils/types/ticket.type.ts +6 -20
- package/dev-frontend.sh +0 -32
- package/dist/cjs/form/TicketSelectionMap.js +0 -67
- package/dist/cjs/form/TicketSelectionMap.js.map +0 -1
- package/dist/esm/form/TicketSelectionMap.js +0 -63
- package/dist/esm/form/TicketSelectionMap.js.map +0 -1
- package/dist/types/form/TicketSelectionMap.d.ts +0 -7
- package/src/form/TicketSelectionMap.tsx +0 -83
package/src/locales/sk.tsx
CHANGED
|
@@ -15,6 +15,7 @@ const sk = {
|
|
|
15
15
|
go_home: 'Prejsť na domovskú stránku',
|
|
16
16
|
apple_wallet: 'Stiahnuť do Apple Wallet',
|
|
17
17
|
google_wallet: 'Stiahnuť do Google Wallet',
|
|
18
|
+
more_info: 'Viac informácií',
|
|
18
19
|
shipping_method: {
|
|
19
20
|
types: {
|
|
20
21
|
PACKETA: 'Packeta',
|
|
@@ -42,6 +43,7 @@ const sk = {
|
|
|
42
43
|
with_fee: 'vrátane servisného poplatku',
|
|
43
44
|
service_fee: 'Servisný poplatok',
|
|
44
45
|
shipping_fee: 'Doručenie',
|
|
46
|
+
ticket_insurance: 'Poistenie vstupenky',
|
|
45
47
|
price_including_service_fee: 'Cena zahŕňa servisný poplatok {{fee}}.',
|
|
46
48
|
price_including_service_fee_percentage:
|
|
47
49
|
'Cena zahŕňa servisný poplatok vo výške {{percentage}} z celkovej sumy.',
|
|
@@ -49,7 +51,6 @@ const sk = {
|
|
|
49
51
|
original_price: 'Pôvodná cena',
|
|
50
52
|
ticket: 'Vstupenka',
|
|
51
53
|
category: 'Kategória',
|
|
52
|
-
open_map: 'Otvoriť mapu',
|
|
53
54
|
},
|
|
54
55
|
validation: {
|
|
55
56
|
required: 'Toto pole je povinné.',
|
|
@@ -102,6 +103,18 @@ const sk = {
|
|
|
102
103
|
},
|
|
103
104
|
terms_and_conditions:
|
|
104
105
|
'Odoslaním objednávky súhlasím s <0>Obchodnými podmienkami</0> {{termsAndConditionsCompanies}} a beriem na vedomie <1>Zásady ochrany osobných údajov</1>.',
|
|
106
|
+
insurance: {
|
|
107
|
+
label: 'Poistenie vstupenky',
|
|
108
|
+
per_ticket: 'pc',
|
|
109
|
+
modal: {
|
|
110
|
+
title: 'Poistenie vstupenky',
|
|
111
|
+
description:
|
|
112
|
+
'Poistenie vstupenky vám poskytuje ochranu v prípade, že sa nemôžete zúčastniť podujatia z dôvodu choroby, zranenia alebo iných nepredvídaných okolností.',
|
|
113
|
+
coverage:
|
|
114
|
+
'Poistenie kryje: chorobu, zranenie, náhlu hospitalizáciu, karanténu alebo iné nepredvídané udalosti, ktoré vám zabránia zúčastniť sa podujatia.',
|
|
115
|
+
price: 'Cena poistenia',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
105
118
|
order_success: {
|
|
106
119
|
title: 'Vstupenky boli úspešne rezervované. Teraz už len zaplatiť.',
|
|
107
120
|
description:
|
package/src/locales/uk.tsx
CHANGED
|
@@ -15,6 +15,7 @@ const uk = {
|
|
|
15
15
|
go_home: 'Перейти на головну',
|
|
16
16
|
apple_wallet: 'Завантажити в Apple Wallet',
|
|
17
17
|
google_wallet: 'Завантажити в Google Wallet',
|
|
18
|
+
more_info: 'Більше інформації',
|
|
18
19
|
shipping_method: {
|
|
19
20
|
types: {
|
|
20
21
|
PACKETA: 'Packeta',
|
|
@@ -42,6 +43,7 @@ const uk = {
|
|
|
42
43
|
with_fee: 'вкл. сервісний збір',
|
|
43
44
|
service_fee: 'Сервісний збір',
|
|
44
45
|
shipping_fee: 'Доставка',
|
|
46
|
+
ticket_insurance: 'Страхування квитка',
|
|
45
47
|
price_including_service_fee: 'Ціна включає сервісний збір {{fee}}.',
|
|
46
48
|
price_including_service_fee_percentage:
|
|
47
49
|
'Ціна включає сервісний збір {{percentage}} від загальної суми.',
|
|
@@ -49,7 +51,6 @@ const uk = {
|
|
|
49
51
|
original_price: 'Оригінальна ціна',
|
|
50
52
|
ticket: 'Квиток',
|
|
51
53
|
category: 'Категорія',
|
|
52
|
-
open_map: 'Відкрити карту',
|
|
53
54
|
},
|
|
54
55
|
validation: {
|
|
55
56
|
required: "Це поле обов'язкове.",
|
|
@@ -102,6 +103,18 @@ const uk = {
|
|
|
102
103
|
},
|
|
103
104
|
terms_and_conditions:
|
|
104
105
|
'Надсилаючи замовлення, я погоджуюсь з <0>Правилами та умовами</0> {{termsAndConditionsCompanies}} та підтверджую <1>Політику конфіденційності</1>.',
|
|
106
|
+
insurance: {
|
|
107
|
+
label: 'Страхування квитка',
|
|
108
|
+
per_ticket: 'pc',
|
|
109
|
+
modal: {
|
|
110
|
+
title: 'Страхування квитка',
|
|
111
|
+
description:
|
|
112
|
+
'Страхування квитка захищає вас у випадку, якщо ви не зможете відвідати подію через хворобу, травму або інші непередбачені обставини.',
|
|
113
|
+
coverage:
|
|
114
|
+
'Страхування покриває: хворобу, травму, раптову госпіталізацію, карантин або інші непередбачені події, які перешкоджають вашій участі у заході.',
|
|
115
|
+
price: 'Ціна страхування',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
105
118
|
order_success: {
|
|
106
119
|
title: 'Квитки успішно зарезервовані. Тепер залишилося оплатити.',
|
|
107
120
|
description:
|
|
@@ -25,6 +25,8 @@ export interface ICalculateShoppingCartDto {
|
|
|
25
25
|
gender: string | null;
|
|
26
26
|
paymentMethodOptionId: number | null;
|
|
27
27
|
paymentMethodId: number | null;
|
|
28
|
+
ticketInsurance?: boolean;
|
|
29
|
+
smsNotification?: boolean;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export interface IShoppingCart {
|
|
@@ -60,4 +62,9 @@ export interface IShoppingCart {
|
|
|
60
62
|
orderFeeValue: number | null;
|
|
61
63
|
orderFeeType: OrderFeeType | null;
|
|
62
64
|
shippingFee: number;
|
|
65
|
+
ticketInsurance?: boolean;
|
|
66
|
+
ticketInsurancePrice?: number;
|
|
67
|
+
ticketInsurancePricePerUnit?: number;
|
|
68
|
+
smsNotification?: boolean;
|
|
69
|
+
smsNotificationPrice?: number;
|
|
63
70
|
}
|
|
@@ -33,31 +33,12 @@ export interface ITicketFormTicket {
|
|
|
33
33
|
products: IEventProductForm[];
|
|
34
34
|
extraFields: IExtraFieldForm[][];
|
|
35
35
|
eventTimeslotId?: number | null;
|
|
36
|
-
location?: ITicketLocation | null;
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
export interface ITicketLocation {
|
|
40
|
-
id: string;
|
|
41
|
-
type: LocationType;
|
|
42
|
-
locationDescription?:
|
|
43
|
-
| {
|
|
44
|
-
type: BaseLocationDescriptionType | 'custom';
|
|
45
|
-
label: string;
|
|
46
|
-
value: string;
|
|
47
|
-
}[]
|
|
48
|
-
| null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
type BaseLocationDescriptionType = 'seatNumber' | 'rowNumber' | 'sectionName';
|
|
52
|
-
|
|
53
|
-
type LocationType = 'seat' | 'zone';
|
|
54
|
-
|
|
55
|
-
export type EventTicketsType = { [eventId: string]: ITicketFormTicket[] };
|
|
56
|
-
|
|
57
38
|
export interface ITicketForm {
|
|
58
39
|
uuid?: string | null;
|
|
59
40
|
eventId: number;
|
|
60
|
-
tickets:
|
|
41
|
+
tickets: { [eventId: string]: ITicketFormTicket[] };
|
|
61
42
|
total: number;
|
|
62
43
|
originalPrice: number;
|
|
63
44
|
firstName: string;
|
|
@@ -70,6 +51,11 @@ export interface ITicketForm {
|
|
|
70
51
|
paymentMethodId: number | null;
|
|
71
52
|
paymentMethodOptionId: number | null;
|
|
72
53
|
termsAndConditions: boolean;
|
|
54
|
+
ticketInsurance: boolean;
|
|
55
|
+
ticketInsurancePrice: number;
|
|
56
|
+
ticketInsurancePricePerUnit: number;
|
|
57
|
+
smsNotification: boolean;
|
|
58
|
+
smsNotificationPrice: number;
|
|
73
59
|
iframeCampaignId?: number;
|
|
74
60
|
promoCode: IPromoCode | null;
|
|
75
61
|
products: { [eventId: string]: IEventProductForm[] };
|
package/dev-frontend.sh
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
set -e
|
|
4
|
-
|
|
5
|
-
FRONTEND_DIR="../frontend"
|
|
6
|
-
|
|
7
|
-
echo "linking sdk to frontend for local development..."
|
|
8
|
-
echo ""
|
|
9
|
-
|
|
10
|
-
SDK_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
11
|
-
|
|
12
|
-
if [ ! -d "$SDK_DIR/dist" ] || [ -z "$(ls -A $SDK_DIR/dist 2>/dev/null)" ]; then
|
|
13
|
-
echo "building sdk first (dist/ directory not found)..."
|
|
14
|
-
cd "$SDK_DIR"
|
|
15
|
-
yarn build
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
echo "pushing sdk to yalc..."
|
|
19
|
-
cd "$SDK_DIR"
|
|
20
|
-
yalc push --force
|
|
21
|
-
|
|
22
|
-
cd "$FRONTEND_DIR"
|
|
23
|
-
|
|
24
|
-
if [ -d "node_modules/@eventlook" ]; then
|
|
25
|
-
echo "removing existing sdk link..."
|
|
26
|
-
yalc remove @eventlook/sdk 2>/dev/null || true
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
echo "adding sdk via yalc..."
|
|
30
|
-
yalc add @eventlook/sdk
|
|
31
|
-
|
|
32
|
-
echo "linked successfully"
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var useGlobal = require('../hooks/useGlobal.js');
|
|
7
|
-
var material = require('@mui/material');
|
|
8
|
-
var seatPickerSdk = require('@seat-picker/seat-picker-sdk');
|
|
9
|
-
var reactHookForm = require('react-hook-form');
|
|
10
|
-
|
|
11
|
-
const TicketSelectionMap = ({ event }) => {
|
|
12
|
-
const { t, seatingIframeUrl } = useGlobal.default();
|
|
13
|
-
const { setValue, watch } = reactHookForm.useFormContext();
|
|
14
|
-
const uuid = watch('uuid');
|
|
15
|
-
if (!uuid)
|
|
16
|
-
return;
|
|
17
|
-
const onSelect = (seats) => {
|
|
18
|
-
const tickets = [];
|
|
19
|
-
const groupedSeatsByZone = seats.reduce((tickets, seat) => {
|
|
20
|
-
const zoneIndex = tickets.findIndex((ticket) => ticket.seat.id === seat.locationId);
|
|
21
|
-
if (zoneIndex !== -1) {
|
|
22
|
-
tickets[zoneIndex].quantity += 1;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
tickets.push({
|
|
26
|
-
seat: {
|
|
27
|
-
id: seat.locationId,
|
|
28
|
-
type: seat.locationType,
|
|
29
|
-
locationDescription: seat.locationTypeDescription,
|
|
30
|
-
},
|
|
31
|
-
quantity: 1,
|
|
32
|
-
ticket: seat.ticket,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
return tickets;
|
|
36
|
-
},
|
|
37
|
-
// TODO: fix types
|
|
38
|
-
[]);
|
|
39
|
-
for (const groupedSeat of groupedSeatsByZone) {
|
|
40
|
-
tickets.push({
|
|
41
|
-
releaseId: groupedSeat.ticket.id,
|
|
42
|
-
price: groupedSeat.ticket.price,
|
|
43
|
-
quantity: groupedSeat.quantity,
|
|
44
|
-
itemName: `${groupedSeat.ticket.releaseCategoryName} - ${groupedSeat.ticket.name}`,
|
|
45
|
-
products: [],
|
|
46
|
-
extraFields: [],
|
|
47
|
-
location: {
|
|
48
|
-
id: groupedSeat.seat.id,
|
|
49
|
-
type: groupedSeat.seat.type,
|
|
50
|
-
locationDescription: groupedSeat.seat.locationDescription,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
setValue(`tickets.${event.id}`, tickets);
|
|
55
|
-
};
|
|
56
|
-
if (!seatingIframeUrl)
|
|
57
|
-
return null;
|
|
58
|
-
return (React.createElement(material.Button, { variant: "contained", onClick: () => seatPickerSdk.iframe.openPicker({
|
|
59
|
-
eventId: String(event.id),
|
|
60
|
-
onSelect,
|
|
61
|
-
baseUrl: seatingIframeUrl,
|
|
62
|
-
clientId: uuid,
|
|
63
|
-
}) }, t('form.labels.open_map')));
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
exports.default = TicketSelectionMap;
|
|
67
|
-
//# sourceMappingURL=TicketSelectionMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TicketSelectionMap.js","sources":["../../../src/form/TicketSelectionMap.tsx"],"sourcesContent":["import React from 'react';\nimport useGlobal from '@hooks/useGlobal.ts';\nimport { IEvent } from '@utils/types/event.type.ts';\nimport { Button } from '@mui/material';\nimport { iframe, TicketSelection } from '@seat-picker/seat-picker-sdk';\nimport { useFormContext } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket, ITicketLocation } from '@utils/types/ticket.type.ts';\n\ninterface Props {\n event: IEvent;\n}\n\nconst TicketSelectionMap: React.FC<Props> = ({ event }) => {\n const { t, seatingIframeUrl } = useGlobal();\n const { setValue, watch } = useFormContext<ITicketForm>();\n const uuid = watch('uuid');\n\n if (!uuid) return;\n\n const onSelect = (seats: TicketSelection) => {\n const tickets: ITicketFormTicket[] = [];\n const groupedSeatsByZone = seats.reduce(\n (tickets, seat) => {\n const zoneIndex = tickets.findIndex((ticket) => ticket.seat.id === seat.locationId);\n if (zoneIndex !== -1) {\n tickets[zoneIndex].quantity += 1;\n } else {\n tickets.push({\n seat: {\n id: seat.locationId,\n type: seat.locationType,\n locationDescription: seat.locationTypeDescription,\n },\n quantity: 1,\n ticket: seat.ticket,\n });\n }\n\n return tickets;\n },\n // TODO: fix types\n [] as { quantity: number; seat: ITicketLocation; ticket: any }[]\n );\n\n for (const groupedSeat of groupedSeatsByZone) {\n tickets.push({\n releaseId: groupedSeat.ticket.id,\n price: groupedSeat.ticket.price,\n quantity: groupedSeat.quantity,\n itemName: `${groupedSeat.ticket.releaseCategoryName} - ${groupedSeat.ticket.name}`,\n products: [],\n extraFields: [],\n location: {\n id: groupedSeat.seat.id,\n type: groupedSeat.seat.type,\n locationDescription: groupedSeat.seat.locationDescription,\n },\n });\n }\n\n setValue(`tickets.${event.id}`, tickets);\n };\n\n if (!seatingIframeUrl) return null;\n\n return (\n <Button\n variant=\"contained\"\n onClick={() =>\n iframe.openPicker({\n eventId: String(event.id),\n onSelect,\n baseUrl: seatingIframeUrl,\n clientId: uuid,\n })\n }\n >\n {t('form.labels.open_map')}\n </Button>\n );\n};\n\nexport default TicketSelectionMap;\n"],"names":["useGlobal","useFormContext","Button","iframe"],"mappings":";;;;;;;;;;AAYA,MAAM,kBAAkB,GAAoB,CAAC,EAAE,KAAK,EAAE,KAAI;IACxD,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAGA,iBAAS,EAAE;IAC3C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAGC,4BAAc,EAAe;AACzD,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;AAE1B,IAAA,IAAI,CAAC,IAAI;QAAE;AAEX,IAAA,MAAM,QAAQ,GAAG,CAAC,KAAsB,KAAI;QAC1C,MAAM,OAAO,GAAwB,EAAE;QACvC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,IAAI,KAAI;YAChB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;AACnF,YAAA,IAAI,SAAS,KAAK,EAAE,EAAE;AACpB,gBAAA,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,IAAI,CAAC;;iBAC3B;gBACL,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE;wBACJ,EAAE,EAAE,IAAI,CAAC,UAAU;wBACnB,IAAI,EAAE,IAAI,CAAC,YAAY;wBACvB,mBAAmB,EAAE,IAAI,CAAC,uBAAuB;AAClD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAC;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC;;AAGJ,YAAA,OAAO,OAAO;SACf;;AAED,QAAA,EAAgE,CACjE;AAED,QAAA,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;AAChC,gBAAA,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK;gBAC/B,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,gBAAA,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAA,GAAA,EAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAA,CAAE;AAClF,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,QAAQ,EAAE;AACR,oBAAA,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE;AACvB,oBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;AAC3B,oBAAA,mBAAmB,EAAE,WAAW,CAAC,IAAI,CAAC,mBAAmB;AAC1D,iBAAA;AACF,aAAA,CAAC;;QAGJ,QAAQ,CAAC,WAAW,KAAK,CAAC,EAAE,CAAA,CAAE,EAAE,OAAO,CAAC;AAC1C,KAAC;AAED,IAAA,IAAI,CAAC,gBAAgB;AAAE,QAAA,OAAO,IAAI;AAElC,IAAA,QACE,KAAA,CAAA,aAAA,CAACC,eAAM,EAAA,EACL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,MACPC,oBAAM,CAAC,UAAU,CAAC;AAChB,YAAA,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ;AACR,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,IAGH,CAAC,CAAC,sBAAsB,CAAC,CACnB;AAEb;;;;"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import useGlobal from '../hooks/useGlobal.js';
|
|
3
|
-
import { Button } from '@mui/material';
|
|
4
|
-
import { iframe } from '@seat-picker/seat-picker-sdk';
|
|
5
|
-
import { useFormContext } from 'react-hook-form';
|
|
6
|
-
|
|
7
|
-
const TicketSelectionMap = ({ event }) => {
|
|
8
|
-
const { t, seatingIframeUrl } = useGlobal();
|
|
9
|
-
const { setValue, watch } = useFormContext();
|
|
10
|
-
const uuid = watch('uuid');
|
|
11
|
-
if (!uuid)
|
|
12
|
-
return;
|
|
13
|
-
const onSelect = (seats) => {
|
|
14
|
-
const tickets = [];
|
|
15
|
-
const groupedSeatsByZone = seats.reduce((tickets, seat) => {
|
|
16
|
-
const zoneIndex = tickets.findIndex((ticket) => ticket.seat.id === seat.locationId);
|
|
17
|
-
if (zoneIndex !== -1) {
|
|
18
|
-
tickets[zoneIndex].quantity += 1;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
tickets.push({
|
|
22
|
-
seat: {
|
|
23
|
-
id: seat.locationId,
|
|
24
|
-
type: seat.locationType,
|
|
25
|
-
locationDescription: seat.locationTypeDescription,
|
|
26
|
-
},
|
|
27
|
-
quantity: 1,
|
|
28
|
-
ticket: seat.ticket,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
return tickets;
|
|
32
|
-
},
|
|
33
|
-
// TODO: fix types
|
|
34
|
-
[]);
|
|
35
|
-
for (const groupedSeat of groupedSeatsByZone) {
|
|
36
|
-
tickets.push({
|
|
37
|
-
releaseId: groupedSeat.ticket.id,
|
|
38
|
-
price: groupedSeat.ticket.price,
|
|
39
|
-
quantity: groupedSeat.quantity,
|
|
40
|
-
itemName: `${groupedSeat.ticket.releaseCategoryName} - ${groupedSeat.ticket.name}`,
|
|
41
|
-
products: [],
|
|
42
|
-
extraFields: [],
|
|
43
|
-
location: {
|
|
44
|
-
id: groupedSeat.seat.id,
|
|
45
|
-
type: groupedSeat.seat.type,
|
|
46
|
-
locationDescription: groupedSeat.seat.locationDescription,
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
setValue(`tickets.${event.id}`, tickets);
|
|
51
|
-
};
|
|
52
|
-
if (!seatingIframeUrl)
|
|
53
|
-
return null;
|
|
54
|
-
return (React.createElement(Button, { variant: "contained", onClick: () => iframe.openPicker({
|
|
55
|
-
eventId: String(event.id),
|
|
56
|
-
onSelect,
|
|
57
|
-
baseUrl: seatingIframeUrl,
|
|
58
|
-
clientId: uuid,
|
|
59
|
-
}) }, t('form.labels.open_map')));
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export { TicketSelectionMap as default };
|
|
63
|
-
//# sourceMappingURL=TicketSelectionMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TicketSelectionMap.js","sources":["../../../src/form/TicketSelectionMap.tsx"],"sourcesContent":["import React from 'react';\nimport useGlobal from '@hooks/useGlobal.ts';\nimport { IEvent } from '@utils/types/event.type.ts';\nimport { Button } from '@mui/material';\nimport { iframe, TicketSelection } from '@seat-picker/seat-picker-sdk';\nimport { useFormContext } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket, ITicketLocation } from '@utils/types/ticket.type.ts';\n\ninterface Props {\n event: IEvent;\n}\n\nconst TicketSelectionMap: React.FC<Props> = ({ event }) => {\n const { t, seatingIframeUrl } = useGlobal();\n const { setValue, watch } = useFormContext<ITicketForm>();\n const uuid = watch('uuid');\n\n if (!uuid) return;\n\n const onSelect = (seats: TicketSelection) => {\n const tickets: ITicketFormTicket[] = [];\n const groupedSeatsByZone = seats.reduce(\n (tickets, seat) => {\n const zoneIndex = tickets.findIndex((ticket) => ticket.seat.id === seat.locationId);\n if (zoneIndex !== -1) {\n tickets[zoneIndex].quantity += 1;\n } else {\n tickets.push({\n seat: {\n id: seat.locationId,\n type: seat.locationType,\n locationDescription: seat.locationTypeDescription,\n },\n quantity: 1,\n ticket: seat.ticket,\n });\n }\n\n return tickets;\n },\n // TODO: fix types\n [] as { quantity: number; seat: ITicketLocation; ticket: any }[]\n );\n\n for (const groupedSeat of groupedSeatsByZone) {\n tickets.push({\n releaseId: groupedSeat.ticket.id,\n price: groupedSeat.ticket.price,\n quantity: groupedSeat.quantity,\n itemName: `${groupedSeat.ticket.releaseCategoryName} - ${groupedSeat.ticket.name}`,\n products: [],\n extraFields: [],\n location: {\n id: groupedSeat.seat.id,\n type: groupedSeat.seat.type,\n locationDescription: groupedSeat.seat.locationDescription,\n },\n });\n }\n\n setValue(`tickets.${event.id}`, tickets);\n };\n\n if (!seatingIframeUrl) return null;\n\n return (\n <Button\n variant=\"contained\"\n onClick={() =>\n iframe.openPicker({\n eventId: String(event.id),\n onSelect,\n baseUrl: seatingIframeUrl,\n clientId: uuid,\n })\n }\n >\n {t('form.labels.open_map')}\n </Button>\n );\n};\n\nexport default TicketSelectionMap;\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,kBAAkB,GAAoB,CAAC,EAAE,KAAK,EAAE,KAAI;IACxD,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE;IAC3C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,cAAc,EAAe;AACzD,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;AAE1B,IAAA,IAAI,CAAC,IAAI;QAAE;AAEX,IAAA,MAAM,QAAQ,GAAG,CAAC,KAAsB,KAAI;QAC1C,MAAM,OAAO,GAAwB,EAAE;QACvC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,IAAI,KAAI;YAChB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;AACnF,YAAA,IAAI,SAAS,KAAK,EAAE,EAAE;AACpB,gBAAA,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,IAAI,CAAC;;iBAC3B;gBACL,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE;wBACJ,EAAE,EAAE,IAAI,CAAC,UAAU;wBACnB,IAAI,EAAE,IAAI,CAAC,YAAY;wBACvB,mBAAmB,EAAE,IAAI,CAAC,uBAAuB;AAClD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAC;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC;;AAGJ,YAAA,OAAO,OAAO;SACf;;AAED,QAAA,EAAgE,CACjE;AAED,QAAA,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;AAChC,gBAAA,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK;gBAC/B,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,gBAAA,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAA,GAAA,EAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAA,CAAE;AAClF,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,QAAQ,EAAE;AACR,oBAAA,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE;AACvB,oBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;AAC3B,oBAAA,mBAAmB,EAAE,WAAW,CAAC,IAAI,CAAC,mBAAmB;AAC1D,iBAAA;AACF,aAAA,CAAC;;QAGJ,QAAQ,CAAC,WAAW,KAAK,CAAC,EAAE,CAAA,CAAE,EAAE,OAAO,CAAC;AAC1C,KAAC;AAED,IAAA,IAAI,CAAC,gBAAgB;AAAE,QAAA,OAAO,IAAI;AAElC,IAAA,QACE,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,MACP,MAAM,CAAC,UAAU,CAAC;AAChB,YAAA,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ;AACR,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,IAGH,CAAC,CAAC,sBAAsB,CAAC,CACnB;AAEb;;;;"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import useGlobal from '@hooks/useGlobal.ts';
|
|
3
|
-
import { IEvent } from '@utils/types/event.type.ts';
|
|
4
|
-
import { Button } from '@mui/material';
|
|
5
|
-
import { iframe, TicketSelection } from '@seat-picker/seat-picker-sdk';
|
|
6
|
-
import { useFormContext } from 'react-hook-form';
|
|
7
|
-
import { ITicketForm, ITicketFormTicket, ITicketLocation } from '@utils/types/ticket.type.ts';
|
|
8
|
-
|
|
9
|
-
interface Props {
|
|
10
|
-
event: IEvent;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const TicketSelectionMap: React.FC<Props> = ({ event }) => {
|
|
14
|
-
const { t, seatingIframeUrl } = useGlobal();
|
|
15
|
-
const { setValue, watch } = useFormContext<ITicketForm>();
|
|
16
|
-
const uuid = watch('uuid');
|
|
17
|
-
|
|
18
|
-
if (!uuid) return;
|
|
19
|
-
|
|
20
|
-
const onSelect = (seats: TicketSelection) => {
|
|
21
|
-
const tickets: ITicketFormTicket[] = [];
|
|
22
|
-
const groupedSeatsByZone = seats.reduce(
|
|
23
|
-
(tickets, seat) => {
|
|
24
|
-
const zoneIndex = tickets.findIndex((ticket) => ticket.seat.id === seat.locationId);
|
|
25
|
-
if (zoneIndex !== -1) {
|
|
26
|
-
tickets[zoneIndex].quantity += 1;
|
|
27
|
-
} else {
|
|
28
|
-
tickets.push({
|
|
29
|
-
seat: {
|
|
30
|
-
id: seat.locationId,
|
|
31
|
-
type: seat.locationType,
|
|
32
|
-
locationDescription: seat.locationTypeDescription,
|
|
33
|
-
},
|
|
34
|
-
quantity: 1,
|
|
35
|
-
ticket: seat.ticket,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return tickets;
|
|
40
|
-
},
|
|
41
|
-
// TODO: fix types
|
|
42
|
-
[] as { quantity: number; seat: ITicketLocation; ticket: any }[]
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
for (const groupedSeat of groupedSeatsByZone) {
|
|
46
|
-
tickets.push({
|
|
47
|
-
releaseId: groupedSeat.ticket.id,
|
|
48
|
-
price: groupedSeat.ticket.price,
|
|
49
|
-
quantity: groupedSeat.quantity,
|
|
50
|
-
itemName: `${groupedSeat.ticket.releaseCategoryName} - ${groupedSeat.ticket.name}`,
|
|
51
|
-
products: [],
|
|
52
|
-
extraFields: [],
|
|
53
|
-
location: {
|
|
54
|
-
id: groupedSeat.seat.id,
|
|
55
|
-
type: groupedSeat.seat.type,
|
|
56
|
-
locationDescription: groupedSeat.seat.locationDescription,
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
setValue(`tickets.${event.id}`, tickets);
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
if (!seatingIframeUrl) return null;
|
|
65
|
-
|
|
66
|
-
return (
|
|
67
|
-
<Button
|
|
68
|
-
variant="contained"
|
|
69
|
-
onClick={() =>
|
|
70
|
-
iframe.openPicker({
|
|
71
|
-
eventId: String(event.id),
|
|
72
|
-
onSelect,
|
|
73
|
-
baseUrl: seatingIframeUrl,
|
|
74
|
-
clientId: uuid,
|
|
75
|
-
})
|
|
76
|
-
}
|
|
77
|
-
>
|
|
78
|
-
{t('form.labels.open_map')}
|
|
79
|
-
</Button>
|
|
80
|
-
);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export default TicketSelectionMap;
|