@eventlook/sdk 1.4.4 → 1.4.5-1.beta.2
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.example +1 -0
- package/dev-frontend.sh +32 -0
- package/dist/cjs/_virtual/_commonjsHelpers.js +4 -2
- package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/cjs/_virtual/index.js +2 -2
- package/dist/cjs/_virtual/index2.js +2 -2
- package/dist/cjs/_virtual/index3.js +2 -2
- 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/context/GlobalContext.js +2 -1
- package/dist/cjs/context/GlobalContext.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 -4
- package/dist/cjs/form/Payment.js.map +1 -1
- package/dist/cjs/form/PaymentOverviewBox.js +104 -115
- package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
- package/dist/cjs/form/PaymentOverviewDrawer.js +317 -0
- package/dist/cjs/form/PaymentOverviewDrawer.js.map +1 -0
- package/dist/cjs/form/PaymentPending.js +15 -3
- package/dist/cjs/form/PaymentPending.js.map +1 -1
- package/dist/cjs/form/PaymentSuccess.js +39 -2
- package/dist/cjs/form/PaymentSuccess.js.map +1 -1
- package/dist/cjs/form/ReleaseWithMerchandise.js +57 -48
- package/dist/cjs/form/ReleaseWithMerchandise.js.map +1 -1
- package/dist/cjs/form/Shipping.js +33 -27
- package/dist/cjs/form/Shipping.js.map +1 -1
- package/dist/cjs/form/TicketForm.js +102 -35
- package/dist/cjs/form/TicketForm.js.map +1 -1
- package/dist/cjs/form/TicketQuantityControl.js +51 -0
- package/dist/cjs/form/TicketQuantityControl.js.map +1 -0
- package/dist/cjs/form/TicketSelection.js +29 -11
- package/dist/cjs/form/TicketSelection.js.map +1 -1
- package/dist/cjs/form/TicketSelectionMap.js +67 -0
- package/dist/cjs/form/TicketSelectionMap.js.map +1 -0
- package/dist/cjs/form/TicketSelectionMobile.js +98 -0
- package/dist/cjs/form/TicketSelectionMobile.js.map +1 -0
- package/dist/cjs/form/TicketWithMerchandiseSelection.js +46 -10
- package/dist/cjs/form/TicketWithMerchandiseSelection.js.map +1 -1
- package/dist/cjs/form/extra-field/ExtraField.js.map +1 -1
- package/dist/cjs/form/extra-field/ReleaseExtraFields.js +1 -1
- package/dist/cjs/form/extra-field/ReleaseExtraFields.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/merchandise/MerchandiseSelection.js +14 -0
- package/dist/cjs/form/merchandise/MerchandiseSelection.js.map +1 -0
- package/dist/cjs/form/merchandise/MerchandiseSlider.js +40 -0
- package/dist/cjs/form/merchandise/MerchandiseSlider.js.map +1 -0
- package/dist/cjs/form/merchendise/MerchandiseSelection.js +19 -0
- package/dist/cjs/form/merchendise/MerchandiseSelection.js.map +1 -0
- package/dist/cjs/form/merchendise/MerchandiseSlider.js +75 -0
- package/dist/cjs/form/merchendise/MerchandiseSlider.js.map +1 -0
- package/dist/cjs/form/payment/FeeBox.js +5 -17
- package/dist/cjs/form/payment/FeeBox.js.map +1 -1
- package/dist/cjs/form/payment/PaymentOverviewCheckbox.js +52 -0
- package/dist/cjs/form/payment/PaymentOverviewCheckbox.js.map +1 -0
- package/dist/cjs/form/product/ProductCard.js +147 -36
- package/dist/cjs/form/product/ProductCard.js.map +1 -1
- package/dist/cjs/form/product/ProductVariantsDialog.js +182 -97
- package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/cjs/form/services/index.js +116 -0
- package/dist/cjs/form/services/index.js.map +1 -0
- package/dist/cjs/form/style.js +13 -4
- package/dist/cjs/form/style.js.map +1 -1
- package/dist/cjs/form/tickets/ReleaseDescription.js +23 -0
- package/dist/cjs/form/tickets/ReleaseDescription.js.map +1 -0
- package/dist/cjs/form/tickets/ReleaseWithMerchandise.js +165 -0
- package/dist/cjs/form/tickets/ReleaseWithMerchandise.js.map +1 -0
- package/dist/cjs/form/tickets/TicketQuantityControl.js +54 -0
- package/dist/cjs/form/tickets/TicketQuantityControl.js.map +1 -0
- package/dist/cjs/form/tickets/TicketSelection.js +162 -0
- package/dist/cjs/form/tickets/TicketSelection.js.map +1 -0
- package/dist/cjs/form/tickets/TicketSelectionMap.js +79 -0
- package/dist/cjs/form/tickets/TicketSelectionMap.js.map +1 -0
- package/dist/cjs/form/tickets/TicketSelectionMobile.js +100 -0
- package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +1 -0
- package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js +127 -0
- package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js.map +1 -0
- package/dist/cjs/hooks/useConsentScrollOnDrawerOpen.js +59 -0
- package/dist/cjs/hooks/useConsentScrollOnDrawerOpen.js.map +1 -0
- package/dist/cjs/hooks/useScrollToFirstError.js +73 -0
- package/dist/cjs/hooks/useScrollToFirstError.js.map +1 -0
- package/dist/cjs/locales/cs.js +47 -2
- package/dist/cjs/locales/cs.js.map +1 -1
- package/dist/cjs/locales/en.js +47 -1
- package/dist/cjs/locales/en.js.map +1 -1
- package/dist/cjs/locales/es.js +47 -1
- package/dist/cjs/locales/es.js.map +1 -1
- package/dist/cjs/locales/pl.js +47 -1
- package/dist/cjs/locales/pl.js.map +1 -1
- package/dist/cjs/locales/sk.js +47 -1
- package/dist/cjs/locales/sk.js.map +1 -1
- package/dist/cjs/locales/uk.js +47 -1
- package/dist/cjs/locales/uk.js.map +1 -1
- package/dist/cjs/modules/shopping-cart.js +10 -9
- package/dist/cjs/modules/shopping-cart.js.map +1 -1
- package/dist/cjs/utils/data/global.js +2 -0
- package/dist/cjs/utils/data/global.js.map +1 -1
- package/dist/cjs/utils/data/ticket.js +6 -0
- package/dist/cjs/utils/data/ticket.js.map +1 -0
- package/dist/cjs/utils/gtm.js +20 -0
- package/dist/cjs/utils/gtm.js.map +1 -1
- package/dist/esm/_virtual/_commonjsHelpers.js +4 -2
- package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/esm/_virtual/index.js +2 -2
- package/dist/esm/_virtual/index2.js +2 -2
- package/dist/esm/_virtual/index3.js +2 -2
- 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/context/GlobalContext.js +2 -1
- package/dist/esm/context/GlobalContext.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 -4
- package/dist/esm/form/Payment.js.map +1 -1
- package/dist/esm/form/PaymentOverviewBox.js +107 -118
- package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
- package/dist/esm/form/PaymentOverviewDrawer.js +313 -0
- package/dist/esm/form/PaymentOverviewDrawer.js.map +1 -0
- package/dist/esm/form/PaymentPending.js +16 -4
- package/dist/esm/form/PaymentPending.js.map +1 -1
- package/dist/esm/form/PaymentSuccess.js +39 -2
- package/dist/esm/form/PaymentSuccess.js.map +1 -1
- package/dist/esm/form/ReleaseWithMerchandise.js +58 -49
- package/dist/esm/form/ReleaseWithMerchandise.js.map +1 -1
- package/dist/esm/form/Shipping.js +33 -27
- package/dist/esm/form/Shipping.js.map +1 -1
- package/dist/esm/form/TicketForm.js +104 -37
- package/dist/esm/form/TicketForm.js.map +1 -1
- package/dist/esm/form/TicketQuantityControl.js +47 -0
- package/dist/esm/form/TicketQuantityControl.js.map +1 -0
- package/dist/esm/form/TicketSelection.js +30 -12
- package/dist/esm/form/TicketSelection.js.map +1 -1
- package/dist/esm/form/TicketSelectionMap.js +63 -0
- package/dist/esm/form/TicketSelectionMap.js.map +1 -0
- package/dist/esm/form/TicketSelectionMobile.js +94 -0
- package/dist/esm/form/TicketSelectionMobile.js.map +1 -0
- package/dist/esm/form/TicketWithMerchandiseSelection.js +48 -12
- package/dist/esm/form/TicketWithMerchandiseSelection.js.map +1 -1
- package/dist/esm/form/extra-field/ExtraField.js.map +1 -1
- package/dist/esm/form/extra-field/ReleaseExtraFields.js +1 -1
- package/dist/esm/form/extra-field/ReleaseExtraFields.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/merchandise/MerchandiseSelection.js +10 -0
- package/dist/esm/form/merchandise/MerchandiseSelection.js.map +1 -0
- package/dist/esm/form/merchandise/MerchandiseSlider.js +36 -0
- package/dist/esm/form/merchandise/MerchandiseSlider.js.map +1 -0
- package/dist/esm/form/merchendise/MerchandiseSelection.js +15 -0
- package/dist/esm/form/merchendise/MerchandiseSelection.js.map +1 -0
- package/dist/esm/form/merchendise/MerchandiseSlider.js +71 -0
- package/dist/esm/form/merchendise/MerchandiseSlider.js.map +1 -0
- package/dist/esm/form/payment/FeeBox.js +6 -18
- package/dist/esm/form/payment/FeeBox.js.map +1 -1
- package/dist/esm/form/payment/PaymentOverviewCheckbox.js +48 -0
- package/dist/esm/form/payment/PaymentOverviewCheckbox.js.map +1 -0
- package/dist/esm/form/product/ProductCard.js +148 -37
- package/dist/esm/form/product/ProductCard.js.map +1 -1
- package/dist/esm/form/product/ProductVariantsDialog.js +184 -99
- package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
- package/dist/esm/form/services/index.js +112 -0
- package/dist/esm/form/services/index.js.map +1 -0
- package/dist/esm/form/style.js +13 -4
- package/dist/esm/form/style.js.map +1 -1
- package/dist/esm/form/tickets/ReleaseDescription.js +19 -0
- package/dist/esm/form/tickets/ReleaseDescription.js.map +1 -0
- package/dist/esm/form/tickets/ReleaseWithMerchandise.js +161 -0
- package/dist/esm/form/tickets/ReleaseWithMerchandise.js.map +1 -0
- package/dist/esm/form/tickets/TicketQuantityControl.js +50 -0
- package/dist/esm/form/tickets/TicketQuantityControl.js.map +1 -0
- package/dist/esm/form/tickets/TicketSelection.js +158 -0
- package/dist/esm/form/tickets/TicketSelection.js.map +1 -0
- package/dist/esm/form/tickets/TicketSelectionMap.js +75 -0
- package/dist/esm/form/tickets/TicketSelectionMap.js.map +1 -0
- package/dist/esm/form/tickets/TicketSelectionMobile.js +96 -0
- package/dist/esm/form/tickets/TicketSelectionMobile.js.map +1 -0
- package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js +123 -0
- package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js.map +1 -0
- package/dist/esm/hooks/useConsentScrollOnDrawerOpen.js +55 -0
- package/dist/esm/hooks/useConsentScrollOnDrawerOpen.js.map +1 -0
- package/dist/esm/hooks/useScrollToFirstError.js +69 -0
- package/dist/esm/hooks/useScrollToFirstError.js.map +1 -0
- package/dist/esm/locales/cs.js +47 -2
- package/dist/esm/locales/cs.js.map +1 -1
- package/dist/esm/locales/en.js +47 -1
- package/dist/esm/locales/en.js.map +1 -1
- package/dist/esm/locales/es.js +47 -1
- package/dist/esm/locales/es.js.map +1 -1
- package/dist/esm/locales/pl.js +47 -1
- package/dist/esm/locales/pl.js.map +1 -1
- package/dist/esm/locales/sk.js +47 -1
- package/dist/esm/locales/sk.js.map +1 -1
- package/dist/esm/locales/uk.js +47 -1
- package/dist/esm/locales/uk.js.map +1 -1
- package/dist/esm/modules/shopping-cart.js +9 -8
- package/dist/esm/modules/shopping-cart.js.map +1 -1
- package/dist/esm/utils/data/global.js +2 -1
- package/dist/esm/utils/data/global.js.map +1 -1
- package/dist/esm/utils/data/ticket.js +4 -0
- package/dist/esm/utils/data/ticket.js.map +1 -0
- package/dist/esm/utils/gtm.js +19 -1
- package/dist/esm/utils/gtm.js.map +1 -1
- package/dist/types/context/GlobalContext.d.ts +2 -1
- package/dist/types/form/PaymentOverviewDrawer.d.ts +8 -0
- package/dist/types/form/PaymentSuccess.d.ts +2 -0
- package/dist/types/form/TicketSelectionMap.d.ts +7 -0
- package/dist/types/form/extra-field/ExtraField.d.ts +1 -1
- package/dist/types/form/index.d.ts +1 -0
- package/dist/types/form/merchendise/MerchandiseSelection.d.ts +9 -0
- package/dist/types/form/merchendise/MerchandiseSlider.d.ts +10 -0
- package/dist/types/form/merchendise/MerchendiseSlider.d.ts +0 -0
- package/dist/types/form/payment/PaymentOverviewCheckbox.d.ts +12 -0
- package/dist/types/locales/cs.d.ts +23 -0
- package/dist/types/locales/en.d.ts +24 -0
- package/dist/types/locales/es.d.ts +24 -0
- package/dist/types/locales/pl.d.ts +24 -0
- package/dist/types/locales/sk.d.ts +24 -0
- package/dist/types/locales/uk.d.ts +24 -0
- package/dist/types/modules/shopping-cart.d.ts +3 -5
- package/dist/types/utils/data/shopping-cart.d.ts +5 -0
- package/dist/types/utils/gtm.d.ts +3 -1
- package/dist/types/utils/types/event.type.d.ts +1 -0
- package/dist/types/utils/types/global.type.d.ts +1 -0
- package/dist/types/utils/types/gtm.type.d.ts +5 -0
- package/dist/types/utils/types/order.type.d.ts +1 -0
- package/dist/types/utils/types/shopping-cart.type.d.ts +44 -35
- package/dist/types/utils/types/ticket.type.d.ts +21 -5
- package/package.json +11 -6
- package/rollup.config.mjs +16 -1
- package/src/components/Image.tsx +49 -27
- package/src/components/hook-form/FormProvider.tsx +5 -2
- package/src/context/GlobalContext.tsx +3 -0
- package/src/form/ChildEventDialog.tsx +3 -3
- package/src/form/ContactPerson.tsx +1 -1
- package/src/form/Payment.tsx +2 -4
- package/src/form/PaymentOverviewBox.tsx +178 -139
- package/src/form/PaymentOverviewDrawer.tsx +446 -0
- package/src/form/PaymentPending.tsx +19 -3
- package/src/form/PaymentSuccess.tsx +46 -3
- package/src/form/Shipping.tsx +48 -33
- package/src/form/TicketForm.tsx +162 -43
- package/src/form/extra-field/ExtraField.tsx +3 -1
- package/src/form/extra-field/ReleaseExtraFields.tsx +1 -1
- package/src/form/index.tsx +6 -1
- package/src/form/merchandise/MerchandiseSelection.tsx +24 -0
- package/src/form/merchandise/MerchandiseSlider.tsx +62 -0
- package/src/form/payment/FeeBox.tsx +6 -34
- package/src/form/payment/PaymentOverviewCheckbox.tsx +88 -0
- package/src/form/product/ProductCard.tsx +258 -59
- package/src/form/product/ProductVariantsDialog.tsx +292 -139
- package/src/form/services/index.tsx +263 -0
- package/src/form/style.ts +16 -4
- package/src/form/tickets/ReleaseDescription.tsx +46 -0
- package/src/form/tickets/ReleaseWithMerchandise.tsx +271 -0
- package/src/form/tickets/TicketQuantityControl.tsx +100 -0
- package/src/form/tickets/TicketSelection.tsx +236 -0
- package/src/form/tickets/TicketSelectionMap.tsx +99 -0
- package/src/form/tickets/TicketSelectionMobile.tsx +188 -0
- package/src/form/tickets/TicketWithMerchandiseSelection.tsx +192 -0
- package/src/hooks/useScrollToFirstError.ts +99 -0
- package/src/locales/cs.tsx +50 -2
- package/src/locales/en.tsx +50 -1
- package/src/locales/es.tsx +50 -1
- package/src/locales/pl.tsx +50 -1
- package/src/locales/sk.tsx +50 -1
- package/src/locales/uk.tsx +50 -1
- package/src/modules/shopping-cart.ts +14 -11
- package/src/utils/data/global.ts +1 -0
- package/src/utils/data/shopping-cart.ts +5 -0
- package/src/utils/data/ticket.ts +1 -0
- package/src/utils/gtm.ts +29 -0
- package/src/utils/types/event.type.ts +1 -0
- package/src/utils/types/global.type.ts +1 -0
- package/src/utils/types/gtm.type.ts +6 -0
- package/src/utils/types/order.type.ts +1 -0
- package/src/utils/types/shopping-cart.type.ts +42 -31
- package/src/utils/types/ticket.type.ts +23 -3
- package/tsconfig.json +2 -1
- package/dist/cjs/_virtual/colorManipulator.js +0 -6
- package/dist/cjs/_virtual/colorManipulator.js.map +0 -1
- package/dist/cjs/_virtual/createStyled.js +0 -6
- package/dist/cjs/_virtual/createStyled.js.map +0 -1
- package/dist/cjs/_virtual/customParseFormat.js +0 -6
- package/dist/cjs/_virtual/customParseFormat.js.map +0 -1
- package/dist/cjs/_virtual/dayjs.min.js +0 -6
- package/dist/cjs/_virtual/dayjs.min.js.map +0 -1
- package/dist/cjs/_virtual/extends.js +0 -6
- package/dist/cjs/_virtual/extends.js.map +0 -1
- package/dist/cjs/_virtual/index.umd.js +0 -6
- package/dist/cjs/_virtual/index.umd.js.map +0 -1
- package/dist/cjs/_virtual/index10.js +0 -11
- package/dist/cjs/_virtual/index10.js.map +0 -1
- package/dist/cjs/_virtual/index11.js +0 -11
- package/dist/cjs/_virtual/index11.js.map +0 -1
- package/dist/cjs/_virtual/index12.js +0 -6
- package/dist/cjs/_virtual/index12.js.map +0 -1
- package/dist/cjs/_virtual/index13.js +0 -6
- package/dist/cjs/_virtual/index13.js.map +0 -1
- package/dist/cjs/_virtual/index14.js +0 -6
- package/dist/cjs/_virtual/index14.js.map +0 -1
- package/dist/cjs/_virtual/index15.js +0 -6
- package/dist/cjs/_virtual/index15.js.map +0 -1
- package/dist/cjs/_virtual/index4.js +0 -11
- package/dist/cjs/_virtual/index4.js.map +0 -1
- package/dist/cjs/_virtual/index5.js +0 -11
- package/dist/cjs/_virtual/index5.js.map +0 -1
- package/dist/cjs/_virtual/index6.js +0 -11
- package/dist/cjs/_virtual/index6.js.map +0 -1
- package/dist/cjs/_virtual/index7.js +0 -11
- package/dist/cjs/_virtual/index7.js.map +0 -1
- package/dist/cjs/_virtual/index8.js +0 -11
- package/dist/cjs/_virtual/index8.js.map +0 -1
- package/dist/cjs/_virtual/index9.js +0 -11
- package/dist/cjs/_virtual/index9.js.map +0 -1
- package/dist/cjs/_virtual/interopRequireDefault.js +0 -6
- package/dist/cjs/_virtual/interopRequireDefault.js.map +0 -1
- package/dist/cjs/_virtual/isBetween.js +0 -6
- package/dist/cjs/_virtual/isBetween.js.map +0 -1
- package/dist/cjs/_virtual/jsx-runtime.js +0 -6
- package/dist/cjs/_virtual/jsx-runtime.js.map +0 -1
- package/dist/cjs/_virtual/localizedFormat.js +0 -6
- package/dist/cjs/_virtual/localizedFormat.js.map +0 -1
- package/dist/cjs/_virtual/lodash.js +0 -6
- package/dist/cjs/_virtual/lodash.js.map +0 -1
- package/dist/cjs/_virtual/lottie.js +0 -6
- package/dist/cjs/_virtual/lottie.js.map +0 -1
- package/dist/cjs/_virtual/numeral.js +0 -6
- package/dist/cjs/_virtual/numeral.js.map +0 -1
- package/dist/cjs/_virtual/objectWithoutPropertiesLoose.js +0 -6
- package/dist/cjs/_virtual/objectWithoutPropertiesLoose.js.map +0 -1
- package/dist/cjs/_virtual/react-is.development3.js +0 -6
- package/dist/cjs/_virtual/react-is.development3.js.map +0 -1
- package/dist/cjs/_virtual/react-is.production.min2.js +0 -6
- package/dist/cjs/_virtual/react-is.production.min2.js.map +0 -1
- package/dist/cjs/_virtual/react-jsx-runtime.development.js +0 -6
- package/dist/cjs/_virtual/react-jsx-runtime.development.js.map +0 -1
- package/dist/cjs/_virtual/react-jsx-runtime.production.min.js +0 -6
- package/dist/cjs/_virtual/react-jsx-runtime.production.min.js.map +0 -1
- package/dist/cjs/_virtual/timezone.js +0 -6
- package/dist/cjs/_virtual/timezone.js.map +0 -1
- package/dist/cjs/_virtual/use-sync-external-store-shim.development.js +0 -6
- package/dist/cjs/_virtual/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/cjs/_virtual/use-sync-external-store-shim.production.js +0 -6
- package/dist/cjs/_virtual/use-sync-external-store-shim.production.js.map +0 -1
- package/dist/cjs/_virtual/useThemeWithoutDefault.js +0 -6
- package/dist/cjs/_virtual/useThemeWithoutDefault.js.map +0 -1
- package/dist/cjs/_virtual/utc.js +0 -6
- package/dist/cjs/_virtual/utc.js.map +0 -1
- package/dist/cjs/_virtual/weekOfYear.js +0 -6
- package/dist/cjs/_virtual/weekOfYear.js.map +0 -1
- package/dist/cjs/hooks/useFirstRender.js +0 -14
- package/dist/cjs/hooks/useFirstRender.js.map +0 -1
- package/dist/cjs/utils/data/order.js +0 -8
- package/dist/cjs/utils/data/order.js.map +0 -1
- package/dist/esm/_virtual/colorManipulator.js +0 -4
- package/dist/esm/_virtual/colorManipulator.js.map +0 -1
- package/dist/esm/_virtual/createStyled.js +0 -4
- package/dist/esm/_virtual/createStyled.js.map +0 -1
- package/dist/esm/_virtual/customParseFormat.js +0 -4
- package/dist/esm/_virtual/customParseFormat.js.map +0 -1
- package/dist/esm/_virtual/dayjs.min.js +0 -4
- package/dist/esm/_virtual/dayjs.min.js.map +0 -1
- package/dist/esm/_virtual/extends.js +0 -4
- package/dist/esm/_virtual/extends.js.map +0 -1
- package/dist/esm/_virtual/index.umd.js +0 -4
- package/dist/esm/_virtual/index.umd.js.map +0 -1
- package/dist/esm/_virtual/index10.js +0 -7
- package/dist/esm/_virtual/index10.js.map +0 -1
- package/dist/esm/_virtual/index11.js +0 -7
- package/dist/esm/_virtual/index11.js.map +0 -1
- package/dist/esm/_virtual/index12.js +0 -4
- package/dist/esm/_virtual/index12.js.map +0 -1
- package/dist/esm/_virtual/index13.js +0 -4
- package/dist/esm/_virtual/index13.js.map +0 -1
- package/dist/esm/_virtual/index14.js +0 -4
- package/dist/esm/_virtual/index14.js.map +0 -1
- package/dist/esm/_virtual/index15.js +0 -4
- package/dist/esm/_virtual/index15.js.map +0 -1
- package/dist/esm/_virtual/index4.js +0 -7
- package/dist/esm/_virtual/index4.js.map +0 -1
- package/dist/esm/_virtual/index5.js +0 -7
- package/dist/esm/_virtual/index5.js.map +0 -1
- package/dist/esm/_virtual/index6.js +0 -7
- package/dist/esm/_virtual/index6.js.map +0 -1
- package/dist/esm/_virtual/index7.js +0 -7
- package/dist/esm/_virtual/index7.js.map +0 -1
- package/dist/esm/_virtual/index8.js +0 -7
- package/dist/esm/_virtual/index8.js.map +0 -1
- package/dist/esm/_virtual/index9.js +0 -7
- package/dist/esm/_virtual/index9.js.map +0 -1
- package/dist/esm/_virtual/interopRequireDefault.js +0 -4
- package/dist/esm/_virtual/interopRequireDefault.js.map +0 -1
- package/dist/esm/_virtual/isBetween.js +0 -4
- package/dist/esm/_virtual/isBetween.js.map +0 -1
- package/dist/esm/_virtual/jsx-runtime.js +0 -4
- package/dist/esm/_virtual/jsx-runtime.js.map +0 -1
- package/dist/esm/_virtual/localizedFormat.js +0 -4
- package/dist/esm/_virtual/localizedFormat.js.map +0 -1
- package/dist/esm/_virtual/lodash.js +0 -4
- package/dist/esm/_virtual/lodash.js.map +0 -1
- package/dist/esm/_virtual/lottie.js +0 -4
- package/dist/esm/_virtual/lottie.js.map +0 -1
- package/dist/esm/_virtual/numeral.js +0 -4
- package/dist/esm/_virtual/numeral.js.map +0 -1
- package/dist/esm/_virtual/objectWithoutPropertiesLoose.js +0 -4
- package/dist/esm/_virtual/objectWithoutPropertiesLoose.js.map +0 -1
- package/dist/esm/_virtual/react-is.development3.js +0 -4
- package/dist/esm/_virtual/react-is.development3.js.map +0 -1
- package/dist/esm/_virtual/react-is.production.min2.js +0 -4
- package/dist/esm/_virtual/react-is.production.min2.js.map +0 -1
- package/dist/esm/_virtual/react-jsx-runtime.development.js +0 -4
- package/dist/esm/_virtual/react-jsx-runtime.development.js.map +0 -1
- package/dist/esm/_virtual/react-jsx-runtime.production.min.js +0 -4
- package/dist/esm/_virtual/react-jsx-runtime.production.min.js.map +0 -1
- package/dist/esm/_virtual/timezone.js +0 -4
- package/dist/esm/_virtual/timezone.js.map +0 -1
- package/dist/esm/_virtual/use-sync-external-store-shim.development.js +0 -4
- package/dist/esm/_virtual/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/esm/_virtual/use-sync-external-store-shim.production.js +0 -4
- package/dist/esm/_virtual/use-sync-external-store-shim.production.js.map +0 -1
- package/dist/esm/_virtual/useThemeWithoutDefault.js +0 -4
- package/dist/esm/_virtual/useThemeWithoutDefault.js.map +0 -1
- package/dist/esm/_virtual/utc.js +0 -4
- package/dist/esm/_virtual/utc.js.map +0 -1
- package/dist/esm/_virtual/weekOfYear.js +0 -4
- package/dist/esm/_virtual/weekOfYear.js.map +0 -1
- package/dist/esm/hooks/useFirstRender.js +0 -12
- package/dist/esm/hooks/useFirstRender.js.map +0 -1
- package/dist/esm/utils/data/order.js +0 -8
- package/dist/esm/utils/data/order.js.map +0 -1
- package/dist/index.cjs.js +0 -90295
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.js +0 -90275
- package/dist/index.esm.js.map +0 -1
- package/dist/types/hooks/data/useShoppingCart.d.ts +0 -8
- package/src/form/MerchandiseSelection.tsx +0 -29
- package/src/form/ReleaseWithMerchandise.tsx +0 -230
- package/src/form/TicketSelection.tsx +0 -284
- package/src/form/TicketWithMerchandiseSelection.tsx +0 -131
package/src/form/TicketForm.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import PaymentSuccess from '@form/PaymentSuccess';
|
|
|
3
3
|
import FormProvider, { RHFCheckbox } from '@components/hook-form';
|
|
4
4
|
import {
|
|
5
5
|
Box,
|
|
6
|
+
Divider,
|
|
6
7
|
Grid,
|
|
7
8
|
Link,
|
|
8
9
|
LinkProps,
|
|
@@ -14,7 +15,7 @@ import {
|
|
|
14
15
|
Typography,
|
|
15
16
|
} from '@mui/material';
|
|
16
17
|
import dayjs from 'dayjs';
|
|
17
|
-
import TicketSelection from '@form/TicketSelection';
|
|
18
|
+
import TicketSelection from '@form/tickets/TicketSelection';
|
|
18
19
|
import ContactPerson from '@form/ContactPerson';
|
|
19
20
|
import Payment from '@form/Payment';
|
|
20
21
|
import EmailConfirmation from '@form/EmailConfirmation';
|
|
@@ -44,17 +45,22 @@ import {
|
|
|
44
45
|
import ReleaseCountdown from '@form/ReleaseCountdown';
|
|
45
46
|
import { cloneObject } from '@utils/global';
|
|
46
47
|
import PaymentPending from '@form/PaymentPending';
|
|
47
|
-
import MerchandiseSelection from '@form/MerchandiseSelection';
|
|
48
|
-
import TicketWithMerchandiseSelection from '@form/TicketWithMerchandiseSelection';
|
|
48
|
+
import MerchandiseSelection from '@form/merchandise/MerchandiseSelection';
|
|
49
|
+
import TicketWithMerchandiseSelection from '@form/tickets/TicketWithMerchandiseSelection';
|
|
49
50
|
import useActiveEventProducts from '@hooks/data/useActiveEventProducts';
|
|
50
51
|
import Shipping from '@form/Shipping';
|
|
51
52
|
import useErrors from '@hooks/useErrors';
|
|
52
53
|
import { EventType } from '@utils/data/event';
|
|
53
54
|
import TimeslotSelection from '@form/TimeslotSelection';
|
|
54
55
|
import useGlobal from '@hooks/useGlobal';
|
|
56
|
+
import useScrollToFirstError from '@hooks/useScrollToFirstError';
|
|
55
57
|
import { Trans } from '@components/Trans';
|
|
56
|
-
import { EVENTLOOK_ORDER_FORM_ID } from '@utils/data/global.ts';
|
|
58
|
+
import { EVENTLOOK_ORDER_FORM_ID, EVENTLOOK_ORDER_FORM_CONTAINER_ID } from '@utils/data/global.ts';
|
|
57
59
|
import ChildEventSection from './ChildEvents';
|
|
60
|
+
import TicketSelectionMap from '@form/tickets/TicketSelectionMap';
|
|
61
|
+
import PaymentOverviewDrawer from './PaymentOverviewDrawer';
|
|
62
|
+
import { getPlaceAsString } from '@utils/place';
|
|
63
|
+
import Services from '@form/services';
|
|
58
64
|
|
|
59
65
|
interface Props {
|
|
60
66
|
event: IEvent;
|
|
@@ -62,22 +68,43 @@ interface Props {
|
|
|
62
68
|
selectedReleaseId?: number;
|
|
63
69
|
isIframe?: boolean;
|
|
64
70
|
isInline?: boolean;
|
|
71
|
+
headerSlot?: React.ReactNode;
|
|
65
72
|
}
|
|
66
73
|
|
|
74
|
+
const getCartUniqueItemCount = (formValues: ITicketForm) => {
|
|
75
|
+
const flatTickets = Object.values(formValues.tickets ?? {}).flat();
|
|
76
|
+
const ticketsCount = flatTickets.reduce(
|
|
77
|
+
(sum, ticket) => sum + (Number(ticket.quantity) > 0 ? 1 : 0),
|
|
78
|
+
0
|
|
79
|
+
);
|
|
80
|
+
const ticketsWithProductsCount = flatTickets.reduce(
|
|
81
|
+
(sum, ticket) => sum + ((ticket.products?.length ?? 0) > 0 ? 1 : 0),
|
|
82
|
+
0
|
|
83
|
+
);
|
|
84
|
+
const productsCount = Object.values(formValues.products ?? {})
|
|
85
|
+
.flat()
|
|
86
|
+
.reduce((sum, product) => sum + (Number(product.quantity) || 0), 0);
|
|
87
|
+
|
|
88
|
+
return ticketsCount + ticketsWithProductsCount + productsCount;
|
|
89
|
+
};
|
|
90
|
+
|
|
67
91
|
const TicketForm: React.FC<Props> = ({
|
|
68
92
|
event,
|
|
69
93
|
hasGopayIdSsr,
|
|
70
94
|
selectedReleaseId,
|
|
71
95
|
isIframe,
|
|
72
96
|
isInline,
|
|
97
|
+
headerSlot,
|
|
73
98
|
}) => {
|
|
74
|
-
const { t, setGlobal, callbacks, links, user, options, showSnackbar, content } =
|
|
99
|
+
const { t, setGlobal, callbacks, links, user, options, showSnackbar, content, seatingIframeUrl } =
|
|
100
|
+
useGlobal();
|
|
75
101
|
const { transformErrors } = useErrors(t('event.tickets.error.order'));
|
|
76
102
|
const { data: eventProducts, isLoading } = useActiveEventProducts(event.id);
|
|
77
103
|
const [paymentRedirect, setPaymentRedirect] = useState<string | null>(null);
|
|
78
104
|
const [hasGopayId, setHasGopayId] = useState<boolean>(hasGopayIdSsr);
|
|
79
105
|
const [isPaying, setIsPaying] = useState<boolean>(false);
|
|
80
106
|
const [formStep, setFormStep] = useState<number>(1);
|
|
107
|
+
const [isPaymentOverviewDrawerOpen, setIsPaymentOverviewDrawerOpen] = useState<boolean>(false);
|
|
81
108
|
const [showReleaseDate, setShowReleaseDate] = useState(
|
|
82
109
|
dayjs(event.releaseDate).diff(dayjs()) > 0
|
|
83
110
|
);
|
|
@@ -86,6 +113,8 @@ const TicketForm: React.FC<Props> = ({
|
|
|
86
113
|
const hasFiredViewCart = useRef(false);
|
|
87
114
|
const hasFiredBeginCheckout = useRef(false);
|
|
88
115
|
const hasFiredPaymentMethod = useRef(false);
|
|
116
|
+
const termsAndConditionsRef = useRef<HTMLDivElement | null>(null);
|
|
117
|
+
|
|
89
118
|
const item: IEcommerce = {
|
|
90
119
|
currency: event.currency,
|
|
91
120
|
items: [
|
|
@@ -212,8 +241,12 @@ const TicketForm: React.FC<Props> = ({
|
|
|
212
241
|
paymentMethodId: null,
|
|
213
242
|
paymentMethodOptionId: null,
|
|
214
243
|
termsAndConditions: false,
|
|
244
|
+
ticketInsurance: false,
|
|
245
|
+
ticketInsurancePrice: 0,
|
|
246
|
+
ticketInsurancePricePerUnit: 0,
|
|
247
|
+
smsNotification: false,
|
|
248
|
+
smsNotificationPrice: 0,
|
|
215
249
|
iframeCampaignId: undefined,
|
|
216
|
-
promoCode: null,
|
|
217
250
|
promoCodes: [],
|
|
218
251
|
products: {},
|
|
219
252
|
shipping: {
|
|
@@ -268,14 +301,41 @@ const TicketForm: React.FC<Props> = ({
|
|
|
268
301
|
// }
|
|
269
302
|
// return true;
|
|
270
303
|
// }),
|
|
271
|
-
shipping: Yup.object()
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
304
|
+
shipping: Yup.object()
|
|
305
|
+
.shape({
|
|
306
|
+
shippingMethodId: Yup.number().nullable(),
|
|
307
|
+
branchId: Yup.string().nullable(),
|
|
308
|
+
price: Yup.number(),
|
|
309
|
+
})
|
|
310
|
+
.test('shipping-method-required', t('form.validation.required'), function (value) {
|
|
311
|
+
if (!event.hasMerchandise) {
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
const formValues = this.parent as ITicketForm;
|
|
316
|
+
const hasProducts = Object.values(formValues.products ?? {}).some((arr) => arr.length > 0);
|
|
317
|
+
const allTickets = Object.values(formValues.tickets ?? {}).flat();
|
|
318
|
+
const hasTicketProducts = allTickets.some((ticket) => (ticket.products?.length ?? 0) > 0);
|
|
319
|
+
const requiresShipping = hasProducts || hasTicketProducts;
|
|
320
|
+
|
|
321
|
+
if (!requiresShipping) {
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (value?.shippingMethodId !== null && value?.shippingMethodId !== undefined) {
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return this.createError({
|
|
330
|
+
path: 'shipping.shippingMethodId',
|
|
331
|
+
message: t('form.validation.required'),
|
|
332
|
+
});
|
|
333
|
+
}),
|
|
276
334
|
paymentMethodId: Yup.number().nullable().required(t('form.validation.required')),
|
|
277
335
|
paymentMethodOptionId: Yup.number().nullable(),
|
|
278
336
|
termsAndConditions: Yup.boolean().isTrue(t('form.validation.terms_and_conditions')),
|
|
337
|
+
ticketInsurance: Yup.boolean(),
|
|
338
|
+
smsNotification: Yup.boolean(),
|
|
279
339
|
extraFields: Yup.array().of(
|
|
280
340
|
Yup.object().shape({
|
|
281
341
|
value: Yup.string().test('is-required', function (value) {
|
|
@@ -298,15 +358,11 @@ const TicketForm: React.FC<Props> = ({
|
|
|
298
358
|
defaultValues,
|
|
299
359
|
});
|
|
300
360
|
const values = methods.watch();
|
|
361
|
+
const cartItemCount = getCartUniqueItemCount(values);
|
|
362
|
+
const onInvalid = useScrollToFirstError(methods);
|
|
301
363
|
|
|
302
364
|
const onSubmit = async (values: ITicketForm) => {
|
|
303
|
-
|
|
304
|
-
if (
|
|
305
|
-
allTickets.length === 1 &&
|
|
306
|
-
!allTickets[0].releaseId &&
|
|
307
|
-
!allTickets[0].quantity &&
|
|
308
|
-
!values.products.length
|
|
309
|
-
) {
|
|
365
|
+
if (cartItemCount <= 0) {
|
|
310
366
|
showSnackbar(t('form.validation.count_tickets_or_products'), {
|
|
311
367
|
variant: 'error',
|
|
312
368
|
});
|
|
@@ -318,6 +374,7 @@ const TicketForm: React.FC<Props> = ({
|
|
|
318
374
|
} else {
|
|
319
375
|
try {
|
|
320
376
|
const data: ITicketBody = cloneObject(values);
|
|
377
|
+
data.paymentMethodId = Number(values.paymentMethodId);
|
|
321
378
|
data.promoCodeIds = values.promoCodes?.map((item) => item.id);
|
|
322
379
|
const urlParams = new URLSearchParams(window.location.search);
|
|
323
380
|
const iframeCallback = urlParams.get('callback');
|
|
@@ -333,12 +390,15 @@ const TicketForm: React.FC<Props> = ({
|
|
|
333
390
|
itemName: item.itemName,
|
|
334
391
|
products: item.products,
|
|
335
392
|
extraFields: item.extraFields,
|
|
393
|
+
eventTimeslotId: item.eventTimeslotId,
|
|
394
|
+
location: item.location,
|
|
336
395
|
}));
|
|
337
396
|
return acc;
|
|
338
397
|
},
|
|
339
398
|
{} as Record<number, ITicketFormTicket[]>
|
|
340
399
|
);
|
|
341
400
|
const { data: orderData } = await postOrder(data);
|
|
401
|
+
localStorage.removeItem('cartToken');
|
|
342
402
|
const items = [
|
|
343
403
|
...orderData.tickets.map((ticket) => ({
|
|
344
404
|
item_id: ticket.number,
|
|
@@ -432,7 +492,7 @@ const TicketForm: React.FC<Props> = ({
|
|
|
432
492
|
}, [window.location.search]);
|
|
433
493
|
|
|
434
494
|
useEffect(() => {
|
|
435
|
-
const subscription = methods.watch((value
|
|
495
|
+
const subscription = methods.watch((value) => {
|
|
436
496
|
if (
|
|
437
497
|
JSON.stringify(defaultValues) !== JSON.stringify(value) &&
|
|
438
498
|
!hasFiredBeginCheckout.current
|
|
@@ -459,7 +519,7 @@ const TicketForm: React.FC<Props> = ({
|
|
|
459
519
|
useEffect(() => {
|
|
460
520
|
if (hasGopayId || isPaying || paymentRedirect) {
|
|
461
521
|
if (options?.autoscrollAfterViewChange) {
|
|
462
|
-
const orderForm = document.getElementById(
|
|
522
|
+
const orderForm = document.getElementById(EVENTLOOK_ORDER_FORM_CONTAINER_ID);
|
|
463
523
|
if (orderForm) {
|
|
464
524
|
orderForm.scrollIntoView({ behavior: 'smooth' });
|
|
465
525
|
}
|
|
@@ -471,9 +531,9 @@ const TicketForm: React.FC<Props> = ({
|
|
|
471
531
|
return <ReleaseCountdown event={event} setShowReleaseDate={setShowReleaseDate} />;
|
|
472
532
|
|
|
473
533
|
return (
|
|
474
|
-
<Box id={
|
|
534
|
+
<Box id={EVENTLOOK_ORDER_FORM_CONTAINER_ID}>
|
|
475
535
|
{hasGopayId ? (
|
|
476
|
-
<PaymentSuccess setIsPaying={setIsPaying} isIframe={isIframe} />
|
|
536
|
+
<PaymentSuccess setIsPaying={setIsPaying} isIframe={isIframe} pixels={pixels} />
|
|
477
537
|
) : isPaying ? (
|
|
478
538
|
<PaymentPending />
|
|
479
539
|
) : paymentRedirect ? (
|
|
@@ -484,33 +544,68 @@ const TicketForm: React.FC<Props> = ({
|
|
|
484
544
|
isInline={isInline}
|
|
485
545
|
/>
|
|
486
546
|
) : (
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
547
|
+
<FormProvider
|
|
548
|
+
methods={methods}
|
|
549
|
+
// @ts-ignore
|
|
550
|
+
onSubmit={methods.handleSubmit(onSubmit, onInvalid)}
|
|
551
|
+
formId={EVENTLOOK_ORDER_FORM_ID}
|
|
552
|
+
>
|
|
553
|
+
<Stack
|
|
490
554
|
className="overview-card__event-info"
|
|
491
555
|
display={{ md: 'none' }}
|
|
492
|
-
variant="h4"
|
|
493
556
|
sx={{
|
|
494
557
|
mb: 2,
|
|
495
558
|
}}
|
|
496
559
|
>
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
560
|
+
<Typography variant="h3" component="h1">
|
|
561
|
+
{event.name}
|
|
562
|
+
</Typography>
|
|
563
|
+
<Typography variant="h5" component="h2">
|
|
564
|
+
{dayjs(event.startDate).format('DD.MM.YYYY HH:mm')}
|
|
565
|
+
</Typography>
|
|
566
|
+
<Typography variant="body2" mt={1}>
|
|
567
|
+
{getPlaceAsString(event.place)}
|
|
568
|
+
</Typography>
|
|
569
|
+
{headerSlot ? <>{headerSlot}</> : null}
|
|
570
|
+
</Stack>
|
|
571
|
+
<Grid
|
|
572
|
+
container
|
|
573
|
+
spacing={2}
|
|
574
|
+
sx={{
|
|
575
|
+
pb: {
|
|
576
|
+
xs: isPaymentOverviewDrawerOpen ? cartItemCount * 4 + 18 : 0,
|
|
577
|
+
md: 0,
|
|
578
|
+
},
|
|
579
|
+
}}
|
|
580
|
+
>
|
|
500
581
|
<Grid item xs={12} md={8}>
|
|
501
|
-
<Stepper
|
|
582
|
+
<Stepper
|
|
583
|
+
orientation="vertical"
|
|
584
|
+
sx={(theme) => ({
|
|
585
|
+
[theme.breakpoints.down('sm')]: {
|
|
586
|
+
'& .MuiStepContent-root': {
|
|
587
|
+
borderLeftWidth: 0,
|
|
588
|
+
paddingLeft: 0,
|
|
589
|
+
marginLeft: 0,
|
|
590
|
+
},
|
|
591
|
+
'& .MuiStepConnector-line': { borderLeftWidth: 0 },
|
|
592
|
+
},
|
|
593
|
+
})}
|
|
594
|
+
>
|
|
502
595
|
{event.type === EventType.RECURRING && (
|
|
503
596
|
<Step active>
|
|
504
597
|
<StepLabel>{t('event.tickets.stepper.6.title')}</StepLabel>
|
|
505
|
-
<StepContent>
|
|
598
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
506
599
|
<TimeslotSelection event={event} />
|
|
507
600
|
</StepContent>
|
|
508
601
|
</Step>
|
|
509
602
|
)}
|
|
510
603
|
<Step active>
|
|
511
604
|
<StepLabel>{t('event.tickets.stepper.1.title')}</StepLabel>
|
|
512
|
-
<StepContent>
|
|
513
|
-
{event.
|
|
605
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
606
|
+
{event.mapId && seatingIframeUrl ? (
|
|
607
|
+
<TicketSelectionMap event={event} />
|
|
608
|
+
) : event.hasMerchandise ? (
|
|
514
609
|
<TicketWithMerchandiseSelection event={event} />
|
|
515
610
|
) : (
|
|
516
611
|
<TicketSelection event={event} />
|
|
@@ -520,7 +615,7 @@ const TicketForm: React.FC<Props> = ({
|
|
|
520
615
|
{event.hasMerchandise && eventProducts.length && (
|
|
521
616
|
<Step active>
|
|
522
617
|
<StepLabel>{t('event.tickets.stepper.4.title')}</StepLabel>
|
|
523
|
-
<StepContent>
|
|
618
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
524
619
|
<MerchandiseSelection
|
|
525
620
|
eventProducts={eventProducts}
|
|
526
621
|
eventId={event.id}
|
|
@@ -529,24 +624,30 @@ const TicketForm: React.FC<Props> = ({
|
|
|
529
624
|
</StepContent>
|
|
530
625
|
</Step>
|
|
531
626
|
)}
|
|
627
|
+
<Step active>
|
|
628
|
+
<StepLabel>{t('event.tickets.stepper.8.title')}</StepLabel>
|
|
629
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
630
|
+
<Services event={event} />
|
|
631
|
+
</StepContent>
|
|
632
|
+
</Step>
|
|
532
633
|
{event.children.length && (
|
|
533
634
|
<Step active>
|
|
534
635
|
<StepLabel>{t('event.tickets.stepper.7.title')}</StepLabel>
|
|
535
|
-
<StepContent>
|
|
636
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
536
637
|
<ChildEventSection events={event.children} />
|
|
537
638
|
</StepContent>
|
|
538
639
|
</Step>
|
|
539
640
|
)}
|
|
540
641
|
<Step active>
|
|
541
642
|
<StepLabel>{t('event.tickets.stepper.2.title')}</StepLabel>
|
|
542
|
-
<StepContent>
|
|
643
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
543
644
|
<ContactPerson event={event} />
|
|
544
645
|
</StepContent>
|
|
545
646
|
</Step>
|
|
546
647
|
{event.hasMerchandise && showShippingMethods() && (
|
|
547
648
|
<Step active>
|
|
548
649
|
<StepLabel>{t('event.tickets.stepper.5.title')}</StepLabel>
|
|
549
|
-
<StepContent>
|
|
650
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
550
651
|
<Shipping event={event} />
|
|
551
652
|
</StepContent>
|
|
552
653
|
</Step>
|
|
@@ -557,12 +658,17 @@ const TicketForm: React.FC<Props> = ({
|
|
|
557
658
|
`event.tickets.stepper.3.${values.isPaymentVerify ? 'title_verify' : 'title'}`
|
|
558
659
|
)}
|
|
559
660
|
</StepLabel>
|
|
560
|
-
<StepContent>
|
|
661
|
+
<StepContent sx={{ pr: { xs: 0 } }}>
|
|
561
662
|
<Payment event={event} />
|
|
562
663
|
</StepContent>
|
|
563
664
|
</Step>
|
|
564
665
|
</Stepper>
|
|
565
|
-
<Stack
|
|
666
|
+
<Stack
|
|
667
|
+
ref={termsAndConditionsRef}
|
|
668
|
+
mt={2}
|
|
669
|
+
ml={{ xs: 1, md: 4 }}
|
|
670
|
+
sx={{ scrollMarginBottom: { xs: 220, md: 0 } }}
|
|
671
|
+
>
|
|
566
672
|
<RHFCheckbox
|
|
567
673
|
name="termsAndConditions"
|
|
568
674
|
label={
|
|
@@ -582,15 +688,28 @@ const TicketForm: React.FC<Props> = ({
|
|
|
582
688
|
/>
|
|
583
689
|
</Stack>
|
|
584
690
|
</Grid>
|
|
585
|
-
<Grid item xs={12}
|
|
586
|
-
<
|
|
691
|
+
<Grid item xs={12} sx={{ display: { xs: 'block', md: 'none' } }}>
|
|
692
|
+
<Divider sx={{ borderStyle: 'dashed' }} />
|
|
693
|
+
</Grid>
|
|
694
|
+
<Grid item xs={12} md={4} mt={{ xs: 0, md: 0 }}>
|
|
695
|
+
<PaymentOverviewBox event={event} withoutPadding />
|
|
587
696
|
</Grid>
|
|
588
697
|
</Grid>
|
|
698
|
+
|
|
699
|
+
{!isIframe && (
|
|
700
|
+
<PaymentOverviewDrawer
|
|
701
|
+
event={event}
|
|
702
|
+
totalPrice={values.total}
|
|
703
|
+
termsAndConditionsRef={termsAndConditionsRef}
|
|
704
|
+
onOpenChange={setIsPaymentOverviewDrawerOpen}
|
|
705
|
+
/>
|
|
706
|
+
)}
|
|
707
|
+
|
|
589
708
|
<EmailConfirmation
|
|
590
709
|
open={formStep === 2 && !isIframe}
|
|
591
710
|
onClose={() => setFormStep(1)}
|
|
592
711
|
// @ts-ignore
|
|
593
|
-
onConfirm={methods.handleSubmit(onSubmit)}
|
|
712
|
+
onConfirm={methods.handleSubmit(onSubmit, onInvalid)}
|
|
594
713
|
/>
|
|
595
714
|
</FormProvider>
|
|
596
715
|
)}
|
|
@@ -599,7 +718,7 @@ const TicketForm: React.FC<Props> = ({
|
|
|
599
718
|
};
|
|
600
719
|
|
|
601
720
|
const CustomLink: React.FC<PropsWithChildren<LinkProps>> = ({ href = '', children, ...other }) => (
|
|
602
|
-
<Link href={href} {...other}>
|
|
721
|
+
<Link href={href} {...other} sx={{ color: 'inherit', textDecoration: 'underline' }}>
|
|
603
722
|
{children}
|
|
604
723
|
</Link>
|
|
605
724
|
);
|
|
@@ -8,7 +8,9 @@ import useGlobal from '@hooks/useGlobal.ts';
|
|
|
8
8
|
|
|
9
9
|
interface Props {
|
|
10
10
|
extraField: IEventExtraField;
|
|
11
|
-
name:
|
|
11
|
+
name:
|
|
12
|
+
| `extraFields.${number}.value`
|
|
13
|
+
| `tickets.${number}.${number}.extraFields.${number}.${number}.value`;
|
|
12
14
|
size?: 'small' | 'medium';
|
|
13
15
|
}
|
|
14
16
|
|
|
@@ -78,7 +78,7 @@ const ReleaseExtraFields: React.FC<Props> = ({ release, eventId, releaseIndex, q
|
|
|
78
78
|
<Grid key={field.id} item xs={12} md={6}>
|
|
79
79
|
<ExtraField
|
|
80
80
|
extraField={field}
|
|
81
|
-
name={`tickets.${releaseIndex}.extraFields.${rowIdx}.${colIdx}.value`}
|
|
81
|
+
name={`tickets.${eventId}.${releaseIndex}.extraFields.${rowIdx}.${colIdx}.value`}
|
|
82
82
|
size="small"
|
|
83
83
|
/>
|
|
84
84
|
</Grid>
|
package/src/form/index.tsx
CHANGED
|
@@ -5,7 +5,7 @@ import 'dayjs/locale/es';
|
|
|
5
5
|
import 'dayjs/locale/uk';
|
|
6
6
|
import 'dayjs/locale/sk';
|
|
7
7
|
|
|
8
|
-
import React, { useEffect } from 'react';
|
|
8
|
+
import React, { useEffect, ReactNode } from 'react';
|
|
9
9
|
import TicketForm from '@form/TicketForm';
|
|
10
10
|
import { GlobalProvider } from '@context/GlobalContext';
|
|
11
11
|
import api from '@utils/axios';
|
|
@@ -27,11 +27,13 @@ import { csCZ, enUS, ukUA, esES, deDE, skSK } from '@mui/x-date-pickers/locales'
|
|
|
27
27
|
export interface OrderFormProps {
|
|
28
28
|
eventSlug: string;
|
|
29
29
|
apiUrl: string;
|
|
30
|
+
seatingIframeUrl?: string;
|
|
30
31
|
callbacks: IGlobalContext['callbacks'];
|
|
31
32
|
links: IGlobalContext['links'];
|
|
32
33
|
lang?: Languages;
|
|
33
34
|
slots?: {
|
|
34
35
|
showSnackbar: IGlobalContext['showSnackbar'];
|
|
36
|
+
headerSlot?: ReactNode;
|
|
35
37
|
};
|
|
36
38
|
user?: IUser;
|
|
37
39
|
selectedReleaseId?: number;
|
|
@@ -42,6 +44,7 @@ export interface OrderFormProps {
|
|
|
42
44
|
const ClientRender: React.FC<OrderFormProps> = ({
|
|
43
45
|
eventSlug,
|
|
44
46
|
apiUrl,
|
|
47
|
+
seatingIframeUrl,
|
|
45
48
|
lang,
|
|
46
49
|
slots,
|
|
47
50
|
options,
|
|
@@ -100,6 +103,7 @@ const ClientRender: React.FC<OrderFormProps> = ({
|
|
|
100
103
|
links={links}
|
|
101
104
|
options={options}
|
|
102
105
|
content={content}
|
|
106
|
+
seatingIframeUrl={seatingIframeUrl}
|
|
103
107
|
>
|
|
104
108
|
{!data || !!error ? (
|
|
105
109
|
<TicketFormSkeleton />
|
|
@@ -109,6 +113,7 @@ const ClientRender: React.FC<OrderFormProps> = ({
|
|
|
109
113
|
hasGopayIdSsr={options?.hasGopayId || false}
|
|
110
114
|
isIframe={options?.isIframe}
|
|
111
115
|
selectedReleaseId={selectedReleaseId}
|
|
116
|
+
headerSlot={slots?.headerSlot}
|
|
112
117
|
/>
|
|
113
118
|
)}
|
|
114
119
|
</GlobalProvider>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Grid } from '@mui/material';
|
|
3
|
+
import { IEventProduct } from '@utils/types/event-product.type';
|
|
4
|
+
import CustomSkeleton from '@components/CustomSkeleton';
|
|
5
|
+
import MerchandiseSlider from './MerchandiseSlider';
|
|
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
|
+
isLoading ? (
|
|
15
|
+
[...Array(3)].map((item) => (
|
|
16
|
+
<Grid key={item} item xs={12} md={4}>
|
|
17
|
+
<CustomSkeleton height={334} />
|
|
18
|
+
</Grid>
|
|
19
|
+
))
|
|
20
|
+
) : (
|
|
21
|
+
<MerchandiseSlider eventProducts={eventProducts} eventId={eventId} />
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export default MerchandiseSelection;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import useEmblaCarousel from 'embla-carousel-react';
|
|
3
|
+
import { Box, SxProps } from '@mui/material';
|
|
4
|
+
import { useTheme } from '@mui/material/styles';
|
|
5
|
+
import { IEventProduct } from '@utils/types/event-product.type';
|
|
6
|
+
import ProductCard from '@form/product/ProductCard';
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
sx?: SxProps;
|
|
10
|
+
eventProducts: IEventProduct[];
|
|
11
|
+
eventId: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const MerchandiseSlider: React.FC<Props> = ({ eventProducts, eventId, sx }) => {
|
|
15
|
+
const [emblaRef] = useEmblaCarousel();
|
|
16
|
+
const theme = useTheme();
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<Box sx={sx}>
|
|
20
|
+
<Box
|
|
21
|
+
sx={{
|
|
22
|
+
overflow: 'hidden',
|
|
23
|
+
padding: theme.spacing(8, 3),
|
|
24
|
+
margin: theme.spacing(-8, -2.5),
|
|
25
|
+
}}
|
|
26
|
+
>
|
|
27
|
+
<Box ref={emblaRef} className="embla" sx={{ overflow: 'visible' }}>
|
|
28
|
+
<Box
|
|
29
|
+
className="embla__container"
|
|
30
|
+
sx={{
|
|
31
|
+
display: 'flex',
|
|
32
|
+
}}
|
|
33
|
+
>
|
|
34
|
+
{eventProducts.map((eventProduct, index) => (
|
|
35
|
+
<Box
|
|
36
|
+
key={`event-slide-${index}`}
|
|
37
|
+
className="embla__slide"
|
|
38
|
+
sx={{
|
|
39
|
+
flex: `0 0 ${eventProducts.length > 1 ? '78%' : '100%'}`,
|
|
40
|
+
minWidth: 0,
|
|
41
|
+
maxWidth: 220,
|
|
42
|
+
margin: `0 ${theme.spacing(0.5)}`,
|
|
43
|
+
transition: 'opacity 0.2s ease',
|
|
44
|
+
[theme.breakpoints.up('sm')]: {
|
|
45
|
+
flex: '0 0 43%',
|
|
46
|
+
},
|
|
47
|
+
[theme.breakpoints.up('md')]: {
|
|
48
|
+
flex: '0 0 33.3333%',
|
|
49
|
+
},
|
|
50
|
+
}}
|
|
51
|
+
>
|
|
52
|
+
<ProductCard eventProduct={eventProduct} eventId={eventId} isOnlyMerchandise />
|
|
53
|
+
</Box>
|
|
54
|
+
))}
|
|
55
|
+
</Box>
|
|
56
|
+
</Box>
|
|
57
|
+
</Box>
|
|
58
|
+
</Box>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default MerchandiseSlider;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Box, Stack,
|
|
3
|
-
import {
|
|
4
|
-
import { fCurrency, fPercent } from '@utils/formatNumber';
|
|
5
|
-
import { Iconify } from '@components/iconify';
|
|
2
|
+
import { Box, Stack, Typography } from '@mui/material';
|
|
3
|
+
import { fCurrency } from '@utils/formatNumber';
|
|
6
4
|
import { IEvent } from '@utils/types/event.type';
|
|
7
|
-
import useResponsive from '@hooks/useResponsive';
|
|
8
5
|
import { useFormContext } from 'react-hook-form';
|
|
9
6
|
import { ITicketForm } from '@utils/types/ticket.type';
|
|
10
7
|
import useGlobal from '@hooks/useGlobal.ts';
|
|
@@ -16,14 +13,13 @@ interface Props {
|
|
|
16
13
|
|
|
17
14
|
const FeeBox: React.FC<Props> = ({ event, align = 'left' }) => {
|
|
18
15
|
const { t, lang } = useGlobal();
|
|
19
|
-
const xs = useResponsive('only', 'xs');
|
|
20
16
|
const { watch } = useFormContext<ITicketForm>();
|
|
21
17
|
const values = watch();
|
|
22
18
|
const isRight = align === 'right';
|
|
23
19
|
|
|
24
20
|
return (
|
|
25
21
|
<Box mb={1} textAlign={isRight ? 'right' : undefined}>
|
|
26
|
-
{values.
|
|
22
|
+
{values.promoCodes.length > 0 && (
|
|
27
23
|
<Stack
|
|
28
24
|
direction="row"
|
|
29
25
|
justifyContent={isRight ? 'flex-end' : 'space-between'}
|
|
@@ -45,35 +41,11 @@ const FeeBox: React.FC<Props> = ({ event, align = 'left' }) => {
|
|
|
45
41
|
alignItems="center"
|
|
46
42
|
spacing={1}
|
|
47
43
|
>
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
fee: fCurrency(values.totalFee ?? 0, lang, event.currency),
|
|
52
|
-
})}
|
|
53
|
-
placement={xs ? 'top' : 'left'}
|
|
54
|
-
arrow
|
|
55
|
-
sx={{ cursor: 'help' }}
|
|
56
|
-
>
|
|
57
|
-
<Stack alignItems="center">
|
|
58
|
-
<Iconify icon="carbon:information-filled" />
|
|
59
|
-
</Stack>
|
|
60
|
-
</Tooltip>
|
|
61
|
-
<Typography variant="subtitle1" sx={{ textAlign: 'right' }}>
|
|
62
|
-
{t('form.labels.total')}:
|
|
63
|
-
</Typography>
|
|
64
|
-
</Stack>
|
|
44
|
+
<Typography variant="subtitle1" sx={{ textAlign: 'right' }}>
|
|
45
|
+
{t('form.labels.total')}:
|
|
46
|
+
</Typography>
|
|
65
47
|
<Typography variant="subtitle1">{fCurrency(values.total, lang, event.currency)}</Typography>
|
|
66
48
|
</Stack>
|
|
67
|
-
{!!values.totalFee && (
|
|
68
|
-
<Typography
|
|
69
|
-
variant="caption"
|
|
70
|
-
sx={{
|
|
71
|
-
color: (theme) => theme.palette.grey.A700,
|
|
72
|
-
}}
|
|
73
|
-
>
|
|
74
|
-
{t('form.labels.with_fee')}
|
|
75
|
-
</Typography>
|
|
76
|
-
)}
|
|
77
49
|
</Box>
|
|
78
50
|
);
|
|
79
51
|
};
|