@licklist/design 0.73.0 → 0.74.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 (235) hide show
  1. package/dist/affiliate/form/AffiliateForm.d.ts.map +1 -1
  2. package/dist/assets/dashboard/chartBar.svg.js +2 -2
  3. package/dist/auth/Authorizer.d.ts.map +1 -1
  4. package/dist/auth/Authorizer.js +2 -1
  5. package/dist/auth/Login/LoginComponent.js +2 -1
  6. package/dist/auth/Router.d.ts.map +1 -1
  7. package/dist/auth/Router.js +18 -14
  8. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts +2 -1
  9. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
  10. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +3 -2
  11. package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts +2 -1
  12. package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts.map +1 -1
  13. package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.js +3 -2
  14. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts +2 -1
  15. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts.map +1 -1
  16. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.js +6 -4
  17. package/dist/events/edit-event-modal/utils/getDefaultProductSet.js +1 -1
  18. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts +2 -1
  19. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts.map +1 -1
  20. package/dist/events/event-statistic-modal/EventStatisticModal.js +2 -2
  21. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts +1 -1
  22. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts.map +1 -1
  23. package/dist/events/event-statistic-modal/hooks/useTableData.js +2 -1
  24. package/dist/events/event-statistic-modal/utils/index.js +3 -3
  25. package/dist/events/event-venue-map/EventVenueMap.d.ts.map +1 -1
  26. package/dist/events/event-venue-map/EventVenueMap.js +1 -0
  27. package/dist/events/event-venue-map/hooks/useCanvasSize.d.ts.map +1 -1
  28. package/dist/events/event-venue-map/hooks/useCanvasSize.js +11 -4
  29. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.js +2 -3
  30. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.d.ts.map +1 -1
  31. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.js +4 -11
  32. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.d.ts.map +1 -1
  33. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.d.ts.map +1 -1
  34. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.js +13 -0
  35. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
  36. package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -1
  37. package/dist/iframe/ryft/utils/ryft-form.js +4 -5
  38. package/dist/index.d.ts +0 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +0 -5
  41. package/dist/layout/DropDown.d.ts +2 -1
  42. package/dist/layout/DropDown.d.ts.map +1 -1
  43. package/dist/notification/email-template/control/EmailTemplateControl.d.ts.map +1 -1
  44. package/dist/notification/email-template/control/EmailTemplateControl.js +3 -0
  45. package/dist/product-set/control/ProductSetControl.d.ts +4 -1
  46. package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
  47. package/dist/product-set/control/ProductSetControl.js +13 -2
  48. package/dist/product-set/form/ProductCategoriesControl.d.ts +2 -1
  49. package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
  50. package/dist/product-set/form/ProductCategoriesControl.js +3 -2
  51. package/dist/product-set/form/ProductSetForm.d.ts +7 -4
  52. package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
  53. package/dist/product-set/form/ProductSetForm.js +5 -3
  54. package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
  55. package/dist/product-set/form/ProductZonesControl.js +0 -2
  56. package/dist/product-set/form/ProductsControl.d.ts +2 -1
  57. package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
  58. package/dist/product-set/form/ProductsControl.js +7 -3
  59. package/dist/product-set/form/StepsControl.d.ts +2 -1
  60. package/dist/product-set/form/StepsControl.d.ts.map +1 -1
  61. package/dist/product-set/form/StepsControl.js +5 -3
  62. package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
  63. package/dist/product-set/form/SubProductsControl.js +1 -3
  64. package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
  65. package/dist/product-set/form/VenueMapsControl.js +0 -3
  66. package/dist/product-set/form/context.d.ts +1 -2
  67. package/dist/product-set/form/context.d.ts.map +1 -1
  68. package/dist/product-set/product/ProductControl.d.ts +6 -2
  69. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  70. package/dist/product-set/product/ProductControl.js +36 -1
  71. package/dist/product-set/product/booking-management/ProductBookingManagementControl.d.ts.map +1 -1
  72. package/dist/product-set/product/booking-management/ProductBookingManagementControl.js +6 -0
  73. package/dist/product-set/product/deposit/ProductDepositControl.d.ts.map +1 -1
  74. package/dist/product-set/product/deposit/ProductDepositControl.js +3 -0
  75. package/dist/product-set/product/duration/ProductDurationControl.d.ts.map +1 -1
  76. package/dist/product-set/product/duration/ProductDurationControl.js +6 -0
  77. package/dist/product-set/product/price/ProductPriceControl.d.ts.map +1 -1
  78. package/dist/product-set/product/price/ProductPriceControl.js +3 -0
  79. package/dist/product-set/product/quantity/ProductQuantityConstantControl.d.ts.map +1 -1
  80. package/dist/product-set/product/quantity/ProductQuantityConstantControl.js +6 -0
  81. package/dist/product-set/product/quantity/ProductQuantityControl.d.ts.map +1 -1
  82. package/dist/product-set/product/quantity/ProductQuantityControl.js +6 -0
  83. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.d.ts.map +1 -1
  84. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.js +4 -1
  85. package/dist/product-set/product/scanRange/ProductScanRangeControl.d.ts +12 -0
  86. package/dist/product-set/product/scanRange/ProductScanRangeControl.d.ts.map +1 -0
  87. package/dist/product-set/product/scanRange/ProductScanRangeControl.js +153 -0
  88. package/dist/product-set/product/scanRange/index.d.ts +2 -0
  89. package/dist/product-set/product/scanRange/index.d.ts.map +1 -0
  90. package/dist/product-set/product-category/ProductCategoryControl.d.ts.map +1 -1
  91. package/dist/product-set/product-category/ProductCategoryControl.js +12 -0
  92. package/dist/product-set/utils/index.d.ts +5 -1
  93. package/dist/product-set/utils/index.d.ts.map +1 -1
  94. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  95. package/dist/recurrence-input/RecurrenceEndInput.js +3 -0
  96. package/dist/recurring-date-picker-input/RecurrenceEndInput.d.ts.map +1 -1
  97. package/dist/resource/form/components/CapacityControl.d.ts.map +1 -1
  98. package/dist/resource/form/components/CapacityControl.js +3 -0
  99. package/dist/resource/form/components/SortControl.d.ts.map +1 -1
  100. package/dist/resource/form/components/SortControl.js +3 -0
  101. package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
  102. package/dist/sales/booking/results/components/ResultCard.js +0 -2
  103. package/dist/sales/coupon/control/CouponFormControl.d.ts.map +1 -1
  104. package/dist/sales/coupon/control/CouponFormControl.js +21 -0
  105. package/dist/setting/dashboard/DashboardSettingForm.d.ts.map +1 -1
  106. package/dist/setting/dashboard/DashboardSettingForm.js +4 -1
  107. package/dist/setting/index.d.ts +0 -2
  108. package/dist/setting/index.d.ts.map +1 -1
  109. package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  110. package/dist/static/CurrencyNumberInput.d.ts.map +1 -1
  111. package/dist/static/CurrencyNumberInput.js +3 -0
  112. package/dist/static/form-number-input/FormNumberInput.d.ts.map +1 -1
  113. package/dist/static/form-number-input/FormNumberInput.js +3 -0
  114. package/dist/static/number-input/NumberInput.d.ts.map +1 -1
  115. package/dist/static/number-input/NumberInput.js +3 -0
  116. package/dist/styles/form/CustomCheckbox.scss +31 -0
  117. package/dist/styles/iframe-events/Calendar.scss +1 -1
  118. package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  119. package/dist/styles/product-set/ProductSetForm.scss +2 -3
  120. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +1 -3
  121. package/dist/styles/sales/BookingResults.scss +1 -1
  122. package/dist/zone/form/components/GameDurationControl.d.ts.map +1 -1
  123. package/dist/zone/form/components/GameDurationControl.js +3 -0
  124. package/dist/zone/form/components/SortControl.d.ts.map +1 -1
  125. package/dist/zone/form/components/SortControl.js +3 -0
  126. package/package.json +12 -6
  127. package/src/affiliate/form/AffiliateForm.tsx +1 -0
  128. package/src/auth/Authorizer.tsx +1 -0
  129. package/src/auth/Login/LoginComponent.tsx +1 -1
  130. package/src/auth/Router.tsx +19 -19
  131. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +15 -7
  132. package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +3 -0
  133. package/src/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.tsx +3 -0
  134. package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +1 -1
  135. package/src/events/event-statistic-modal/EventStatisticModal.tsx +3 -1
  136. package/src/events/event-statistic-modal/hooks/useTableData.tsx +2 -1
  137. package/src/events/event-statistic-modal/utils/index.ts +4 -4
  138. package/src/events/event-venue-map/EventVenueMap.tsx +1 -0
  139. package/src/events/event-venue-map/hooks/useCanvasSize.ts +5 -1
  140. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.tsx +2 -2
  141. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.tsx +5 -13
  142. package/src/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.tsx +1 -0
  143. package/src/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.tsx +9 -0
  144. package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +1 -0
  145. package/src/iframe/ryft/utils/ryft-form.ts +6 -5
  146. package/src/index.ts +0 -1
  147. package/src/layout/DropDown.tsx +1 -1
  148. package/src/notification/email-template/control/EmailTemplateControl.tsx +1 -0
  149. package/src/product-set/control/ProductSetControl.tsx +17 -0
  150. package/src/product-set/form/ProductCategoriesControl.tsx +3 -0
  151. package/src/product-set/form/ProductSetForm.tsx +10 -6
  152. package/src/product-set/form/ProductZonesControl.tsx +1 -4
  153. package/src/product-set/form/ProductsControl.tsx +6 -7
  154. package/src/product-set/form/StepsControl.tsx +4 -3
  155. package/src/product-set/form/SubProductsControl.tsx +1 -3
  156. package/src/product-set/form/VenueMapsControl.tsx +0 -3
  157. package/src/product-set/form/context.tsx +2 -5
  158. package/src/product-set/product/ProductControl.tsx +57 -18
  159. package/src/product-set/product/advanced-options/AdvancedOptions.tsx +1 -1
  160. package/src/product-set/product/booking-management/ProductBookingManagementControl.tsx +2 -0
  161. package/src/product-set/product/deposit/ProductDepositControl.tsx +1 -0
  162. package/src/product-set/product/duration/ProductDurationControl.tsx +2 -0
  163. package/src/product-set/product/price/ProductPriceControl.tsx +1 -0
  164. package/src/product-set/product/quantity/ProductQuantityConstantControl.tsx +2 -0
  165. package/src/product-set/product/quantity/ProductQuantityControl.tsx +2 -0
  166. package/src/product-set/product/quantity/ProductQuantityRechargingControl.tsx +1 -0
  167. package/src/product-set/product/scanRange/ProductScanRangeControl.stories.ts +45 -0
  168. package/src/product-set/product/scanRange/ProductScanRangeControl.tsx +163 -0
  169. package/src/product-set/product/scanRange/index.ts +1 -0
  170. package/src/product-set/product-category/ProductCategoryControl.tsx +4 -0
  171. package/src/product-set/product-zone/ProductZoneControl.tsx +1 -1
  172. package/src/recurrence-input/RecurrenceEndInput.tsx +1 -0
  173. package/src/recurring-date-picker-input/RecurrenceEndInput.tsx +1 -0
  174. package/src/resource/form/components/CapacityControl.tsx +1 -0
  175. package/src/resource/form/components/SortControl.tsx +1 -0
  176. package/src/sales/booking/results/components/ResultCard.tsx +0 -2
  177. package/src/sales/coupon/control/CouponFormControl.tsx +7 -0
  178. package/src/setting/dashboard/DashboardSettingForm.tsx +1 -0
  179. package/src/setting/index.ts +0 -2
  180. package/src/sortable-tree/SortableTreeItem.tsx +1 -6
  181. package/src/static/CurrencyNumberInput.tsx +1 -0
  182. package/src/static/form-number-input/FormNumberInput.tsx +1 -0
  183. package/src/static/number-input/NumberInput.tsx +1 -0
  184. package/src/styles/form/CustomCheckbox.scss +31 -0
  185. package/src/styles/iframe-events/Calendar.scss +1 -1
  186. package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  187. package/src/styles/product-set/ProductSetForm.scss +2 -3
  188. package/src/styles/ryft-payment-form/RyftPaymentForm.scss +1 -3
  189. package/src/styles/sales/BookingResults.scss +1 -1
  190. package/src/zone/form/components/GameDurationControl.tsx +1 -0
  191. package/src/zone/form/components/SortControl.tsx +1 -0
  192. package/yarn.lock +827 -877
  193. package/dist/header/BookeditHeader.d.ts +0 -12
  194. package/dist/header/BookeditHeader.d.ts.map +0 -1
  195. package/dist/header/BookeditHeader.js +0 -21
  196. package/dist/header/Header.d.ts +0 -24
  197. package/dist/header/Header.d.ts.map +0 -1
  198. package/dist/header/Header.js +0 -81
  199. package/dist/header/elements/CompanySelector.d.ts +0 -11
  200. package/dist/header/elements/CompanySelector.d.ts.map +0 -1
  201. package/dist/header/elements/CompanySelector.js +0 -36
  202. package/dist/header/elements/index.d.ts +0 -3
  203. package/dist/header/elements/index.d.ts.map +0 -1
  204. package/dist/header/index.d.ts +0 -6
  205. package/dist/header/index.d.ts.map +0 -1
  206. package/dist/setting/admin/AdminSettingForm.d.ts +0 -25
  207. package/dist/setting/admin/AdminSettingForm.d.ts.map +0 -1
  208. package/dist/setting/admin/AdminSettingForm.js +0 -220
  209. package/dist/setting/admin/PaymentFeeForm.d.ts +0 -13
  210. package/dist/setting/admin/PaymentFeeForm.d.ts.map +0 -1
  211. package/dist/setting/admin/PaymentFeeForm.js +0 -424
  212. package/dist/setting/admin/index.d.ts +0 -2
  213. package/dist/setting/admin/index.d.ts.map +0 -1
  214. package/dist/setting/system/SystemSettingForm.d.ts +0 -10
  215. package/dist/setting/system/SystemSettingForm.d.ts.map +0 -1
  216. package/dist/setting/system/SystemSettingForm.js +0 -95
  217. package/dist/setting/system/index.d.ts +0 -2
  218. package/dist/setting/system/index.d.ts.map +0 -1
  219. package/dist/types/currency.d.ts +0 -5
  220. package/dist/types/currency.d.ts.map +0 -1
  221. package/src/header/BookeditHeader.tsx +0 -34
  222. package/src/header/Header.stories.tsx +0 -72
  223. package/src/header/Header.tsx +0 -107
  224. package/src/header/elements/CompanySelector.tsx +0 -47
  225. package/src/header/elements/Elements.stories.tsx +0 -33
  226. package/src/header/elements/index.ts +0 -3
  227. package/src/header/index.ts +0 -7
  228. package/src/setting/admin/AdminSetting.stories.tsx +0 -52
  229. package/src/setting/admin/AdminSettingForm.tsx +0 -196
  230. package/src/setting/admin/PaymentFeeForm.tsx +0 -304
  231. package/src/setting/admin/index.ts +0 -1
  232. package/src/setting/system/SystemSetting.stories.tsx +0 -26
  233. package/src/setting/system/SystemSettingForm.tsx +0 -62
  234. package/src/setting/system/index.ts +0 -1
  235. package/src/types/currency.ts +0 -4
