@licklist/design 0.71.24 → 0.72.0-dev.0

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 (315) hide show
  1. package/dist/affiliate/form/AffiliateForm.d.ts.map +1 -1
  2. package/dist/auth/Layout/AuthNavComponent.d.ts.map +1 -1
  3. package/dist/auth/Login/LoginComponent.d.ts.map +1 -1
  4. package/dist/auth/Login/LoginComponent.js +2 -1
  5. package/dist/auth/Login/LoginFormComponent.d.ts.map +1 -1
  6. package/dist/auth/Logout/Logout.js +1 -0
  7. package/dist/auth/Register/RegisterComponent.d.ts.map +1 -1
  8. package/dist/auth/Register/RegisterFormComponent.d.ts.map +1 -1
  9. package/dist/auth/ResetPassword/ResetPasswordFormComponent.d.ts.map +1 -1
  10. package/dist/auth/Router.d.ts.map +1 -1
  11. package/dist/auth/Router.js +2 -0
  12. package/dist/calendar/utils/index.d.ts +1 -1
  13. package/dist/calendar/utils/index.d.ts.map +1 -1
  14. package/dist/events/edit-event-modal/IntervalInput.d.ts +3 -1
  15. package/dist/events/edit-event-modal/IntervalInput.d.ts.map +1 -1
  16. package/dist/events/edit-event-modal/IntervalInput.js +11 -4
  17. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts +3 -1
  18. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
  19. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +20 -6
  20. package/dist/events/edit-event-modal/component/SaleDeadline/SaleDeadline.d.ts.map +1 -1
  21. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.js +3 -1
  22. package/dist/events/edit-event-modal/utils/getDefaultProductSet.d.ts.map +1 -1
  23. package/dist/events/edit-event-modal/utils/getDefaultProductSet.js +0 -1
  24. package/dist/events/edit-recurrent-event-modal/EditRecurrentEventModal.d.ts +5 -1
  25. package/dist/events/edit-recurrent-event-modal/EditRecurrentEventModal.d.ts.map +1 -1
  26. package/dist/events/edit-recurrent-event-modal/EditRecurrentEventModal.js +5 -3
  27. package/dist/events/event-card/utils.d.ts.map +1 -1
  28. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts +2 -1
  29. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts.map +1 -1
  30. package/dist/events/event-statistic-modal/EventStatisticModal.js +2 -2
  31. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts +1 -1
  32. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts.map +1 -1
  33. package/dist/events/event-statistic-modal/hooks/useTableData.js +2 -1
  34. package/dist/events/event-statistic-modal/utils/index.d.ts.map +1 -1
  35. package/dist/events/event-statistic-modal/utils/index.js +3 -3
  36. package/dist/events/event-venue-map/EventVenueMap.d.ts.map +1 -1
  37. package/dist/events/event-venue-map/EventVenueMap.js +1 -0
  38. package/dist/events/event-venue-map/hooks/useCanvasSize.d.ts.map +1 -1
  39. package/dist/events/event-venue-map/hooks/useCanvasSize.js +11 -4
  40. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.d.ts +18 -0
  41. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.d.ts.map +1 -0
  42. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.js +295 -0
  43. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.d.ts +15 -0
  44. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.d.ts.map +1 -0
  45. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.js +90 -0
  46. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.d.ts +14 -0
  47. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.d.ts.map +1 -0
  48. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.js +404 -0
  49. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.d.ts +10 -0
  50. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.d.ts.map +1 -0
  51. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.js +87 -0
  52. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/index.d.ts +2 -0
  53. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/index.d.ts.map +1 -0
  54. package/dist/iframe/ProductWithModifierModal/index.d.ts +2 -0
  55. package/dist/iframe/ProductWithModifierModal/index.d.ts.map +1 -0
  56. package/dist/iframe/ProductWithModifierModal/utils.d.ts +5 -0
  57. package/dist/iframe/ProductWithModifierModal/utils.d.ts.map +1 -0
  58. package/dist/iframe/ProductWithModifierModal/utils.js +21 -0
  59. package/dist/iframe/event/ticket-description/TicketDescription.d.ts +3 -1
  60. package/dist/iframe/event/ticket-description/TicketDescription.d.ts.map +1 -1
  61. package/dist/iframe/event/ticket-description/TicketDescription.js +10 -7
  62. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.d.ts +5 -1
  63. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.d.ts.map +1 -1
  64. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.js +12 -1
  65. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.d.ts.map +1 -1
  66. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.js +3 -3
  67. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts +4 -0
  68. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts.map +1 -1
  69. package/dist/iframe/order-process/components/BookingSummary/utils/index.js +29 -2
  70. package/dist/iframe/order-process/components/CategoryProduct/CategoryProduct.d.ts.map +1 -1
  71. package/dist/iframe/order-process/components/CategoryProduct/CategoryProduct.js +106 -2
  72. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.d.ts.map +1 -1
  73. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.js +13 -0
  74. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts +3 -1
  75. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts.map +1 -1
  76. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.js +95 -1
  77. package/dist/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.d.ts +23 -0
  78. package/dist/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.d.ts.map +1 -0
  79. package/dist/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.js +62 -0
  80. package/dist/iframe/order-process/components/CategoryProduct/constants.d.ts +2 -0
  81. package/dist/iframe/order-process/components/CategoryProduct/constants.d.ts.map +1 -0
  82. package/dist/iframe/order-process/components/CategoryProduct/constants.js +4 -0
  83. package/dist/iframe/order-process/components/utils/useOnWindowUnmount.d.ts +6 -0
  84. package/dist/iframe/order-process/components/utils/useOnWindowUnmount.d.ts.map +1 -0
  85. package/dist/iframe/order-process/components/utils/useOnWindowUnmount.js +18 -0
  86. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.d.ts.map +1 -1
  87. package/dist/iframe/payment/order-items-table/hooks/useTableData.d.ts.map +1 -1
  88. package/dist/iframe/payment/order-items-table/hooks/useTableData.js +83 -10
  89. package/dist/iframe/payment/order-items-table/utils/index.d.ts.map +1 -1
  90. package/dist/iframe/payment/order-items-table/utils/index.js +15 -0
  91. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
  92. package/dist/iframe/payment/order-items-table/utils/paymentSummary.js +2 -2
  93. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.d.ts.map +1 -1
  94. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.js +2 -2
  95. package/dist/iframe/ryft/RyftPaymentForm.js +1 -0
  96. package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -1
  97. package/dist/iframe/ryft/utils/ryft-form.js +4 -5
  98. package/dist/index.js +2 -1
  99. package/dist/layout/DropDown.d.ts +2 -1
  100. package/dist/layout/DropDown.d.ts.map +1 -1
  101. package/dist/notification/email-template/card/EmailTemplateCard.d.ts.map +1 -1
  102. package/dist/notification/email-template/control/EmailTemplateControl.d.ts.map +1 -1
  103. package/dist/notification/email-template/control/EmailTemplateControl.js +3 -0
  104. package/dist/notification/sms-template/card/SmsTemplateCard.d.ts.map +1 -1
  105. package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
  106. package/dist/product-set/control/DateInput.d.ts.map +1 -1
  107. package/dist/product-set/form/ProductSetForm.d.ts +7 -2
  108. package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
  109. package/dist/product-set/form/ProductSetForm.js +7 -5
  110. package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
  111. package/dist/product-set/form/ProductZonesControl.js +0 -2
  112. package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
  113. package/dist/product-set/form/ProductsControl.js +25 -5
  114. package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
  115. package/dist/product-set/form/SubProductsControl.js +0 -3
  116. package/dist/product-set/form/VenueMapsControl.d.ts +1 -1
  117. package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
  118. package/dist/product-set/form/VenueMapsControl.js +0 -3
  119. package/dist/product-set/form/context.d.ts +3 -1
  120. package/dist/product-set/form/context.d.ts.map +1 -1
  121. package/dist/product-set/form/context.js +2 -1
  122. package/dist/product-set/product/ProductControl.d.ts +8 -0
  123. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  124. package/dist/product-set/product/ProductControl.js +25 -1
  125. package/dist/product-set/product/booking-management/ProductBookingManagementControl.d.ts.map +1 -1
  126. package/dist/product-set/product/booking-management/ProductBookingManagementControl.js +6 -0
  127. package/dist/product-set/product/deposit/ProductDepositControl.d.ts.map +1 -1
  128. package/dist/product-set/product/deposit/ProductDepositControl.js +3 -0
  129. package/dist/product-set/product/duration/ProductDurationControl.d.ts.map +1 -1
  130. package/dist/product-set/product/duration/ProductDurationControl.js +6 -0
  131. package/dist/product-set/product/price/ProductPriceControl.d.ts.map +1 -1
  132. package/dist/product-set/product/price/ProductPriceControl.js +3 -0
  133. package/dist/product-set/product/quantity/ProductQuantityConstantControl.d.ts.map +1 -1
  134. package/dist/product-set/product/quantity/ProductQuantityConstantControl.js +6 -0
  135. package/dist/product-set/product/quantity/ProductQuantityControl.d.ts.map +1 -1
  136. package/dist/product-set/product/quantity/ProductQuantityControl.js +6 -0
  137. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.d.ts.map +1 -1
  138. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.js +4 -1
  139. package/dist/product-set/product-category/ProductCategoryControl.d.ts.map +1 -1
  140. package/dist/product-set/product-category/ProductCategoryControl.js +12 -0
  141. package/dist/product-set/utils/index.d.ts +88 -0
  142. package/dist/product-set/utils/index.d.ts.map +1 -1
  143. package/dist/product-set/utils/index.js +19 -1
  144. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  145. package/dist/recurrence-input/RecurrenceEndInput.js +3 -0
  146. package/dist/recurrence-input/RecurrenceInput.d.ts.map +1 -1
  147. package/dist/recurrence-input/RecurrenceInput.js +7 -3
  148. package/dist/recurring-date-picker-input/RecurrenceEndInput.d.ts.map +1 -1
  149. package/dist/report/ReportRunnerModal/ReportRunnerModal.js +1 -0
  150. package/dist/resource/form/components/CapacityControl.d.ts.map +1 -1
  151. package/dist/resource/form/components/CapacityControl.js +3 -0
  152. package/dist/resource/form/components/SortControl.d.ts.map +1 -1
  153. package/dist/resource/form/components/SortControl.js +3 -0
  154. package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
  155. package/dist/sales/booking/results/components/ResultCard.js +0 -2
  156. package/dist/sales/coupon/control/CouponFormControl.d.ts.map +1 -1
  157. package/dist/sales/coupon/control/CouponFormControl.js +21 -0
  158. package/dist/sales/coupon/utils/index.d.ts +2 -1
  159. package/dist/sales/coupon/utils/index.d.ts.map +1 -1
  160. package/dist/sales/life-time-sales/LifeTimeSalesChart.js +1 -0
  161. package/dist/sales/manual-booking/select-event/SelectEvent.js +1 -0
  162. package/dist/sales/manual-booking/select-menu/SelectMenu.js +1 -0
  163. package/dist/sales/manual-booking/summary/ManualBookingSummary.js +1 -0
  164. package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
  165. package/dist/setting/admin/PaymentFeeForm.d.ts.map +1 -1
  166. package/dist/setting/admin/PaymentFeeForm.js +16 -1
  167. package/dist/setting/dashboard/DashboardSettingForm.d.ts.map +1 -1
  168. package/dist/setting/dashboard/DashboardSettingForm.js +4 -1
  169. package/dist/setting/dashboard/snippet-templates/card/SnippetTemplateCard.d.ts.map +1 -1
  170. package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
  171. package/dist/snippet/snippet-template/preview/Preview.js +3 -1
  172. package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  173. package/dist/static/CurrencyNumberInput.d.ts.map +1 -1
  174. package/dist/static/CurrencyNumberInput.js +3 -0
  175. package/dist/static/date-range-input/utils/index.d.ts +1 -1
  176. package/dist/static/date-range-input/utils/index.d.ts.map +1 -1
  177. package/dist/static/form-number-input/FormNumberInput.d.ts.map +1 -1
  178. package/dist/static/form-number-input/FormNumberInput.js +3 -0
  179. package/dist/static/loader/FullScreenLoader.d.ts +8 -0
  180. package/dist/static/loader/FullScreenLoader.d.ts.map +1 -0
  181. package/dist/static/loader/FullScreenLoader.js +41 -0
  182. package/dist/static/loader/LoaderIndicator.d.ts +2 -3
  183. package/dist/static/loader/LoaderIndicator.d.ts.map +1 -1
  184. package/dist/static/loader/LoaderIndicator.js +4 -2
  185. package/dist/static/loader/index.d.ts +1 -0
  186. package/dist/static/loader/index.d.ts.map +1 -1
  187. package/dist/static/number-input/NumberInput.d.ts.map +1 -1
  188. package/dist/static/number-input/NumberInput.js +3 -0
  189. package/dist/styles/availability-indicator/AvailabilityIndicator.scss +1 -4
  190. package/dist/styles/date-time-button/DateTimeButton.scss +7 -0
  191. package/dist/styles/events/EditEventModal.scss +2 -0
  192. package/dist/styles/iframe-events/Calendar.scss +1 -1
  193. package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  194. package/dist/styles/iframe-page/Page.scss +16 -0
  195. package/dist/styles/iframe-page/PageBody.scss +4 -0
  196. package/dist/styles/modals/Modals.scss +16 -0
  197. package/dist/styles/product-set/EditProductSetElement.scss +1 -0
  198. package/dist/styles/product-set/ProductSetForm.scss +13 -3
  199. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +2 -4
  200. package/dist/styles/sales/BookingResults.scss +1 -1
  201. package/dist/styles/sales/ManualBooking.scss +6 -0
  202. package/dist/styles/static/Loader.scss +9 -0
  203. package/dist/styles/themes/bookedit/index.scss +19 -0
  204. package/dist/zone/form/components/GameDurationControl.d.ts.map +1 -1
  205. package/dist/zone/form/components/GameDurationControl.js +3 -0
  206. package/dist/zone/form/components/SortControl.d.ts.map +1 -1
  207. package/dist/zone/form/components/SortControl.js +3 -0
  208. package/package.json +8 -6
  209. package/src/affiliate/form/AffiliateForm.tsx +1 -0
  210. package/src/auth/Layout/AuthNavComponent.tsx +4 -0
  211. package/src/auth/Login/LoginComponent.tsx +3 -1
  212. package/src/auth/Login/LoginFormComponent.tsx +2 -0
  213. package/src/auth/Register/RegisterComponent.tsx +2 -0
  214. package/src/auth/Register/RegisterFormComponent.tsx +4 -0
  215. package/src/auth/ResetPassword/ResetPasswordFormComponent.tsx +4 -0
  216. package/src/auth/Router.tsx +2 -0
  217. package/src/calendar/Calendar.stories.tsx +2 -2
  218. package/src/calendar/utils/index.ts +1 -1
  219. package/src/events/edit-event-modal/IntervalInput.tsx +13 -3
  220. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +24 -2
  221. package/src/events/edit-event-modal/component/SaleDeadline/SaleDeadline.tsx +9 -7
  222. package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +0 -1
  223. package/src/events/edit-recurrent-event-modal/EditRecurrentEventModal.tsx +9 -1
  224. package/src/events/event-card/utils.ts +10 -9
  225. package/src/events/event-statistic-modal/EventStatisticModal.tsx +3 -1
  226. package/src/events/event-statistic-modal/hooks/useTableData.tsx +2 -1
  227. package/src/events/event-statistic-modal/utils/index.ts +6 -5
  228. package/src/events/event-venue-map/EventVenueMap.tsx +1 -0
  229. package/src/events/event-venue-map/hooks/useCanvasSize.ts +5 -1
  230. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.tsx +212 -0
  231. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.tsx +76 -0
  232. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.tsx +393 -0
  233. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.tsx +98 -0
  234. package/src/iframe/ProductWithModifierModal/ModifierSetModal/index.ts +1 -0
  235. package/src/iframe/ProductWithModifierModal/index.ts +1 -0
  236. package/src/iframe/ProductWithModifierModal/utils.ts +29 -0
  237. package/src/iframe/event/ticket-description/TicketDescription.tsx +11 -4
  238. package/src/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.tsx +24 -2
  239. package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.tsx +13 -11
  240. package/src/iframe/order-process/components/BookingSummary/utils/index.ts +45 -4
  241. package/src/iframe/order-process/components/CategoryProduct/CategoryProduct.tsx +155 -75
  242. package/src/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.tsx +9 -0
  243. package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx +58 -1
  244. package/src/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.tsx +86 -0
  245. package/src/iframe/order-process/components/CategoryProduct/constants.ts +1 -0
  246. package/src/iframe/order-process/components/utils/useOnWindowUnmount.ts +25 -0
  247. package/src/iframe/page/components/PageBody/hooks/useResizePageBody.ts +1 -2
  248. package/src/iframe/payment/order-items-table/hooks/useTableData.tsx +84 -14
  249. package/src/iframe/payment/order-items-table/utils/index.ts +23 -0
  250. package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +3 -2
  251. package/src/iframe/payment/payment-status-page/PaymentStatusPage.tsx +19 -20
  252. package/src/iframe/ryft/utils/ryft-form.ts +6 -5
  253. package/src/layout/DropDown.tsx +1 -1
  254. package/src/notification/email-template/card/EmailTemplateCard.tsx +2 -0
  255. package/src/notification/email-template/control/EmailTemplateControl.tsx +1 -0
  256. package/src/notification/sms-template/card/SmsTemplateCard.tsx +2 -0
  257. package/src/product-set/control/DateAndRecurrenceInput.tsx +3 -4
  258. package/src/product-set/control/DateInput.tsx +3 -4
  259. package/src/product-set/form/ProductSetForm.tsx +17 -5
  260. package/src/product-set/form/ProductZonesControl.tsx +1 -4
  261. package/src/product-set/form/ProductsControl.tsx +33 -15
  262. package/src/product-set/form/SubProductsControl.tsx +0 -3
  263. package/src/product-set/form/VenueMapsControl.tsx +1 -4
  264. package/src/product-set/form/context.tsx +5 -0
  265. package/src/product-set/product/ProductControl.tsx +37 -2
  266. package/src/product-set/product/advanced-options/AdvancedOptions.tsx +1 -1
  267. package/src/product-set/product/booking-management/ProductBookingManagementControl.tsx +2 -0
  268. package/src/product-set/product/deposit/ProductDepositControl.tsx +1 -0
  269. package/src/product-set/product/duration/ProductDurationControl.tsx +2 -0
  270. package/src/product-set/product/price/ProductPriceControl.tsx +1 -0
  271. package/src/product-set/product/quantity/ProductQuantityConstantControl.tsx +2 -0
  272. package/src/product-set/product/quantity/ProductQuantityControl.tsx +2 -0
  273. package/src/product-set/product/quantity/ProductQuantityRechargingControl.tsx +1 -0
  274. package/src/product-set/product-category/ProductCategoryControl.tsx +4 -0
  275. package/src/product-set/product-zone/ProductZoneControl.tsx +1 -1
  276. package/src/product-set/utils/index.ts +19 -0
  277. package/src/recurrence-input/RecurrenceEndInput.tsx +1 -0
  278. package/src/recurrence-input/RecurrenceInput.tsx +9 -6
  279. package/src/recurring-date-picker-input/RecurrenceEndInput.tsx +1 -0
  280. package/src/resource/form/components/CapacityControl.tsx +1 -0
  281. package/src/resource/form/components/SortControl.tsx +1 -0
  282. package/src/sales/booking/results/components/ResultCard.tsx +0 -2
  283. package/src/sales/coupon/control/CouponFormControl.tsx +7 -0
  284. package/src/sales/coupon/utils/index.ts +5 -3
  285. package/src/setting/admin/AdminSettingForm.tsx +4 -0
  286. package/src/setting/admin/PaymentFeeForm.tsx +5 -0
  287. package/src/setting/dashboard/DashboardSettingForm.tsx +1 -0
  288. package/src/setting/dashboard/snippet-templates/card/SnippetTemplateCard.tsx +2 -0
  289. package/src/snippet/snippet-template/preview/Preview.tsx +1 -2
  290. package/src/sortable-tree/SortableTreeItem.tsx +1 -6
  291. package/src/static/CurrencyNumberInput.tsx +1 -0
  292. package/src/static/date-range-input/utils/index.ts +1 -1
  293. package/src/static/form-number-input/FormNumberInput.tsx +1 -0
  294. package/src/static/loader/FullScreenLoader.tsx +16 -0
  295. package/src/static/loader/LoaderIndicator.tsx +6 -3
  296. package/src/static/loader/index.ts +1 -0
  297. package/src/static/number-input/NumberInput.tsx +1 -0
  298. package/src/styles/availability-indicator/AvailabilityIndicator.scss +1 -4
  299. package/src/styles/date-time-button/DateTimeButton.scss +7 -0
  300. package/src/styles/events/EditEventModal.scss +2 -0
  301. package/src/styles/iframe-events/Calendar.scss +1 -1
  302. package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  303. package/src/styles/iframe-page/Page.scss +16 -0
  304. package/src/styles/iframe-page/PageBody.scss +4 -0
  305. package/src/styles/modals/Modals.scss +16 -0
  306. package/src/styles/product-set/EditProductSetElement.scss +1 -0
  307. package/src/styles/product-set/ProductSetForm.scss +13 -3
  308. package/src/styles/ryft-payment-form/RyftPaymentForm.scss +2 -4
  309. package/src/styles/sales/BookingResults.scss +1 -1
  310. package/src/styles/sales/ManualBooking.scss +6 -0
  311. package/src/styles/static/Loader.scss +9 -0
  312. package/src/styles/themes/bookedit/index.scss +19 -0
  313. package/src/zone/form/components/GameDurationControl.tsx +1 -0
  314. package/src/zone/form/components/SortControl.tsx +1 -0
  315. package/yarn.lock +185 -185
