@eventlook/sdk 1.4.49-beta.5 → 1.4.49-beta.6
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 +5 -4
- package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
- package/dist/cjs/form/PaymentOverviewDrawer.js +177 -109
- package/dist/cjs/form/PaymentOverviewDrawer.js.map +1 -1
- package/dist/cjs/form/TicketForm.js +5 -8
- package/dist/cjs/form/TicketForm.js.map +1 -1
- package/dist/cjs/form/product/ProductVariantsDialog.js +2 -2
- package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/cjs/form/style.js +5 -0
- package/dist/cjs/form/style.js.map +1 -1
- package/dist/cjs/form/tickets/TicketQuantityControl.js +5 -3
- package/dist/cjs/form/tickets/TicketQuantityControl.js.map +1 -1
- package/dist/cjs/hooks/useScrollToFirstError.js +19 -10
- package/dist/cjs/hooks/useScrollToFirstError.js.map +1 -1
- package/dist/cjs/locales/cs.js +4 -0
- package/dist/cjs/locales/cs.js.map +1 -1
- package/dist/cjs/locales/en.js +4 -0
- package/dist/cjs/locales/en.js.map +1 -1
- package/dist/cjs/locales/es.js +4 -0
- package/dist/cjs/locales/es.js.map +1 -1
- package/dist/cjs/locales/pl.js +4 -0
- package/dist/cjs/locales/pl.js.map +1 -1
- package/dist/cjs/locales/sk.js +4 -0
- package/dist/cjs/locales/sk.js.map +1 -1
- package/dist/cjs/locales/uk.js +4 -0
- package/dist/cjs/locales/uk.js.map +1 -1
- package/dist/esm/form/PaymentOverviewBox.js +5 -4
- package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
- package/dist/esm/form/PaymentOverviewDrawer.js +177 -109
- package/dist/esm/form/PaymentOverviewDrawer.js.map +1 -1
- package/dist/esm/form/TicketForm.js +6 -9
- package/dist/esm/form/TicketForm.js.map +1 -1
- package/dist/esm/form/product/ProductVariantsDialog.js +2 -2
- package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/esm/form/style.js +5 -0
- package/dist/esm/form/style.js.map +1 -1
- package/dist/esm/form/tickets/TicketQuantityControl.js +5 -3
- package/dist/esm/form/tickets/TicketQuantityControl.js.map +1 -1
- package/dist/esm/hooks/useScrollToFirstError.js +19 -10
- package/dist/esm/hooks/useScrollToFirstError.js.map +1 -1
- package/dist/esm/locales/cs.js +4 -0
- package/dist/esm/locales/cs.js.map +1 -1
- package/dist/esm/locales/en.js +4 -0
- package/dist/esm/locales/en.js.map +1 -1
- package/dist/esm/locales/es.js +4 -0
- package/dist/esm/locales/es.js.map +1 -1
- package/dist/esm/locales/pl.js +4 -0
- package/dist/esm/locales/pl.js.map +1 -1
- package/dist/esm/locales/sk.js +4 -0
- package/dist/esm/locales/sk.js.map +1 -1
- package/dist/esm/locales/uk.js +4 -0
- package/dist/esm/locales/uk.js.map +1 -1
- package/package.json +1 -3
- package/rollup.config.mjs +0 -1
- package/src/form/PaymentOverviewBox.tsx +19 -13
- package/src/form/PaymentOverviewDrawer.tsx +238 -128
- package/src/form/TicketForm.tsx +7 -8
- package/src/form/product/ProductVariantsDialog.tsx +2 -0
- package/src/form/style.ts +6 -0
- package/src/form/tickets/TicketQuantityControl.tsx +6 -0
- package/src/hooks/useScrollToFirstError.ts +22 -17
- package/src/locales/cs.tsx +4 -0
- package/src/locales/en.tsx +4 -0
- package/src/locales/es.tsx +4 -0
- package/src/locales/pl.tsx +4 -0
- package/src/locales/sk.tsx +4 -0
- package/src/locales/uk.tsx +4 -0
- package/src/hooks/useConsentScrollOnDrawerOpen.ts +0 -73
|
@@ -31,7 +31,7 @@ var useActiveEventProducts = require('../hooks/data/useActiveEventProducts.js');
|
|
|
31
31
|
var useDebounce = require('../hooks/useDebounce.js');
|
|
32
32
|
var global = require('../utils/data/global.js');
|
|
33
33
|
|
|
34
|
-
const PaymentOverviewBox = ({ event: event$1 }) => {
|
|
34
|
+
const PaymentOverviewBox = ({ event: event$1, withoutPadding, hideBuyButton }) => {
|
|
35
35
|
const { t, lang, options } = useGlobal.default();
|
|
36
36
|
const xs = useResponsive.default('only', 'xs');
|
|
37
37
|
const md = useResponsive.default('only', 'md');
|
|
@@ -344,7 +344,7 @@ const PaymentOverviewBox = ({ event: event$1 }) => {
|
|
|
344
344
|
React.createElement(material.Box, { width: { sm: '50%', md: '100%', lg: '50%' } },
|
|
345
345
|
React.createElement(TextIconLabel.default, { icon: React.createElement(Iconify.default, { icon: userIcon, sx: { minWidth: 20, height: 20, mr: 1 } }), value: t('form.labels.organizer'), sx: { color: 'text.secondary' } }),
|
|
346
346
|
React.createElement(material.Typography, { variant: "body2", fontWeight: 700 }, event$1.company.displayName))))),
|
|
347
|
-
React.createElement(material.Stack, { className: "overview-card__order-info", p: 2, pt: { xs: 0, sm: 2 }, spacing: 0.75, useFlexGap: true },
|
|
347
|
+
React.createElement(material.Stack, { className: "overview-card__order-info", sx: { p: { xs: withoutPadding ? 0 : 2, md: 2 } }, pt: { xs: 0, sm: 2 }, spacing: 0.75, useFlexGap: true },
|
|
348
348
|
!!selectedTickets.length && !isMobile && React.createElement(material.Divider, { sx: { borderStyle: 'dashed' } }),
|
|
349
349
|
!!selectedTickets.length && (React.createElement(material.Stack, { spacing: 0.5 },
|
|
350
350
|
React.createElement(PaymentOverviewCheckbox.default, { checkboxName: "ticketInsurance", label: t('event.tickets.insurance.label'), value: React.createElement(React.Fragment, null,
|
|
@@ -391,8 +391,9 @@ const PaymentOverviewBox = ({ event: event$1 }) => {
|
|
|
391
391
|
React.createElement(material.Typography, { variant: "body2" }, t('form.labels.service_fee')),
|
|
392
392
|
React.createElement(material.Typography, { variant: "body2" }, getFee))),
|
|
393
393
|
((!!selectedTickets.length && isMobile) || !isMobile) && (React.createElement(material.Divider, { sx: { borderStyle: 'dashed' } })),
|
|
394
|
-
React.createElement(
|
|
395
|
-
|
|
394
|
+
!hideBuyButton && (React.createElement(React.Fragment, null,
|
|
395
|
+
React.createElement(FeeBox.default, { event: event$1 }),
|
|
396
|
+
React.createElement(lab.LoadingButton, { type: "submit", form: global.EVENTLOOK_ORDER_FORM_ID, variant: "contained", size: "large", fullWidth: true, sx: { height: { xs: 36, md: 40 } } }, t(isPaymentVerify ? 'verify' : 'buy')))))));
|
|
396
397
|
};
|
|
397
398
|
|
|
398
399
|
exports.default = PaymentOverviewBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentOverviewBox.js","sources":["../../../src/form/PaymentOverviewBox.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Iconify, Image, TextIconLabel } from '@components';\nimport { Box, Divider, Grid, Stack, Typography } from '@mui/material';\nimport PaymentOverviewCheckbox from '@form/payment/PaymentOverviewCheckbox.tsx';\nimport locationIcon from '@iconify/icons-carbon/location';\nimport { getPlaceAsString } from '@utils/place';\nimport { LoadingButton } from '@mui/lab';\nimport { OverviewCard } from '@form/style';\nimport { IEvent } from '@utils/types/event.type';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport useEventActiveReleases from '@hooks/data/useEventActiveReleases';\nimport useResponsive from '@hooks/useResponsive';\nimport { calculatePriceWithDiscount } from '@utils/price';\nimport FeeBox from '@form/payment/FeeBox';\nimport { IPromoCode } from '@utils/types/promo-code.type';\nimport { fCurrency } from '@utils/formatNumber';\nimport { IEventProductForm, ISelectedProductVariant } from '@utils/types/product.type';\nimport calendarIcon from '@iconify/icons-carbon/calendar';\nimport userIcon from '@iconify/icons-carbon/user';\nimport { EventType } from '@utils/data/event';\nimport dayjs from 'dayjs';\nimport useGlobal from '@hooks/useGlobal.ts';\nimport { calculateCart, getCart } from '@modules/shopping-cart.ts';\nimport { ICalculateShoppingCartDto, IShoppingCartDto } from '@utils/types/shopping-cart.type.ts';\nimport { PromoCodeTypes } from '@utils/data/promo-code.ts';\nimport useActiveEventProducts from '@hooks/data/useActiveEventProducts';\nimport useDebounce from '@hooks/useDebounce';\nimport { EVENTLOOK_ORDER_FORM_ID } from '@utils/data/global.ts';\n\ninterface Props {\n event: IEvent;\n}\n\nconst PaymentOverviewBox: React.FC<Props> = ({ event }) => {\n const { t, lang, options } = useGlobal();\n const xs = useResponsive('only', 'xs');\n const md = useResponsive('only', 'md');\n const isMobile = useResponsive('down', 'md');\n const { data: eventProducts } = useActiveEventProducts(event.id, true);\n const [shippingFee, setShippingFee] = useState(0);\n const { setValue, watch } = useFormContext<ITicketForm>();\n const values = watch();\n const {\n total,\n uuid,\n firstName,\n lastName,\n email,\n gender,\n birthdate,\n phone,\n promoCodes,\n shipping,\n totalFee,\n isPaymentVerify,\n ticketInsurance,\n smsNotification,\n smsNotificationPrice,\n ticketInsurancePricePerUnit,\n } = values;\n const tickets: Record<string, ITicketFormTicket[]> = useWatch({\n name: 'tickets',\n defaultValue: {},\n });\n const flatTickets: ITicketFormTicket[] = useMemo(() => Object.values(tickets).flat(), [tickets]);\n const products: Record<string, IEventProductForm[]> = useWatch({\n name: 'products',\n defaultValue: {},\n });\n const flatProducts: IEventProductForm[] = useMemo(\n () => Object.values(products).flat(),\n [products]\n );\n const eventTimeslotId: number | null = useWatch({ name: 'eventTimeslotId' });\n const paymentMethodId: number | null = useWatch({ name: 'paymentMethodId' });\n const paymentMethodOptionId: number | null = useWatch({ name: 'paymentMethodOptionId' });\n const { data: activeReleases } = useEventActiveReleases(\n event.id,\n true,\n event.type === EventType.RECURRING ? eventTimeslotId : undefined\n );\n const selectedTickets = useMemo(\n () =>\n flatTickets\n .filter((ticket) => ticket.quantity)\n .map((ticket) => {\n const release = activeReleases?.find((release) => release.id === ticket.releaseId);\n return {\n itemName: release ? `${release.releaseCategoryName} - ${release.name}` : '',\n price: release?.price || 0,\n quantity: ticket.quantity,\n releaseId: ticket.releaseId,\n products: ticket.products.map((product) => {\n const variant = release?.product?.eventProductVariants.find(\n (variant) => variant.id === product.eventProductVariantId\n );\n return {\n ...product,\n name:\n release?.product && variant\n ? `${release.product.product.name} - ${variant.productVariant.value}`\n : '',\n price: variant?.priceWithVat ?? product.price ?? 0,\n };\n }),\n };\n }),\n [flatTickets, activeReleases]\n );\n\n const selectedVariants = useMemo(() => {\n const selectedVariants: ISelectedProductVariant[] = [];\n for (const [eventId, productArray] of Object.entries(products))\n for (const product of productArray) {\n for (const eventProduct of eventProducts) {\n for (const variant of eventProduct.eventProductVariants) {\n if (product.eventProductVariantId === variant.id) {\n selectedVariants.push({\n variantId: product.eventProductVariantId,\n eventId: eventId,\n name: `${eventProduct.product.name} - ${variant.productVariant.value}`,\n price: variant.priceWithVat * product.quantity,\n quantity: product.quantity,\n });\n }\n }\n }\n }\n\n return selectedVariants;\n }, [event, flatProducts]);\n\n const getFee = useMemo(() => fCurrency(totalFee ?? 0, lang, event.currency), [totalFee]);\n\n const shoppingCartBody = useMemo<ICalculateShoppingCartDto>(\n () => ({\n uuid,\n eventId: event.id,\n tickets: Object.fromEntries(\n Object.entries(values.tickets).map(([id, items]) => [\n id,\n items\n .filter((item) => item.quantity && item.releaseId)\n .map((item) => ({\n ...item,\n eventTimeslotId: eventTimeslotId ?? null,\n })),\n ])\n ),\n products: Object.fromEntries(\n Object.entries(values.products).map(([id, items]) => [\n id,\n items.map(\n ({\n eventProductVariantId,\n productVariantId,\n quantity,\n price,\n excludedShippingMethodIds,\n }) => ({\n eventProductVariantId,\n productVariantId,\n quantity,\n price,\n excludedShippingMethodIds,\n })\n ),\n ])\n ),\n shipping: {\n shippingMethodId: shipping?.shippingMethodId ?? null,\n branchId: shipping?.branchId ?? null,\n price: shipping?.price ?? 0,\n },\n promoCodeIds: promoCodes?.map((p) => p.id) ?? null,\n language: lang,\n firstName,\n lastName,\n email,\n phone,\n birthdate,\n gender,\n paymentMethodId: paymentMethodId ? Number(paymentMethodId) : null,\n paymentMethodOptionId: paymentMethodOptionId ? Number(paymentMethodOptionId) : null,\n ticketInsurance,\n smsNotification,\n }),\n [\n uuid,\n event.id,\n tickets,\n products,\n shipping,\n promoCodes,\n lang,\n firstName,\n lastName,\n email,\n phone,\n birthdate,\n gender,\n paymentMethodId,\n paymentMethodOptionId,\n eventTimeslotId,\n ticketInsurance,\n smsNotification,\n ]\n );\n\n const debouncedShoppingCartBody = useDebounce(shoppingCartBody, 300);\n\n const setShoppingCartValues = (data: IShoppingCartDto, recalculate = false) => {\n if (!recalculate) {\n const hasTickets =\n !!data.tickets && typeof data.tickets === 'object' && Object.keys(data.tickets).length > 0;\n\n if (hasTickets) {\n setValue('tickets', data.tickets);\n }\n\n const hasProducts =\n !!data.products &&\n typeof data.products === 'object' &&\n Object.keys(data.products).length > 0;\n\n if (hasProducts) {\n setValue('products', data.products);\n }\n\n setValue('promoCodes', data.promoCodes || []);\n setValue('uuid', data.uuid);\n setValue('firstName', data.firstName || '');\n setValue('lastName', data.lastName || '');\n setValue('gender', data.gender || '');\n setValue('birthdate', data.birthdate ? dayjs(data.birthdate) : null);\n setValue('email', data.email || '');\n setValue('phone', data.phone || '');\n setValue('paymentMethodId', data.paymentMethodId ? data.paymentMethodId : null);\n setValue(\n 'paymentMethodOptionId',\n data.paymentMethodOptionId ? data.paymentMethodOptionId : null\n );\n setValue('shipping', data.shipping || { shippingMethodId: null, branchId: null, price: 0 });\n }\n const allTickets = Object.values(data?.tickets || {}).flat();\n if (allTickets.length && allTickets[0]?.eventTimeslotId) {\n setValue('eventTimeslotId', allTickets[0].eventTimeslotId);\n }\n setValue('originalPrice', data.originalPrice);\n setValue('total', data.totalPrice || 0);\n\n const feeTotal = (data.serviceFee ?? 0) + (data.paymentMethodFee ?? 0);\n setValue('totalFee', feeTotal);\n\n setShippingFee(data.shippingFee);\n setValue('ticketInsurance', data.ticketInsurance.enabled);\n setValue('ticketInsurancePrice', data.ticketInsurance.price);\n setValue('ticketInsurancePricePerUnit', data.ticketInsurance.pricePerUnit);\n setValue('smsNotification', data.smsNotification.enabled);\n setValue('smsNotificationPrice', data.smsNotification.price);\n };\n\n const totalItemCount = useMemo(() => {\n const count = {\n total: 0,\n totalTickets: 0,\n totalProducts: 0,\n };\n\n for (const ticket of flatTickets) {\n if (!ticket.quantity) continue;\n count.total += ticket.quantity;\n count.totalTickets += ticket.quantity;\n\n for (const product of ticket.products || []) {\n count.total += product.quantity;\n count.totalProducts += product.quantity;\n }\n }\n\n for (const product of flatProducts || []) {\n count.total += product.quantity;\n count.totalProducts += product.quantity;\n }\n\n return count;\n }, [flatTickets, flatProducts]);\n\n const promoCodesValues = useMemo(() => {\n const discount = {\n fixed: 0,\n fixedDevided: 0,\n fixedDevidedTickets: 0,\n fixedDevidedProducts: 0,\n percent: 0,\n ticketsDiscountFixed: 0,\n productDiscountFixed: 0,\n productDiscountPercent: 0,\n promoCodes: [] as IPromoCode[],\n };\n\n promoCodes.forEach((promoCode) => {\n const { type, applyDiscountToProducts, value } = promoCode;\n\n if (type === PromoCodeTypes.PERCENTAGE) {\n if (applyDiscountToProducts) {\n discount.productDiscountPercent += value;\n }\n discount.percent += value;\n } else if (type === PromoCodeTypes.FIXED) {\n if (applyDiscountToProducts) {\n discount.productDiscountFixed += value;\n } else {\n discount.ticketsDiscountFixed += value;\n }\n discount.fixed += value;\n }\n });\n\n discount.fixedDevidedProducts = discount.productDiscountFixed\n ? Math.ceil((discount.productDiscountFixed / totalItemCount.total) * 100) / 100\n : 0;\n\n discount.fixedDevidedTickets =\n Math.ceil((discount.ticketsDiscountFixed / totalItemCount.totalTickets) * 100) / 100;\n\n discount.fixedDevidedTickets += discount.fixedDevidedProducts;\n\n return discount;\n }, [promoCodes, flatTickets, flatProducts]);\n\n const hasOrderId = useMemo(() => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.has('id');\n }, []);\n\n useEffect(() => {\n if (!hasOrderId) {\n recalculateItems(debouncedShoppingCartBody);\n }\n }, [debouncedShoppingCartBody, hasOrderId]);\n\n /** Iframe code **/\n useEffect(() => {\n window.addEventListener('message', messageListener, false);\n return () => {\n window.removeEventListener('message', messageListener, false);\n };\n }, []);\n\n const messageListener = async (event: any) => {\n if (event.data.type === 'eventlookFrameScrollTop') {\n const dialog = document.getElementById('overview-card');\n if (dialog) {\n dialog.style.top = `${event.data.scrollTop}px`;\n }\n }\n };\n /** End Iframe code **/\n\n const recalculateItems = useCallback(async (body: ICalculateShoppingCartDto) => {\n try {\n const isInitial = !body.uuid;\n\n let response: any;\n if (isInitial) {\n const existing = localStorage.getItem('cartToken');\n const storedUuid =\n existing && existing !== 'undefined' && existing !== 'null' ? existing : null;\n response = await getCart(body.eventId, storedUuid);\n } else {\n response = await calculateCart(body);\n }\n\n const cart = response?.data;\n\n if (cart) {\n if (cart.uuid) {\n localStorage.setItem('cartToken', cart.uuid);\n }\n setShoppingCartValues(cart, !isInitial);\n }\n } catch (err) {\n console.error('Error calculating cart:', err);\n }\n }, []);\n\n // const removeProduct = (variant: ISelectedProductVariant) => {\n // const { eventId, variantId } = variant;\n // const list = Array.isArray(products[eventId]) ? [...products[eventId]] : [];\n\n // const idx = list.findIndex((p) => Number(p.eventProductVariantId) === Number(variantId));\n // if (idx === -1) return;\n // const item = list[idx];\n\n // if ((item.quantity ?? 0) <= 1) {\n // list.splice(idx, 1);\n // } else {\n // list[idx] = { ...item, quantity: (item.quantity ?? 1) - 1 };\n // }\n\n // const next = { ...products, [eventId]: list };\n\n // if (list.length === 0) {\n // const { [eventId]: _removed, ...rest } = next;\n // setValue('products', rest);\n // } else {\n // setValue('products', next);\n // }\n // };\n\n return (\n <OverviewCard id=\"overview-card\" stickyHeaderTop={options?.stickyHeaderTop || 0}>\n {!isMobile && (\n <Stack className=\"overview-card__event-info\" p={2} spacing={2}>\n <Typography variant=\"h6\">{event.name}</Typography>\n <Box>\n <Grid container spacing={1}>\n <Grid item xs={6}>\n <Image src={event.image.url} alt={event.name} ratio=\"16/9\" borderRadius={2} />\n </Grid>\n <Grid item xs={6}>\n <TextIconLabel\n icon={\n <Iconify\n icon={locationIcon}\n sx={{ mr: 0.5, mt: 0.5, width: 18, height: 18, minWidth: 18 }}\n />\n }\n value={<Box>{getPlaceAsString(event.place)}</Box>}\n sx={{ typography: 'body3', color: 'text.secondary', alignItems: 'flex-start' }}\n />\n </Grid>\n </Grid>\n </Box>\n <Divider sx={{ borderStyle: 'dashed' }} />\n <Stack\n direction={{ xs: 'column', sm: 'row', md: 'column', lg: 'row' }}\n spacing={2}\n p={2}\n divider={\n <Divider\n orientation={xs || md ? 'horizontal' : 'vertical'}\n flexItem\n sx={{ borderStyle: 'dashed' }}\n />\n }\n sx={{\n backgroundColor: (theme) =>\n theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900],\n borderRadius: 1,\n }}\n >\n <Box width={{ sm: '50%', md: '100%', lg: '50%' }}>\n <TextIconLabel\n icon={<Iconify icon={calendarIcon} sx={{ minWidth: 20, height: 20, mr: 1 }} />}\n value={t('form.labels.start_date')}\n sx={{ color: 'text.secondary' }}\n />\n <Typography variant=\"body2\" fontWeight={700}>\n {dayjs(event.startDate).format('DD.MM.YYYY HH:mm')}\n </Typography>\n </Box>\n <Box width={{ sm: '50%', md: '100%', lg: '50%' }}>\n <TextIconLabel\n icon={<Iconify icon={userIcon} sx={{ minWidth: 20, height: 20, mr: 1 }} />}\n value={t('form.labels.organizer')}\n sx={{ color: 'text.secondary' }}\n />\n <Typography variant=\"body2\" fontWeight={700}>\n {event.company.displayName}\n </Typography>\n </Box>\n </Stack>\n </Stack>\n )}\n <Stack\n className=\"overview-card__order-info\"\n p={2}\n pt={{ xs: 0, sm: 2 }}\n spacing={0.75}\n useFlexGap\n >\n {!!selectedTickets.length && !isMobile && <Divider sx={{ borderStyle: 'dashed' }} />}\n\n {!!selectedTickets.length && (\n <Stack spacing={0.5}>\n {/* TODO: Uncomment this when Colonnade response - must update terms and conditions and email info */}\n <PaymentOverviewCheckbox\n checkboxName=\"ticketInsurance\"\n label={t('event.tickets.insurance.label')}\n value={\n <>\n {ticketInsurance && totalItemCount.totalTickets > 0 ? '' : '+ '}\n {fCurrency(ticketInsurancePricePerUnit, lang, event.currency)} /{' '}\n {t('event.tickets.insurance.per_ticket')}\n </>\n }\n />\n <PaymentOverviewCheckbox\n checkboxName=\"smsNotification\"\n label={t('event.tickets.sms_notification.label')}\n value={\n <>\n {smsNotification && totalItemCount.totalTickets > 0 ? '' : '+ '}\n {fCurrency(smsNotificationPrice, lang, event.currency)}\n </>\n }\n />\n <Divider sx={{ borderStyle: 'dashed' }} />\n </Stack>\n )}\n {selectedTickets.map((ticket, index) => (\n <Box key={index}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">\n {ticket.quantity}x {ticket.itemName}\n </Typography>\n <Typography variant=\"body2\">\n {fCurrency(\n calculatePriceWithDiscount(\n ticket.price,\n promoCodesValues.percent,\n promoCodesValues.fixedDevidedTickets\n ) * Number(ticket.quantity),\n lang,\n event.currency\n )}\n </Typography>\n </Stack>\n {ticket.products.map((product, index2) => (\n <Stack\n key={index2}\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n spacing={2}\n >\n <Typography variant=\"body2\">\n - {product.quantity}x {product.name}\n </Typography>\n <Typography variant=\"body2\">\n {product.price > 0\n ? fCurrency(\n calculatePriceWithDiscount(\n product.price,\n promoCodesValues.productDiscountPercent,\n promoCodesValues.fixedDevidedProducts\n ? promoCodesValues.fixedDevidedProducts * product.quantity\n : 0\n ),\n lang,\n event.currency\n )\n : t('free')}\n </Typography>\n </Stack>\n ))}\n </Box>\n ))}\n {selectedVariants.map((variant, index) => (\n <Box key={index}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">\n {variant.quantity}x {variant.name}\n </Typography>\n <Typography variant=\"body2\">\n {fCurrency(\n calculatePriceWithDiscount(\n variant.price,\n promoCodesValues.productDiscountPercent,\n promoCodesValues.fixedDevidedProducts\n ? promoCodesValues.fixedDevidedProducts * variant.quantity\n : 0\n ),\n lang,\n event.currency\n )}\n </Typography>\n </Stack>\n </Box>\n ))}\n {!!shippingFee && (\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">{t('form.labels.shipping_fee')}</Typography>\n <Typography variant=\"body2\">{fCurrency(shippingFee, lang, event.currency)}</Typography>\n </Stack>\n )}\n {!!total && !!totalFee && (\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">{t('form.labels.service_fee')}</Typography>\n <Typography variant=\"body2\">{getFee}</Typography>\n </Stack>\n )}\n {((!!selectedTickets.length && isMobile) || !isMobile) && (\n <Divider sx={{ borderStyle: 'dashed' }} />\n )}\n <FeeBox event={event} />\n <LoadingButton\n type=\"submit\"\n form={EVENTLOOK_ORDER_FORM_ID}\n variant=\"contained\"\n size=\"large\"\n fullWidth\n sx={{ height: { xs: 36, md: 40 } }}\n >\n {t(isPaymentVerify ? 'verify' : 'buy')}\n </LoadingButton>\n </Stack>\n </OverviewCard>\n );\n};\n\nexport default PaymentOverviewBox;\n"],"names":["event","useGlobal","useResponsive","useActiveEventProducts","useState","useFormContext","useWatch","useMemo","useEventActiveReleases","EventType","fCurrency","useDebounce","promoCode","PromoCodeTypes","useEffect","useCallback","getCart","calculateCart","OverviewCard","Stack","Typography","Box","Grid","Image","TextIconLabel","Iconify","getPlaceAsString","Divider","PaymentOverviewCheckbox","calculatePriceWithDiscount","FeeBox","LoadingButton","EVENTLOOK_ORDER_FORM_ID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PaymentOverviewBox.js","sources":["../../../src/form/PaymentOverviewBox.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Iconify, Image, TextIconLabel } from '@components';\nimport { Box, Divider, Grid, Stack, Typography } from '@mui/material';\nimport PaymentOverviewCheckbox from '@form/payment/PaymentOverviewCheckbox.tsx';\nimport locationIcon from '@iconify/icons-carbon/location';\nimport { getPlaceAsString } from '@utils/place';\nimport { LoadingButton } from '@mui/lab';\nimport { OverviewCard } from '@form/style';\nimport { IEvent } from '@utils/types/event.type';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';\nimport useEventActiveReleases from '@hooks/data/useEventActiveReleases';\nimport useResponsive from '@hooks/useResponsive';\nimport { calculatePriceWithDiscount } from '@utils/price';\nimport FeeBox from '@form/payment/FeeBox';\nimport { IPromoCode } from '@utils/types/promo-code.type';\nimport { fCurrency } from '@utils/formatNumber';\nimport { IEventProductForm, ISelectedProductVariant } from '@utils/types/product.type';\nimport calendarIcon from '@iconify/icons-carbon/calendar';\nimport userIcon from '@iconify/icons-carbon/user';\nimport { EventType } from '@utils/data/event';\nimport dayjs from 'dayjs';\nimport useGlobal from '@hooks/useGlobal.ts';\nimport { calculateCart, getCart } from '@modules/shopping-cart.ts';\nimport { ICalculateShoppingCartDto, IShoppingCartDto } from '@utils/types/shopping-cart.type.ts';\nimport { PromoCodeTypes } from '@utils/data/promo-code.ts';\nimport useActiveEventProducts from '@hooks/data/useActiveEventProducts';\nimport useDebounce from '@hooks/useDebounce';\nimport { EVENTLOOK_ORDER_FORM_ID } from '@utils/data/global.ts';\n\ninterface Props {\n event: IEvent;\n withoutPadding?: boolean;\n hideBuyButton?: boolean;\n}\n\nconst PaymentOverviewBox: React.FC<Props> = ({ event, withoutPadding, hideBuyButton }) => {\n const { t, lang, options } = useGlobal();\n const xs = useResponsive('only', 'xs');\n const md = useResponsive('only', 'md');\n const isMobile = useResponsive('down', 'md');\n const { data: eventProducts } = useActiveEventProducts(event.id, true);\n const [shippingFee, setShippingFee] = useState(0);\n const { setValue, watch } = useFormContext<ITicketForm>();\n const values = watch();\n const {\n total,\n uuid,\n firstName,\n lastName,\n email,\n gender,\n birthdate,\n phone,\n promoCodes,\n shipping,\n totalFee,\n isPaymentVerify,\n ticketInsurance,\n smsNotification,\n smsNotificationPrice,\n ticketInsurancePricePerUnit,\n } = values;\n const tickets: Record<string, ITicketFormTicket[]> = useWatch({\n name: 'tickets',\n defaultValue: {},\n });\n const flatTickets: ITicketFormTicket[] = useMemo(() => Object.values(tickets).flat(), [tickets]);\n const products: Record<string, IEventProductForm[]> = useWatch({\n name: 'products',\n defaultValue: {},\n });\n const flatProducts: IEventProductForm[] = useMemo(\n () => Object.values(products).flat(),\n [products]\n );\n const eventTimeslotId: number | null = useWatch({ name: 'eventTimeslotId' });\n const paymentMethodId: number | null = useWatch({ name: 'paymentMethodId' });\n const paymentMethodOptionId: number | null = useWatch({ name: 'paymentMethodOptionId' });\n const { data: activeReleases } = useEventActiveReleases(\n event.id,\n true,\n event.type === EventType.RECURRING ? eventTimeslotId : undefined\n );\n const selectedTickets = useMemo(\n () =>\n flatTickets\n .filter((ticket) => ticket.quantity)\n .map((ticket) => {\n const release = activeReleases?.find((release) => release.id === ticket.releaseId);\n return {\n itemName: release ? `${release.releaseCategoryName} - ${release.name}` : '',\n price: release?.price || 0,\n quantity: ticket.quantity,\n releaseId: ticket.releaseId,\n products: ticket.products.map((product) => {\n const variant = release?.product?.eventProductVariants.find(\n (variant) => variant.id === product.eventProductVariantId\n );\n return {\n ...product,\n name:\n release?.product && variant\n ? `${release.product.product.name} - ${variant.productVariant.value}`\n : '',\n price: variant?.priceWithVat ?? product.price ?? 0,\n };\n }),\n };\n }),\n [flatTickets, activeReleases]\n );\n\n const selectedVariants = useMemo(() => {\n const selectedVariants: ISelectedProductVariant[] = [];\n for (const [eventId, productArray] of Object.entries(products))\n for (const product of productArray) {\n for (const eventProduct of eventProducts) {\n for (const variant of eventProduct.eventProductVariants) {\n if (product.eventProductVariantId === variant.id) {\n selectedVariants.push({\n variantId: product.eventProductVariantId,\n eventId: eventId,\n name: `${eventProduct.product.name} - ${variant.productVariant.value}`,\n price: variant.priceWithVat * product.quantity,\n quantity: product.quantity,\n });\n }\n }\n }\n }\n\n return selectedVariants;\n }, [event, flatProducts]);\n\n const getFee = useMemo(() => fCurrency(totalFee ?? 0, lang, event.currency), [totalFee]);\n\n const shoppingCartBody = useMemo<ICalculateShoppingCartDto>(\n () => ({\n uuid,\n eventId: event.id,\n tickets: Object.fromEntries(\n Object.entries(values.tickets).map(([id, items]) => [\n id,\n items\n .filter((item) => item.quantity && item.releaseId)\n .map((item) => ({\n ...item,\n eventTimeslotId: eventTimeslotId ?? null,\n })),\n ])\n ),\n products: Object.fromEntries(\n Object.entries(values.products).map(([id, items]) => [\n id,\n items.map(\n ({\n eventProductVariantId,\n productVariantId,\n quantity,\n price,\n excludedShippingMethodIds,\n }) => ({\n eventProductVariantId,\n productVariantId,\n quantity,\n price,\n excludedShippingMethodIds,\n })\n ),\n ])\n ),\n shipping: {\n shippingMethodId: shipping?.shippingMethodId ?? null,\n branchId: shipping?.branchId ?? null,\n price: shipping?.price ?? 0,\n },\n promoCodeIds: promoCodes?.map((p) => p.id) ?? null,\n language: lang,\n firstName,\n lastName,\n email,\n phone,\n birthdate,\n gender,\n paymentMethodId: paymentMethodId ? Number(paymentMethodId) : null,\n paymentMethodOptionId: paymentMethodOptionId ? Number(paymentMethodOptionId) : null,\n ticketInsurance,\n smsNotification,\n }),\n [\n uuid,\n event.id,\n tickets,\n products,\n shipping,\n promoCodes,\n lang,\n firstName,\n lastName,\n email,\n phone,\n birthdate,\n gender,\n paymentMethodId,\n paymentMethodOptionId,\n eventTimeslotId,\n ticketInsurance,\n smsNotification,\n ]\n );\n\n const debouncedShoppingCartBody = useDebounce(shoppingCartBody, 300);\n\n const setShoppingCartValues = (data: IShoppingCartDto, recalculate = false) => {\n if (!recalculate) {\n const hasTickets =\n !!data.tickets && typeof data.tickets === 'object' && Object.keys(data.tickets).length > 0;\n\n if (hasTickets) {\n setValue('tickets', data.tickets);\n }\n\n const hasProducts =\n !!data.products &&\n typeof data.products === 'object' &&\n Object.keys(data.products).length > 0;\n\n if (hasProducts) {\n setValue('products', data.products);\n }\n\n setValue('promoCodes', data.promoCodes || []);\n setValue('uuid', data.uuid);\n setValue('firstName', data.firstName || '');\n setValue('lastName', data.lastName || '');\n setValue('gender', data.gender || '');\n setValue('birthdate', data.birthdate ? dayjs(data.birthdate) : null);\n setValue('email', data.email || '');\n setValue('phone', data.phone || '');\n setValue('paymentMethodId', data.paymentMethodId ? data.paymentMethodId : null);\n setValue(\n 'paymentMethodOptionId',\n data.paymentMethodOptionId ? data.paymentMethodOptionId : null\n );\n setValue('shipping', data.shipping || { shippingMethodId: null, branchId: null, price: 0 });\n }\n const allTickets = Object.values(data?.tickets || {}).flat();\n if (allTickets.length && allTickets[0]?.eventTimeslotId) {\n setValue('eventTimeslotId', allTickets[0].eventTimeslotId);\n }\n setValue('originalPrice', data.originalPrice);\n setValue('total', data.totalPrice || 0);\n\n const feeTotal = (data.serviceFee ?? 0) + (data.paymentMethodFee ?? 0);\n setValue('totalFee', feeTotal);\n\n setShippingFee(data.shippingFee);\n setValue('ticketInsurance', data.ticketInsurance.enabled);\n setValue('ticketInsurancePrice', data.ticketInsurance.price);\n setValue('ticketInsurancePricePerUnit', data.ticketInsurance.pricePerUnit);\n setValue('smsNotification', data.smsNotification.enabled);\n setValue('smsNotificationPrice', data.smsNotification.price);\n };\n\n const totalItemCount = useMemo(() => {\n const count = {\n total: 0,\n totalTickets: 0,\n totalProducts: 0,\n };\n\n for (const ticket of flatTickets) {\n if (!ticket.quantity) continue;\n count.total += ticket.quantity;\n count.totalTickets += ticket.quantity;\n\n for (const product of ticket.products || []) {\n count.total += product.quantity;\n count.totalProducts += product.quantity;\n }\n }\n\n for (const product of flatProducts || []) {\n count.total += product.quantity;\n count.totalProducts += product.quantity;\n }\n\n return count;\n }, [flatTickets, flatProducts]);\n\n const promoCodesValues = useMemo(() => {\n const discount = {\n fixed: 0,\n fixedDevided: 0,\n fixedDevidedTickets: 0,\n fixedDevidedProducts: 0,\n percent: 0,\n ticketsDiscountFixed: 0,\n productDiscountFixed: 0,\n productDiscountPercent: 0,\n promoCodes: [] as IPromoCode[],\n };\n\n promoCodes.forEach((promoCode) => {\n const { type, applyDiscountToProducts, value } = promoCode;\n\n if (type === PromoCodeTypes.PERCENTAGE) {\n if (applyDiscountToProducts) {\n discount.productDiscountPercent += value;\n }\n discount.percent += value;\n } else if (type === PromoCodeTypes.FIXED) {\n if (applyDiscountToProducts) {\n discount.productDiscountFixed += value;\n } else {\n discount.ticketsDiscountFixed += value;\n }\n discount.fixed += value;\n }\n });\n\n discount.fixedDevidedProducts = discount.productDiscountFixed\n ? Math.ceil((discount.productDiscountFixed / totalItemCount.total) * 100) / 100\n : 0;\n\n discount.fixedDevidedTickets =\n Math.ceil((discount.ticketsDiscountFixed / totalItemCount.totalTickets) * 100) / 100;\n\n discount.fixedDevidedTickets += discount.fixedDevidedProducts;\n\n return discount;\n }, [promoCodes, flatTickets, flatProducts]);\n\n const hasOrderId = useMemo(() => {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.has('id');\n }, []);\n\n useEffect(() => {\n if (!hasOrderId) {\n recalculateItems(debouncedShoppingCartBody);\n }\n }, [debouncedShoppingCartBody, hasOrderId]);\n\n /** Iframe code **/\n useEffect(() => {\n window.addEventListener('message', messageListener, false);\n return () => {\n window.removeEventListener('message', messageListener, false);\n };\n }, []);\n\n const messageListener = async (event: any) => {\n if (event.data.type === 'eventlookFrameScrollTop') {\n const dialog = document.getElementById('overview-card');\n if (dialog) {\n dialog.style.top = `${event.data.scrollTop}px`;\n }\n }\n };\n /** End Iframe code **/\n\n const recalculateItems = useCallback(async (body: ICalculateShoppingCartDto) => {\n try {\n const isInitial = !body.uuid;\n\n let response: any;\n if (isInitial) {\n const existing = localStorage.getItem('cartToken');\n const storedUuid =\n existing && existing !== 'undefined' && existing !== 'null' ? existing : null;\n response = await getCart(body.eventId, storedUuid);\n } else {\n response = await calculateCart(body);\n }\n\n const cart = response?.data;\n\n if (cart) {\n if (cart.uuid) {\n localStorage.setItem('cartToken', cart.uuid);\n }\n setShoppingCartValues(cart, !isInitial);\n }\n } catch (err) {\n console.error('Error calculating cart:', err);\n }\n }, []);\n\n // const removeProduct = (variant: ISelectedProductVariant) => {\n // const { eventId, variantId } = variant;\n // const list = Array.isArray(products[eventId]) ? [...products[eventId]] : [];\n\n // const idx = list.findIndex((p) => Number(p.eventProductVariantId) === Number(variantId));\n // if (idx === -1) return;\n // const item = list[idx];\n\n // if ((item.quantity ?? 0) <= 1) {\n // list.splice(idx, 1);\n // } else {\n // list[idx] = { ...item, quantity: (item.quantity ?? 1) - 1 };\n // }\n\n // const next = { ...products, [eventId]: list };\n\n // if (list.length === 0) {\n // const { [eventId]: _removed, ...rest } = next;\n // setValue('products', rest);\n // } else {\n // setValue('products', next);\n // }\n // };\n\n return (\n <OverviewCard id=\"overview-card\" stickyHeaderTop={options?.stickyHeaderTop || 0}>\n {!isMobile && (\n <Stack className=\"overview-card__event-info\" p={2} spacing={2}>\n <Typography variant=\"h6\">{event.name}</Typography>\n <Box>\n <Grid container spacing={1}>\n <Grid item xs={6}>\n <Image src={event.image.url} alt={event.name} ratio=\"16/9\" borderRadius={2} />\n </Grid>\n <Grid item xs={6}>\n <TextIconLabel\n icon={\n <Iconify\n icon={locationIcon}\n sx={{ mr: 0.5, mt: 0.5, width: 18, height: 18, minWidth: 18 }}\n />\n }\n value={<Box>{getPlaceAsString(event.place)}</Box>}\n sx={{ typography: 'body3', color: 'text.secondary', alignItems: 'flex-start' }}\n />\n </Grid>\n </Grid>\n </Box>\n <Divider sx={{ borderStyle: 'dashed' }} />\n <Stack\n direction={{ xs: 'column', sm: 'row', md: 'column', lg: 'row' }}\n spacing={2}\n p={2}\n divider={\n <Divider\n orientation={xs || md ? 'horizontal' : 'vertical'}\n flexItem\n sx={{ borderStyle: 'dashed' }}\n />\n }\n sx={{\n backgroundColor: (theme) =>\n theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900],\n borderRadius: 1,\n }}\n >\n <Box width={{ sm: '50%', md: '100%', lg: '50%' }}>\n <TextIconLabel\n icon={<Iconify icon={calendarIcon} sx={{ minWidth: 20, height: 20, mr: 1 }} />}\n value={t('form.labels.start_date')}\n sx={{ color: 'text.secondary' }}\n />\n <Typography variant=\"body2\" fontWeight={700}>\n {dayjs(event.startDate).format('DD.MM.YYYY HH:mm')}\n </Typography>\n </Box>\n <Box width={{ sm: '50%', md: '100%', lg: '50%' }}>\n <TextIconLabel\n icon={<Iconify icon={userIcon} sx={{ minWidth: 20, height: 20, mr: 1 }} />}\n value={t('form.labels.organizer')}\n sx={{ color: 'text.secondary' }}\n />\n <Typography variant=\"body2\" fontWeight={700}>\n {event.company.displayName}\n </Typography>\n </Box>\n </Stack>\n </Stack>\n )}\n <Stack\n className=\"overview-card__order-info\"\n sx={{ p: { xs: withoutPadding ? 0 : 2, md: 2 } }}\n pt={{ xs: 0, sm: 2 }}\n spacing={0.75}\n useFlexGap\n >\n {!!selectedTickets.length && !isMobile && <Divider sx={{ borderStyle: 'dashed' }} />}\n\n {!!selectedTickets.length && (\n <Stack spacing={0.5}>\n {/* TODO: Uncomment this when Colonnade response - must update terms and conditions and email info */}\n <PaymentOverviewCheckbox\n checkboxName=\"ticketInsurance\"\n label={t('event.tickets.insurance.label')}\n value={\n <>\n {ticketInsurance && totalItemCount.totalTickets > 0 ? '' : '+ '}\n {fCurrency(ticketInsurancePricePerUnit, lang, event.currency)} /{' '}\n {t('event.tickets.insurance.per_ticket')}\n </>\n }\n />\n <PaymentOverviewCheckbox\n checkboxName=\"smsNotification\"\n label={t('event.tickets.sms_notification.label')}\n value={\n <>\n {smsNotification && totalItemCount.totalTickets > 0 ? '' : '+ '}\n {fCurrency(smsNotificationPrice, lang, event.currency)}\n </>\n }\n />\n <Divider sx={{ borderStyle: 'dashed' }} />\n </Stack>\n )}\n {selectedTickets.map((ticket, index) => (\n <Box key={index}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">\n {ticket.quantity}x {ticket.itemName}\n </Typography>\n <Typography variant=\"body2\">\n {fCurrency(\n calculatePriceWithDiscount(\n ticket.price,\n promoCodesValues.percent,\n promoCodesValues.fixedDevidedTickets\n ) * Number(ticket.quantity),\n lang,\n event.currency\n )}\n </Typography>\n </Stack>\n {ticket.products.map((product, index2) => (\n <Stack\n key={index2}\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n spacing={2}\n >\n <Typography variant=\"body2\">\n - {product.quantity}x {product.name}\n </Typography>\n <Typography variant=\"body2\">\n {product.price > 0\n ? fCurrency(\n calculatePriceWithDiscount(\n product.price,\n promoCodesValues.productDiscountPercent,\n promoCodesValues.fixedDevidedProducts\n ? promoCodesValues.fixedDevidedProducts * product.quantity\n : 0\n ),\n lang,\n event.currency\n )\n : t('free')}\n </Typography>\n </Stack>\n ))}\n </Box>\n ))}\n {selectedVariants.map((variant, index) => (\n <Box key={index}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">\n {variant.quantity}x {variant.name}\n </Typography>\n <Typography variant=\"body2\">\n {fCurrency(\n calculatePriceWithDiscount(\n variant.price,\n promoCodesValues.productDiscountPercent,\n promoCodesValues.fixedDevidedProducts\n ? promoCodesValues.fixedDevidedProducts * variant.quantity\n : 0\n ),\n lang,\n event.currency\n )}\n </Typography>\n </Stack>\n </Box>\n ))}\n {!!shippingFee && (\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">{t('form.labels.shipping_fee')}</Typography>\n <Typography variant=\"body2\">{fCurrency(shippingFee, lang, event.currency)}</Typography>\n </Stack>\n )}\n {!!total && !!totalFee && (\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" spacing={2}>\n <Typography variant=\"body2\">{t('form.labels.service_fee')}</Typography>\n <Typography variant=\"body2\">{getFee}</Typography>\n </Stack>\n )}\n {((!!selectedTickets.length && isMobile) || !isMobile) && (\n <Divider sx={{ borderStyle: 'dashed' }} />\n )}\n {!hideBuyButton && (\n <>\n <FeeBox event={event} />\n <LoadingButton\n type=\"submit\"\n form={EVENTLOOK_ORDER_FORM_ID}\n variant=\"contained\"\n size=\"large\"\n fullWidth\n sx={{ height: { xs: 36, md: 40 } }}\n >\n {t(isPaymentVerify ? 'verify' : 'buy')}\n </LoadingButton>\n </>\n )}\n </Stack>\n </OverviewCard>\n );\n};\n\nexport default PaymentOverviewBox;\n"],"names":["event","useGlobal","useResponsive","useActiveEventProducts","useState","useFormContext","useWatch","useMemo","useEventActiveReleases","EventType","fCurrency","useDebounce","promoCode","PromoCodeTypes","useEffect","useCallback","getCart","calculateCart","OverviewCard","Stack","Typography","Box","Grid","Image","TextIconLabel","Iconify","getPlaceAsString","Divider","PaymentOverviewCheckbox","calculatePriceWithDiscount","FeeBox","LoadingButton","EVENTLOOK_ORDER_FORM_ID"],"mappings":"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"}
|
|
@@ -10,46 +10,67 @@ var formatNumber = require('../utils/formatNumber.js');
|
|
|
10
10
|
var global = require('../utils/data/global.js');
|
|
11
11
|
|
|
12
12
|
const swipeAreaWidth = 120;
|
|
13
|
-
const
|
|
13
|
+
const clearResetPulledPastTimeout = (timeoutRef) => {
|
|
14
|
+
if (timeoutRef.current !== null) {
|
|
15
|
+
window.clearTimeout(timeoutRef.current);
|
|
16
|
+
timeoutRef.current = null;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const PaymentOverviewDrawer = ({ event, totalPrice, termsAndConditionsRef, onOpenChange, }) => {
|
|
14
20
|
const { t, lang } = useGlobal.default();
|
|
15
|
-
const [
|
|
21
|
+
const [isDrawerOpened, setIsDrawerOpened] = React.useState(false);
|
|
16
22
|
const [isOpeningGesture, setIsOpeningGesture] = React.useState(false);
|
|
17
23
|
const [hasPulledPastClosedTabHeight, setHasPulledPastClosedTabHeight] = React.useState(false);
|
|
24
|
+
const [isDrawerHidden, setIsDrawerHidden] = React.useState(false);
|
|
18
25
|
const [closedTabHeight, setClosedTabHeight] = React.useState(0);
|
|
19
26
|
const openingTouchStartYRef = React.useRef(null);
|
|
20
27
|
const openDrawerRef = React.useRef(false);
|
|
28
|
+
const isOpeningGestureRef = React.useRef(false);
|
|
29
|
+
const shouldReopenOnScrollUpRef = React.useRef(false);
|
|
30
|
+
const lastScrollYRef = React.useRef(0);
|
|
31
|
+
const isScrollingDownRef = React.useRef(false);
|
|
32
|
+
const wasAtPageBottomRef = React.useRef(false);
|
|
21
33
|
const resetPulledPastTimeoutRef = React.useRef(null);
|
|
22
34
|
const closedTabRef = React.useRef(null);
|
|
23
|
-
const sentinelRef = React.useRef(null);
|
|
24
|
-
const prevYRef = React.useRef(Number.POSITIVE_INFINITY);
|
|
25
|
-
// Opens drawer when scrolling down
|
|
26
35
|
React.useEffect(() => {
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
openDrawerRef.current = isDrawerOpened;
|
|
37
|
+
}, [isDrawerOpened]);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
isOpeningGestureRef.current = isOpeningGesture;
|
|
40
|
+
}, [isOpeningGesture]);
|
|
41
|
+
// reopens the drawer when user scrolls up and the drawer was closed by scrolling down to the bottom of the page
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
if (typeof window === 'undefined') {
|
|
29
44
|
return;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
}
|
|
46
|
+
const atBottomThreshold = 8;
|
|
47
|
+
lastScrollYRef.current = window.scrollY;
|
|
48
|
+
isScrollingDownRef.current = false;
|
|
49
|
+
wasAtPageBottomRef.current =
|
|
50
|
+
window.innerHeight + window.scrollY >=
|
|
51
|
+
document.documentElement.scrollHeight - atBottomThreshold;
|
|
52
|
+
const handleScroll = () => {
|
|
53
|
+
const currentY = window.scrollY;
|
|
54
|
+
const isScrollingUp = currentY < lastScrollYRef.current;
|
|
55
|
+
const isScrollingDown = currentY > lastScrollYRef.current;
|
|
56
|
+
const isAtPageBottom = window.innerHeight + currentY >= document.documentElement.scrollHeight - atBottomThreshold;
|
|
57
|
+
isScrollingDownRef.current = isScrollingDown;
|
|
58
|
+
if (isScrollingUp &&
|
|
59
|
+
wasAtPageBottomRef.current &&
|
|
60
|
+
shouldReopenOnScrollUpRef.current &&
|
|
61
|
+
!openDrawerRef.current) {
|
|
62
|
+
shouldReopenOnScrollUpRef.current = false;
|
|
63
|
+
setIsDrawerHidden(false);
|
|
64
|
+
openDrawerHandler();
|
|
65
|
+
}
|
|
66
|
+
wasAtPageBottomRef.current = isAtPageBottom;
|
|
67
|
+
lastScrollYRef.current = currentY;
|
|
68
|
+
};
|
|
69
|
+
window.addEventListener('scroll', handleScroll, { passive: true });
|
|
46
70
|
return () => {
|
|
47
|
-
|
|
71
|
+
window.removeEventListener('scroll', handleScroll);
|
|
48
72
|
};
|
|
49
|
-
}, [
|
|
50
|
-
React.useEffect(() => {
|
|
51
|
-
openDrawerRef.current = openDrawer;
|
|
52
|
-
}, [openDrawer]);
|
|
73
|
+
}, []);
|
|
53
74
|
React.useEffect(() => {
|
|
54
75
|
const closedTab = closedTabRef.current;
|
|
55
76
|
if (!closedTab)
|
|
@@ -67,57 +88,115 @@ const PaymentOverviewDrawer = ({ event, totalPrice, onOpenChange }) => {
|
|
|
67
88
|
};
|
|
68
89
|
}, []);
|
|
69
90
|
React.useEffect(() => () => {
|
|
70
|
-
|
|
71
|
-
window.clearTimeout(resetPulledPastTimeoutRef.current);
|
|
72
|
-
}
|
|
91
|
+
clearResetPulledPastTimeout(resetPulledPastTimeoutRef);
|
|
73
92
|
}, []);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
93
|
+
React.useEffect(() => {
|
|
94
|
+
const termsAndConditionsElement = termsAndConditionsRef?.current;
|
|
95
|
+
if (!termsAndConditionsElement) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (!('IntersectionObserver' in window)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const observer = new IntersectionObserver((entries) => {
|
|
102
|
+
const entry = entries[0];
|
|
103
|
+
const hasReachedTermsSection = entry?.isIntersecting ?? false;
|
|
104
|
+
const shouldAutoCloseDrawer = hasReachedTermsSection;
|
|
105
|
+
const shouldHideDrawerTab = hasReachedTermsSection && !openDrawerRef.current && !isOpeningGestureRef.current;
|
|
106
|
+
setIsDrawerHidden(shouldHideDrawerTab);
|
|
107
|
+
if (shouldAutoCloseDrawer && openDrawerRef.current && isScrollingDownRef.current) {
|
|
108
|
+
closeDrawerHandler({ shouldReopenOnScrollUp: true });
|
|
109
|
+
setIsDrawerHidden(true);
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
root: null,
|
|
113
|
+
threshold: 0,
|
|
114
|
+
rootMargin: '0px 0px -40% 0px',
|
|
79
115
|
});
|
|
116
|
+
observer.observe(termsAndConditionsElement);
|
|
117
|
+
return () => {
|
|
118
|
+
observer.disconnect();
|
|
119
|
+
};
|
|
120
|
+
}, [termsAndConditionsRef]);
|
|
121
|
+
const toggleDrawer = () => {
|
|
122
|
+
if (openDrawerRef.current) {
|
|
123
|
+
closeDrawerHandler();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
openDrawerHandler();
|
|
80
127
|
};
|
|
81
128
|
const openDrawerHandler = () => {
|
|
82
|
-
|
|
83
|
-
window.clearTimeout(resetPulledPastTimeoutRef.current);
|
|
84
|
-
resetPulledPastTimeoutRef.current = null;
|
|
85
|
-
}
|
|
129
|
+
clearResetPulledPastTimeout(resetPulledPastTimeoutRef);
|
|
86
130
|
setIsOpeningGesture(false);
|
|
87
131
|
setHasPulledPastClosedTabHeight(false);
|
|
88
132
|
openingTouchStartYRef.current = null;
|
|
89
|
-
|
|
133
|
+
shouldReopenOnScrollUpRef.current = false;
|
|
134
|
+
setIsDrawerOpened(true);
|
|
90
135
|
onOpenChange?.(true);
|
|
91
136
|
};
|
|
92
|
-
const closeDrawerHandler = () => {
|
|
93
|
-
|
|
94
|
-
window.clearTimeout(resetPulledPastTimeoutRef.current);
|
|
95
|
-
resetPulledPastTimeoutRef.current = null;
|
|
96
|
-
}
|
|
137
|
+
const closeDrawerHandler = ({ shouldReopenOnScrollUp = false, } = {}) => {
|
|
138
|
+
clearResetPulledPastTimeout(resetPulledPastTimeoutRef);
|
|
97
139
|
setIsOpeningGesture(false);
|
|
98
140
|
setHasPulledPastClosedTabHeight(false);
|
|
99
141
|
openingTouchStartYRef.current = null;
|
|
100
|
-
|
|
142
|
+
shouldReopenOnScrollUpRef.current = shouldReopenOnScrollUp;
|
|
143
|
+
setIsDrawerOpened(false);
|
|
101
144
|
onOpenChange?.(false);
|
|
102
145
|
};
|
|
146
|
+
const scheduleResetPulledPastTimeout = () => {
|
|
147
|
+
clearResetPulledPastTimeout(resetPulledPastTimeoutRef);
|
|
148
|
+
resetPulledPastTimeoutRef.current = window.setTimeout(() => {
|
|
149
|
+
if (!openDrawerRef.current) {
|
|
150
|
+
setHasPulledPastClosedTabHeight(false);
|
|
151
|
+
}
|
|
152
|
+
}, 180);
|
|
153
|
+
};
|
|
154
|
+
const handleGestureStart = (startY) => {
|
|
155
|
+
openingTouchStartYRef.current = startY;
|
|
156
|
+
setIsOpeningGesture(true);
|
|
157
|
+
setHasPulledPastClosedTabHeight(false);
|
|
158
|
+
};
|
|
159
|
+
const handleGestureMove = (currentY) => {
|
|
160
|
+
if (!isOpeningGestureRef.current)
|
|
161
|
+
return;
|
|
162
|
+
const startY = openingTouchStartYRef.current;
|
|
163
|
+
if (startY === null || typeof currentY !== 'number')
|
|
164
|
+
return;
|
|
165
|
+
const pullDistance = startY - currentY;
|
|
166
|
+
const currentClosedTabHeight = closedTabRef.current?.offsetHeight ?? 0;
|
|
167
|
+
setHasPulledPastClosedTabHeight(currentClosedTabHeight > 0 && pullDistance >= currentClosedTabHeight);
|
|
168
|
+
};
|
|
169
|
+
const handleGestureCancel = () => {
|
|
170
|
+
openingTouchStartYRef.current = null;
|
|
171
|
+
setIsOpeningGesture(false);
|
|
172
|
+
setHasPulledPastClosedTabHeight(false);
|
|
173
|
+
};
|
|
174
|
+
const handleGestureEnd = ({ shouldResetTouchStart = false, } = {}) => {
|
|
175
|
+
if (shouldResetTouchStart) {
|
|
176
|
+
openingTouchStartYRef.current = null;
|
|
177
|
+
}
|
|
178
|
+
if (!isDrawerOpened) {
|
|
179
|
+
setIsOpeningGesture(false);
|
|
180
|
+
scheduleResetPulledPastTimeout();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
103
183
|
return (React.createElement(material.Box, { sx: { display: { md: 'none' } } },
|
|
104
|
-
React.createElement(material.Box, { ref: sentinelRef, sx: { height: 1, visibility: 'hidden' } }),
|
|
105
184
|
React.createElement(material.Box, { ref: closedTabRef, sx: {
|
|
106
185
|
position: 'fixed',
|
|
107
186
|
bottom: 0,
|
|
108
187
|
left: 0,
|
|
109
188
|
right: 0,
|
|
110
189
|
backgroundColor: (theme) => theme.palette.background.paper,
|
|
111
|
-
borderTopLeftRadius: 16,
|
|
112
|
-
borderTopRightRadius: 16,
|
|
113
|
-
boxShadow: '0 -8px 10px 2px rgba(0,0,0,0.2)',
|
|
114
|
-
zIndex:
|
|
115
|
-
opacity:
|
|
116
|
-
transform:
|
|
117
|
-
transition: 'opacity 180ms ease, transform 180ms ease',
|
|
190
|
+
borderTopLeftRadius: isOpeningGesture || isDrawerOpened ? 0 : 16,
|
|
191
|
+
borderTopRightRadius: isOpeningGesture || isDrawerOpened ? 0 : 16,
|
|
192
|
+
boxShadow: isOpeningGesture || isDrawerOpened ? 'none' : '0 -8px 10px 2px rgba(0,0,0,0.2)',
|
|
193
|
+
zIndex: (theme) => theme.zIndex.drawer + 1,
|
|
194
|
+
opacity: isDrawerHidden ? 0 : 1,
|
|
195
|
+
transform: isDrawerHidden ? 'translateY(calc(100% + 12px))' : 'translateY(0)',
|
|
196
|
+
transition: 'opacity 180ms ease, transform 180ms ease, border-radius 120ms ease, box-shadow 120ms ease',
|
|
118
197
|
pointerEvents: 'none',
|
|
119
198
|
} },
|
|
120
|
-
React.createElement(material.Box, { sx: {
|
|
199
|
+
!isDrawerOpened && (React.createElement(material.Box, { sx: {
|
|
121
200
|
display: 'flex',
|
|
122
201
|
justifyContent: 'center',
|
|
123
202
|
alignItems: 'center',
|
|
@@ -129,12 +208,24 @@ const PaymentOverviewDrawer = ({ event, totalPrice, onOpenChange }) => {
|
|
|
129
208
|
height: 6,
|
|
130
209
|
backgroundColor: (theme) => theme.palette.grey[300],
|
|
131
210
|
borderRadius: 3,
|
|
132
|
-
|
|
133
|
-
|
|
211
|
+
opacity: isOpeningGesture ? 0 : 1,
|
|
212
|
+
transition: 'opacity 120ms ease',
|
|
213
|
+
} }))),
|
|
214
|
+
React.createElement(material.Box, { role: "button", "aria-label": t('form.labels.payment_overview_open'), onClick: toggleDrawer, onTouchStart: (event) => {
|
|
215
|
+
handleGestureStart(event.touches[0]?.clientY ?? null);
|
|
216
|
+
}, onMouseDown: () => {
|
|
217
|
+
handleGestureStart(null);
|
|
218
|
+
}, onTouchMove: (event) => {
|
|
219
|
+
handleGestureMove(event.touches[0]?.clientY);
|
|
220
|
+
}, onTouchCancel: handleGestureCancel, onTouchEnd: () => {
|
|
221
|
+
handleGestureEnd({ shouldResetTouchStart: true });
|
|
222
|
+
}, onMouseUp: () => {
|
|
223
|
+
handleGestureEnd();
|
|
224
|
+
}, sx: {
|
|
134
225
|
width: '100%',
|
|
135
226
|
px: 2,
|
|
136
227
|
pb: 2,
|
|
137
|
-
pointerEvents:
|
|
228
|
+
pointerEvents: isDrawerOpened || isDrawerHidden ? 'none' : 'auto',
|
|
138
229
|
cursor: 'pointer',
|
|
139
230
|
} },
|
|
140
231
|
React.createElement(material.Typography, { sx: {
|
|
@@ -150,66 +241,42 @@ const PaymentOverviewDrawer = ({ event, totalPrice, onOpenChange }) => {
|
|
|
150
241
|
React.createElement(material.Button, { type: "submit", form: global.EVENTLOOK_ORDER_FORM_ID, onClick: (event) => {
|
|
151
242
|
event.stopPropagation();
|
|
152
243
|
}, variant: "contained", size: "large", fullWidth: true, sx: { mt: 1, height: { xs: 36, md: 40 } } }, t('buy')))),
|
|
153
|
-
React.createElement(material.SwipeableDrawer, { anchor: "bottom", open:
|
|
244
|
+
React.createElement(material.SwipeableDrawer, { anchor: "bottom", open: isDrawerOpened, onClose: () => closeDrawerHandler(), onOpen: () => openDrawerHandler(), swipeAreaWidth: swipeAreaWidth, allowSwipeInChildren: true, disableSwipeToOpen: isDrawerHidden, keepMounted: true, SwipeAreaProps: {
|
|
154
245
|
onTouchStart: (event) => {
|
|
155
|
-
|
|
156
|
-
setIsOpeningGesture(true);
|
|
157
|
-
setHasPulledPastClosedTabHeight(false);
|
|
246
|
+
handleGestureStart(event.touches[0]?.clientY ?? null);
|
|
158
247
|
},
|
|
159
248
|
onMouseDown: () => {
|
|
160
|
-
|
|
161
|
-
setHasPulledPastClosedTabHeight(false);
|
|
249
|
+
handleGestureStart(null);
|
|
162
250
|
},
|
|
163
251
|
onTouchMove: (event) => {
|
|
164
|
-
|
|
165
|
-
return;
|
|
166
|
-
const startY = openingTouchStartYRef.current;
|
|
167
|
-
const currentY = event.touches[0]?.clientY;
|
|
168
|
-
if (startY === null || typeof currentY !== 'number')
|
|
169
|
-
return;
|
|
170
|
-
const pullDistance = startY - currentY;
|
|
171
|
-
const closedTabHeight = closedTabRef.current?.offsetHeight ?? 0;
|
|
172
|
-
setHasPulledPastClosedTabHeight(closedTabHeight > 0 && pullDistance >= closedTabHeight);
|
|
173
|
-
},
|
|
174
|
-
onTouchCancel: () => {
|
|
175
|
-
openingTouchStartYRef.current = null;
|
|
176
|
-
setIsOpeningGesture(false);
|
|
177
|
-
setHasPulledPastClosedTabHeight(false);
|
|
252
|
+
handleGestureMove(event.touches[0]?.clientY);
|
|
178
253
|
},
|
|
254
|
+
onTouchCancel: handleGestureCancel,
|
|
179
255
|
onTouchEnd: () => {
|
|
180
|
-
|
|
181
|
-
if (!openDrawer) {
|
|
182
|
-
setIsOpeningGesture(false);
|
|
183
|
-
if (resetPulledPastTimeoutRef.current !== null) {
|
|
184
|
-
window.clearTimeout(resetPulledPastTimeoutRef.current);
|
|
185
|
-
}
|
|
186
|
-
resetPulledPastTimeoutRef.current = window.setTimeout(() => {
|
|
187
|
-
if (!openDrawerRef.current) {
|
|
188
|
-
setHasPulledPastClosedTabHeight(false);
|
|
189
|
-
}
|
|
190
|
-
}, 180);
|
|
191
|
-
}
|
|
256
|
+
handleGestureEnd({ shouldResetTouchStart: true });
|
|
192
257
|
},
|
|
193
258
|
onMouseUp: () => {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
setHasPulledPastClosedTabHeight(false);
|
|
202
|
-
}
|
|
203
|
-
}, 180);
|
|
204
|
-
}
|
|
259
|
+
handleGestureEnd();
|
|
260
|
+
},
|
|
261
|
+
}, sx: {
|
|
262
|
+
display: { md: 'none' },
|
|
263
|
+
pointerEvents: isDrawerOpened ? 'none' : 'auto',
|
|
264
|
+
'& .MuiDrawer-paper': {
|
|
265
|
+
pointerEvents: 'auto',
|
|
205
266
|
},
|
|
206
|
-
|
|
267
|
+
'& .MuiSwipeArea-root': {
|
|
268
|
+
pointerEvents: 'auto',
|
|
269
|
+
},
|
|
270
|
+
}, ModalProps: {
|
|
207
271
|
disableScrollLock: true,
|
|
208
272
|
keepMounted: false,
|
|
273
|
+
disableAutoFocus: true,
|
|
274
|
+
disableRestoreFocus: true,
|
|
275
|
+
disableEnforceFocus: true,
|
|
209
276
|
BackdropProps: {
|
|
210
|
-
sx: {
|
|
211
|
-
|
|
212
|
-
|
|
277
|
+
sx: {
|
|
278
|
+
background: 'none',
|
|
279
|
+
pointerEvents: 'none',
|
|
213
280
|
},
|
|
214
281
|
},
|
|
215
282
|
}, PaperProps: {
|
|
@@ -218,10 +285,11 @@ const PaymentOverviewDrawer = ({ event, totalPrice, onOpenChange }) => {
|
|
|
218
285
|
borderTopRightRadius: 16,
|
|
219
286
|
boxShadow: '0 -8px 10px 2px rgba(0,0,0,0.2)',
|
|
220
287
|
overflow: 'hidden',
|
|
221
|
-
mb:
|
|
288
|
+
mb: isDrawerOpened ||
|
|
289
|
+
(!isDrawerOpened && (isOpeningGesture || hasPulledPastClosedTabHeight))
|
|
222
290
|
? `${closedTabHeight}px`
|
|
223
291
|
: 0,
|
|
224
|
-
transition: '
|
|
292
|
+
transition: 'none',
|
|
225
293
|
},
|
|
226
294
|
} },
|
|
227
295
|
React.createElement(material.Box, { role: "button", "aria-label": t('form.labels.payment_overview_close'), onClick: toggleDrawer, sx: {
|
|
@@ -242,7 +310,7 @@ const PaymentOverviewDrawer = ({ event, totalPrice, onOpenChange }) => {
|
|
|
242
310
|
height: '100%',
|
|
243
311
|
overflow: 'auto',
|
|
244
312
|
} },
|
|
245
|
-
React.createElement(PaymentOverviewBox.default, { event: event })))));
|
|
313
|
+
React.createElement(PaymentOverviewBox.default, { event: event, hideBuyButton: true })))));
|
|
246
314
|
};
|
|
247
315
|
|
|
248
316
|
exports.default = PaymentOverviewDrawer;
|