@eventlook/sdk 1.4.46-beta.7 → 1.4.46
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/.claude/settings.local.json +9 -0
- package/dist/cjs/components/Image.js +29 -14
- package/dist/cjs/components/Image.js.map +1 -1
- package/dist/cjs/components/hook-form/FormProvider.js +2 -2
- package/dist/cjs/components/hook-form/FormProvider.js.map +1 -1
- package/dist/cjs/form/ChildEventDialog.js +3 -3
- package/dist/cjs/form/ChildEventDialog.js.map +1 -1
- package/dist/cjs/form/ContactPerson.js +1 -1
- package/dist/cjs/form/ContactPerson.js.map +1 -1
- package/dist/cjs/form/Payment.js +2 -2
- package/dist/cjs/form/Payment.js.map +1 -1
- package/dist/cjs/form/PaymentOverviewBox.js +61 -47
- package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
- package/dist/cjs/form/PaymentPending.js +4 -1
- package/dist/cjs/form/PaymentPending.js.map +1 -1
- package/dist/cjs/form/ReleaseWithMerchandise.js +48 -57
- package/dist/cjs/form/ReleaseWithMerchandise.js.map +1 -1
- package/dist/cjs/form/TicketForm.js +25 -43
- package/dist/cjs/form/TicketForm.js.map +1 -1
- package/dist/cjs/form/TicketSelection.js +6 -5
- package/dist/cjs/form/TicketSelection.js.map +1 -1
- package/dist/cjs/form/TicketWithMerchandiseSelection.js +5 -3
- package/dist/cjs/form/TicketWithMerchandiseSelection.js.map +1 -1
- package/dist/cjs/form/index.js +1 -1
- package/dist/cjs/form/index.js.map +1 -1
- package/dist/cjs/form/payment/FeeBox.js +16 -4
- package/dist/cjs/form/payment/FeeBox.js.map +1 -1
- package/dist/cjs/form/payment/PaymentOverviewCheckbox.js +28 -34
- package/dist/cjs/form/payment/PaymentOverviewCheckbox.js.map +1 -1
- package/dist/cjs/form/product/ProductCard.js +36 -117
- package/dist/cjs/form/product/ProductCard.js.map +1 -1
- package/dist/cjs/form/product/ProductVariantsDialog.js +96 -158
- package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/cjs/locales/cs.js +2 -17
- package/dist/cjs/locales/cs.js.map +1 -1
- package/dist/cjs/locales/en.js +2 -17
- package/dist/cjs/locales/en.js.map +1 -1
- package/dist/cjs/locales/es.js +1 -16
- package/dist/cjs/locales/es.js.map +1 -1
- package/dist/cjs/locales/pl.js +1 -16
- package/dist/cjs/locales/pl.js.map +1 -1
- package/dist/cjs/locales/sk.js +1 -16
- package/dist/cjs/locales/sk.js.map +1 -1
- package/dist/cjs/locales/uk.js +1 -16
- package/dist/cjs/locales/uk.js.map +1 -1
- package/dist/cjs/utils/data/global.js +0 -2
- package/dist/cjs/utils/data/global.js.map +1 -1
- package/dist/esm/components/Image.js +30 -15
- package/dist/esm/components/Image.js.map +1 -1
- package/dist/esm/components/hook-form/FormProvider.js +2 -2
- package/dist/esm/components/hook-form/FormProvider.js.map +1 -1
- package/dist/esm/form/ChildEventDialog.js +3 -3
- package/dist/esm/form/ChildEventDialog.js.map +1 -1
- package/dist/esm/form/ContactPerson.js +1 -1
- package/dist/esm/form/ContactPerson.js.map +1 -1
- package/dist/esm/form/Payment.js +2 -2
- package/dist/esm/form/Payment.js.map +1 -1
- package/dist/esm/form/PaymentOverviewBox.js +62 -48
- package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
- package/dist/esm/form/PaymentPending.js +4 -1
- package/dist/esm/form/PaymentPending.js.map +1 -1
- package/dist/esm/form/ReleaseWithMerchandise.js +49 -58
- package/dist/esm/form/ReleaseWithMerchandise.js.map +1 -1
- package/dist/esm/form/TicketForm.js +27 -45
- package/dist/esm/form/TicketForm.js.map +1 -1
- package/dist/esm/form/TicketSelection.js +6 -5
- package/dist/esm/form/TicketSelection.js.map +1 -1
- package/dist/esm/form/TicketWithMerchandiseSelection.js +6 -4
- package/dist/esm/form/TicketWithMerchandiseSelection.js.map +1 -1
- package/dist/esm/form/index.js +1 -1
- package/dist/esm/form/index.js.map +1 -1
- package/dist/esm/form/payment/FeeBox.js +17 -5
- package/dist/esm/form/payment/FeeBox.js.map +1 -1
- package/dist/esm/form/payment/PaymentOverviewCheckbox.js +30 -36
- package/dist/esm/form/payment/PaymentOverviewCheckbox.js.map +1 -1
- package/dist/esm/form/product/ProductCard.js +37 -118
- package/dist/esm/form/product/ProductCard.js.map +1 -1
- package/dist/esm/form/product/ProductVariantsDialog.js +98 -160
- package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/esm/locales/cs.js +2 -17
- package/dist/esm/locales/cs.js.map +1 -1
- package/dist/esm/locales/en.js +2 -17
- package/dist/esm/locales/en.js.map +1 -1
- package/dist/esm/locales/es.js +1 -16
- package/dist/esm/locales/es.js.map +1 -1
- package/dist/esm/locales/pl.js +1 -16
- package/dist/esm/locales/pl.js.map +1 -1
- package/dist/esm/locales/sk.js +1 -16
- package/dist/esm/locales/sk.js.map +1 -1
- package/dist/esm/locales/uk.js +1 -16
- package/dist/esm/locales/uk.js.map +1 -1
- package/dist/esm/utils/data/global.js +1 -2
- package/dist/esm/utils/data/global.js.map +1 -1
- package/dist/types/components/Image.d.ts +4 -4
- package/dist/types/form/style.d.ts +1 -1
- package/package.json +2 -8
- package/rollup.config.mjs +0 -2
- package/src/components/Image.tsx +48 -27
- package/src/components/hook-form/FormProvider.tsx +2 -5
- package/src/form/ChildEventDialog.tsx +3 -3
- package/src/form/ContactPerson.tsx +1 -1
- package/src/form/MerchandiseSelection.tsx +29 -0
- package/src/form/Payment.tsx +2 -2
- package/src/form/PaymentOverviewBox.tsx +122 -89
- package/src/form/PaymentPending.tsx +1 -1
- package/src/form/ReleaseWithMerchandise.tsx +230 -0
- package/src/form/TicketForm.tsx +25 -63
- package/src/form/{tickets/TicketSelection.tsx → TicketSelection.tsx} +128 -24
- package/src/form/{tickets/TicketSelectionMap.tsx → TicketSelectionMap.tsx} +1 -9
- package/src/form/{tickets/TicketWithMerchandiseSelection.tsx → TicketWithMerchandiseSelection.tsx} +7 -3
- package/src/form/index.tsx +1 -3
- package/src/form/payment/FeeBox.tsx +31 -4
- package/src/form/payment/PaymentOverviewCheckbox.tsx +56 -57
- package/src/form/product/ProductCard.tsx +59 -179
- package/src/form/product/ProductVariantsDialog.tsx +140 -253
- package/src/locales/cs.tsx +2 -17
- package/src/locales/en.tsx +2 -17
- package/src/locales/es.tsx +1 -16
- package/src/locales/pl.tsx +1 -16
- package/src/locales/sk.tsx +1 -16
- package/src/locales/uk.tsx +1 -16
- package/src/utils/data/global.ts +0 -1
- package/tsconfig.json +1 -2
- package/.env.example +0 -1
- package/dist/cjs/_virtual/_commonjsHelpers.js +0 -8
- package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/cjs/_virtual/index.js +0 -6
- package/dist/cjs/_virtual/index.js.map +0 -1
- package/dist/cjs/_virtual/index2.js +0 -6
- package/dist/cjs/_virtual/index2.js.map +0 -1
- package/dist/cjs/_virtual/index3.js +0 -6
- package/dist/cjs/_virtual/index3.js.map +0 -1
- package/dist/cjs/_virtual/react-is.development.js +0 -6
- package/dist/cjs/_virtual/react-is.development.js.map +0 -1
- package/dist/cjs/_virtual/react-is.development2.js +0 -6
- package/dist/cjs/_virtual/react-is.development2.js.map +0 -1
- package/dist/cjs/_virtual/react-is.production.js +0 -6
- package/dist/cjs/_virtual/react-is.production.js.map +0 -1
- package/dist/cjs/_virtual/react-is.production.min.js +0 -6
- package/dist/cjs/_virtual/react-is.production.min.js.map +0 -1
- package/dist/cjs/form/PaymentOverviewDrawer.js +0 -149
- package/dist/cjs/form/PaymentOverviewDrawer.js.map +0 -1
- package/dist/cjs/form/TicketQuantityControl.js +0 -51
- package/dist/cjs/form/TicketQuantityControl.js.map +0 -1
- package/dist/cjs/form/TicketSelectionMobile.js +0 -98
- package/dist/cjs/form/TicketSelectionMobile.js.map +0 -1
- package/dist/cjs/form/merchandise/MerchandiseSelection.js +0 -14
- package/dist/cjs/form/merchandise/MerchandiseSelection.js.map +0 -1
- package/dist/cjs/form/merchandise/MerchandiseSlider.js +0 -40
- package/dist/cjs/form/merchandise/MerchandiseSlider.js.map +0 -1
- package/dist/cjs/form/merchendise/MerchandiseSelection.js +0 -19
- package/dist/cjs/form/merchendise/MerchandiseSelection.js.map +0 -1
- package/dist/cjs/form/merchendise/MerchandiseSlider.js +0 -75
- package/dist/cjs/form/merchendise/MerchandiseSlider.js.map +0 -1
- package/dist/cjs/form/services/index.js +0 -134
- package/dist/cjs/form/services/index.js.map +0 -1
- package/dist/cjs/form/tickets/ReleaseDescription.js +0 -23
- package/dist/cjs/form/tickets/ReleaseDescription.js.map +0 -1
- package/dist/cjs/form/tickets/ReleaseWithMerchandise.js +0 -141
- package/dist/cjs/form/tickets/ReleaseWithMerchandise.js.map +0 -1
- package/dist/cjs/form/tickets/TicketQuantityControl.js +0 -52
- package/dist/cjs/form/tickets/TicketQuantityControl.js.map +0 -1
- package/dist/cjs/form/tickets/TicketSelection.js +0 -139
- package/dist/cjs/form/tickets/TicketSelection.js.map +0 -1
- package/dist/cjs/form/tickets/TicketSelectionMap.js +0 -73
- package/dist/cjs/form/tickets/TicketSelectionMap.js.map +0 -1
- package/dist/cjs/form/tickets/TicketSelectionMobile.js +0 -90
- package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +0 -1
- package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js +0 -117
- package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js.map +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/index.js +0 -4
- package/dist/esm/_virtual/index.js.map +0 -1
- package/dist/esm/_virtual/index2.js +0 -4
- package/dist/esm/_virtual/index2.js.map +0 -1
- package/dist/esm/_virtual/index3.js +0 -4
- package/dist/esm/_virtual/index3.js.map +0 -1
- package/dist/esm/_virtual/react-is.development.js +0 -4
- package/dist/esm/_virtual/react-is.development.js.map +0 -1
- package/dist/esm/_virtual/react-is.development2.js +0 -4
- package/dist/esm/_virtual/react-is.development2.js.map +0 -1
- package/dist/esm/_virtual/react-is.production.js +0 -4
- package/dist/esm/_virtual/react-is.production.js.map +0 -1
- package/dist/esm/_virtual/react-is.production.min.js +0 -4
- package/dist/esm/_virtual/react-is.production.min.js.map +0 -1
- package/dist/esm/form/PaymentOverviewDrawer.js +0 -145
- package/dist/esm/form/PaymentOverviewDrawer.js.map +0 -1
- package/dist/esm/form/TicketQuantityControl.js +0 -47
- package/dist/esm/form/TicketQuantityControl.js.map +0 -1
- package/dist/esm/form/TicketSelectionMobile.js +0 -94
- package/dist/esm/form/TicketSelectionMobile.js.map +0 -1
- package/dist/esm/form/merchandise/MerchandiseSelection.js +0 -10
- package/dist/esm/form/merchandise/MerchandiseSelection.js.map +0 -1
- package/dist/esm/form/merchandise/MerchandiseSlider.js +0 -36
- package/dist/esm/form/merchandise/MerchandiseSlider.js.map +0 -1
- package/dist/esm/form/merchendise/MerchandiseSelection.js +0 -15
- package/dist/esm/form/merchendise/MerchandiseSelection.js.map +0 -1
- package/dist/esm/form/merchendise/MerchandiseSlider.js +0 -71
- package/dist/esm/form/merchendise/MerchandiseSlider.js.map +0 -1
- package/dist/esm/form/services/index.js +0 -130
- package/dist/esm/form/services/index.js.map +0 -1
- package/dist/esm/form/tickets/ReleaseDescription.js +0 -19
- package/dist/esm/form/tickets/ReleaseDescription.js.map +0 -1
- package/dist/esm/form/tickets/ReleaseWithMerchandise.js +0 -137
- package/dist/esm/form/tickets/ReleaseWithMerchandise.js.map +0 -1
- package/dist/esm/form/tickets/TicketQuantityControl.js +0 -48
- package/dist/esm/form/tickets/TicketQuantityControl.js.map +0 -1
- package/dist/esm/form/tickets/TicketSelection.js +0 -135
- package/dist/esm/form/tickets/TicketSelection.js.map +0 -1
- package/dist/esm/form/tickets/TicketSelectionMap.js +0 -69
- package/dist/esm/form/tickets/TicketSelectionMap.js.map +0 -1
- package/dist/esm/form/tickets/TicketSelectionMobile.js +0 -86
- package/dist/esm/form/tickets/TicketSelectionMobile.js.map +0 -1
- package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js +0 -113
- package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js.map +0 -1
- package/dist/types/form/PaymentOverviewDrawer.d.ts +0 -8
- package/dist/types/form/merchendise/MerchandiseSelection.d.ts +0 -9
- package/dist/types/form/merchendise/MerchandiseSlider.d.ts +0 -10
- package/dist/types/form/merchendise/MerchendiseSlider.d.ts +0 -0
- package/src/form/PaymentOverviewDrawer.tsx +0 -228
- package/src/form/merchandise/MerchandiseSelection.tsx +0 -24
- package/src/form/merchandise/MerchandiseSlider.tsx +0 -62
- package/src/form/services/index.tsx +0 -263
- package/src/form/tickets/ReleaseDescription.tsx +0 -46
- package/src/form/tickets/ReleaseWithMerchandise.tsx +0 -239
- package/src/form/tickets/TicketQuantityControl.tsx +0 -94
- package/src/form/tickets/TicketSelectionMobile.tsx +0 -177
package/src/components/Image.tsx
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { LazyLoadImage, LazyLoadImageProps } from 'react-lazy-load-image-component';
|
|
1
|
+
import React, { useState } from 'react';
|
|
3
2
|
import { Theme } from '@mui/material/styles';
|
|
4
3
|
import { Box, BoxProps, SxProps } from '@mui/material';
|
|
5
4
|
|
|
@@ -7,9 +6,9 @@ import { Box, BoxProps, SxProps } from '@mui/material';
|
|
|
7
6
|
|
|
8
7
|
export type ImageRatio = '4/3' | '3/4' | '6/4' | '4/6' | '16/9' | '9/16' | '21/9' | '9/21' | '1/1';
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
interface Props extends BoxProps {
|
|
10
|
+
src?: string;
|
|
11
|
+
alt?: string;
|
|
13
12
|
sx?: SxProps<Theme>;
|
|
14
13
|
ratio?: ImageRatio;
|
|
15
14
|
disabledEffect?: boolean;
|
|
@@ -19,11 +18,17 @@ interface Props extends IProps {
|
|
|
19
18
|
export default function Image({
|
|
20
19
|
ratio,
|
|
21
20
|
disabledEffect = false,
|
|
22
|
-
effect = 'blur',
|
|
23
21
|
objectFit = 'cover',
|
|
24
22
|
sx,
|
|
23
|
+
src,
|
|
24
|
+
alt = '',
|
|
25
25
|
...other
|
|
26
26
|
}: Props) {
|
|
27
|
+
const [imgError, setImgError] = useState(false);
|
|
28
|
+
const [loaded, setLoaded] = useState(false);
|
|
29
|
+
|
|
30
|
+
const imgSrc = imgError || !src ? '/assets/img_placeholder.svg' : src;
|
|
31
|
+
|
|
27
32
|
if (ratio) {
|
|
28
33
|
return (
|
|
29
34
|
<Box
|
|
@@ -35,25 +40,30 @@ export default function Image({
|
|
|
35
40
|
overflow: 'hidden',
|
|
36
41
|
position: 'relative',
|
|
37
42
|
pt: getRatio(ratio),
|
|
38
|
-
'& .wrapper': {
|
|
39
|
-
top: 0,
|
|
40
|
-
left: 0,
|
|
41
|
-
right: 0,
|
|
42
|
-
bottom: 0,
|
|
43
|
-
lineHeight: 0,
|
|
44
|
-
position: 'absolute',
|
|
45
|
-
backgroundSize: 'cover !important',
|
|
46
|
-
},
|
|
47
43
|
...sx,
|
|
48
44
|
}}
|
|
49
45
|
>
|
|
50
46
|
<Box
|
|
51
|
-
component=
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
{
|
|
47
|
+
component="img"
|
|
48
|
+
src={imgSrc}
|
|
49
|
+
alt={alt}
|
|
50
|
+
loading="lazy"
|
|
51
|
+
decoding="async"
|
|
52
|
+
onLoad={() => setLoaded(true)}
|
|
53
|
+
onError={() => {
|
|
54
|
+
if (!imgError) setImgError(true);
|
|
55
|
+
}}
|
|
56
|
+
sx={{
|
|
57
|
+
position: 'absolute',
|
|
58
|
+
top: 0,
|
|
59
|
+
left: 0,
|
|
60
|
+
width: 1,
|
|
61
|
+
height: 1,
|
|
62
|
+
objectFit: 'cover',
|
|
63
|
+
...(disabledEffect
|
|
64
|
+
? {}
|
|
65
|
+
: { opacity: loaded ? 1 : 0, transition: 'opacity 0.3s ease-in-out' }),
|
|
66
|
+
}}
|
|
57
67
|
/>
|
|
58
68
|
</Box>
|
|
59
69
|
);
|
|
@@ -66,16 +76,27 @@ export default function Image({
|
|
|
66
76
|
lineHeight: 1,
|
|
67
77
|
display: 'block',
|
|
68
78
|
overflow: 'hidden',
|
|
69
|
-
'& .wrapper': { width: 1, height: 1, backgroundSize: 'cover !important' },
|
|
70
79
|
...sx,
|
|
71
80
|
}}
|
|
72
81
|
>
|
|
73
82
|
<Box
|
|
74
|
-
component=
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
component="img"
|
|
84
|
+
src={imgSrc}
|
|
85
|
+
alt={alt}
|
|
86
|
+
loading="lazy"
|
|
87
|
+
decoding="async"
|
|
88
|
+
onLoad={() => setLoaded(true)}
|
|
89
|
+
onError={() => {
|
|
90
|
+
if (!imgError) setImgError(true);
|
|
91
|
+
}}
|
|
92
|
+
sx={{
|
|
93
|
+
width: 1,
|
|
94
|
+
height: 1,
|
|
95
|
+
objectFit,
|
|
96
|
+
...(disabledEffect
|
|
97
|
+
? {}
|
|
98
|
+
: { opacity: loaded ? 1 : 0, transition: 'opacity 0.3s ease-in-out' }),
|
|
99
|
+
}}
|
|
79
100
|
{...other}
|
|
80
101
|
/>
|
|
81
102
|
</Box>
|
|
@@ -7,15 +7,12 @@ type Props = {
|
|
|
7
7
|
children: React.ReactNode;
|
|
8
8
|
methods: UseFormReturn<any>;
|
|
9
9
|
onSubmit?: VoidFunction;
|
|
10
|
-
formId?: string;
|
|
11
10
|
};
|
|
12
11
|
|
|
13
|
-
export default function FormProvider({ children, onSubmit, methods
|
|
12
|
+
export default function FormProvider({ children, onSubmit, methods }: Props) {
|
|
14
13
|
return (
|
|
15
14
|
<Form {...methods}>
|
|
16
|
-
<form
|
|
17
|
-
{children}
|
|
18
|
-
</form>
|
|
15
|
+
<form onSubmit={onSubmit}>{children}</form>
|
|
19
16
|
</Form>
|
|
20
17
|
);
|
|
21
18
|
}
|
|
@@ -2,10 +2,10 @@ import useActiveEventProducts from '@hooks/data/useActiveEventProducts';
|
|
|
2
2
|
import { Dialog, DialogContent, Stack, Step, StepContent, StepLabel, Stepper } from '@mui/material';
|
|
3
3
|
import { IEvent } from '@utils/types/event.type';
|
|
4
4
|
import React from 'react';
|
|
5
|
-
import TicketWithMerchandiseSelection from './
|
|
6
|
-
import TicketSelection from './
|
|
5
|
+
import TicketWithMerchandiseSelection from './TicketWithMerchandiseSelection';
|
|
6
|
+
import TicketSelection from './TicketSelection';
|
|
7
7
|
import useGlobal from '@hooks/useGlobal';
|
|
8
|
-
import MerchandiseSelection from './
|
|
8
|
+
import MerchandiseSelection from './MerchandiseSelection';
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
11
11
|
event: IEvent;
|
|
@@ -18,7 +18,7 @@ const ContactPerson: React.FC<Props> = ({ event }) => {
|
|
|
18
18
|
const { t, content } = useGlobal();
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
|
-
<Grid container spacing={
|
|
21
|
+
<Grid container spacing={3}>
|
|
22
22
|
<Grid item xs={12} md={6}>
|
|
23
23
|
<RHFTextField name="firstName" label={t('form.labels.first_name')} />
|
|
24
24
|
</Grid>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Grid } from '@mui/material';
|
|
3
|
+
import ProductCard from '@form/product/ProductCard';
|
|
4
|
+
import { IEventProduct } from '@utils/types/event-product.type';
|
|
5
|
+
import CustomSkeleton from '@components/CustomSkeleton';
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
eventProducts: IEventProduct[];
|
|
9
|
+
eventId: number;
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const MerchandiseSelection: React.FC<Props> = ({ eventProducts, eventId, isLoading }) => (
|
|
14
|
+
<Grid container spacing={3}>
|
|
15
|
+
{isLoading
|
|
16
|
+
? [...Array(3)].map((item) => (
|
|
17
|
+
<Grid key={item} item xs={12} md={4}>
|
|
18
|
+
<CustomSkeleton height={334} />
|
|
19
|
+
</Grid>
|
|
20
|
+
))
|
|
21
|
+
: eventProducts.map((eventProduct) => (
|
|
22
|
+
<Grid key={eventProduct.id} item xs={12} md={4}>
|
|
23
|
+
<ProductCard eventProduct={eventProduct} eventId={eventId} isOnlyMerchandise />
|
|
24
|
+
</Grid>
|
|
25
|
+
))}
|
|
26
|
+
</Grid>
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
export default MerchandiseSelection;
|
package/src/form/Payment.tsx
CHANGED
|
@@ -286,7 +286,7 @@ const Payment: React.FC<Props> = ({ event }) => {
|
|
|
286
286
|
src={payment.image.url}
|
|
287
287
|
sx={{
|
|
288
288
|
height: '20px',
|
|
289
|
-
'&
|
|
289
|
+
'& img': {
|
|
290
290
|
objectFit: 'contain',
|
|
291
291
|
},
|
|
292
292
|
}}
|
|
@@ -320,7 +320,7 @@ const Payment: React.FC<Props> = ({ event }) => {
|
|
|
320
320
|
maxWidth: '70px',
|
|
321
321
|
display: 'inline-block',
|
|
322
322
|
marginRight: 1,
|
|
323
|
-
'&
|
|
323
|
+
'& img': {
|
|
324
324
|
objectFit: 'contain',
|
|
325
325
|
objectPosition: 'left',
|
|
326
326
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
2
|
import { Iconify, Image, TextIconLabel } from '@components';
|
|
3
|
-
import { Box, Divider, Grid, Stack, Typography } from '@mui/material';
|
|
3
|
+
import { Box, Divider, Grid, IconButton, Stack, Typography } from '@mui/material';
|
|
4
4
|
import PaymentOverviewCheckbox from '@form/payment/PaymentOverviewCheckbox.tsx';
|
|
5
5
|
import locationIcon from '@iconify/icons-carbon/location';
|
|
6
6
|
import { getPlaceAsString } from '@utils/place';
|
|
@@ -26,7 +26,6 @@ import { ICalculateShoppingCartDto, IShoppingCartDto } from '@utils/types/shoppi
|
|
|
26
26
|
import { PromoCodeTypes } from '@utils/data/promo-code.ts';
|
|
27
27
|
import useActiveEventProducts from '@hooks/data/useActiveEventProducts';
|
|
28
28
|
import useDebounce from '@hooks/useDebounce';
|
|
29
|
-
import { EVENTLOOK_ORDER_FORM_ID } from '@utils/data/global.ts';
|
|
30
29
|
|
|
31
30
|
interface Props {
|
|
32
31
|
event: IEvent;
|
|
@@ -55,9 +54,9 @@ const PaymentOverviewBox: React.FC<Props> = ({ event }) => {
|
|
|
55
54
|
totalFee,
|
|
56
55
|
isPaymentVerify,
|
|
57
56
|
ticketInsurance,
|
|
57
|
+
ticketInsurancePricePerUnit,
|
|
58
58
|
smsNotification,
|
|
59
59
|
smsNotificationPrice,
|
|
60
|
-
ticketInsurancePricePerUnit,
|
|
61
60
|
} = values;
|
|
62
61
|
const tickets: Record<string, ITicketFormTicket[]> = useWatch({
|
|
63
62
|
name: 'tickets',
|
|
@@ -386,29 +385,29 @@ const PaymentOverviewBox: React.FC<Props> = ({ event }) => {
|
|
|
386
385
|
}
|
|
387
386
|
}, []);
|
|
388
387
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
388
|
+
const removeProduct = (variant: ISelectedProductVariant) => {
|
|
389
|
+
const { eventId, variantId } = variant;
|
|
390
|
+
const list = Array.isArray(products[eventId]) ? [...products[eventId]] : [];
|
|
392
391
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
392
|
+
const idx = list.findIndex((p) => Number(p.eventProductVariantId) === Number(variantId));
|
|
393
|
+
if (idx === -1) return;
|
|
394
|
+
const item = list[idx];
|
|
396
395
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
396
|
+
if ((item.quantity ?? 0) <= 1) {
|
|
397
|
+
list.splice(idx, 1);
|
|
398
|
+
} else {
|
|
399
|
+
list[idx] = { ...item, quantity: (item.quantity ?? 1) - 1 };
|
|
400
|
+
}
|
|
402
401
|
|
|
403
|
-
|
|
402
|
+
const next = { ...products, [eventId]: list };
|
|
404
403
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
404
|
+
if (list.length === 0) {
|
|
405
|
+
const { [eventId]: _removed, ...rest } = next;
|
|
406
|
+
setValue('products', rest);
|
|
407
|
+
} else {
|
|
408
|
+
setValue('products', next);
|
|
409
|
+
}
|
|
410
|
+
};
|
|
412
411
|
|
|
413
412
|
return (
|
|
414
413
|
<OverviewCard id="overview-card" stickyHeaderTop={options?.stickyHeaderTop || 0}>
|
|
@@ -447,8 +446,7 @@ const PaymentOverviewBox: React.FC<Props> = ({ event }) => {
|
|
|
447
446
|
/>
|
|
448
447
|
}
|
|
449
448
|
sx={{
|
|
450
|
-
backgroundColor: (theme) =>
|
|
451
|
-
theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900],
|
|
449
|
+
backgroundColor: (theme) => theme.palette.grey.A100,
|
|
452
450
|
borderRadius: 1,
|
|
453
451
|
}}
|
|
454
452
|
>
|
|
@@ -475,49 +473,15 @@ const PaymentOverviewBox: React.FC<Props> = ({ event }) => {
|
|
|
475
473
|
</Stack>
|
|
476
474
|
</Stack>
|
|
477
475
|
)}
|
|
478
|
-
<Stack
|
|
479
|
-
className="overview-card__order-info"
|
|
480
|
-
p={2}
|
|
481
|
-
pt={{ xs: 0, sm: 2 }}
|
|
482
|
-
spacing={0.75}
|
|
483
|
-
useFlexGap
|
|
484
|
-
>
|
|
476
|
+
<Stack className="overview-card__order-info" p={2} spacing={1}>
|
|
485
477
|
{!!selectedTickets.length && !isMobile && <Divider sx={{ borderStyle: 'dashed' }} />}
|
|
486
|
-
|
|
487
|
-
{!!selectedTickets.length && (
|
|
488
|
-
<Stack spacing={0.5}>
|
|
489
|
-
{/* TODO: Uncomment this when Colonnade response - must update terms and conditions and email info */}
|
|
490
|
-
<PaymentOverviewCheckbox
|
|
491
|
-
checkboxName="ticketInsurance"
|
|
492
|
-
label={t('event.tickets.insurance.label')}
|
|
493
|
-
value={
|
|
494
|
-
<>
|
|
495
|
-
{ticketInsurance && totalItemCount.totalTickets > 0 ? '' : '+ '}
|
|
496
|
-
{fCurrency(ticketInsurancePricePerUnit, lang, event.currency)} /{' '}
|
|
497
|
-
{t('event.tickets.insurance.per_ticket')}
|
|
498
|
-
</>
|
|
499
|
-
}
|
|
500
|
-
/>
|
|
501
|
-
<PaymentOverviewCheckbox
|
|
502
|
-
checkboxName="smsNotification"
|
|
503
|
-
label={t('event.tickets.sms_notification.label')}
|
|
504
|
-
value={
|
|
505
|
-
<>
|
|
506
|
-
{smsNotification && totalItemCount.totalTickets > 0 ? '' : '+ '}
|
|
507
|
-
{fCurrency(smsNotificationPrice, lang, event.currency)}
|
|
508
|
-
</>
|
|
509
|
-
}
|
|
510
|
-
/>
|
|
511
|
-
<Divider sx={{ borderStyle: 'dashed' }} />
|
|
512
|
-
</Stack>
|
|
513
|
-
)}
|
|
514
478
|
{selectedTickets.map((ticket, index) => (
|
|
515
479
|
<Box key={index}>
|
|
516
480
|
<Stack direction="row" justifyContent="space-between" alignItems="center" spacing={2}>
|
|
517
|
-
<Typography variant="
|
|
481
|
+
<Typography variant="caption">
|
|
518
482
|
{ticket.quantity}x {ticket.itemName}
|
|
519
483
|
</Typography>
|
|
520
|
-
<Typography variant="
|
|
484
|
+
<Typography variant="caption">
|
|
521
485
|
{fCurrency(
|
|
522
486
|
calculatePriceWithDiscount(
|
|
523
487
|
ticket.price,
|
|
@@ -537,10 +501,10 @@ const PaymentOverviewBox: React.FC<Props> = ({ event }) => {
|
|
|
537
501
|
alignItems="center"
|
|
538
502
|
spacing={2}
|
|
539
503
|
>
|
|
540
|
-
<Typography variant="
|
|
504
|
+
<Typography variant="caption">
|
|
541
505
|
- {product.quantity}x {product.name}
|
|
542
506
|
</Typography>
|
|
543
|
-
<Typography variant="
|
|
507
|
+
<Typography variant="caption">
|
|
544
508
|
{product.price > 0
|
|
545
509
|
? fCurrency(
|
|
546
510
|
calculatePriceWithDiscount(
|
|
@@ -562,49 +526,118 @@ const PaymentOverviewBox: React.FC<Props> = ({ event }) => {
|
|
|
562
526
|
{selectedVariants.map((variant, index) => (
|
|
563
527
|
<Box key={index}>
|
|
564
528
|
<Stack direction="row" justifyContent="space-between" alignItems="center" spacing={2}>
|
|
565
|
-
<Typography variant="
|
|
529
|
+
<Typography variant="caption">
|
|
566
530
|
{variant.quantity}x {variant.name}
|
|
567
531
|
</Typography>
|
|
568
|
-
<
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
532
|
+
<Stack direction="row" spacing={1} alignItems="center">
|
|
533
|
+
<Typography variant="caption">
|
|
534
|
+
{fCurrency(
|
|
535
|
+
calculatePriceWithDiscount(
|
|
536
|
+
variant.price,
|
|
537
|
+
promoCodesValues.productDiscountPercent,
|
|
538
|
+
promoCodesValues.fixedDevidedProducts
|
|
539
|
+
? promoCodesValues.fixedDevidedProducts * variant.quantity
|
|
540
|
+
: 0
|
|
541
|
+
),
|
|
542
|
+
lang,
|
|
543
|
+
event.currency
|
|
544
|
+
)}
|
|
545
|
+
</Typography>
|
|
546
|
+
<IconButton onClick={() => removeProduct(variant)} color="primary" size="small">
|
|
547
|
+
<Iconify icon="carbon:trash-can" />
|
|
548
|
+
</IconButton>
|
|
549
|
+
</Stack>
|
|
581
550
|
</Stack>
|
|
582
551
|
</Box>
|
|
583
552
|
))}
|
|
584
553
|
{!!shippingFee && (
|
|
585
554
|
<Stack direction="row" justifyContent="space-between" alignItems="center" spacing={2}>
|
|
586
|
-
<Typography variant="
|
|
587
|
-
<Typography variant="
|
|
555
|
+
<Typography variant="caption">{t('form.labels.shipping_fee')}</Typography>
|
|
556
|
+
<Typography variant="caption">
|
|
557
|
+
{fCurrency(shippingFee, lang, event.currency)}
|
|
558
|
+
</Typography>
|
|
559
|
+
</Stack>
|
|
560
|
+
)}
|
|
561
|
+
{ticketInsurance && totalItemCount.totalTickets > 0 && (
|
|
562
|
+
<Stack direction="row" justifyContent="space-between" alignItems="center" spacing={2}>
|
|
563
|
+
<Typography variant="caption">{t('form.labels.ticket_insurance')}</Typography>
|
|
564
|
+
<Typography variant="caption">
|
|
565
|
+
{fCurrency(values.ticketInsurancePrice, lang, event.currency)}
|
|
566
|
+
</Typography>
|
|
567
|
+
</Stack>
|
|
568
|
+
)}
|
|
569
|
+
{smsNotification && totalItemCount.totalTickets > 0 && (
|
|
570
|
+
<Stack direction="row" justifyContent="space-between" alignItems="center" spacing={2}>
|
|
571
|
+
<Typography variant="caption">{t('form.labels.sms_notification')}</Typography>
|
|
572
|
+
<Typography variant="caption">
|
|
573
|
+
{fCurrency(values.smsNotificationPrice, lang, event.currency)}
|
|
574
|
+
</Typography>
|
|
588
575
|
</Stack>
|
|
589
576
|
)}
|
|
590
577
|
{!!total && !!totalFee && (
|
|
591
578
|
<Stack direction="row" justifyContent="space-between" alignItems="center" spacing={2}>
|
|
592
|
-
<Typography variant="
|
|
593
|
-
<Typography variant="
|
|
579
|
+
<Typography variant="caption">{t('form.labels.service_fee')}</Typography>
|
|
580
|
+
<Typography variant="caption">{getFee}</Typography>
|
|
594
581
|
</Stack>
|
|
595
582
|
)}
|
|
596
583
|
{((!!selectedTickets.length && isMobile) || !isMobile) && (
|
|
597
584
|
<Divider sx={{ borderStyle: 'dashed' }} />
|
|
598
585
|
)}
|
|
586
|
+
{!!selectedTickets.length && (
|
|
587
|
+
<>
|
|
588
|
+
{/* TODO: Uncomment this when Colonnade response - must update terms and conditions and email info */}
|
|
589
|
+
{/*<PaymentOverviewCheckbox*/}
|
|
590
|
+
{/* checkboxName="ticketInsurance"*/}
|
|
591
|
+
{/* label={t('event.tickets.insurance.label')}*/}
|
|
592
|
+
{/* value={*/}
|
|
593
|
+
{/* <>*/}
|
|
594
|
+
{/* + {fCurrency(ticketInsurancePricePerUnit, lang, event.currency)} /{' '}*/}
|
|
595
|
+
{/* {t('event.tickets.insurance.per_ticket')}*/}
|
|
596
|
+
{/* </>*/}
|
|
597
|
+
{/* }*/}
|
|
598
|
+
{/* modal={{*/}
|
|
599
|
+
{/* title: t('event.tickets.insurance.label'),*/}
|
|
600
|
+
{/* description: (*/}
|
|
601
|
+
{/* <>*/}
|
|
602
|
+
{/* <Typography variant="body2" paragraph>*/}
|
|
603
|
+
{/* {t('event.tickets.insurance.modal.description')}*/}
|
|
604
|
+
{/* </Typography>*/}
|
|
605
|
+
{/* <Typography variant="body2" paragraph>*/}
|
|
606
|
+
{/* {t('event.tickets.insurance.modal.coverage')}*/}
|
|
607
|
+
{/* </Typography>*/}
|
|
608
|
+
{/* <Typography variant="body2" sx={{ fontWeight: 600 }}>*/}
|
|
609
|
+
{/* {t('event.tickets.insurance.modal.price')}:{' '}*/}
|
|
610
|
+
{/* {fCurrency(ticketInsurancePricePerUnit, lang, event.currency)} /{' '}*/}
|
|
611
|
+
{/* {t('event.tickets.insurance.per_ticket')}*/}
|
|
612
|
+
{/* </Typography>*/}
|
|
613
|
+
{/* </>*/}
|
|
614
|
+
{/* ),*/}
|
|
615
|
+
{/* }}*/}
|
|
616
|
+
{/*/>*/}
|
|
617
|
+
<PaymentOverviewCheckbox
|
|
618
|
+
checkboxName="smsNotification"
|
|
619
|
+
label={t('event.tickets.sms_notification.label')}
|
|
620
|
+
value={<>+ {fCurrency(smsNotificationPrice, lang, event.currency)}</>}
|
|
621
|
+
modal={{
|
|
622
|
+
title: t('event.tickets.sms_notification.label'),
|
|
623
|
+
description: (
|
|
624
|
+
<>
|
|
625
|
+
<Typography variant="body2" paragraph>
|
|
626
|
+
{t('event.tickets.sms_notification.modal.description')}
|
|
627
|
+
</Typography>
|
|
628
|
+
<Typography variant="body2" sx={{ fontWeight: 600 }}>
|
|
629
|
+
{t('event.tickets.sms_notification.modal.price')}:{' '}
|
|
630
|
+
{fCurrency(smsNotificationPrice, lang, event.currency)}
|
|
631
|
+
</Typography>
|
|
632
|
+
</>
|
|
633
|
+
),
|
|
634
|
+
}}
|
|
635
|
+
/>
|
|
636
|
+
<Divider sx={{ borderStyle: 'dashed' }} />
|
|
637
|
+
</>
|
|
638
|
+
)}
|
|
599
639
|
<FeeBox event={event} />
|
|
600
|
-
<LoadingButton
|
|
601
|
-
type="submit"
|
|
602
|
-
form={EVENTLOOK_ORDER_FORM_ID}
|
|
603
|
-
variant="contained"
|
|
604
|
-
size="large"
|
|
605
|
-
fullWidth
|
|
606
|
-
sx={{ height: { xs: 36, md: 40 } }}
|
|
607
|
-
>
|
|
640
|
+
<LoadingButton type="submit" variant="contained" size="large" fullWidth>
|
|
608
641
|
{t(isPaymentVerify ? 'verify' : 'buy')}
|
|
609
642
|
</LoadingButton>
|
|
610
643
|
</Stack>
|