@@ -0,0 +1,98 @@
1
+ import { useEffect } from 'react'
2
+ import { useFormContext, Controller } from 'react-hook-form'
3
+ import { OrderModifierByProduct } from '@licklist/core/dist/DataMapper/Order/OrderModifiierByProduct'
4
+ import { Product } from '@licklist/plugins/dist/types/context/sale/menuSteps'
5
+ import { useTranslation } from 'react-i18next' // Added translation hook
6
+ import { ModifiersSetControl } from './ModifierSetControll'
7
+ import { orderProductModifiersQuantity } from '../../utils'
8
+
9
+ interface ProductControlProps {
10
+ product: Product
11
+ isLoading?: boolean
12
+ editOrderModifier?: OrderModifierByProduct
13
+ }
14
+
15
+ export const ProductControl = ({
16
+ product,
17
+ isLoading = false,
18
+ editOrderModifier,
19
+ }: ProductControlProps) => {
20
+ const { t } = useTranslation() // Added translation hook
21
+ const {
22
+ control,
23
+ watch,
24
+ formState: { isValid },
25
+ clearErrors,
26
+ } = useFormContext()
27
+ const modifiersSet = product?.modifiersSet || []
28
+ const orderModifiersSets = watch(`${product.id}.orderProductModifiers`)
29
+
30
+ useEffect(() => {
31
+ if (!isValid) return
32
+ clearErrors()
33
+ }, [isValid, clearErrors])
34
+
35
+ return (
36
+ <div className='mb-8 pt-4'>
37
+ <div className='d-flex flex-column'>
38
+ {modifiersSet.map((modifierSet) => {
39
+ const orderProductModifiersMaxQuantity =
40
+ orderProductModifiersQuantity(orderModifiersSets, modifierSet)
41
+
42
+ return (
43
+ <div className='modifier-set-container' key={modifierSet.id}>
44
+ <div className='modifier-header'>
45
+ <div className='title'>{modifierSet.name}</div>
46
+ </div>
47
+ <Controller
48
+ control={control}
49
+ name={`${product.id}.${modifierSet.id}`}
50
+ rules={{
51
+ validate: () => {
52
+ const { maxItems, minItems } = modifierSet
53
+
54
+ if (
55
+ !!minItems &&
56
+ orderProductModifiersMaxQuantity < minItems
57
+ ) {
58
+ return t('Validation:quantityMinNumberModifier', {
59
+ min: minItems,
60
+ }) as string
61
+ }
62
+
63
+ if (orderProductModifiersMaxQuantity > maxItems) {
64
+ return t('Validation:quantityMaxNumberModifier', {
65
+ max: maxItems,
66
+ }) as string
67
+ }
68
+
69
+ return true
70
+ },
71
+ }}
72
+ render={({ fieldState: { error } }) => {
73
+ return(
74
+ <>
75
+ <ModifiersSetControl
76
+ modifierSet={modifierSet}
77
+ productId={product.id}
78
+ modifiers={modifierSet.modifiers}
79
+ isEditMode={!!editOrderModifier?.modifiers}
80
+ orderProductModifierSets={editOrderModifier?.modifiers}
81
+ isLoading={isLoading}
82
+ />
83
+ {error?.message && (
84
+ <div className='invalid-feedback d-flex pl-4'>
85
+ {error?.message}!
86
+ </div>
87
+ )}
88
+ </>,
89
+ )
90
+ }}
91
+ />
92
+ </div>
93
+ )
94
+ })}
95
+ </div>
96
+ </div>
97
+ )
98
+ }
@@ -0,0 +1 @@
1
+ import './ProductWithModifierSetModal.js'
@@ -0,0 +1 @@
1
+ export { ProductWithModifierSetModal } from './ModifierSetModal/ProductWithModifierSetModal'
@@ -0,0 +1,29 @@
1
+ import { OrderModifier } from "@licklist/core/dist/DataMapper/Order/OrderModifierDataMapper"
2
+ import { uniqBy } from "lodash"
3
+
4
+ export type selectModifierType = 'radio' | 'checkbox' | 'selector'
5
+
6
+ export const filteredOrderModifierSets = (
7
+ modifiersSet: OrderModifier[],
8
+ ): OrderModifier[] => {
9
+ if (!modifiersSet) return []
10
+ const orderModifier = modifiersSet
11
+ ?.flat()
12
+ ?.filter((modifier) => !!modifier?.quantity)
13
+
14
+ return uniqBy(
15
+ orderModifier,
16
+ (item) => `${item.modifierId}-${item.modifierSetId}`,
17
+ )
18
+ }
19
+
20
+ export const orderProductModifiersQuantity = (
21
+ orderModifiersSets: OrderModifier[],
22
+ modifierSet,
23
+ ) => {
24
+ if (!orderModifiersSets?.length) return 0
25
+ const filteredOrderModifier = filteredOrderModifierSets(orderModifiersSets)
26
+ return filteredOrderModifier.filter(
27
+ (item) => item?.modifierSetId === modifierSet.id,
28
+ ).length
29
+ }
@@ -12,10 +12,12 @@ interface TicketDescriptionProps {
12
12
  title: string
13
13
  description: string
14
14
  className?: string
15
+ classNameProductModal?: string
15
16
  images: Image[] | null
16
17
  price?: ReactNode
17
18
  isRequired?: boolean
18
19
  canExpand?: boolean
20
+ isModal?: boolean
19
21
  }
