@licklist/design 0.71.24 → 0.72.0-dev.1

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 (319) 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/EventCard.d.ts +2 -1
  28. package/dist/events/event-card/EventCard.d.ts.map +1 -1
  29. package/dist/events/event-card/EventCard.js +11 -2
  30. package/dist/events/event-card/utils.d.ts.map +1 -1
  31. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts +2 -1
  32. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts.map +1 -1
  33. package/dist/events/event-statistic-modal/EventStatisticModal.js +2 -2
  34. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts +1 -1
  35. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts.map +1 -1
  36. package/dist/events/event-statistic-modal/hooks/useTableData.js +2 -1
  37. package/dist/events/event-statistic-modal/utils/index.d.ts.map +1 -1
  38. package/dist/events/event-statistic-modal/utils/index.js +3 -3
  39. package/dist/events/event-venue-map/EventVenueMap.d.ts.map +1 -1
  40. package/dist/events/event-venue-map/EventVenueMap.js +1 -0
  41. package/dist/events/event-venue-map/hooks/useCanvasSize.d.ts.map +1 -1
  42. package/dist/events/event-venue-map/hooks/useCanvasSize.js +11 -4
  43. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.d.ts +18 -0
  44. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.d.ts.map +1 -0
  45. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.js +295 -0
  46. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.d.ts +15 -0
  47. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.d.ts.map +1 -0
  48. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.js +90 -0
  49. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.d.ts +14 -0
  50. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.d.ts.map +1 -0
  51. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.js +404 -0
  52. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.d.ts +10 -0
  53. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.d.ts.map +1 -0
  54. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.js +87 -0
  55. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/index.d.ts +2 -0
  56. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/index.d.ts.map +1 -0
  57. package/dist/iframe/ProductWithModifierModal/index.d.ts +2 -0
  58. package/dist/iframe/ProductWithModifierModal/index.d.ts.map +1 -0
  59. package/dist/iframe/ProductWithModifierModal/utils.d.ts +5 -0
  60. package/dist/iframe/ProductWithModifierModal/utils.d.ts.map +1 -0
  61. package/dist/iframe/ProductWithModifierModal/utils.js +21 -0
  62. package/dist/iframe/event/ticket-description/TicketDescription.d.ts +3 -1
  63. package/dist/iframe/event/ticket-description/TicketDescription.d.ts.map +1 -1
  64. package/dist/iframe/event/ticket-description/TicketDescription.js +10 -7
  65. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.d.ts +5 -1
  66. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.d.ts.map +1 -1
  67. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.js +12 -1
  68. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.d.ts.map +1 -1
  69. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.js +3 -3
  70. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts +4 -0
  71. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts.map +1 -1
  72. package/dist/iframe/order-process/components/BookingSummary/utils/index.js +29 -2
  73. package/dist/iframe/order-process/components/CategoryProduct/CategoryProduct.d.ts.map +1 -1
  74. package/dist/iframe/order-process/components/CategoryProduct/CategoryProduct.js +106 -2
  75. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.d.ts.map +1 -1
  76. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.js +13 -0
  77. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts +3 -1
  78. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts.map +1 -1
  79. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.js +95 -1
  80. package/dist/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.d.ts +23 -0
  81. package/dist/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.d.ts.map +1 -0
  82. package/dist/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.js +62 -0
  83. package/dist/iframe/order-process/components/CategoryProduct/constants.d.ts +2 -0
  84. package/dist/iframe/order-process/components/CategoryProduct/constants.d.ts.map +1 -0
  85. package/dist/iframe/order-process/components/CategoryProduct/constants.js +4 -0
  86. package/dist/iframe/order-process/components/utils/useOnWindowUnmount.d.ts +6 -0
  87. package/dist/iframe/order-process/components/utils/useOnWindowUnmount.d.ts.map +1 -0
  88. package/dist/iframe/order-process/components/utils/useOnWindowUnmount.js +18 -0
  89. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.d.ts.map +1 -1
  90. package/dist/iframe/payment/order-items-table/hooks/useTableData.d.ts.map +1 -1
  91. package/dist/iframe/payment/order-items-table/hooks/useTableData.js +83 -10
  92. package/dist/iframe/payment/order-items-table/utils/index.d.ts.map +1 -1
  93. package/dist/iframe/payment/order-items-table/utils/index.js +15 -0
  94. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
  95. package/dist/iframe/payment/order-items-table/utils/paymentSummary.js +2 -2
  96. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.d.ts.map +1 -1
  97. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.js +2 -2
  98. package/dist/iframe/ryft/RyftPaymentForm.js +1 -0
  99. package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -1
  100. package/dist/iframe/ryft/utils/ryft-form.js +4 -5
  101. package/dist/index.js +2 -1
  102. package/dist/layout/DropDown.d.ts +2 -1
  103. package/dist/layout/DropDown.d.ts.map +1 -1
  104. package/dist/notification/email-template/card/EmailTemplateCard.d.ts.map +1 -1
  105. package/dist/notification/email-template/control/EmailTemplateControl.d.ts.map +1 -1
  106. package/dist/notification/email-template/control/EmailTemplateControl.js +3 -0
  107. package/dist/notification/sms-template/card/SmsTemplateCard.d.ts.map +1 -1
  108. package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
  109. package/dist/product-set/control/DateInput.d.ts.map +1 -1
  110. package/dist/product-set/form/ProductSetForm.d.ts +7 -2
  111. package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
  112. package/dist/product-set/form/ProductSetForm.js +7 -5
  113. package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
  114. package/dist/product-set/form/ProductZonesControl.js +0 -2
  115. package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
  116. package/dist/product-set/form/ProductsControl.js +26 -6
  117. package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
  118. package/dist/product-set/form/SubProductsControl.js +0 -3
  119. package/dist/product-set/form/VenueMapsControl.d.ts +1 -1
  120. package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
  121. package/dist/product-set/form/VenueMapsControl.js +0 -3
  122. package/dist/product-set/form/context.d.ts +3 -1
  123. package/dist/product-set/form/context.d.ts.map +1 -1
  124. package/dist/product-set/form/context.js +2 -1
  125. package/dist/product-set/product/ProductControl.d.ts +8 -0
  126. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  127. package/dist/product-set/product/ProductControl.js +25 -1
  128. package/dist/product-set/product/booking-management/ProductBookingManagementControl.d.ts.map +1 -1
  129. package/dist/product-set/product/booking-management/ProductBookingManagementControl.js +6 -0
  130. package/dist/product-set/product/deposit/ProductDepositControl.d.ts.map +1 -1
  131. package/dist/product-set/product/deposit/ProductDepositControl.js +3 -0
  132. package/dist/product-set/product/duration/ProductDurationControl.d.ts.map +1 -1
  133. package/dist/product-set/product/duration/ProductDurationControl.js +6 -0
  134. package/dist/product-set/product/price/ProductPriceControl.d.ts.map +1 -1
  135. package/dist/product-set/product/price/ProductPriceControl.js +3 -0
  136. package/dist/product-set/product/quantity/ProductQuantityConstantControl.d.ts.map +1 -1
  137. package/dist/product-set/product/quantity/ProductQuantityConstantControl.js +6 -0
  138. package/dist/product-set/product/quantity/ProductQuantityControl.d.ts.map +1 -1
  139. package/dist/product-set/product/quantity/ProductQuantityControl.js +6 -0
  140. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.d.ts.map +1 -1
  141. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.js +4 -1
  142. package/dist/product-set/product-category/ProductCategoryControl.d.ts.map +1 -1
  143. package/dist/product-set/product-category/ProductCategoryControl.js +12 -0
  144. package/dist/product-set/utils/index.d.ts +88 -0
  145. package/dist/product-set/utils/index.d.ts.map +1 -1
  146. package/dist/product-set/utils/index.js +19 -1
  147. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  148. package/dist/recurrence-input/RecurrenceEndInput.js +3 -0
  149. package/dist/recurrence-input/RecurrenceInput.d.ts.map +1 -1
  150. package/dist/recurrence-input/RecurrenceInput.js +7 -3
  151. package/dist/recurring-date-picker-input/RecurrenceEndInput.d.ts.map +1 -1
  152. package/dist/report/ReportRunnerModal/ReportRunnerModal.js +1 -0
  153. package/dist/resource/form/components/CapacityControl.d.ts.map +1 -1
  154. package/dist/resource/form/components/CapacityControl.js +3 -0
  155. package/dist/resource/form/components/SortControl.d.ts.map +1 -1
  156. package/dist/resource/form/components/SortControl.js +3 -0
  157. package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
  158. package/dist/sales/booking/results/components/ResultCard.js +0 -2
  159. package/dist/sales/coupon/control/CouponFormControl.d.ts.map +1 -1
  160. package/dist/sales/coupon/control/CouponFormControl.js +21 -0
  161. package/dist/sales/coupon/utils/index.d.ts +2 -1
  162. package/dist/sales/coupon/utils/index.d.ts.map +1 -1
  163. package/dist/sales/life-time-sales/LifeTimeSalesChart.js +1 -0
  164. package/dist/sales/manual-booking/select-event/SelectEvent.js +1 -0
  165. package/dist/sales/manual-booking/select-menu/SelectMenu.js +1 -0
  166. package/dist/sales/manual-booking/summary/ManualBookingSummary.js +1 -0
  167. package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
  168. package/dist/setting/admin/PaymentFeeForm.d.ts.map +1 -1
  169. package/dist/setting/admin/PaymentFeeForm.js +16 -1
  170. package/dist/setting/dashboard/DashboardSettingForm.d.ts.map +1 -1
  171. package/dist/setting/dashboard/DashboardSettingForm.js +4 -1
  172. package/dist/setting/dashboard/snippet-templates/card/SnippetTemplateCard.d.ts.map +1 -1
  173. package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
  174. package/dist/snippet/snippet-template/preview/Preview.js +3 -1
  175. package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  176. package/dist/static/CurrencyNumberInput.d.ts.map +1 -1
  177. package/dist/static/CurrencyNumberInput.js +3 -0
  178. package/dist/static/date-range-input/utils/index.d.ts +1 -1
  179. package/dist/static/date-range-input/utils/index.d.ts.map +1 -1
  180. package/dist/static/form-number-input/FormNumberInput.d.ts.map +1 -1
  181. package/dist/static/form-number-input/FormNumberInput.js +3 -0
  182. package/dist/static/loader/FullScreenLoader.d.ts +8 -0
  183. package/dist/static/loader/FullScreenLoader.d.ts.map +1 -0
  184. package/dist/static/loader/FullScreenLoader.js +41 -0
  185. package/dist/static/loader/LoaderIndicator.d.ts +2 -3
  186. package/dist/static/loader/LoaderIndicator.d.ts.map +1 -1
  187. package/dist/static/loader/LoaderIndicator.js +4 -2
  188. package/dist/static/loader/index.d.ts +1 -0
  189. package/dist/static/loader/index.d.ts.map +1 -1
  190. package/dist/static/number-input/NumberInput.d.ts.map +1 -1
  191. package/dist/static/number-input/NumberInput.js +3 -0
  192. package/dist/styles/availability-indicator/AvailabilityIndicator.scss +1 -4
  193. package/dist/styles/date-time-button/DateTimeButton.scss +7 -0
  194. package/dist/styles/events/EditEventModal.scss +2 -0
  195. package/dist/styles/iframe-events/Calendar.scss +1 -1
  196. package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  197. package/dist/styles/iframe-page/Page.scss +16 -0
  198. package/dist/styles/iframe-page/PageBody.scss +4 -0
  199. package/dist/styles/modals/Modals.scss +16 -0
  200. package/dist/styles/product-set/EditProductSetElement.scss +1 -0
  201. package/dist/styles/product-set/ProductSetForm.scss +13 -3
  202. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +2 -4
  203. package/dist/styles/sales/BookingResults.scss +1 -1
  204. package/dist/styles/sales/ManualBooking.scss +6 -0
  205. package/dist/styles/static/Loader.scss +9 -0
  206. package/dist/styles/themes/bookedit/index.scss +19 -0
  207. package/dist/zone/form/components/GameDurationControl.d.ts.map +1 -1
  208. package/dist/zone/form/components/GameDurationControl.js +3 -0
  209. package/dist/zone/form/components/SortControl.d.ts.map +1 -1
  210. package/dist/zone/form/components/SortControl.js +3 -0
  211. package/package.json +8 -6
  212. package/src/affiliate/form/AffiliateForm.tsx +1 -0
  213. package/src/auth/Layout/AuthNavComponent.tsx +4 -0
  214. package/src/auth/Login/LoginComponent.tsx +3 -1
  215. package/src/auth/Login/LoginFormComponent.tsx +2 -0
  216. package/src/auth/Register/RegisterComponent.tsx +2 -0
  217. package/src/auth/Register/RegisterFormComponent.tsx +4 -0
  218. package/src/auth/ResetPassword/ResetPasswordFormComponent.tsx +4 -0
  219. package/src/auth/Router.tsx +2 -0
  220. package/src/calendar/Calendar.stories.tsx +2 -2
  221. package/src/calendar/utils/index.ts +1 -1
  222. package/src/events/edit-event-modal/IntervalInput.tsx +13 -3
  223. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +24 -2
  224. package/src/events/edit-event-modal/component/SaleDeadline/SaleDeadline.tsx +9 -7
  225. package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +0 -1
  226. package/src/events/edit-recurrent-event-modal/EditRecurrentEventModal.tsx +9 -1
  227. package/src/events/event-card/EventCard.tsx +15 -4
  228. package/src/events/event-card/utils.ts +10 -9
  229. package/src/events/event-statistic-modal/EventStatisticModal.tsx +3 -1
  230. package/src/events/event-statistic-modal/hooks/useTableData.tsx +2 -1
  231. package/src/events/event-statistic-modal/utils/index.ts +6 -5
  232. package/src/events/event-venue-map/EventVenueMap.tsx +1 -0
  233. package/src/events/event-venue-map/hooks/useCanvasSize.ts +5 -1
  234. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetForm.tsx +212 -0
  235. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.tsx +76 -0
  236. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.tsx +393 -0
  237. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.tsx +98 -0
  238. package/src/iframe/ProductWithModifierModal/ModifierSetModal/index.ts +1 -0
  239. package/src/iframe/ProductWithModifierModal/index.ts +1 -0
  240. package/src/iframe/ProductWithModifierModal/utils.ts +29 -0
  241. package/src/iframe/event/ticket-description/TicketDescription.tsx +11 -4
  242. package/src/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.tsx +24 -2
  243. package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.tsx +13 -11
  244. package/src/iframe/order-process/components/BookingSummary/utils/index.ts +45 -4
  245. package/src/iframe/order-process/components/CategoryProduct/CategoryProduct.tsx +155 -75
  246. package/src/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.tsx +9 -0
  247. package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx +58 -1
  248. package/src/iframe/order-process/components/CategoryProduct/components/ProductWithModifier/ProductWithModifier.tsx +86 -0
  249. package/src/iframe/order-process/components/CategoryProduct/constants.ts +1 -0
  250. package/src/iframe/order-process/components/utils/useOnWindowUnmount.ts +25 -0
  251. package/src/iframe/page/components/PageBody/hooks/useResizePageBody.ts +1 -2
  252. package/src/iframe/payment/order-items-table/hooks/useTableData.tsx +84 -14
  253. package/src/iframe/payment/order-items-table/utils/index.ts +23 -0
  254. package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +3 -2
  255. package/src/iframe/payment/payment-status-page/PaymentStatusPage.tsx +19 -20
  256. package/src/iframe/ryft/utils/ryft-form.ts +6 -5
  257. package/src/layout/DropDown.tsx +1 -1
  258. package/src/notification/email-template/card/EmailTemplateCard.tsx +2 -0
  259. package/src/notification/email-template/control/EmailTemplateControl.tsx +1 -0
  260. package/src/notification/sms-template/card/SmsTemplateCard.tsx +2 -0
  261. package/src/product-set/control/DateAndRecurrenceInput.tsx +3 -4
  262. package/src/product-set/control/DateInput.tsx +3 -4
  263. package/src/product-set/form/ProductSetForm.tsx +17 -5
  264. package/src/product-set/form/ProductZonesControl.tsx +1 -4
  265. package/src/product-set/form/ProductsControl.tsx +34 -16
  266. package/src/product-set/form/SubProductsControl.tsx +0 -3
  267. package/src/product-set/form/VenueMapsControl.tsx +1 -4
  268. package/src/product-set/form/context.tsx +5 -0
  269. package/src/product-set/product/ProductControl.tsx +37 -2
  270. package/src/product-set/product/advanced-options/AdvancedOptions.tsx +1 -1
  271. package/src/product-set/product/booking-management/ProductBookingManagementControl.tsx +2 -0
  272. package/src/product-set/product/deposit/ProductDepositControl.tsx +1 -0
  273. package/src/product-set/product/duration/ProductDurationControl.tsx +2 -0
  274. package/src/product-set/product/price/ProductPriceControl.tsx +1 -0
  275. package/src/product-set/product/quantity/ProductQuantityConstantControl.tsx +2 -0
  276. package/src/product-set/product/quantity/ProductQuantityControl.tsx +2 -0
  277. package/src/product-set/product/quantity/ProductQuantityRechargingControl.tsx +1 -0
  278. package/src/product-set/product-category/ProductCategoryControl.tsx +4 -0
  279. package/src/product-set/product-zone/ProductZoneControl.tsx +1 -1
  280. package/src/product-set/utils/index.ts +19 -0
  281. package/src/recurrence-input/RecurrenceEndInput.tsx +1 -0
  282. package/src/recurrence-input/RecurrenceInput.tsx +10 -6
  283. package/src/recurring-date-picker-input/RecurrenceEndInput.tsx +1 -0
  284. package/src/resource/form/components/CapacityControl.tsx +1 -0
  285. package/src/resource/form/components/SortControl.tsx +1 -0
  286. package/src/sales/booking/results/components/ResultCard.tsx +0 -2
  287. package/src/sales/coupon/control/CouponFormControl.tsx +7 -0
  288. package/src/sales/coupon/utils/index.ts +5 -3
  289. package/src/setting/admin/AdminSettingForm.tsx +4 -0
  290. package/src/setting/admin/PaymentFeeForm.tsx +5 -0
  291. package/src/setting/dashboard/DashboardSettingForm.tsx +1 -0
  292. package/src/setting/dashboard/snippet-templates/card/SnippetTemplateCard.tsx +2 -0
  293. package/src/snippet/snippet-template/preview/Preview.tsx +1 -2
  294. package/src/sortable-tree/SortableTreeItem.tsx +1 -6
  295. package/src/static/CurrencyNumberInput.tsx +1 -0
  296. package/src/static/date-range-input/utils/index.ts +1 -1
  297. package/src/static/form-number-input/FormNumberInput.tsx +1 -0
  298. package/src/static/loader/FullScreenLoader.tsx +16 -0
  299. package/src/static/loader/LoaderIndicator.tsx +6 -3
  300. package/src/static/loader/index.ts +1 -0
  301. package/src/static/number-input/NumberInput.tsx +1 -0
  302. package/src/styles/availability-indicator/AvailabilityIndicator.scss +1 -4
  303. package/src/styles/date-time-button/DateTimeButton.scss +7 -0
  304. package/src/styles/events/EditEventModal.scss +2 -0
  305. package/src/styles/iframe-events/Calendar.scss +1 -1
  306. package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  307. package/src/styles/iframe-page/Page.scss +16 -0
  308. package/src/styles/iframe-page/PageBody.scss +4 -0
  309. package/src/styles/modals/Modals.scss +16 -0
  310. package/src/styles/product-set/EditProductSetElement.scss +1 -0
  311. package/src/styles/product-set/ProductSetForm.scss +13 -3
  312. package/src/styles/ryft-payment-form/RyftPaymentForm.scss +2 -4
  313. package/src/styles/sales/BookingResults.scss +1 -1
  314. package/src/styles/sales/ManualBooking.scss +6 -0
  315. package/src/styles/static/Loader.scss +9 -0
  316. package/src/styles/themes/bookedit/index.scss +19 -0
  317. package/src/zone/form/components/GameDurationControl.tsx +1 -0
  318. package/src/zone/form/components/SortControl.tsx +1 -0
  319. package/yarn.lock +188 -188
