@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.
Files changed (447) hide show
  1. package/.env.example +1 -0
  2. package/dev-frontend.sh +32 -0
  3. package/dist/cjs/_virtual/_commonjsHelpers.js +4 -2
  4. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -1
  5. package/dist/cjs/_virtual/index.js +2 -2
  6. package/dist/cjs/_virtual/index2.js +2 -2
  7. package/dist/cjs/_virtual/index3.js +2 -2
  8. package/dist/cjs/components/Image.js +29 -14
  9. package/dist/cjs/components/Image.js.map +1 -1
  10. package/dist/cjs/components/hook-form/FormProvider.js +2 -2
  11. package/dist/cjs/components/hook-form/FormProvider.js.map +1 -1
  12. package/dist/cjs/context/GlobalContext.js +2 -1
  13. package/dist/cjs/context/GlobalContext.js.map +1 -1
  14. package/dist/cjs/form/ChildEventDialog.js +3 -3
  15. package/dist/cjs/form/ChildEventDialog.js.map +1 -1
  16. package/dist/cjs/form/ContactPerson.js +1 -1
  17. package/dist/cjs/form/ContactPerson.js.map +1 -1
  18. package/dist/cjs/form/Payment.js +2 -4
  19. package/dist/cjs/form/Payment.js.map +1 -1
  20. package/dist/cjs/form/PaymentOverviewBox.js +104 -115
  21. package/dist/cjs/form/PaymentOverviewBox.js.map +1 -1
  22. package/dist/cjs/form/PaymentOverviewDrawer.js +317 -0
  23. package/dist/cjs/form/PaymentOverviewDrawer.js.map +1 -0
  24. package/dist/cjs/form/PaymentPending.js +15 -3
  25. package/dist/cjs/form/PaymentPending.js.map +1 -1
  26. package/dist/cjs/form/PaymentSuccess.js +39 -2
  27. package/dist/cjs/form/PaymentSuccess.js.map +1 -1
  28. package/dist/cjs/form/ReleaseWithMerchandise.js +57 -48
  29. package/dist/cjs/form/ReleaseWithMerchandise.js.map +1 -1
  30. package/dist/cjs/form/Shipping.js +33 -27
  31. package/dist/cjs/form/Shipping.js.map +1 -1
  32. package/dist/cjs/form/TicketForm.js +102 -35
  33. package/dist/cjs/form/TicketForm.js.map +1 -1
  34. package/dist/cjs/form/TicketQuantityControl.js +51 -0
  35. package/dist/cjs/form/TicketQuantityControl.js.map +1 -0
  36. package/dist/cjs/form/TicketSelection.js +29 -11
  37. package/dist/cjs/form/TicketSelection.js.map +1 -1
  38. package/dist/cjs/form/TicketSelectionMap.js +67 -0
  39. package/dist/cjs/form/TicketSelectionMap.js.map +1 -0
  40. package/dist/cjs/form/TicketSelectionMobile.js +98 -0
  41. package/dist/cjs/form/TicketSelectionMobile.js.map +1 -0
  42. package/dist/cjs/form/TicketWithMerchandiseSelection.js +46 -10
  43. package/dist/cjs/form/TicketWithMerchandiseSelection.js.map +1 -1
  44. package/dist/cjs/form/extra-field/ExtraField.js.map +1 -1
  45. package/dist/cjs/form/extra-field/ReleaseExtraFields.js +1 -1
  46. package/dist/cjs/form/extra-field/ReleaseExtraFields.js.map +1 -1
  47. package/dist/cjs/form/index.js +2 -2
  48. package/dist/cjs/form/index.js.map +1 -1
  49. package/dist/cjs/form/merchandise/MerchandiseSelection.js +14 -0
  50. package/dist/cjs/form/merchandise/MerchandiseSelection.js.map +1 -0
  51. package/dist/cjs/form/merchandise/MerchandiseSlider.js +40 -0
  52. package/dist/cjs/form/merchandise/MerchandiseSlider.js.map +1 -0
  53. package/dist/cjs/form/merchendise/MerchandiseSelection.js +19 -0
  54. package/dist/cjs/form/merchendise/MerchandiseSelection.js.map +1 -0
  55. package/dist/cjs/form/merchendise/MerchandiseSlider.js +75 -0
  56. package/dist/cjs/form/merchendise/MerchandiseSlider.js.map +1 -0
  57. package/dist/cjs/form/payment/FeeBox.js +5 -17
  58. package/dist/cjs/form/payment/FeeBox.js.map +1 -1
  59. package/dist/cjs/form/payment/PaymentOverviewCheckbox.js +52 -0
  60. package/dist/cjs/form/payment/PaymentOverviewCheckbox.js.map +1 -0
  61. package/dist/cjs/form/product/ProductCard.js +147 -36
  62. package/dist/cjs/form/product/ProductCard.js.map +1 -1
  63. package/dist/cjs/form/product/ProductVariantsDialog.js +182 -97
  64. package/dist/cjs/form/product/ProductVariantsDialog.js.map +1 -1
  65. package/dist/cjs/form/services/index.js +116 -0
  66. package/dist/cjs/form/services/index.js.map +1 -0
  67. package/dist/cjs/form/style.js +13 -4
  68. package/dist/cjs/form/style.js.map +1 -1
  69. package/dist/cjs/form/tickets/ReleaseDescription.js +23 -0
  70. package/dist/cjs/form/tickets/ReleaseDescription.js.map +1 -0
  71. package/dist/cjs/form/tickets/ReleaseWithMerchandise.js +165 -0
  72. package/dist/cjs/form/tickets/ReleaseWithMerchandise.js.map +1 -0
  73. package/dist/cjs/form/tickets/TicketQuantityControl.js +54 -0
  74. package/dist/cjs/form/tickets/TicketQuantityControl.js.map +1 -0
  75. package/dist/cjs/form/tickets/TicketSelection.js +162 -0
  76. package/dist/cjs/form/tickets/TicketSelection.js.map +1 -0
  77. package/dist/cjs/form/tickets/TicketSelectionMap.js +79 -0
  78. package/dist/cjs/form/tickets/TicketSelectionMap.js.map +1 -0
  79. package/dist/cjs/form/tickets/TicketSelectionMobile.js +100 -0
  80. package/dist/cjs/form/tickets/TicketSelectionMobile.js.map +1 -0
  81. package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js +127 -0
  82. package/dist/cjs/form/tickets/TicketWithMerchandiseSelection.js.map +1 -0
  83. package/dist/cjs/hooks/useConsentScrollOnDrawerOpen.js +59 -0
  84. package/dist/cjs/hooks/useConsentScrollOnDrawerOpen.js.map +1 -0
  85. package/dist/cjs/hooks/useScrollToFirstError.js +73 -0
  86. package/dist/cjs/hooks/useScrollToFirstError.js.map +1 -0
  87. package/dist/cjs/locales/cs.js +47 -2
  88. package/dist/cjs/locales/cs.js.map +1 -1
  89. package/dist/cjs/locales/en.js +47 -1
  90. package/dist/cjs/locales/en.js.map +1 -1
  91. package/dist/cjs/locales/es.js +47 -1
  92. package/dist/cjs/locales/es.js.map +1 -1
  93. package/dist/cjs/locales/pl.js +47 -1
  94. package/dist/cjs/locales/pl.js.map +1 -1
  95. package/dist/cjs/locales/sk.js +47 -1
  96. package/dist/cjs/locales/sk.js.map +1 -1
  97. package/dist/cjs/locales/uk.js +47 -1
  98. package/dist/cjs/locales/uk.js.map +1 -1
  99. package/dist/cjs/modules/shopping-cart.js +10 -9
  100. package/dist/cjs/modules/shopping-cart.js.map +1 -1
  101. package/dist/cjs/utils/data/global.js +2 -0
  102. package/dist/cjs/utils/data/global.js.map +1 -1
  103. package/dist/cjs/utils/data/ticket.js +6 -0
  104. package/dist/cjs/utils/data/ticket.js.map +1 -0
  105. package/dist/cjs/utils/gtm.js +20 -0
  106. package/dist/cjs/utils/gtm.js.map +1 -1
  107. package/dist/esm/_virtual/_commonjsHelpers.js +4 -2
  108. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -1
  109. package/dist/esm/_virtual/index.js +2 -2
  110. package/dist/esm/_virtual/index2.js +2 -2
  111. package/dist/esm/_virtual/index3.js +2 -2
  112. package/dist/esm/components/Image.js +30 -15
  113. package/dist/esm/components/Image.js.map +1 -1
  114. package/dist/esm/components/hook-form/FormProvider.js +2 -2
  115. package/dist/esm/components/hook-form/FormProvider.js.map +1 -1
  116. package/dist/esm/context/GlobalContext.js +2 -1
  117. package/dist/esm/context/GlobalContext.js.map +1 -1
  118. package/dist/esm/form/ChildEventDialog.js +3 -3
  119. package/dist/esm/form/ChildEventDialog.js.map +1 -1
  120. package/dist/esm/form/ContactPerson.js +1 -1
  121. package/dist/esm/form/ContactPerson.js.map +1 -1
  122. package/dist/esm/form/Payment.js +2 -4
  123. package/dist/esm/form/Payment.js.map +1 -1
  124. package/dist/esm/form/PaymentOverviewBox.js +107 -118
  125. package/dist/esm/form/PaymentOverviewBox.js.map +1 -1
  126. package/dist/esm/form/PaymentOverviewDrawer.js +313 -0
  127. package/dist/esm/form/PaymentOverviewDrawer.js.map +1 -0
  128. package/dist/esm/form/PaymentPending.js +16 -4
  129. package/dist/esm/form/PaymentPending.js.map +1 -1
  130. package/dist/esm/form/PaymentSuccess.js +39 -2
  131. package/dist/esm/form/PaymentSuccess.js.map +1 -1
  132. package/dist/esm/form/ReleaseWithMerchandise.js +58 -49
  133. package/dist/esm/form/ReleaseWithMerchandise.js.map +1 -1
  134. package/dist/esm/form/Shipping.js +33 -27
  135. package/dist/esm/form/Shipping.js.map +1 -1
  136. package/dist/esm/form/TicketForm.js +104 -37
  137. package/dist/esm/form/TicketForm.js.map +1 -1
  138. package/dist/esm/form/TicketQuantityControl.js +47 -0
  139. package/dist/esm/form/TicketQuantityControl.js.map +1 -0
  140. package/dist/esm/form/TicketSelection.js +30 -12
  141. package/dist/esm/form/TicketSelection.js.map +1 -1
  142. package/dist/esm/form/TicketSelectionMap.js +63 -0
  143. package/dist/esm/form/TicketSelectionMap.js.map +1 -0
  144. package/dist/esm/form/TicketSelectionMobile.js +94 -0
  145. package/dist/esm/form/TicketSelectionMobile.js.map +1 -0
  146. package/dist/esm/form/TicketWithMerchandiseSelection.js +48 -12
  147. package/dist/esm/form/TicketWithMerchandiseSelection.js.map +1 -1
  148. package/dist/esm/form/extra-field/ExtraField.js.map +1 -1
  149. package/dist/esm/form/extra-field/ReleaseExtraFields.js +1 -1
  150. package/dist/esm/form/extra-field/ReleaseExtraFields.js.map +1 -1
  151. package/dist/esm/form/index.js +2 -2
  152. package/dist/esm/form/index.js.map +1 -1
  153. package/dist/esm/form/merchandise/MerchandiseSelection.js +10 -0
  154. package/dist/esm/form/merchandise/MerchandiseSelection.js.map +1 -0
  155. package/dist/esm/form/merchandise/MerchandiseSlider.js +36 -0
  156. package/dist/esm/form/merchandise/MerchandiseSlider.js.map +1 -0
  157. package/dist/esm/form/merchendise/MerchandiseSelection.js +15 -0
  158. package/dist/esm/form/merchendise/MerchandiseSelection.js.map +1 -0
  159. package/dist/esm/form/merchendise/MerchandiseSlider.js +71 -0
  160. package/dist/esm/form/merchendise/MerchandiseSlider.js.map +1 -0
  161. package/dist/esm/form/payment/FeeBox.js +6 -18
  162. package/dist/esm/form/payment/FeeBox.js.map +1 -1
  163. package/dist/esm/form/payment/PaymentOverviewCheckbox.js +48 -0
  164. package/dist/esm/form/payment/PaymentOverviewCheckbox.js.map +1 -0
  165. package/dist/esm/form/product/ProductCard.js +148 -37
  166. package/dist/esm/form/product/ProductCard.js.map +1 -1
  167. package/dist/esm/form/product/ProductVariantsDialog.js +184 -99
  168. package/dist/esm/form/product/ProductVariantsDialog.js.map +1 -1
  169. package/dist/esm/form/services/index.js +112 -0
  170. package/dist/esm/form/services/index.js.map +1 -0
  171. package/dist/esm/form/style.js +13 -4
  172. package/dist/esm/form/style.js.map +1 -1
  173. package/dist/esm/form/tickets/ReleaseDescription.js +19 -0
  174. package/dist/esm/form/tickets/ReleaseDescription.js.map +1 -0
  175. package/dist/esm/form/tickets/ReleaseWithMerchandise.js +161 -0
  176. package/dist/esm/form/tickets/ReleaseWithMerchandise.js.map +1 -0
  177. package/dist/esm/form/tickets/TicketQuantityControl.js +50 -0
  178. package/dist/esm/form/tickets/TicketQuantityControl.js.map +1 -0
  179. package/dist/esm/form/tickets/TicketSelection.js +158 -0
  180. package/dist/esm/form/tickets/TicketSelection.js.map +1 -0
  181. package/dist/esm/form/tickets/TicketSelectionMap.js +75 -0
  182. package/dist/esm/form/tickets/TicketSelectionMap.js.map +1 -0
  183. package/dist/esm/form/tickets/TicketSelectionMobile.js +96 -0
  184. package/dist/esm/form/tickets/TicketSelectionMobile.js.map +1 -0
  185. package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js +123 -0
  186. package/dist/esm/form/tickets/TicketWithMerchandiseSelection.js.map +1 -0
  187. package/dist/esm/hooks/useConsentScrollOnDrawerOpen.js +55 -0
  188. package/dist/esm/hooks/useConsentScrollOnDrawerOpen.js.map +1 -0
  189. package/dist/esm/hooks/useScrollToFirstError.js +69 -0
  190. package/dist/esm/hooks/useScrollToFirstError.js.map +1 -0
  191. package/dist/esm/locales/cs.js +47 -2
  192. package/dist/esm/locales/cs.js.map +1 -1
  193. package/dist/esm/locales/en.js +47 -1
  194. package/dist/esm/locales/en.js.map +1 -1
  195. package/dist/esm/locales/es.js +47 -1
  196. package/dist/esm/locales/es.js.map +1 -1
  197. package/dist/esm/locales/pl.js +47 -1
  198. package/dist/esm/locales/pl.js.map +1 -1
  199. package/dist/esm/locales/sk.js +47 -1
  200. package/dist/esm/locales/sk.js.map +1 -1
  201. package/dist/esm/locales/uk.js +47 -1
  202. package/dist/esm/locales/uk.js.map +1 -1
  203. package/dist/esm/modules/shopping-cart.js +9 -8
  204. package/dist/esm/modules/shopping-cart.js.map +1 -1
  205. package/dist/esm/utils/data/global.js +2 -1
  206. package/dist/esm/utils/data/global.js.map +1 -1
  207. package/dist/esm/utils/data/ticket.js +4 -0
  208. package/dist/esm/utils/data/ticket.js.map +1 -0
  209. package/dist/esm/utils/gtm.js +19 -1
  210. package/dist/esm/utils/gtm.js.map +1 -1
  211. package/dist/types/context/GlobalContext.d.ts +2 -1
  212. package/dist/types/form/PaymentOverviewDrawer.d.ts +8 -0
  213. package/dist/types/form/PaymentSuccess.d.ts +2 -0
  214. package/dist/types/form/TicketSelectionMap.d.ts +7 -0
  215. package/dist/types/form/extra-field/ExtraField.d.ts +1 -1
  216. package/dist/types/form/index.d.ts +1 -0
  217. package/dist/types/form/merchendise/MerchandiseSelection.d.ts +9 -0
  218. package/dist/types/form/merchendise/MerchandiseSlider.d.ts +10 -0
  219. package/dist/types/form/merchendise/MerchendiseSlider.d.ts +0 -0
  220. package/dist/types/form/payment/PaymentOverviewCheckbox.d.ts +12 -0
  221. package/dist/types/locales/cs.d.ts +23 -0
  222. package/dist/types/locales/en.d.ts +24 -0
  223. package/dist/types/locales/es.d.ts +24 -0
  224. package/dist/types/locales/pl.d.ts +24 -0
  225. package/dist/types/locales/sk.d.ts +24 -0
  226. package/dist/types/locales/uk.d.ts +24 -0
  227. package/dist/types/modules/shopping-cart.d.ts +3 -5
  228. package/dist/types/utils/data/shopping-cart.d.ts +5 -0
  229. package/dist/types/utils/gtm.d.ts +3 -1
  230. package/dist/types/utils/types/event.type.d.ts +1 -0
  231. package/dist/types/utils/types/global.type.d.ts +1 -0
  232. package/dist/types/utils/types/gtm.type.d.ts +5 -0
  233. package/dist/types/utils/types/order.type.d.ts +1 -0
  234. package/dist/types/utils/types/shopping-cart.type.d.ts +44 -35
  235. package/dist/types/utils/types/ticket.type.d.ts +21 -5
  236. package/package.json +11 -6
  237. package/rollup.config.mjs +16 -1
  238. package/src/components/Image.tsx +49 -27
  239. package/src/components/hook-form/FormProvider.tsx +5 -2
  240. package/src/context/GlobalContext.tsx +3 -0
  241. package/src/form/ChildEventDialog.tsx +3 -3
  242. package/src/form/ContactPerson.tsx +1 -1
  243. package/src/form/Payment.tsx +2 -4
  244. package/src/form/PaymentOverviewBox.tsx +178 -139
  245. package/src/form/PaymentOverviewDrawer.tsx +446 -0
  246. package/src/form/PaymentPending.tsx +19 -3
  247. package/src/form/PaymentSuccess.tsx +46 -3
  248. package/src/form/Shipping.tsx +48 -33
  249. package/src/form/TicketForm.tsx +162 -43
  250. package/src/form/extra-field/ExtraField.tsx +3 -1
  251. package/src/form/extra-field/ReleaseExtraFields.tsx +1 -1
  252. package/src/form/index.tsx +6 -1
  253. package/src/form/merchandise/MerchandiseSelection.tsx +24 -0
  254. package/src/form/merchandise/MerchandiseSlider.tsx +62 -0
  255. package/src/form/payment/FeeBox.tsx +6 -34
  256. package/src/form/payment/PaymentOverviewCheckbox.tsx +88 -0
  257. package/src/form/product/ProductCard.tsx +258 -59
  258. package/src/form/product/ProductVariantsDialog.tsx +292 -139
  259. package/src/form/services/index.tsx +263 -0
  260. package/src/form/style.ts +16 -4
  261. package/src/form/tickets/ReleaseDescription.tsx +46 -0
  262. package/src/form/tickets/ReleaseWithMerchandise.tsx +271 -0
  263. package/src/form/tickets/TicketQuantityControl.tsx +100 -0
  264. package/src/form/tickets/TicketSelection.tsx +236 -0
  265. package/src/form/tickets/TicketSelectionMap.tsx +99 -0
  266. package/src/form/tickets/TicketSelectionMobile.tsx +188 -0
  267. package/src/form/tickets/TicketWithMerchandiseSelection.tsx +192 -0
  268. package/src/hooks/useScrollToFirstError.ts +99 -0
  269. package/src/locales/cs.tsx +50 -2
  270. package/src/locales/en.tsx +50 -1
  271. package/src/locales/es.tsx +50 -1
  272. package/src/locales/pl.tsx +50 -1
  273. package/src/locales/sk.tsx +50 -1
  274. package/src/locales/uk.tsx +50 -1
  275. package/src/modules/shopping-cart.ts +14 -11
  276. package/src/utils/data/global.ts +1 -0
  277. package/src/utils/data/shopping-cart.ts +5 -0
  278. package/src/utils/data/ticket.ts +1 -0
  279. package/src/utils/gtm.ts +29 -0
  280. package/src/utils/types/event.type.ts +1 -0
  281. package/src/utils/types/global.type.ts +1 -0
  282. package/src/utils/types/gtm.type.ts +6 -0
  283. package/src/utils/types/order.type.ts +1 -0
  284. package/src/utils/types/shopping-cart.type.ts +42 -31
  285. package/src/utils/types/ticket.type.ts +23 -3
  286. package/tsconfig.json +2 -1
  287. package/dist/cjs/_virtual/colorManipulator.js +0 -6
  288. package/dist/cjs/_virtual/colorManipulator.js.map +0 -1
  289. package/dist/cjs/_virtual/createStyled.js +0 -6
  290. package/dist/cjs/_virtual/createStyled.js.map +0 -1
  291. package/dist/cjs/_virtual/customParseFormat.js +0 -6
  292. package/dist/cjs/_virtual/customParseFormat.js.map +0 -1
  293. package/dist/cjs/_virtual/dayjs.min.js +0 -6
  294. package/dist/cjs/_virtual/dayjs.min.js.map +0 -1
  295. package/dist/cjs/_virtual/extends.js +0 -6
  296. package/dist/cjs/_virtual/extends.js.map +0 -1
  297. package/dist/cjs/_virtual/index.umd.js +0 -6
  298. package/dist/cjs/_virtual/index.umd.js.map +0 -1
  299. package/dist/cjs/_virtual/index10.js +0 -11
  300. package/dist/cjs/_virtual/index10.js.map +0 -1
  301. package/dist/cjs/_virtual/index11.js +0 -11
  302. package/dist/cjs/_virtual/index11.js.map +0 -1
  303. package/dist/cjs/_virtual/index12.js +0 -6
  304. package/dist/cjs/_virtual/index12.js.map +0 -1
  305. package/dist/cjs/_virtual/index13.js +0 -6
  306. package/dist/cjs/_virtual/index13.js.map +0 -1
  307. package/dist/cjs/_virtual/index14.js +0 -6
  308. package/dist/cjs/_virtual/index14.js.map +0 -1
  309. package/dist/cjs/_virtual/index15.js +0 -6
  310. package/dist/cjs/_virtual/index15.js.map +0 -1
  311. package/dist/cjs/_virtual/index4.js +0 -11
  312. package/dist/cjs/_virtual/index4.js.map +0 -1
  313. package/dist/cjs/_virtual/index5.js +0 -11
  314. package/dist/cjs/_virtual/index5.js.map +0 -1
  315. package/dist/cjs/_virtual/index6.js +0 -11
  316. package/dist/cjs/_virtual/index6.js.map +0 -1
  317. package/dist/cjs/_virtual/index7.js +0 -11
  318. package/dist/cjs/_virtual/index7.js.map +0 -1
  319. package/dist/cjs/_virtual/index8.js +0 -11
  320. package/dist/cjs/_virtual/index8.js.map +0 -1
  321. package/dist/cjs/_virtual/index9.js +0 -11
  322. package/dist/cjs/_virtual/index9.js.map +0 -1
  323. package/dist/cjs/_virtual/interopRequireDefault.js +0 -6
  324. package/dist/cjs/_virtual/interopRequireDefault.js.map +0 -1
  325. package/dist/cjs/_virtual/isBetween.js +0 -6
  326. package/dist/cjs/_virtual/isBetween.js.map +0 -1
  327. package/dist/cjs/_virtual/jsx-runtime.js +0 -6
  328. package/dist/cjs/_virtual/jsx-runtime.js.map +0 -1
  329. package/dist/cjs/_virtual/localizedFormat.js +0 -6
  330. package/dist/cjs/_virtual/localizedFormat.js.map +0 -1
  331. package/dist/cjs/_virtual/lodash.js +0 -6
  332. package/dist/cjs/_virtual/lodash.js.map +0 -1
  333. package/dist/cjs/_virtual/lottie.js +0 -6
  334. package/dist/cjs/_virtual/lottie.js.map +0 -1
  335. package/dist/cjs/_virtual/numeral.js +0 -6
  336. package/dist/cjs/_virtual/numeral.js.map +0 -1
  337. package/dist/cjs/_virtual/objectWithoutPropertiesLoose.js +0 -6
  338. package/dist/cjs/_virtual/objectWithoutPropertiesLoose.js.map +0 -1
  339. package/dist/cjs/_virtual/react-is.development3.js +0 -6
  340. package/dist/cjs/_virtual/react-is.development3.js.map +0 -1
  341. package/dist/cjs/_virtual/react-is.production.min2.js +0 -6
  342. package/dist/cjs/_virtual/react-is.production.min2.js.map +0 -1
  343. package/dist/cjs/_virtual/react-jsx-runtime.development.js +0 -6
  344. package/dist/cjs/_virtual/react-jsx-runtime.development.js.map +0 -1
  345. package/dist/cjs/_virtual/react-jsx-runtime.production.min.js +0 -6
  346. package/dist/cjs/_virtual/react-jsx-runtime.production.min.js.map +0 -1
  347. package/dist/cjs/_virtual/timezone.js +0 -6
  348. package/dist/cjs/_virtual/timezone.js.map +0 -1
  349. package/dist/cjs/_virtual/use-sync-external-store-shim.development.js +0 -6
  350. package/dist/cjs/_virtual/use-sync-external-store-shim.development.js.map +0 -1
  351. package/dist/cjs/_virtual/use-sync-external-store-shim.production.js +0 -6
  352. package/dist/cjs/_virtual/use-sync-external-store-shim.production.js.map +0 -1
  353. package/dist/cjs/_virtual/useThemeWithoutDefault.js +0 -6
  354. package/dist/cjs/_virtual/useThemeWithoutDefault.js.map +0 -1
  355. package/dist/cjs/_virtual/utc.js +0 -6
  356. package/dist/cjs/_virtual/utc.js.map +0 -1
  357. package/dist/cjs/_virtual/weekOfYear.js +0 -6
  358. package/dist/cjs/_virtual/weekOfYear.js.map +0 -1
  359. package/dist/cjs/hooks/useFirstRender.js +0 -14
  360. package/dist/cjs/hooks/useFirstRender.js.map +0 -1
  361. package/dist/cjs/utils/data/order.js +0 -8
  362. package/dist/cjs/utils/data/order.js.map +0 -1
  363. package/dist/esm/_virtual/colorManipulator.js +0 -4
  364. package/dist/esm/_virtual/colorManipulator.js.map +0 -1
  365. package/dist/esm/_virtual/createStyled.js +0 -4
  366. package/dist/esm/_virtual/createStyled.js.map +0 -1
  367. package/dist/esm/_virtual/customParseFormat.js +0 -4
  368. package/dist/esm/_virtual/customParseFormat.js.map +0 -1
  369. package/dist/esm/_virtual/dayjs.min.js +0 -4
  370. package/dist/esm/_virtual/dayjs.min.js.map +0 -1
  371. package/dist/esm/_virtual/extends.js +0 -4
  372. package/dist/esm/_virtual/extends.js.map +0 -1
  373. package/dist/esm/_virtual/index.umd.js +0 -4
  374. package/dist/esm/_virtual/index.umd.js.map +0 -1
  375. package/dist/esm/_virtual/index10.js +0 -7
  376. package/dist/esm/_virtual/index10.js.map +0 -1
  377. package/dist/esm/_virtual/index11.js +0 -7
  378. package/dist/esm/_virtual/index11.js.map +0 -1
  379. package/dist/esm/_virtual/index12.js +0 -4
  380. package/dist/esm/_virtual/index12.js.map +0 -1
  381. package/dist/esm/_virtual/index13.js +0 -4
  382. package/dist/esm/_virtual/index13.js.map +0 -1
  383. package/dist/esm/_virtual/index14.js +0 -4
  384. package/dist/esm/_virtual/index14.js.map +0 -1
  385. package/dist/esm/_virtual/index15.js +0 -4
  386. package/dist/esm/_virtual/index15.js.map +0 -1
  387. package/dist/esm/_virtual/index4.js +0 -7
  388. package/dist/esm/_virtual/index4.js.map +0 -1
  389. package/dist/esm/_virtual/index5.js +0 -7
  390. package/dist/esm/_virtual/index5.js.map +0 -1
  391. package/dist/esm/_virtual/index6.js +0 -7
  392. package/dist/esm/_virtual/index6.js.map +0 -1
  393. package/dist/esm/_virtual/index7.js +0 -7
  394. package/dist/esm/_virtual/index7.js.map +0 -1
  395. package/dist/esm/_virtual/index8.js +0 -7
  396. package/dist/esm/_virtual/index8.js.map +0 -1
  397. package/dist/esm/_virtual/index9.js +0 -7
  398. package/dist/esm/_virtual/index9.js.map +0 -1
  399. package/dist/esm/_virtual/interopRequireDefault.js +0 -4
  400. package/dist/esm/_virtual/interopRequireDefault.js.map +0 -1
  401. package/dist/esm/_virtual/isBetween.js +0 -4
  402. package/dist/esm/_virtual/isBetween.js.map +0 -1
  403. package/dist/esm/_virtual/jsx-runtime.js +0 -4
  404. package/dist/esm/_virtual/jsx-runtime.js.map +0 -1
  405. package/dist/esm/_virtual/localizedFormat.js +0 -4
  406. package/dist/esm/_virtual/localizedFormat.js.map +0 -1
  407. package/dist/esm/_virtual/lodash.js +0 -4
  408. package/dist/esm/_virtual/lodash.js.map +0 -1
  409. package/dist/esm/_virtual/lottie.js +0 -4
  410. package/dist/esm/_virtual/lottie.js.map +0 -1
  411. package/dist/esm/_virtual/numeral.js +0 -4
  412. package/dist/esm/_virtual/numeral.js.map +0 -1
  413. package/dist/esm/_virtual/objectWithoutPropertiesLoose.js +0 -4
  414. package/dist/esm/_virtual/objectWithoutPropertiesLoose.js.map +0 -1
  415. package/dist/esm/_virtual/react-is.development3.js +0 -4
  416. package/dist/esm/_virtual/react-is.development3.js.map +0 -1
  417. package/dist/esm/_virtual/react-is.production.min2.js +0 -4
  418. package/dist/esm/_virtual/react-is.production.min2.js.map +0 -1
  419. package/dist/esm/_virtual/react-jsx-runtime.development.js +0 -4
  420. package/dist/esm/_virtual/react-jsx-runtime.development.js.map +0 -1
  421. package/dist/esm/_virtual/react-jsx-runtime.production.min.js +0 -4
  422. package/dist/esm/_virtual/react-jsx-runtime.production.min.js.map +0 -1
  423. package/dist/esm/_virtual/timezone.js +0 -4
  424. package/dist/esm/_virtual/timezone.js.map +0 -1
  425. package/dist/esm/_virtual/use-sync-external-store-shim.development.js +0 -4
  426. package/dist/esm/_virtual/use-sync-external-store-shim.development.js.map +0 -1
  427. package/dist/esm/_virtual/use-sync-external-store-shim.production.js +0 -4
  428. package/dist/esm/_virtual/use-sync-external-store-shim.production.js.map +0 -1
  429. package/dist/esm/_virtual/useThemeWithoutDefault.js +0 -4
  430. package/dist/esm/_virtual/useThemeWithoutDefault.js.map +0 -1
  431. package/dist/esm/_virtual/utc.js +0 -4
  432. package/dist/esm/_virtual/utc.js.map +0 -1
  433. package/dist/esm/_virtual/weekOfYear.js +0 -4
  434. package/dist/esm/_virtual/weekOfYear.js.map +0 -1
  435. package/dist/esm/hooks/useFirstRender.js +0 -12
  436. package/dist/esm/hooks/useFirstRender.js.map +0 -1
  437. package/dist/esm/utils/data/order.js +0 -8
  438. package/dist/esm/utils/data/order.js.map +0 -1
  439. package/dist/index.cjs.js +0 -90295
  440. package/dist/index.cjs.js.map +0 -1
  441. package/dist/index.esm.js +0 -90275
  442. package/dist/index.esm.js.map +0 -1
  443. package/dist/types/hooks/data/useShoppingCart.d.ts +0 -8
  444. package/src/form/MerchandiseSelection.tsx +0 -29
  445. package/src/form/ReleaseWithMerchandise.tsx +0 -230
  446. package/src/form/TicketSelection.tsx +0 -284
  447. package/src/form/TicketWithMerchandiseSelection.tsx +0 -131
@@ -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 } = useGlobal();
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().shape({
272
- shippingMethodId: Yup.number().nullable(),
273
- branchId: Yup.string().nullable(),
274
- price: Yup.number(),
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
- const allTickets = Object.values(values.tickets).flat();
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, { name }) => {
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(EVENTLOOK_ORDER_FORM_ID);
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={EVENTLOOK_ORDER_FORM_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
- // @ts-ignore
488
- <FormProvider methods={methods} onSubmit={methods.handleSubmit(onSubmit)}>
489
- <Typography
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
- {event.name} - {dayjs(event.startDate).format('DD.MM.YYYY HH:mm')}
498
- </Typography>
499
- <Grid container spacing={2}>
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 orientation="vertical">
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.hasMerchandise ? (
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 mt={2} ml={4}>
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} md={4}>
586
- <PaymentOverviewBox event={event} />
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: `extraFields.${number}.value` | `tickets.${number}.extraFields.${number}.${number}.value`;
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>
@@ -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, Tooltip, Typography } from '@mui/material';
3
- import { OrderFeeType } from '@utils/data/order';
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.promoCode && (
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
- <Stack direction="row" alignItems="center" spacing={1}>
49
- <Tooltip
50
- title={t('form.labels.price_including_service_fee', {
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
  };