20
22
 
21
23
  const DESCRIPTION_MAX_LENGTH = 120
@@ -24,10 +26,12 @@ export function TicketDescription({
24
26
  title,
25
27
  description,
26
28
  className = '',
29
+ classNameProductModal = '',
27
30
  images,
28
31
  price,
29
32
  isRequired = false,
30
33
  canExpand = true,
34
+ isModal= false
31
35
  }: TicketDescriptionProps) {
32
36
  const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false)
33
37
 
@@ -47,10 +51,10 @@ export function TicketDescription({
47
51
  className='ticket-description__wrapper'
48
52
  style={descriptionWrapperStyle}
49
53
  >
50
- <div className='ticket-description__wrapper-children'>
54
+ <div className={clsx('ticket-description__wrapper-children', classNameProductModal)}>
51
55
  {imageSrc && (
52
- <div className='image-wrapper'>
53
- <img src={imageSrc} alt={title} />
56
+ <div className={clsx('image-wrapper', classNameProductModal && 'w-100 h-25')}>
57
+ <img className={clsx(classNameProductModal && 'w-100')} src={imageSrc} alt={title} />
54
58
  </div>
55
59
  )}
56
60
  {canExpand && description.length > DESCRIPTION_MAX_LENGTH ? (
@@ -63,6 +67,7 @@ export function TicketDescription({
63
67
  title={title}
64
68
  isRequired={isRequired}
65
69
  description={description}
70
+ isModal={isModal}
66
71
  />
67
72
  </TextExpand>
68
73
  ) : (
@@ -70,6 +75,7 @@ export function TicketDescription({
70
75
  title={title}
71
76
  isRequired={isRequired}
72
77
  description={description}
78
+ isModal={isModal}
73
79
  />
74
80
  )}
75
81
  </div>
@@ -83,8 +89,9 @@ const Description = ({
83
89
  title,
84
90
  isRequired,
85
91
  description,
92
+ isModal
86
93
  }: Pick<TicketDescriptionProps, 'title' | 'isRequired' | 'description'>) => (
87
- <div className='description-content'>
94
+ <div className={clsx('description-content', isModal && 'ml-4 mt-2' )}>
88
95
  <div className='d-flex flex-column'>
89
96
  <div className='product-title'>
90
97
  {title} {isRequired && <span>*</span>}
@@ -2,11 +2,19 @@ import { useTranslation } from 'react-i18next'
2
2
  import { useIntl } from 'react-intl'
3
3
  import * as Config from '@licklist/core/dist/Config'
4
4
  import { OrderItem } from '@licklist/plugins/dist/types/context/Iframe/orderItems'
5
+ import { OrderModifierByProduct } from '@licklist/core/dist/DataMapper/Order/OrderModifiierByProduct'
6
+ import { calculateTotalModifiersPrice } from '../../utils'
7
+ import { ProductWithModifier } from '../../../CategoryProduct/components/ProductWithModifier/ProductWithModifier'
8
+
9
+
10
+ interface IOrderProduct extends OrderItem {
11
+ orderProductModifiers?: OrderModifierByProduct[] | null;
12
+ }
5
13
 
6
14
  type ProductSummaryProps = {
7
15
  name?: string
8
16
  productQuantityError?: string
9
- orderProduct: OrderItem
17
+ orderProduct: IOrderProduct
10
18
  }
11
19
 
12
20
  export const ProductSummary = ({
@@ -16,9 +24,10 @@ export const ProductSummary = ({
16
24
  }: ProductSummaryProps) => {
17
25
  const { t } = useTranslation('Design')
18
26
  const { formatNumber } = useIntl()
19
-
20
27
  const priceForOneProduct = orderProduct?.price
21
28
 
29
+ const modifiersSets = orderProduct?.orderModifiersSets || orderProduct?.orderProductModifiers
30
+
22
31
  const fullPrice = formatNumber(priceForOneProduct * orderProduct?.quantity, {
23
32
  style: 'currency',
24
33
  currency: Config.Currency.GBP,
@@ -35,6 +44,19 @@ export const ProductSummary = ({
35
44
  <p className='price'>{fullPrice}</p>
36
45
  </div>
37
46
 
47
+ {!!modifiersSets.length && (
48
+ <>
49
+ {modifiersSets.map((modifier, index) => (
50
+ <ProductWithModifier
51
+ key={modifier.productQuantity.toString()}
52
+ modifier={modifier}
53
+ modifierKey={index}
54
+ isSummary
55
+ />
56
+ ))}
57
+ </>
58
+ )}
59
+
38
60
  {productQuantityError && (
39
61
  <p className='iframe-event__message-error'>{productQuantityError}</p>
40
62
  )}
@@ -22,24 +22,23 @@ export const SummaryTotal = ({
22
22
 
23
23
  const cartSum = isFreePayment
24
24
  ? 0
25
- : cartSumByOrderProducts({orderProducts}) + transactionFee
25
+ : cartSumByOrderProducts({ orderProducts }) + transactionFee
26
26
 
27
-
28
- const totalSum = isFreePayment
27
+ const totalSum = isFreePayment
29
28
  ? 0
30
- : cartSumByOrderProducts({orderProducts, isTotalSum: true}) +
31
- transactionFee;
32
-
33
- const hasRemaingToPay = totalSum > cartSum;
29
+ : cartSumByOrderProducts({ orderProducts, isTotalSum: true }) +
30
+ transactionFee
31
+
32
+ const hasRemaingToPay = totalSum > cartSum
34
33
 
35
34
  if (!orderProducts.length) {
36
35
  return null
37
36
  }
38
37
 
39
38
  return (
40
- <div className="d-flex flex-column justify-content-between">
39
+ <div className='d-flex flex-column justify-content-between'>
41
40
  <SummaryTotalBlock
42
- label={t(hasRemaingToPay ? "payNow" : "total")}
41
+ label={t(hasRemaingToPay ? 'payNow' : 'total')}
43
42
  amount={cartSum}
44
43
  />
45
44
  {!!totalWithDiscount && !isFreePayment && (
@@ -50,9 +49,12 @@ export const SummaryTotal = ({
50
49
  )}
51
50
  {hasRemaingToPay && (
52
51
  <>
53
- <SummaryTotalBlock label={t("remaining")} amount={totalSum - cartSum} />
52
+ <SummaryTotalBlock
53
+ label={t('remaining')}
54
+ amount={totalSum - cartSum}
55
+ />
54
56
 
55
- <SummaryTotalBlock label={t("total")} amount={totalSum} />
57
+ <SummaryTotalBlock label={t('total')} amount={totalSum} />
56
58
  </>
57
59
  )}
58
60
  </div>
@@ -1,3 +1,7 @@
1
+ import { OrderModifier } from '@licklist/core/dist/DataMapper/Order/OrderModifierDataMapper'
2
+ import {
3
+ OrderModifierByProduct
4
+ } from '@licklist/core/dist/DataMapper/Order/OrderModifiierByProduct'
1
5
  import { QuantityCheckProductInfo } from '@licklist/plugins/dist/types/Api/verifyStock'
2
6
  import { OrderItem } from '@licklist/plugins/dist/types/context/Iframe/orderItems'
3
7
 
@@ -5,25 +9,62 @@ export const cartSumByOrderProducts = ({
5
9
  orderProducts,
6
10
  isTotalSum,
7
11
  }: {
8
- orderProducts?: OrderItem[];
9
- isTotalSum?: boolean;
12
+ orderProducts?: OrderItem[]
13
+ isTotalSum?: boolean
10
14
  }) => {
11
15
  if (!orderProducts || !orderProducts.length) {
12
16
  return 0
13
17
  }
14
18
  return orderProducts.reduce((prevSumValue: number, product) => {
15
19
  if (!product) return 0
16
-
20
+ const modifiersPrice = calculateTotalModifiersPrice(
21
+ product?.orderModifiersSets,
22
+ )
23
+
17
24
  const price = isTotalSum
18
25
  ? product?.price
19
26
  : product.hasDeposit
20
27
  ? product?.deposit
21
28
  : product?.price
22
29
 
23
- return prevSumValue + price * product.quantity
30
+ return prevSumValue + price * product.quantity + modifiersPrice
24
31
  }, 0)
25
32
  }
26
33
 
34
+ export const getModifierName = (
35
+ modifier: OrderModifierByProduct,
36
+ ) => {
37
+ const modifierName = (orderModifier: OrderModifier) => orderModifier?.modifier?.name ?? orderModifier?.name
38
+ return `${modifier.modifiers.map((item) => (
39
+ item?.quantity > 1 ? `${item?.quantity}x - ${modifierName(item)}` : modifierName(item))).join(', ')}`
40
+ }
41
+
42
+ export const calculateTotalModifiersPrice = (
43
+ orderModifiersSets: OrderModifierByProduct[],
44
+ ) =>
45
+ orderModifiersSets
46
+ ?.map((set) =>
47
+ set.modifiers.reduce(
48
+ (sum, modifier) =>
49
+ sum + modifier.price * modifier.quantity * set.productQuantity,
50
+ 0,
51
+ ),
52
+ )
53
+ .reduce((total, setTotal) => total + setTotal, 0)
54
+
55
+ export const getOrderProductModifiersPrice = (
56
+ modifierFromProduct: OrderModifierByProduct,
57
+ ) => {
58
+ const { modifiers, productQuantity } = modifierFromProduct
59
+ const modifiersPrices = modifiers.reduce(
60
+ (prevSumModifier: number, modifier: OrderModifier) =>
61
+ prevSumModifier + modifier.price * modifier.quantity,
62
+ 0,
63
+ )
64
+
65
+ return modifiersPrices * productQuantity
66
+ }
67
+
27
68
  export const getProductError = (
28
69
  productsWithErrors: QuantityCheckProductInfo[],
29
70
  productId: OrderItem['id'],
@@ -1,4 +1,4 @@
1
- import { useEffect, useMemo } from 'react'
1
+ import { useEffect, useMemo, useState } from 'react'
2
2
  import { useFormContext, Controller } from 'react-hook-form'
3
3
  import clsx from 'clsx'
4
4
  import { useTranslation } from 'react-i18next'
@@ -10,8 +10,14 @@ import {
10
10
  Product,
11
11
  ProductCategory,
12
12
  } from '@licklist/plugins/dist/types/context/sale/menuSteps'
13
+ import { Button } from 'react-bootstrap'
14
+ import { FaTrashAlt } from 'react-icons/fa'
15
+ import { ProductWithModifierSetModal } from 'src/iframe/ProductWithModifierModal'
16
+ import { OrderModifierByProduct } from '@licklist/core/dist/DataMapper/Order/OrderModifiierByProduct'
13
17
  import { TicketDescription } from '../../../event/ticket-description'
14
18
  import { ProductQuantityInput } from './components/ProductQuantityInput'
19
+ import { FormOrderItem } from './components/ProductQuantityInput/ProductQuantityInput'
20
+ import { ProductWithModifier } from './components/ProductWithModifier/ProductWithModifier'
15
21
 
16
22
  interface CategoryProductProps {
17
23
  product: Product
@@ -31,7 +37,9 @@ export const CategoryProduct = ({
31
37
  const { formatNumber } = useIntl()
32
38
  const { t } = useTranslation(['Design', 'Validation'])
33
39
  const { control, clearErrors, setError } = useFormContext()
34
-
40
+ const [editOrderModifierIndex, setEditOrderModifierIndex] =
41
+ useState<OrderModifierByProduct>(undefined)
42
+ const [modifierIndex, setModifierIndex] = useState<number>(undefined)
35
43
  const hasDeposits = category.allowDeposits && product?.deposit < product.price
36
44
 
37
45
  const productQuantityError = useMemo(() => {
@@ -118,83 +126,155 @@ export const CategoryProduct = ({
118
126
  render={({
119
127
  field: { onChange, value: productInfo = {}, ref },
120
128
  fieldState: { invalid, error },
121
- }) => (
122
- <div id={String(product.id)} className='iframe-event__category-product'>
123
- <div className={clsx('iframe-event__product', invalid && 'error')}>
124
- <TicketDescription
125
- title={product.name}
126
- description={product.description}
127
- className={clsx('iframe-event__product-description')}
128
- images={product.images}
129
- isRequired={product.isRequired}
130
- canExpand={canExpandDescription}
131
- />
132
- </div>
133
- <div className='iframe-event__product-price-wrapper'>
134
- <span className='product-price'>
135
- {formatNumber(product.price, {
136
- style: 'currency',
137
- currency: Config.Currency.GBP,
138
- })}
139
- </span>
140
- <ProductQuantityInput
141
- onChange={onChange}
142
- productInfo={productInfo}
143
- refCallback={ref}
144
- clearErrors={clearErrors}
145
- product={{
146
- ...product,
147
- isSoldOut: product?.isSoldOut || checkIfSoldOutProduct(),
148
- }}
149
- category={category}
150
- invalid={invalid}
151
- />
152
- </div>
153
- {hasDeposits && !category?.remainderExpireAfter && (
154
- <div className='mt-4'>
155
- {t('Design:payNowAndUponArrival', {
156
- deposit: formatNumber(product?.deposit, {
157
- style: 'currency',
158
- currency: Config.Currency.GBP,
159
- }),
160
- remainder: formatNumber(product.price - product?.deposit, {
161
- style: 'currency',
162
- currency: Config.Currency.GBP,
163
- }),
164
- })}
165
- </div>
166
- )}
129
+ }) => {
130
+ const deleteOrderModifier = (orderModifierIndex: number) => {
131
+ const removedOrderModifierIndex = (
132
+ productInfo as FormOrderItem
133
+ ).orderModifiersSets?.filter(
134
+ (_, index) => index !== orderModifierIndex,
135
+ )
136
+ const productInfoWithRemove = {
137
+ ...productInfo,
138
+ orderModifiersSets: removedOrderModifierIndex,
139
+ quantity: removedOrderModifierIndex.reduce(
140
+ (acc, product) => product.productQuantity + acc,
141
+ 0,
142
+ ),
143
+ }
144
+ onChange(productInfoWithRemove)
145
+ }
167
146
 
168
- {hasDeposits && category?.remainderExpireAfter > 0 && (
169
- <div className='mt-4'>
170
- {t('Design:payNowAndReminderDays', {
171
- deposit: formatNumber(product?.deposit, {
172
- style: 'currency',
173
- currency: Config.Currency.GBP,
174
- }),
175
- remainder: formatNumber(product.price - product?.deposit, {
147
+ const editOrderModifierSet = (orderModifierIndex: number) => {
148
+ const editOrderModifierIndex = (
149
+ productInfo as FormOrderItem
150
+ ).orderModifiersSets.find((_, index) => {
151
+ setModifierIndex(index)
152
+ return index === orderModifierIndex
153
+ })
154
+ setEditOrderModifierIndex(editOrderModifierIndex)
155
+ }
156
+
157
+ const onChangeWithModifierSets = (value: FormOrderItem) => {
158
+ const editedOrderModifiersSets = (
159
+ productInfo as FormOrderItem
160
+ ).orderModifiersSets
161
+ ?.filter((_, index) => index !== modifierIndex)
162
+ .concat(value.orderModifiersSets)
163
+
164
+ onChange({
165
+ ...value,
166
+ orderModifiersSets: editedOrderModifiersSets,
167
+ quantity: editedOrderModifiersSets.reduce(
168
+ (acc, product) => product.productQuantity + acc,
169
+ 0,
170
+ ),
171
+ })
172
+ setEditOrderModifierIndex(undefined)
173
+ }
174
+
175
+ return (
176
+ <div
177
+ id={String(product.id)}
178
+ className='iframe-event__category-product'
179
+ >
180
+ <div className={clsx('iframe-event__product', invalid && 'error')}>
181
+ <TicketDescription
182
+ title={product.name}
183
+ description={product.description}
184
+ className={clsx('iframe-event__product-description')}
185
+ images={product.images}
186
+ isRequired={product.isRequired}
187
+ canExpand={canExpandDescription}
188
+ />
189
+ </div>
190
+ <div className='iframe-event__product-price-wrapper'>
191
+ <span className='product-price'>
192
+ {formatNumber(product.price, {
176
193
  style: 'currency',
177
194
  currency: Config.Currency.GBP,
178
- }),
179
- days: category?.remainderExpireAfter,
180
- })}
195
+ })}
196
+ </span>
197
+ <ProductQuantityInput
198
+ onChange={onChange}
199
+ productInfo={productInfo}
200
+ refCallback={ref}
201
+ clearErrors={clearErrors}
202
+ product={{
203
+ ...product,
204
+ isSoldOut: product?.isSoldOut || checkIfSoldOutProduct(),
205
+ }}
206
+ category={category}
207
+ invalid={invalid}
208
+ />
181
209
  </div>
182
- )}
183
- {invalid && (
184
- <div className='d-flex mt-3 w-100'>
185
- <p className='iframe-event__message-error'>
186
- {HookFormService.hasError(error, 'required') &&
187
- t('Design:pleaseSelectAtLeastFrom', {
188
- min: 1,
189
- type: 'item',
190
- from: 'this category',
191
- })}
192
- {HookFormService.hasError(error, 'validate') && error.message}
193
- </p>
194
- </div>
195
- )}
196
- </div>
197
- )}
210
+ {hasDeposits && !category?.remainderExpireAfter && (
211
+ <div className='mt-4'>
212
+ {t('Design:payNowAndUponArrival', {
213
+ deposit: formatNumber(product?.deposit, {
214
+ style: 'currency',
215
+ currency: Config.Currency.GBP,
216
+ }),
217
+ remainder: formatNumber(product.price - product?.deposit, {
218
+ style: 'currency',
219
+ currency: Config.Currency.GBP,
220
+ }),
221
+ })}
222
+ </div>
223
+ )}
224
+ {(productInfo as FormOrderItem).orderModifiersSets?.length > 0 && (
225
+ <>
226
+ {(productInfo as FormOrderItem).orderModifiersSets.map(
227
+ (modifier, index) => (
228
+ <ProductWithModifier
229
+ key={modifier.productQuantity.toString()}
230
+ modifier={modifier}
231
+ modifierKey={index}
232
+ editOrderModifierSet={editOrderModifierSet}
233
+ deleteOrderModifier={deleteOrderModifier}
234
+ />
235
+ ),
236
+ )}
237
+ </>
238
+ )}
239
+ {hasDeposits && category?.remainderExpireAfter > 0 && (
240
+ <div className='mt-4'>
241
+ {t('Design:payNowAndReminderDays', {
242
+ deposit: formatNumber(product?.deposit, {
243
+ style: 'currency',
244
+ currency: Config.Currency.GBP,
245
+ }),
246
+ remainder: formatNumber(product.price - product?.deposit, {
247
+ style: 'currency',
248
+ currency: Config.Currency.GBP,
249
+ }),
250
+ days: category?.remainderExpireAfter,
251
+ })}
252
+ </div>
253
+ )}
254
+ {invalid && (
255
+ <div className='d-flex mt-3 w-100'>
256
+ <p className='iframe-event__message-error'>
257
+ {HookFormService.hasError(error, 'required') &&
258
+ t('Design:pleaseSelectAtLeastFrom', {
259
+ min: 1,
260
+ type: 'item',
261
+ from: 'this category',
262
+ })}
263
+ {HookFormService.hasError(error, 'validate') && error.message}
264
+ </p>
265
+ </div>
266
+ )}
267
+ <ProductWithModifierSetModal
268
+ show={!!editOrderModifierIndex}
269
+ onHide={() => setEditOrderModifierIndex(undefined)}
270
+ editOrderModifier={editOrderModifierIndex}
271
+ onChange={onChangeWithModifierSets}
272
+ product={product}
273
+ category={category}
274
+ />
275
+ </div>
276
+ )
277
+ }}
198
278
  />
199
279
  )
200
280
  }
@@ -89,6 +89,7 @@ export const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(
89
89
  <FormControl
90
90
  type='number'
91
91
  onChange={(e) => handleChangeValue(Number(e.target.value))}
92
+ onWheel={(event) => event.currentTarget.blur()}
92
93
  value={value}
93
94
  min={0}
94
95
  max={max}
@@ -101,6 +102,14 @@ export const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(
101
102
  <button
102
103
  type='button'
103
104
  onClick={handleArrowUpClick}
105
+ onWheel={(event) => event.currentTarget.blur()}
106
+ onFocus={(event) =>
107
+ event.target.addEventListener(
108
+ 'wheel',
109
+ (event) => event.preventDefault(),
110
+ { passive: false },
111
+ )
112
+ }
104
113
  className={`payment-number-input__btn-up ${
105
114
  plusButtonGreyedOut && 'disabled-number-input-button'
106
115
  }`}