@@ -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
  }`}
@@ -61,6 +61,7 @@ const processedPaymentSummary = ({
61
61
  const total = order.fullAmount || calculateTotalPrice(order, externalPaymentDetail)
62
62
 
63
63
  const totalDiscount = calculateTotalDiscount(order.payments)
64
+
64
65
  let summaryItems: SummaryItem[] = [
65
66
  {
66
67
  translateKey: AMOUNT_TOTAL,
@@ -61,20 +61,22 @@ export const injectComponentsInRyftForm = ({
61
61
  divider.id = 'mobile-pay-divider'
62
62
  container.id = 'mobile-pay-divider-container'
63
63
  container.append(dividerText, divider)
64
- const payIframe = document.getElementById("ryft-pay-iframe");
64
+ const payIframe = document.getElementById('ryft-pay-iframe')
65
65
  if (payIframe) {
66
66
  const formBox = document.getElementById('form-disable-box')
67
67
  if (formBox) {
68
- formBox.style.display = isDisableButton ? "block" : "none"
68
+ formBox.style.display = isDisableButton ? 'block' : 'none'
69
69
  }
70
70
 
71
71
  const googleButton = document.getElementById(
72
72
  'gpay-button-online-api-id',
73
73
  ) as HTMLButtonElement
74
- const appleButton =document.getElementById("ryft-pay-apple-pay-button") as HTMLButtonElement
74
+ const appleButton = document.getElementById(
75
+ 'ryft-pay-apple-pay-button',
76
+ ) as HTMLButtonElement
75
77
  if (googleButton) {
76
78
  googleButton.disabled = isDisableButton
77
- googleButton.style.opacity = isDisableButton ? '1' : '0.6'
79
+ googleButton.style.opacity = !isDisableButton ? '1' : '0.6'
78
80
  }
79
81
  if (appleButton) {
80
82
  appleButton.disabled = isDisableButton
@@ -86,7 +88,6 @@ export const injectComponentsInRyftForm = ({
86
88
  const applePayButton = document.createElement('button')
87
89
  applePayButton.id = 'apple-pay'
88
90
  applePayButton.type = 'button'
89
- applePayButton.style.opacity = !isDisableButton ? '1' : '0.6'
90
91
  applePayButton.className = 'bg-dark btn btn-primary apple-pay-button'
91
92
  applePayButton.textContent = t('Events:payWithApple')
92
93
  applePayButton.onclick = onApplePayButtonClick
package/src/index.ts CHANGED
@@ -4,7 +4,6 @@ export * from './custom-fields'
4
4
  export * from './error'
5
5
  export * from './events'
6
6
  export * from './file-upload'
7
- export * from './header'
8
7
  export * from './help'
9
8
  export * from './iframe'
10
9
  export * from './layout'
@@ -1,4 +1,4 @@
1
- import { forwardRef } from 'react'
1
+ import React, { forwardRef } from 'react'
2
2
 
3
3
  interface Props {
4
4
  children?: React.ReactNode | React.ReactNode[]
@@ -434,6 +434,7 @@ export const EmailTemplateControl = forwardRef(
434
434
  `templateOptionValues.${option?.id}.value`,
435
435
  )}
436
436
  type='number'
437
+ onWheel={(event) => event.currentTarget.blur()}
437
438
  placeholder={t(`Design:${option.name}`)}
438
439
  id={option.name + option.id}
439
440
  defaultValue={option.selectedValue || ''}
@@ -69,6 +69,7 @@ export interface ProductSetControlValues extends DateAndRecurrenceInputValues {
69
69
  fieldSetId?: number
70
70
  saleDeadline?: number
71
71
  steps: Step[]
72
+ hasGeneralTicket?: boolean
72
73
  emailTemplates?: TemplateItem[]
73
74
  smsTemplates?: TemplateItem[]
74
75
  localImageBlobURL?: string
@@ -96,8 +97,10 @@ export interface ProductSetControlProps {
96
97
  providerHasBookingManagement?: boolean
97
98
  isOverrides?: boolean
98
99
  saleDeadline?: number
100
+ hasGeneralTicket?: boolean
99
101
  isCreateNewOverrides?: boolean
100
102
  timeZone: string
103
+ isWaiverEnabled: boolean
101
104
  }
102
105
 
103
106
  export function ProductSetControl({
@@ -116,6 +119,7 @@ export function ProductSetControl({
116
119
  isOverrides = false,
117
120
  isCreateNewOverrides = false,
118
121
  timeZone,
122
+ isWaiverEnabled,
119
123
  }: ProductSetControlProps) {
120
124
  const { t } = useTranslation(['Design', 'Validation', 'Notification'])
121
125
  const {
@@ -236,6 +240,7 @@ export function ProductSetControl({
236
240
  isEventEditProductSet={isEventEditProductSet}
237
241
  isOverrides={isOverrides}
238
242
  isCreateNewOverrides={isCreateNewOverrides}
243
+ isWaiverEnabled={isWaiverEnabled}
239
244
  />
240
245
  </Col>
241
246
  <Col md={6} sm={12}>
@@ -307,6 +312,18 @@ export function ProductSetControl({
307
312
  </Form.Control.Feedback>
308
313
  </Form.Group>
309
314
 
315
+ <Form.Group
316
+ controlId='hasGeneralTicket'
317
+ className='checkbox-second-column mt-4'
318
+ >
319
+ <Form.Check
320
+ data-testid='save-as-template-checkbox'
321
+ label={t('Design:hasGeneralTicket')}
322
+ {...register('hasGeneralTicket')}
323
+ custom
324
+ />
325
+ </Form.Group>
326
+
310
327
  <Form.Group controlId={termsAndConditionsId}>
311
328
  <Form.Label>{t('Design:termsAndConditions')}</Form.Label>
312
329
  <Form.Control
@@ -66,6 +66,7 @@ interface ProductCategoriesControlProps extends WithIsLoading {
66
66
  isOverrides?: boolean
67
67
  isEventEditProductSet?: boolean
68
68
  isCreateNewOverrides?: boolean
69
+ isWaiverEnabled: boolean
69
70
  }
70
71
 
71
72
  const getCategoryDefaultValue = (
@@ -99,6 +100,7 @@ export function ProductCategoriesControl({
99
100
  isOverrides,
100
101
  isEventEditProductSet,
101
102
  isCreateNewOverrides,
103
+ isWaiverEnabled,
102
104
  }: ProductCategoriesControlProps) {
103
105
  const { t } = useTranslation('Design')
104
106
  const {
@@ -347,6 +349,7 @@ export function ProductCategoriesControl({
347
349
  isOverrides={isOverrides}
348
350
  isEventEditProductSet={isEventEditProductSet}
349
351
  isCreateNewOverrides={isCreateNewOverrides}
352
+ isWaiverEnabled={isWaiverEnabled}
350
353
  />
351
354
  </SortableTree.Item>
352
355
  )}
@@ -7,13 +7,10 @@ import { VenueMapSet } from '@licklist/core/dist/DataMapper/Product/VenueMapSetD
7
7
  import { ServerError } from '@licklist/plugins/dist/hooks/Api/useHttpQuery'
8
8
  import FormErrorService from '@licklist/plugins/dist/services/Form/FormErrorService'
9
9
  import { ModifierSet } from '@licklist/core/dist/DataMapper/Product/ModifierSetDataMapper'
10
-
11
10
  import { isEqual } from 'lodash'
12
- // eslint-disable-next-line max-len
13
- import { ProviderBookingManagementSetting } from '@licklist/core/dist/DataMapper/Provider/ProviderBookingManagementSettingDataMapper'
14
11
  import { Zone } from '@licklist/core/dist/DataMapper/Provider/ZoneDataMapper'
15
12
  import { WorkHour } from '@licklist/core/dist/DataMapper/Provider/WorkHourDataMapper'
16
- import { transformErrorToMessage } from '@licklist/plugins'
13
+ import { transformErrorToMessage } from '@licklist/plugins/dist/utils/error'
17
14
  import { Dialog, useDialogContext } from '../../modals/dialog'
18
15
  import {
19
16
  ProductSetControl,
@@ -33,12 +30,16 @@ import { ErrorModal } from '../../iframe/order-process/components/ErrorModal'
33
30
  export interface WithIsLoading {
34
31
  isLoading: boolean
35
32
  }
33
+ export interface WithIdOptional {
34
+ id?: number
35
+ }
36
+
36
37
  export interface WithId {
37
38
  id: number
38
39
  }
39
40
  export interface ProductSetFormValues
40
41
  extends FormValues,
41
- WithId,
42
+ WithIdOptional,
42
43
  ProductSetControlValues {
43
44
  steps: Step[]
44
45
  isOverrides?: boolean
@@ -55,7 +56,8 @@ export interface ProductSetFormProps
55
56
  serverErrors?: ServerError
56
57
  providerHasMap?: boolean
57
58
  venueMapSets?: VenueMapSet[]
58
- providerHasBookingManagement?: ProviderBookingManagementSetting['hasBookingManagement']
59
+ providerHasBookingManagement?: boolean
60
+ isWaiverEnabled: boolean
59
61
  zones?: Zone[] | null
60
62
  isCreateAction?: boolean
61
63
  isOverrides?: boolean
@@ -78,6 +80,7 @@ export function ProductSetForm({
78
80
  providerHasMap = false,
79
81
  venueMapSets = [],
80
82
  providerHasBookingManagement,
83
+ isWaiverEnabled,
81
84
  zones,
82
85
  isCreateAction,
83
86
  workHours,
@@ -209,6 +212,7 @@ export function ProductSetForm({
209
212
  isOverrides={isOverrides}
210
213
  isCreateNewOverrides={isCreateNewOverrides}
211
214
  timeZone={timeZone}
215
+ isWaiverEnabled={isWaiverEnabled}
212
216
  />
213
217
  <Row>
214
218
  <Col md={6} sm={12} />
@@ -1,7 +1,4 @@
1
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
- // @ts-nocheck
3
- import React, { useContext, useState } from 'react'
4
-
1
+ import { useContext, useState } from 'react'
5
2
  import {
6
3
  ArrayPath,
7
4
  Controller,
@@ -12,15 +12,12 @@ import { useTranslation } from 'react-i18next'
12
12
  import { DEFAULT_PRODUCT_TYPE } from '@licklist/core/dist/DataMapper/Product/ProductDataMapper'
13
13
  import { generateUuid } from '@licklist/core/dist/Services'
14
14
  import HookFormService from '@licklist/plugins/dist/services/Form/HookFormService'
15
-
16
15
  import { CategoryType } from '@licklist/core/dist/DataMapper/Product/ProductCategoryDataMapper'
17
16
  import { ProductControl, ProductControlProps, ProductSetFormValues } from '..'
18
17
  import { SortableTree } from '../../sortable-tree'
19
18
  import { CreateProductSetItem } from '../item/CreateProductSetItem'
20
19
  import { Product } from '../types'
21
20
  import { WithIsLoading } from './ProductSetForm'
22
- // @TODO not for first release
23
- // import Popover from "./ProductSetFormPopover";
24
21
  import { useSortableTreeFunctions } from '../hooks/useSortableTreeFunctions'
25
22
  import { SubProductsControl } from './SubProductsControl'
26
23
  import { ProductSetModalClasses } from '../../sortable-tree/SortableTreeItem'
@@ -35,6 +32,7 @@ interface ProductsControlProps extends WithIsLoading {
35
32
  isOverrides?: boolean
36
33
  isEventEditProductSet?: boolean
37
34
  isCreateNewOverrides?: boolean
35
+ isWaiverEnabled: boolean
38
36
  }
39
37
 
40
38
  const getDefaultProductValue = (sort: number): Product => ({
@@ -47,6 +45,8 @@ const getDefaultProductValue = (sort: number): Product => ({
47
45
  deposit: 0,
48
46
  minQuantity: null,
49
47
  maxQuantity: null,
48
+ scanRangeStart: null,
49
+ scanRangeEnd: null,
50
50
  totalQuantity: 0,
51
51
  isAvailable: true,
52
52
  modifiersSet: [],
@@ -76,6 +76,7 @@ export function ProductsControl({
76
76
  isOverrides,
77
77
  isEventEditProductSet,
78
78
  isCreateNewOverrides,
79
+ isWaiverEnabled,
79
80
  }: ProductsControlProps) {
80
81
  const { t } = useTranslation('Design')
81
82
  const form = useFormContext<ProductSetFormValues>()
@@ -280,6 +281,7 @@ export function ProductsControl({
280
281
  isOverrides={
281
282
  isNewProductOverrides || isOverridesProductSet
282
283
  }
284
+ isWaiverEnabled={isWaiverEnabled}
283
285
  />
284
286
  }
285
287
  onDelete={() => onProductRemove(index)}
@@ -287,7 +289,6 @@ export function ProductsControl({
287
289
  trigger(`${productControlFieldName}.${index}`)
288
290
  }
289
291
  saveValidField={saveValidField}
290
- // preItem={<Popover className="d-none d-sm-block" />}
291
292
  >
292
293
  <SubProductsControl
293
294
  isLoading={isLoading}
@@ -313,9 +314,7 @@ export function ProductsControl({
313
314
  }
314
315
  }}
315
316
  />
316
- <div className='manual-form-error'>
317
- {categoryProductErrors && categoryProductErrors.message}
318
- </div>
317
+ <div className='manual-form-error'>{categoryProductErrors?.message}</div>
319
318
  </>
320
319
  )
321
320
  }
@@ -21,6 +21,7 @@ interface StepsControlProps {
21
21
  isOverrides?: boolean
22
22
  isEventEditProductSet?: boolean
23
23
  isCreateNewOverrides?: boolean
24
+ isWaiverEnabled: boolean
24
25
  }
25
26
 
26
27
  export function StepsControl({
@@ -28,6 +29,7 @@ export function StepsControl({
28
29
  isOverrides,
29
30
  isEventEditProductSet,
30
31
  isCreateNewOverrides,
32
+ isWaiverEnabled,
31
33
  }: StepsControlProps) {
32
34
  const form = useFormContext<ProductSetFormValues>()
33
35
  const { t } = useTranslation('Design')
@@ -150,6 +152,7 @@ export function StepsControl({
150
152
  isOverrides={isOverrides}
151
153
  isCreateNewOverrides={isCreateNewOverrides}
152
154
  isEventEditProductSet={isEventEditProductSet}
155
+ isWaiverEnabled={isWaiverEnabled}
153
156
  />
154
157
  </SortableTree.Item>
155
158
  )}
@@ -167,9 +170,7 @@ export function StepsControl({
167
170
  }
168
171
  }}
169
172
  />
170
- <div className='manual-form-error'>
171
- {errors.steps && errors.steps.message}
172
- </div>
173
+ <div className='manual-form-error'>{errors.steps?.message}</div>
173
174
  </>
174
175
  )
175
176
  }
@@ -56,6 +56,7 @@ export function SubProductsControl({
56
56
  quantityType={quantityType}
57
57
  allowDeposits={false}
58
58
  hasBookingManagement={false}
59
+ isWaiverEnabled={false}
59
60
  fieldNamePrefix={
60
61
  // eslint-disable-next-line max-len
61
62
  `steps.${stepIndex}.productCategories.${productCategoryIndex}.products.${productIndex}.subProducts.${index}` as const
@@ -70,9 +71,6 @@ export function SubProductsControl({
70
71
  images: subProducts[index]?.images as Image[],
71
72
  }
72
73
  // @ts-expect-error TS2345
73
- // @TODO fix prod type error
74
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
75
- // @ts-ignore
76
74
  append(subProductCopy)
77
75
  }}
78
76
  />
@@ -46,9 +46,6 @@ export const VenueMapsControl = ({
46
46
  url={image.url}
47
47
  name={name}
48
48
  points={points}
49
- // @TODO fix prod type error
50
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
51
- // @ts-ignore
52
49
  products={products}
53
50
  pointProducts={pointProducts}
54
51
  onPointProductsChange={onPointProductsChange}
@@ -8,12 +8,9 @@ import {
8
8
  } from 'react'
9
9
  import { VenueMapSet } from '@licklist/core/dist/DataMapper/Product/VenueMapSetDataMapper'
10
10
  import { ModifierSet } from '@licklist/core/dist/DataMapper/Product/ModifierSetDataMapper'
11
- // eslint-disable-next-line max-len
12
- import { ProviderBookingManagementSetting } from '@licklist/core/dist/DataMapper/Provider/ProviderBookingManagementSettingDataMapper'
13
11
  import { Zone } from '@licklist/core/dist/DataMapper/Provider/ZoneDataMapper'
14
12
  import { SelectItem } from '../../types/generic/SelectItem'
15
13
 
16
-
17
14
  interface LoadingContext {
18
15
  isLoading: boolean
19
16
  setLoading: (loading: boolean) => void
@@ -21,7 +18,7 @@ interface LoadingContext {
21
18
  modifiersSetList?: ModifierSet[] | null
22
19
  providerHasMap?: boolean | null
23
20
  venueMapSets?: VenueMapSet[]
24
- providerHasBookingManagement?: ProviderBookingManagementSetting['hasBookingManagement']
21
+ providerHasBookingManagement?: boolean
25
22
  zones?: Zone[] | null
26
23
  expandedProductCategories: Record<string, boolean>
27
24
  setExpandedProductCategories: Dispatch<
@@ -46,7 +43,7 @@ type ProductSetContextProviderProps = PropsWithChildren<
46
43
  export function ProductSetContextProvider({
47
44
  children,
48
45
  productGroupList = [],
49
- modifiersSetList =[],
46
+ modifiersSetList = [],
50
47
  providerHasMap = false,
51
48
  venueMapSets = [],
52
49
  providerHasBookingManagement,
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  CategoryType,
3
3
  QuantityType,
4
- QUANTITY_TYPE_CONSTANT,
5
- QUANTITY_TYPE_LIST_DTO,
6
- QUANTITY_TYPE_RECHARGING,
7
4
  } from '@licklist/core/dist/DataMapper/Product/ProductCategoryDataMapper'
8
- import { ProductType } from '@licklist/core/dist/DataMapper/Product/ProductDataMapper'
5
+ import {
6
+ PRODUCT_WAIVER_TYPE_ADULT,
7
+ PRODUCT_WAIVER_TYPE_CHILD,
8
+ ProductType,
9
+ ProductWaiverType,
10
+ } from '@licklist/core/dist/DataMapper/Product/ProductDataMapper'
9
11
  import HookFormService from '@licklist/plugins/dist/services/Form/HookFormService'
10
12
  import clsx from 'clsx'
11
13
  import {
@@ -28,13 +30,11 @@ import {
28
30
  Controller,
29
31
  Path,
30
32
  useFormContext,
31
- useWatch,
32
33
  UnpackNestedValue,
33
34
  PathValue,
34
35
  } from 'react-hook-form'
35
36
  import { useTranslation } from 'react-i18next'
36
37
  import { useImages } from '@licklist/plugins/dist/hooks/Media/useImages'
37
-
38
38
  import {
39
39
  Image,
40
40
  IMAGE_TYPE_IMAGE,
@@ -65,7 +65,7 @@ import { MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH } from './constants'
65
65
  import { ProductZoneControlValues } from '../product-zone'
66
66
  import { AdvancedOptions } from './advanced-options'
67
67
  import { ProductZonesControl } from '../form/ProductZonesControl'
68
-
68
+ import { ProductScanRangeControl } from './scanRange'
69
69
 
70
70
  export interface ModifiersSet {
71
71
  id: number
@@ -87,6 +87,8 @@ export interface ProductControlValues
87
87
  deposit: number
88
88
  minQuantity: number
89
89
  maxQuantity: number
90
+ scanRangeStart?: number
91
+ scanRangeEnd?: number
90
92
  totalQuantity: number
91
93
  isAvailable: boolean
92
94
  isSoldOut: boolean
@@ -106,6 +108,7 @@ export interface ProductControlValues
106
108
  sort: number | null
107
109
  color?: string
108
110
  productZones?: ProductZoneControlValues[]
111
+ waiverType?: ProductWaiverType | null
109
112
  }
110
113
 
111
114
  export interface ProductControlProps<T>
@@ -122,7 +125,7 @@ export interface ProductControlProps<T>
122
125
  hasTicket?: boolean
123
126
  categoryType?: CategoryType
124
127
  isOverrides?: boolean
125
-
128
+ isWaiverEnabled: boolean
126
129
  }
127
130
 
128
131
  export function ProductControl<T extends FormValues>({
@@ -136,8 +139,8 @@ export function ProductControl<T extends FormValues>({
136
139
  productName,
137
140
  categoryType,
138
141
  isOverrides = false,
142
+ isWaiverEnabled,
139
143
  }: ProductControlProps<T>) {
140
-
141
144
  const {
142
145
  register,
143
146
  control,
@@ -203,7 +206,6 @@ export function ProductControl<T extends FormValues>({
203
206
  setInitialImages(formImages as Image[])
204
207
  }, [getValues, setInitialImages, fieldNamePrefix])
205
208
 
206
-
207
209
  useEffect(() => {
208
210
  if (Array.isArray(images)) {
209
211
  setValue(
@@ -299,14 +301,21 @@ export function ProductControl<T extends FormValues>({
299
301
  isOverrides={isOverrides}
300
302
  onFocus={onFocus}
301
303
  />
302
-
303
- <ProductQuantityRechargingControl<T>
304
- isLoading={isLoading}
305
- fieldNamePrefix={fieldNamePrefix}
306
- onFocus={onFocus}
307
- disabled={isUnlimited}
308
- />
309
-
304
+
305
+ <ProductQuantityRechargingControl<T>
306
+ isLoading={isLoading}
307
+ fieldNamePrefix={fieldNamePrefix}
308
+ onFocus={onFocus}
309
+ disabled={isUnlimited}
310
+ />
311
+
312
+ <ProductScanRangeControl<T>
313
+ isLoading={isLoading}
314
+ fieldNamePrefix={fieldNamePrefix}
315
+ isOverrides={isOverrides}
316
+ onFocus={onFocus}
317
+ />
318
+
310
319
  <Form.Group
311
320
  controlId={unlimitedQuantityId}
312
321
  className='custom-checkbox'
@@ -411,6 +420,36 @@ export function ProductControl<T extends FormValues>({
411
420
  name={`${fieldNamePrefix}.isSoldOut` as Path<T>}
412
421
  />
413
422
  </Form.Group>
423
+
424
+ {isWaiverEnabled && (
425
+ <Form.Group>
426
+ <Form.Label>{t('Design:waiverType')}</Form.Label>
427
+ <Form.Control
428
+ {...register(`${fieldNamePrefix}.waiverType` as Path<T>)}
429
+ as='select'
430
+ defaultValue={PRODUCT_WAIVER_TYPE_ADULT}
431
+ disabled={isOverrides}
432
+ isInvalid={HookFormService.isInvalid(
433
+ `${fieldNamePrefix}.waiverType` as Path<T>,
434
+ errors,
435
+ )}
436
+ >
437
+ <option value={PRODUCT_WAIVER_TYPE_ADULT}>
438
+ {t('Design:adult')}
439
+ </option>
440
+ <option value={PRODUCT_WAIVER_TYPE_CHILD}>
441
+ {t('Design:child')}
442
+ </option>
443
+ </Form.Control>
444
+ <Form.Control.Feedback type='invalid'>
445
+ {HookFormService.getErrors(
446
+ `${fieldNamePrefix}.waiverType` as Path<T>,
447
+ errors,
448
+ )}
449
+ </Form.Control.Feedback>
450
+ </Form.Group>
451
+ )}
452
+
414
453
  <Form.Group controlId={advancedId} className='custom-checkbox'>
415
454
  <Form.Check
416
455
  custom
@@ -1,4 +1,4 @@
1
- import React, { useContext } from 'react'
1
+ import { useContext } from 'react'
2
2
  import { Col, Form } from 'react-bootstrap'
3
3
  import { Controller, Path, useFormContext } from 'react-hook-form'
4
4
  import { HookFormService } from '@licklist/plugins'
@@ -86,6 +86,7 @@ export function ProductBookingManagementControl<T extends FormValues>(
86
86
  <Form.Control
87
87
  ref={ref}
88
88
  type='number'
89
+ onWheel={(event) => event.currentTarget.blur()}
89
90
  min={0}
90
91
  step={1}
91
92
  value={value as string}
@@ -129,6 +130,7 @@ export function ProductBookingManagementControl<T extends FormValues>(
129
130
  <Form.Control
130
131
  ref={ref}
131
132
  type='number'
133
+ onWheel={(event) => event.currentTarget.blur()}
132
134
  min='0'
133
135
  step='1'
134
136
  value={value as string}
@@ -50,6 +50,7 @@ export function ProductDepositControl<T extends FormValues>(
50
50
  <Form.Control
51
51
  ref={ref}
52
52
  type='number'
53
+ onWheel={(event) => event.currentTarget.blur()}
53
54
  min={0}
54
55
  max={Number(totalPrice)}
55
56
  step='0.01'
@@ -91,6 +91,7 @@ export const ProductDurationControl = <T,>({
91
91
  <Form.Control
92
92
  type='number'
93
93
  min={0}
94
+ onWheel={(event) => event.currentTarget.blur()}
94
95
  step={1}
95
96
  value={durationHours}
96
97
  disabled={disabled}
@@ -127,6 +128,7 @@ export const ProductDurationControl = <T,>({
127
128
  type='number'
128
129
  min={0}
129
130
  step={1}
131
+ onWheel={(event) => event.currentTarget.blur()}
130
132
  disabled={disabled}
131
133
  value={durationMinutes}
132
134
  isInvalid={isInvalid}
@@ -59,6 +59,7 @@ export function ProductPriceControl<T extends FormValues>({
59
59
  ref={ref}
60
60
  type='number'
61
61
  min={0}
62
+ onWheel={(event) => event.currentTarget.blur()}
62
63
  max={999999.99}
63
64
  step='0.01'
64
65
  value={value as string}
@@ -111,6 +111,7 @@ export function ProductQuantityConstantControl<T extends FormValues>(
111
111
  type='number'
112
112
  min={0}
113
113
  step={1}
114
+ onWheel={(event) => event.currentTarget.blur()}
114
115
  value={value as string}
115
116
  isInvalid={HookFormService.isInvalid<T>(
116
117
  `${fieldNamePrefix}.totalQuantity` as Path<T>,
@@ -165,6 +166,7 @@ export function ProductQuantityConstantControl<T extends FormValues>(
165
166
  type='number'
166
167
  min={0}
167
168
  step={1}
169
+ onWheel={(event) => event.currentTarget.blur()}
168
170
  value={value as string}
169
171
  onChange={onChange}
170
172
  onFocus={onFocus}
@@ -85,6 +85,7 @@ export function ProductQuantityControl<T extends FormValues>(
85
85
  type='number'
86
86
  min={0}
87
87
  step={1}
88
+ onWheel={(event) => event.currentTarget.blur()}
88
89
  value={value as string}
89
90
  onChange={onChange}
90
91
  onFocus={onFocus}
@@ -143,6 +144,7 @@ export function ProductQuantityControl<T extends FormValues>(
143
144
  type='number'
144
145
  min={0}
145
146
  step={1}
147
+ onWheel={(event) => event.currentTarget.blur()}
146
148
  value={value && (value as string)}
147
149
  onFocus={onFocus}
148
150
  onChange={onChange}
@@ -69,6 +69,7 @@ export function ProductQuantityRechargingControl<T extends FormValues>(
69
69
  type='number'
70
70
  min={0}
71
71
  step={1}
72
+ onWheel={(event) => event.currentTarget.blur()}
72
73
  {...register(`${fieldNamePrefix}.totalQuantity` as Path<T>, {
73
74
  validate: (value) => {
74
75
  if (unlimited) return true