@@ -0,0 +1,393 @@
1
+ import { Col, Form } from 'react-bootstrap'
2
+ import { useTranslation } from 'react-i18next'
3
+ import { OrderModifier } from '@licklist/core/dist/DataMapper/Order/OrderModifierDataMapper'
4
+ import { Modifier } from '@licklist/core/dist/DataMapper/Product/ModifierDataMapper'
5
+ import { ModifierSet } from '@licklist/core/dist/DataMapper/Product/ModifierSetDataMapper'
6
+ import { ChangeEvent, useEffect, useMemo } from 'react'
7
+ import { useId } from '@mantine/hooks'
8
+ import { Controller, useFormContext } from 'react-hook-form'
9
+ import { xor } from 'lodash'
10
+ import clsx from 'clsx'
11
+ import { Currency } from '@licklist/core/dist/Config'
12
+ import { useIntl } from 'react-intl'
13
+ import { MAX_PRODUCT_NUMBER } from 'src/iframe/order-process/components/CategoryProduct/constants'
14
+ import { NumberInputHorizontal } from 'src/sales'
15
+ import { selectModifierType } from '../../utils'
16
+
17
+ interface ModifiersSetControllProps {
18
+ modifiers?: Modifier[]
19
+ modifierSet: ModifierSet
20
+ isLoading?: boolean
21
+ isEditMode?: boolean
22
+ productId: number
23
+ orderProductModifierSets?: OrderModifier[]
24
+ }
25
+
26
+ export const ModifiersSetControl = ({
27
+ modifierSet,
28
+ modifiers,
29
+ productId,
30
+ isLoading = false,
31
+ isEditMode = false,
32
+ orderProductModifierSets,
33
+ }: ModifiersSetControllProps) => {
34
+ const { control, watch, setValue, trigger } = useFormContext()
35
+ const { t } = useTranslation('App')
36
+
37
+ const orderModifiersSets = watch(`${productId}.orderProductModifiers`)
38
+
39
+ const { formatNumber } = useIntl()
40
+ const formatToCurrency = (value: number) =>
41
+ formatNumber(value, { style: 'currency', currency: Currency.GBP })
42
+
43
+ const currentOrderModifiersSets = useMemo(
44
+ () =>
45
+ orderProductModifierSets?.filter(
46
+ (modifier) => modifier.modifierSetId === modifierSet.id,
47
+ ) || [],
48
+ [orderProductModifierSets, modifierSet.id],
49
+ )
50
+
51
+ const onChangeModifiers = (
52
+ e: ChangeEvent<HTMLInputElement>,
53
+ type: selectModifierType,
54
+ quantity?: number,
55
+ ) => {
56
+ if (!modifiers) return
57
+
58
+ const selectedModifier = modifiers?.find(
59
+ (item) => item.id === Number(e.target.defaultValue || e.target.id),
60
+ )
61
+ const checkSelectedModifier =
62
+ orderModifiersSets?.find(
63
+ (modifier) => modifier?.modifierId === selectedModifier?.id,
64
+ )?.quantity === 1
65
+
66
+ if (selectedModifier && type === 'radio') {
67
+ modifiers.forEach((modifier) => {
68
+ const isSelected = modifier.id === selectedModifier.id
69
+ const orderModifiers: OrderModifier = {
70
+ modifierId: modifier.id,
71
+ price: modifier.price,
72
+ productId,
73
+ name: modifier.name,
74
+ quantity: isSelected ? 1 : 0,
75
+ modifierSetId: modifierSet.id,
76
+ }
77
+
78
+ setValue(
79
+ `${productId}.orderProductModifiers.${modifierSet.id}.${orderModifiers.modifierId}`,
80
+ orderModifiers,
81
+ )
82
+ })
83
+ }
84
+
85
+ if (selectedModifier && type === 'checkbox') {
86
+ const orderModifiers: OrderModifier = {
87
+ modifierId: selectedModifier.id,
88
+ price: selectedModifier.price,
89
+ productId,
90
+ name: selectedModifier.name,
91
+ quantity: checkSelectedModifier ? 0 : 1,
92
+ modifierSetId: modifierSet.id,
93
+ }
94
+ setValue(
95
+ `${productId}.orderProductModifiers.${modifierSet.id}.${selectedModifier.id}`,
96
+ orderModifiers,
97
+ )
98
+ }
99
+
100
+ if (selectedModifier && type === 'selector') {
101
+ const orderModifiers: OrderModifier = {
102
+ modifierId: selectedModifier.id,
103
+ price: selectedModifier.price,
104
+ productId,
105
+ quantity,
106
+ name: selectedModifier.name,
107
+ modifierSetId: modifierSet.id,
108
+ }
109
+ setValue(
110
+ `${productId}.orderProductModifiers.${modifierSet.id}.${selectedModifier.id}`,
111
+ orderModifiers,
112
+ )
113
+ }
114
+
115
+ trigger(`${productId}.orderProductModifiers`)
116
+ }
117
+
118
+ useEffect(() => {
119
+ if (!orderProductModifierSets?.length) return
120
+ orderProductModifierSets.forEach((orderModifier) =>
121
+ setValue(
122
+ `${productId}.orderProductModifiers.${orderModifier.modifierSetId}.${orderModifier.modifierId}`,
123
+ orderModifier,
124
+ ),
125
+ )
126
+ }, [isEditMode])
127
+
128
+ const radioButtonDefaultModifier = currentOrderModifiersSets.find((modifier) =>
129
+ modifierSet.modifiers.some((rl) => rl.id === modifier.modifierId)
130
+ )?.modifierId.toString();
131
+
132
+ return (
133
+ <>
134
+ {modifierSet?.maxItems === 1 &&
135
+ modifiers.every((modifier) => modifier.maxItems === 1) ? (
136
+ <>
137
+ <Controller
138
+ name={`${productId}.modifier`}
139
+ control={control}
140
+ rules={{
141
+ required: {
142
+ value: !!modifierSet.minItems,
143
+ message: t('Validation:fieldRequired') as string,
144
+ },
145
+ }}
146
+ render={({ field, fieldState }) => {
147
+ const onChange = (e: ChangeEvent<HTMLInputElement>) => {
148
+ onChangeModifiers(e, 'radio')
149
+ field.onChange(e.target.id)
150
+ }
151
+
152
+ return (
153
+ <>
154
+ {modifiers.map((modifier) => {
155
+ const selectedOrderModifierId = currentOrderModifiersSets
156
+ ?.find(
157
+ (orderModifier) =>
158
+ orderModifier.modifierId === modifier.id,
159
+ )
160
+ ?.modifierId?.toString()
161
+
162
+ return (
163
+ <Col key={modifier.id}>
164
+ <div className='modifier-container d-flex flex-column p-2'>
165
+ <Form.Check
166
+ className='custom-radio p-2'
167
+ inline
168
+ id={modifier.id.toString()}
169
+ defaultChecked={!!selectedOrderModifierId}
170
+ defaultValue={selectedOrderModifierId || modifier.id.toString()}
171
+ checked={field.value === modifier.id.toString()}
172
+ onChange={onChange}
173
+ type='radio'
174
+ label={modifier.name}
175
+ name={modifier.name}
176
+ />
177
+ <div className='mt-3 w-100 pl-2'>
178
+ <p>{modifier.description}</p>
179
+ <div className='modifier-price'>
180
+ + {formatToCurrency(modifier.price)}
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </Col>
185
+ )
186
+ })}
187
+ {fieldState.error && (
188
+ <div className='invalid-feedback d-block'>
189
+ {fieldState.error.message}
190
+ </div>
191
+ )}
192
+ </>
193
+ )
194
+ }}
195
+ defaultValue={radioButtonDefaultModifier}
196
+ />
197
+ </>
198
+ ) : (
199
+ <>
200
+ {modifiers?.map((modifier, index) => {
201
+ const selectedOrderModifier = currentOrderModifiersSets?.find(
202
+ (orderModifier) => orderModifier.modifierId === modifier.id,
203
+ )?.quantity
204
+
205
+ return (
206
+ <>
207
+ {modifier.maxItems === 1 ? (
208
+ <>
209
+ <Controller
210
+ name={`${productId}.${modifierSet.id}.modifiers[${index}]`}
211
+ control={control}
212
+ rules={{
213
+ required: {
214
+ value: !!modifier.minItems,
215
+ message: t('Validation:fieldRequired') as string,
216
+ },
217
+ validate: (value) => {
218
+ const { maxItems, minItems } = modifier
219
+ if (value?.length > maxItems) {
220
+ return t('Validation:quantityMaxNumberModifier', {
221
+ max: maxItems,
222
+ }) as string
223
+ }
224
+
225
+ if (value?.length < minItems) {
226
+ return t('Validation:quantityMinNumberModifier', {
227
+ min: minItems,
228
+ }) as string
229
+ }
230
+
231
+ return true
232
+ },
233
+ }}
234
+ render={({ field, fieldState: { error } }) => {
235
+ const onChange = (e: ChangeEvent<HTMLInputElement>) => {
236
+ onChangeModifiers(e, 'checkbox')
237
+ field.onChange(
238
+ xor(field.value, [Number(e.target.value)]),
239
+ )
240
+ }
241
+
242
+ return (
243
+ <Col
244
+ className='modifier-container pl-4'
245
+ key={modifier.id.toString()}
246
+ >
247
+ <div className='d-flex justify-content-between pl-2 align-items-center'>
248
+ <Checkbox
249
+ value={modifier.id}
250
+ onChange={onChange}
251
+ label={modifier.name}
252
+ defaultChecked={!!selectedOrderModifier}
253
+ />
254
+ </div>
255
+ <div className='mt-3 w-100 pl-2'>
256
+ <p>{modifier.description}</p>
257
+ <div className='modifier-price'>
258
+ + {formatToCurrency(modifier.price)}
259
+ </div>
260
+ </div>
261
+ {error?.message && (
262
+ <div className='invalid-feedback d-flex'>
263
+ {error?.message}
264
+ </div>
265
+ )}
266
+ </Col>
267
+ )
268
+ }}
269
+ />
270
+ </>
271
+ ) : (
272
+ <>
273
+ <div className='modifier-header m-0'>
274
+ <div className='title'>{modifier.name}</div>
275
+ </div>
276
+ <Controller
277
+ control={control}
278
+ name={`${productId}.${modifierSet.id}.modifiers[${index}].quantity`}
279
+ rules={{
280
+ required: {
281
+ value: !!modifier.minItems,
282
+ message: t('Validation:fieldRequired') as string,
283
+ },
284
+ validate: (value) => {
285
+ const { maxItems, minItems } = modifier
286
+ if (value > maxItems) {
287
+ return t('Validation:quantityMaxNumberModifier', {
288
+ max: maxItems,
289
+ }) as string
290
+ }
291
+
292
+ if (value < minItems) {
293
+ return t('Validation:quantityMinNumberModifier', {
294
+ min: minItems,
295
+ }) as string
296
+ }
297
+
298
+ return true
299
+ },
300
+ }}
301
+ render={({
302
+ field: { onChange, value, ref },
303
+ fieldState: { invalid, error },
304
+ }) => {
305
+ const onChangeProductQuantity = (val: number) => {
306
+ const quantity = Math.min(
307
+ MAX_PRODUCT_NUMBER,
308
+ Math.max(0, Math.ceil(val)),
309
+ )
310
+ onChange(quantity)
311
+ trigger(
312
+ `${productId}.${modifierSet.id}.modifiers[${index}].quantity`,
313
+ )
314
+ onChangeModifiers(
315
+ { target: { id: modifier.id.toString() } },
316
+ 'selector',
317
+ quantity,
318
+ )
319
+ }
320
+
321
+ return (
322
+ <div className='modifier-container'>
323
+ <div className='d-flex align-items-center column mb-8 pl-6 pt-2'>
324
+ <div className='quantity-container mb-0'>
325
+ <NumberInputHorizontal
326
+ ref={ref}
327
+ size='big'
328
+ onChange={onChangeProductQuantity}
329
+ onMinusClick={onChangeProductQuantity}
330
+ onPlusClick={onChangeProductQuantity}
331
+ min={0}
332
+ max={MAX_PRODUCT_NUMBER}
333
+ value={value ?? selectedOrderModifier ?? 0}
334
+ className={clsx(invalid && 'error')}
335
+ isLoading={isLoading}
336
+ />
337
+ </div>
338
+ </div>
339
+ <div className='p-2 mt-3 w-100 pl-4'>
340
+ <p className='pl-2'>{modifier.description}</p>
341
+ <div className='pl-2 modifier-price'>
342
+ + {formatToCurrency(modifier.price)}
343
+ </div>
344
+ {error?.message && (
345
+ <div className='d-flex mt-3 w-100'>
346
+ <p className='iframe-event__message-error'>
347
+ {error.message}
348
+ </p>
349
+ </div>
350
+ )}
351
+ </div>
352
+ </div>
353
+ )
354
+ }}
355
+ />
356
+ </>
357
+ )}
358
+ </>
359
+ )
360
+ })}
361
+ </>
362
+ )}
363
+ </>
364
+ )
365
+ }
366
+
367
+ type CheckboxProps = {
368
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void
369
+ value: number
370
+ label: string
371
+ defaultChecked: boolean
372
+ }
373
+
374
+ const Checkbox = ({
375
+ onChange,
376
+ value,
377
+ label,
378
+ defaultChecked,
379
+ }: CheckboxProps) => {
380
+ const checkboxId = useId()
381
+
382
+ return (
383
+ <Form.Group controlId={checkboxId} className='custom-checkbox mt-0'>
384
+ <Form.Check
385
+ label={label}
386
+ value={value}
387
+ defaultChecked={defaultChecked}
388
+ onChange={onChange}
389
+ type='checkbox'
390
+ />
391
+ </Form.Group>
392
+ )
393
+ }
@@ -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>