@licklist/design 0.72.73 → 0.74.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 (224) hide show
  1. package/dist/affiliate/form/AffiliateForm.d.ts.map +1 -1
  2. package/dist/auth/Authorizer.d.ts.map +1 -1
  3. package/dist/auth/Authorizer.js +2 -1
  4. package/dist/auth/Login/LoginComponent.js +2 -1
  5. package/dist/auth/Router.d.ts.map +1 -1
  6. package/dist/auth/Router.js +18 -14
  7. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.js +2 -1
  8. package/dist/events/edit-event-modal/utils/getDefaultProductSet.js +1 -1
  9. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts +2 -1
  10. package/dist/events/event-statistic-modal/EventStatisticModal.d.ts.map +1 -1
  11. package/dist/events/event-statistic-modal/EventStatisticModal.js +2 -2
  12. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts +1 -1
  13. package/dist/events/event-statistic-modal/hooks/useTableData.d.ts.map +1 -1
  14. package/dist/events/event-statistic-modal/hooks/useTableData.js +2 -1
  15. package/dist/events/event-statistic-modal/utils/index.js +3 -3
  16. package/dist/events/event-venue-map/EventVenueMap.d.ts.map +1 -1
  17. package/dist/events/event-venue-map/EventVenueMap.js +1 -0
  18. package/dist/events/event-venue-map/hooks/useCanvasSize.d.ts.map +1 -1
  19. package/dist/events/event-venue-map/hooks/useCanvasSize.js +11 -4
  20. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.js +2 -3
  21. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.d.ts.map +1 -1
  22. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.js +4 -11
  23. package/dist/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.d.ts.map +1 -1
  24. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.d.ts.map +1 -1
  25. package/dist/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.js +13 -0
  26. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
  27. package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -1
  28. package/dist/iframe/ryft/utils/ryft-form.js +4 -5
  29. package/dist/index.d.ts +0 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +0 -6
  32. package/dist/layout/DropDown.d.ts +2 -1
  33. package/dist/layout/DropDown.d.ts.map +1 -1
  34. package/dist/notification/email-template/control/EmailTemplateControl.d.ts.map +1 -1
  35. package/dist/notification/email-template/control/EmailTemplateControl.js +3 -0
  36. package/dist/product-set/control/ProductSetControl.d.ts +2 -0
  37. package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
  38. package/dist/product-set/control/ProductSetControl.js +10 -0
  39. package/dist/product-set/form/ProductSetForm.d.ts +5 -3
  40. package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
  41. package/dist/product-set/form/ProductSetForm.js +1 -1
  42. package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
  43. package/dist/product-set/form/ProductZonesControl.js +0 -2
  44. package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
  45. package/dist/product-set/form/ProductsControl.js +3 -0
  46. package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
  47. package/dist/product-set/form/SubProductsControl.js +0 -3
  48. package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
  49. package/dist/product-set/form/VenueMapsControl.js +0 -3
  50. package/dist/product-set/form/context.d.ts +1 -2
  51. package/dist/product-set/form/context.d.ts.map +1 -1
  52. package/dist/product-set/product/ProductControl.d.ts +2 -0
  53. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  54. package/dist/product-set/product/ProductControl.js +7 -0
  55. package/dist/product-set/product/booking-management/ProductBookingManagementControl.d.ts.map +1 -1
  56. package/dist/product-set/product/booking-management/ProductBookingManagementControl.js +6 -0
  57. package/dist/product-set/product/deposit/ProductDepositControl.d.ts.map +1 -1
  58. package/dist/product-set/product/deposit/ProductDepositControl.js +3 -0
  59. package/dist/product-set/product/duration/ProductDurationControl.d.ts.map +1 -1
  60. package/dist/product-set/product/duration/ProductDurationControl.js +6 -0
  61. package/dist/product-set/product/price/ProductPriceControl.d.ts.map +1 -1
  62. package/dist/product-set/product/price/ProductPriceControl.js +3 -0
  63. package/dist/product-set/product/quantity/ProductQuantityConstantControl.d.ts.map +1 -1
  64. package/dist/product-set/product/quantity/ProductQuantityConstantControl.js +6 -0
  65. package/dist/product-set/product/quantity/ProductQuantityControl.d.ts.map +1 -1
  66. package/dist/product-set/product/quantity/ProductQuantityControl.js +6 -0
  67. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.d.ts.map +1 -1
  68. package/dist/product-set/product/quantity/ProductQuantityRechargingControl.js +4 -1
  69. package/dist/product-set/product/scanRange/ProductScanRangeControl.d.ts +12 -0
  70. package/dist/product-set/product/scanRange/ProductScanRangeControl.d.ts.map +1 -0
  71. package/dist/product-set/product/scanRange/ProductScanRangeControl.js +153 -0
  72. package/dist/product-set/product/scanRange/index.d.ts +2 -0
  73. package/dist/product-set/product/scanRange/index.d.ts.map +1 -0
  74. package/dist/product-set/product-category/ProductCategoryControl.d.ts.map +1 -1
  75. package/dist/product-set/product-category/ProductCategoryControl.js +12 -0
  76. package/dist/product-set/utils/index.d.ts +4 -1
  77. package/dist/product-set/utils/index.d.ts.map +1 -1
  78. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  79. package/dist/recurrence-input/RecurrenceEndInput.js +3 -0
  80. package/dist/recurring-date-picker-input/RecurrenceEndInput.d.ts.map +1 -1
  81. package/dist/resource/form/components/CapacityControl.d.ts.map +1 -1
  82. package/dist/resource/form/components/CapacityControl.js +3 -0
  83. package/dist/resource/form/components/SortControl.d.ts.map +1 -1
  84. package/dist/resource/form/components/SortControl.js +3 -0
  85. package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
  86. package/dist/sales/booking/results/components/ResultCard.js +0 -2
  87. package/dist/sales/coupon/control/CouponFormControl.d.ts.map +1 -1
  88. package/dist/sales/coupon/control/CouponFormControl.js +21 -0
  89. package/dist/sales/coupon/form/CouponFrom.d.ts +2 -1
  90. package/dist/sales/coupon/form/CouponFrom.d.ts.map +1 -1
  91. package/dist/sales/coupon/form/CouponFrom.js +19 -6
  92. package/dist/setting/dashboard/DashboardSettingForm.d.ts.map +1 -1
  93. package/dist/setting/dashboard/DashboardSettingForm.js +4 -1
  94. package/dist/setting/index.d.ts +0 -2
  95. package/dist/setting/index.d.ts.map +1 -1
  96. package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  97. package/dist/static/CurrencyNumberInput.d.ts.map +1 -1
  98. package/dist/static/CurrencyNumberInput.js +3 -0
  99. package/dist/static/form-number-input/FormNumberInput.d.ts.map +1 -1
  100. package/dist/static/form-number-input/FormNumberInput.js +3 -0
  101. package/dist/static/number-input/NumberInput.d.ts.map +1 -1
  102. package/dist/static/number-input/NumberInput.js +3 -0
  103. package/dist/styles/form/CustomCheckbox.scss +31 -0
  104. package/dist/styles/iframe-events/Calendar.scss +1 -1
  105. package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  106. package/dist/styles/product-set/ProductSetForm.scss +2 -3
  107. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +1 -3
  108. package/dist/styles/sales/BookingResults.scss +1 -1
  109. package/dist/zone/form/components/GameDurationControl.d.ts.map +1 -1
  110. package/dist/zone/form/components/GameDurationControl.js +3 -0
  111. package/dist/zone/form/components/SortControl.d.ts.map +1 -1
  112. package/dist/zone/form/components/SortControl.js +3 -0
  113. package/package.json +13 -7
  114. package/src/affiliate/form/AffiliateForm.tsx +1 -0
  115. package/src/auth/Authorizer.tsx +1 -0
  116. package/src/auth/Login/LoginComponent.tsx +1 -1
  117. package/src/auth/Router.tsx +19 -19
  118. package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +1 -1
  119. package/src/events/event-statistic-modal/EventStatisticModal.tsx +3 -1
  120. package/src/events/event-statistic-modal/hooks/useTableData.tsx +2 -1
  121. package/src/events/event-statistic-modal/utils/index.ts +4 -4
  122. package/src/events/event-venue-map/EventVenueMap.tsx +1 -0
  123. package/src/events/event-venue-map/hooks/useCanvasSize.ts +5 -1
  124. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.tsx +2 -2
  125. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.tsx +5 -13
  126. package/src/iframe/order-process/components/BookingSummary/components/ProductSummary/ProductSummary.tsx +1 -0
  127. package/src/iframe/order-process/components/CategoryProduct/components/NumberInput/NumberInput.tsx +9 -0
  128. package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +1 -0
  129. package/src/iframe/ryft/utils/ryft-form.ts +6 -5
  130. package/src/index.ts +0 -1
  131. package/src/layout/DropDown.tsx +1 -1
  132. package/src/notification/email-template/control/EmailTemplateControl.tsx +1 -0
  133. package/src/product-set/control/ProductSetControl.tsx +11 -0
  134. package/src/product-set/form/ProductSetForm.tsx +7 -6
  135. package/src/product-set/form/ProductZonesControl.tsx +1 -4
  136. package/src/product-set/form/ProductsControl.tsx +2 -0
  137. package/src/product-set/form/SubProductsControl.tsx +0 -3
  138. package/src/product-set/form/VenueMapsControl.tsx +0 -3
  139. package/src/product-set/form/context.tsx +2 -5
  140. package/src/product-set/product/ProductControl.tsx +18 -13
  141. package/src/product-set/product/advanced-options/AdvancedOptions.tsx +1 -1
  142. package/src/product-set/product/booking-management/ProductBookingManagementControl.tsx +2 -0
  143. package/src/product-set/product/deposit/ProductDepositControl.tsx +1 -0
  144. package/src/product-set/product/duration/ProductDurationControl.tsx +2 -0
  145. package/src/product-set/product/price/ProductPriceControl.tsx +1 -0
  146. package/src/product-set/product/quantity/ProductQuantityConstantControl.tsx +2 -0
  147. package/src/product-set/product/quantity/ProductQuantityControl.tsx +2 -0
  148. package/src/product-set/product/quantity/ProductQuantityRechargingControl.tsx +1 -0
  149. package/src/product-set/product/scanRange/ProductScanRangeControl.stories.ts +45 -0
  150. package/src/product-set/product/scanRange/ProductScanRangeControl.tsx +163 -0
  151. package/src/product-set/product/scanRange/index.ts +1 -0
  152. package/src/product-set/product-category/ProductCategoryControl.tsx +4 -0
  153. package/src/product-set/product-zone/ProductZoneControl.tsx +1 -1
  154. package/src/recurrence-input/RecurrenceEndInput.tsx +1 -0
  155. package/src/recurring-date-picker-input/RecurrenceEndInput.tsx +1 -0
  156. package/src/resource/form/components/CapacityControl.tsx +1 -0
  157. package/src/resource/form/components/SortControl.tsx +1 -0
  158. package/src/sales/booking/results/components/ResultCard.tsx +0 -2
  159. package/src/sales/coupon/control/CouponFormControl.tsx +7 -0
  160. package/src/sales/coupon/form/CouponFrom.tsx +20 -8
  161. package/src/setting/dashboard/DashboardSettingForm.tsx +1 -0
  162. package/src/setting/index.ts +0 -2
  163. package/src/sortable-tree/SortableTreeItem.tsx +1 -6
  164. package/src/static/CurrencyNumberInput.tsx +1 -0
  165. package/src/static/form-number-input/FormNumberInput.tsx +1 -0
  166. package/src/static/number-input/NumberInput.tsx +1 -0
  167. package/src/styles/form/CustomCheckbox.scss +31 -0
  168. package/src/styles/iframe-events/Calendar.scss +1 -1
  169. package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  170. package/src/styles/product-set/ProductSetForm.scss +2 -3
  171. package/src/styles/ryft-payment-form/RyftPaymentForm.scss +1 -3
  172. package/src/styles/sales/BookingResults.scss +1 -1
  173. package/src/zone/form/components/GameDurationControl.tsx +1 -0
  174. package/src/zone/form/components/SortControl.tsx +1 -0
  175. package/yarn.lock +191 -221
  176. package/dist/assets/logo/licklist.sm.svg.js +0 -33
  177. package/dist/assets/logo/licklist.svg.js +0 -16
  178. package/dist/header/BookeditHeader.d.ts +0 -15
  179. package/dist/header/BookeditHeader.d.ts.map +0 -1
  180. package/dist/header/BookeditHeader.js +0 -21
  181. package/dist/header/Header.d.ts +0 -16
  182. package/dist/header/Header.d.ts.map +0 -1
  183. package/dist/header/Header.js +0 -55
  184. package/dist/header/LicklistHeader.d.ts +0 -15
  185. package/dist/header/LicklistHeader.d.ts.map +0 -1
  186. package/dist/header/LicklistHeader.js +0 -23
  187. package/dist/header/elements/CompanySelector.d.ts +0 -11
  188. package/dist/header/elements/CompanySelector.d.ts.map +0 -1
  189. package/dist/header/elements/CompanySelector.js +0 -36
  190. package/dist/header/elements/index.d.ts +0 -3
  191. package/dist/header/elements/index.d.ts.map +0 -1
  192. package/dist/header/index.d.ts +0 -6
  193. package/dist/header/index.d.ts.map +0 -1
  194. package/dist/setting/admin/AdminSettingForm.d.ts +0 -25
  195. package/dist/setting/admin/AdminSettingForm.d.ts.map +0 -1
  196. package/dist/setting/admin/AdminSettingForm.js +0 -220
  197. package/dist/setting/admin/PaymentFeeForm.d.ts +0 -13
  198. package/dist/setting/admin/PaymentFeeForm.d.ts.map +0 -1
  199. package/dist/setting/admin/PaymentFeeForm.js +0 -424
  200. package/dist/setting/admin/index.d.ts +0 -2
  201. package/dist/setting/admin/index.d.ts.map +0 -1
  202. package/dist/setting/system/SystemSettingForm.d.ts +0 -10
  203. package/dist/setting/system/SystemSettingForm.d.ts.map +0 -1
  204. package/dist/setting/system/SystemSettingForm.js +0 -95
  205. package/dist/setting/system/index.d.ts +0 -2
  206. package/dist/setting/system/index.d.ts.map +0 -1
  207. package/dist/types/currency.d.ts +0 -5
  208. package/dist/types/currency.d.ts.map +0 -1
  209. package/src/header/BookeditHeader.tsx +0 -38
  210. package/src/header/Header.stories.tsx +0 -123
  211. package/src/header/Header.tsx +0 -69
  212. package/src/header/LicklistHeader.tsx +0 -46
  213. package/src/header/elements/CompanySelector.tsx +0 -47
  214. package/src/header/elements/Elements.stories.tsx +0 -33
  215. package/src/header/elements/index.ts +0 -3
  216. package/src/header/index.ts +0 -7
  217. package/src/setting/admin/AdminSetting.stories.tsx +0 -52
  218. package/src/setting/admin/AdminSettingForm.tsx +0 -196
  219. package/src/setting/admin/PaymentFeeForm.tsx +0 -304
  220. package/src/setting/admin/index.ts +0 -1
  221. package/src/setting/system/SystemSetting.stories.tsx +0 -26
  222. package/src/setting/system/SystemSettingForm.tsx +0 -62
  223. package/src/setting/system/index.ts +0 -1
  224. package/src/types/currency.ts +0 -4
@@ -33,15 +33,15 @@ export const convertEventStatisticToTableData = (
33
33
  return []
34
34
  }
35
35
 
36
- const summaryFormattedDate = DateTime.fromISO(date)
37
- .toUTC()
38
- .toFormat(DATE_FORMAT)
36
+ const summaryFormattedDate = DateTime.fromISO(date).toFormat(
37
+ DATE_TIME_FULL_FORMAT,
38
+ )
39
39
 
40
40
  const summaryDays =
41
41
  Object.keys(eventStatistic?.productCategorySummary)?.filter(
42
42
  (date) =>
43
43
  DateTime.fromFormat(date, DATE_TIME_FULL_FORMAT).toFormat(
44
- DATE_FORMAT,
44
+ DATE_TIME_FULL_FORMAT,
45
45
  ) === summaryFormattedDate,
46
46
  ) ?? []
47
47
 
@@ -49,6 +49,7 @@ export const EventVenueMap = forwardRef<VenueMapRef, EventVenueMapProps>(
49
49
  },
50
50
  ref,
51
51
  ) => {
52
+ // TODO fix often updating of canvasSizes, which leads to flashing poingts
52
53
  const canvasSizes = useCanvasSize({ width, height })
53
54
 
54
55
  return (
@@ -10,13 +10,17 @@ export const useCanvasSize = ({
10
10
  width: componentWidth,
11
11
  height: componentHeight,
12
12
  }: CanvasSizeProps) => {
13
+ // TODO Fix often updating of width and height
13
14
  const { width, height } = useWindowDimensions()
14
15
 
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ const memoizedDimensions = useMemo(() => ({ width, height }), [width])
18
+
15
19
  const memoedComponentParameters = useMemo(() => {
16
20
  if (!componentWidth && !componentHeight) return null
17
21
 
18
22
  return { width: componentWidth, height: componentHeight }
19
23
  }, [componentWidth, componentHeight])
20
24
 
21
- return memoedComponentParameters || { width, height }
25
+ return memoedComponentParameters || memoizedDimensions
22
26
  }
@@ -48,12 +48,12 @@ export const ProductWithModifierSetModal = ({
48
48
  </button>
49
49
  </div>
50
50
  <div className='right-block' id='select-event-container'>
51
- <div className={clsx('manual-booking-container', !product?.images?.length && 'tw-mt-8')}>
51
+ <div className={clsx('manual-booking-container', !product.images.length && 'tw-mt-8')}>
52
52
  <div className='manual-booking-header'>
53
53
  <TicketDescription
54
54
  title={product.name}
55
55
  description={product.description}
56
- className={clsx('iframe-event__product-description', !product?.images?.length && 'mt-6')}
56
+ className={clsx('iframe-event__product-description', !product.images.length && 'mt-6')}
57
57
  classNameProductModal='d-block'
58
58
  images={product.images}
59
59
  isRequired={product.isRequired}
@@ -35,9 +35,6 @@ export const ModifiersSetControl = ({
35
35
  const { t } = useTranslation('App')
36
36
 
37
37
  const orderModifiersSets = watch(`${productId}.orderProductModifiers`)
38
- const filteredOrderModifiersSets = orderModifiersSets
39
- ?.flat(Infinity)
40
- ?.filter((item) => item && typeof item === 'object')
41
38
 
42
39
  const { formatNumber } = useIntl()
43
40
  const formatToCurrency = (value: number) =>
@@ -61,9 +58,8 @@ export const ModifiersSetControl = ({
61
58
  const selectedModifier = modifiers?.find(
62
59
  (item) => item.id === Number(e.target.defaultValue || e.target.id),
63
60
  )
64
-
65
61
  const checkSelectedModifier =
66
- filteredOrderModifiersSets?.find(
62
+ orderModifiersSets?.find(
67
63
  (modifier) => modifier?.modifierId === selectedModifier?.id,
68
64
  )?.quantity === 1
69
65
 
@@ -129,11 +125,9 @@ export const ModifiersSetControl = ({
129
125
  )
130
126
  }, [isEditMode])
131
127
 
132
- const radioButtonDefaultModifier = currentOrderModifiersSets
133
- .find((modifier) =>
134
- modifierSet.modifiers.some((rl) => rl.id === modifier.modifierId),
135
- )
136
- ?.modifierId.toString()
128
+ const radioButtonDefaultModifier = currentOrderModifiersSets.find((modifier) =>
129
+ modifierSet.modifiers.some((rl) => rl.id === modifier.modifierId)
130
+ )?.modifierId.toString();
137
131
 
138
132
  return (
139
133
  <>
@@ -173,9 +167,7 @@ export const ModifiersSetControl = ({
173
167
  inline
174
168
  id={modifier.id.toString()}
175
169
  defaultChecked={!!selectedOrderModifierId}
176
- defaultValue={
177
- selectedOrderModifierId || modifier.id.toString()
178
- }
170
+ defaultValue={selectedOrderModifierId || modifier.id.toString()}
179
171
  checked={field.value === modifier.id.toString()}
180
172
  onChange={onChange}
181
173
  type='radio'
@@ -3,6 +3,7 @@ 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
5
  import { OrderModifierByProduct } from '@licklist/core/dist/DataMapper/Order/OrderModifiierByProduct'
6
+ import { calculateTotalModifiersPrice } from '../../utils'
6
7
  import { ProductWithModifier } from '../../../CategoryProduct/components/ProductWithModifier/ProductWithModifier'
7
8
 
8
9
 
@@ -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,6 +97,7 @@ 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
101
103
  }
@@ -307,6 +309,15 @@ export function ProductSetControl({
307
309
  </Form.Control.Feedback>
308
310
  </Form.Group>
309
311
 
312
+ <Form.Group controlId='hasGeneralTicket' className='checkbox-second-column mt-4'>
313
+ <Form.Check
314
+ data-testid='save-as-template-checkbox'
315
+ label={t('Design:hasGeneralTicket')}
316
+ {...register('hasGeneralTicket')}
317
+ custom
318
+ />
319
+ </Form.Group>
320
+
310
321
  <Form.Group controlId={termsAndConditionsId}>
311
322
  <Form.Label>{t('Design:termsAndConditions')}</Form.Label>
312
323
  <Form.Control
@@ -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,7 @@ export interface ProductSetFormProps
55
56
  serverErrors?: ServerError
56
57
  providerHasMap?: boolean
57
58
  venueMapSets?: VenueMapSet[]
58
- providerHasBookingManagement?: ProviderBookingManagementSetting['hasBookingManagement']
59
+ providerHasBookingManagement?: boolean
59
60
  zones?: Zone[] | null
60
61
  isCreateAction?: boolean
61
62
  isOverrides?: boolean
@@ -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,
@@ -47,6 +47,8 @@ const getDefaultProductValue = (sort: number): Product => ({
47
47
  deposit: 0,
48
48
  minQuantity: null,
49
49
  maxQuantity: null,
50
+ scanRangeStart: null,
51
+ scanRangeEnd: null,
50
52
  totalQuantity: 0,
51
53
  isAvailable: true,
52
54
  modifiersSet: [],
@@ -70,9 +70,6 @@ export function SubProductsControl({
70
70
  images: subProducts[index]?.images as Image[],
71
71
  }
72
72
  // @ts-expect-error TS2345
73
- // @TODO fix prod type error
74
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
75
- // @ts-ignore
76
73
  append(subProductCopy)
77
74
  }}
78
75
  />
@@ -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,
@@ -34,7 +34,6 @@ import {
34
34
  } from 'react-hook-form'
35
35
  import { useTranslation } from 'react-i18next'
36
36
  import { useImages } from '@licklist/plugins/dist/hooks/Media/useImages'
37
-
38
37
  import {
39
38
  Image,
40
39
  IMAGE_TYPE_IMAGE,
@@ -65,7 +64,7 @@ import { MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH } from './constants'
65
64
  import { ProductZoneControlValues } from '../product-zone'
66
65
  import { AdvancedOptions } from './advanced-options'
67
66
  import { ProductZonesControl } from '../form/ProductZonesControl'
68
-
67
+ import { ProductScanRangeControl } from './scanRange'
69
68
 
70
69
  export interface ModifiersSet {
71
70
  id: number
@@ -87,6 +86,8 @@ export interface ProductControlValues
87
86
  deposit: number
88
87
  minQuantity: number
89
88
  maxQuantity: number
89
+ scanRangeStart?: number
90
+ scanRangeEnd?: number
90
91
  totalQuantity: number
91
92
  isAvailable: boolean
92
93
  isSoldOut: boolean
@@ -122,7 +123,6 @@ export interface ProductControlProps<T>
122
123
  hasTicket?: boolean
123
124
  categoryType?: CategoryType
124
125
  isOverrides?: boolean
125
-
126
126
  }
127
127
 
128
128
  export function ProductControl<T extends FormValues>({
@@ -137,7 +137,6 @@ export function ProductControl<T extends FormValues>({
137
137
  categoryType,
138
138
  isOverrides = false,
139
139
  }: ProductControlProps<T>) {
140
-
141
140
  const {
142
141
  register,
143
142
  control,
@@ -203,7 +202,6 @@ export function ProductControl<T extends FormValues>({
203
202
  setInitialImages(formImages as Image[])
204
203
  }, [getValues, setInitialImages, fieldNamePrefix])
205
204
 
206
-
207
205
  useEffect(() => {
208
206
  if (Array.isArray(images)) {
209
207
  setValue(
@@ -299,14 +297,21 @@ export function ProductControl<T extends FormValues>({
299
297
  isOverrides={isOverrides}
300
298
  onFocus={onFocus}
301
299
  />
302
-
303
- <ProductQuantityRechargingControl<T>
304
- isLoading={isLoading}
305
- fieldNamePrefix={fieldNamePrefix}
306
- onFocus={onFocus}
307
- disabled={isUnlimited}
308
- />
309
-
300
+
301
+ <ProductQuantityRechargingControl<T>
302
+ isLoading={isLoading}
303
+ fieldNamePrefix={fieldNamePrefix}
304
+ onFocus={onFocus}
305
+ disabled={isUnlimited}
306
+ />
307
+
308
+ <ProductScanRangeControl<T>
309
+ isLoading={isLoading}
310
+ fieldNamePrefix={fieldNamePrefix}
311
+ isOverrides={isOverrides}
312
+ onFocus={onFocus}
313
+ />
314
+
310
315
  <Form.Group
311
316
  controlId={unlimitedQuantityId}
312
317
  className='custom-checkbox'
@@ -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
@@ -0,0 +1,45 @@
1
+ // ProductScanRangeControl.stories.tsx
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { FormProvider, useForm } from 'react-hook-form';
4
+ import Form from 'react-bootstrap/Form';
5
+
6
+ import {
7
+ ProductScanRangeControl,
8
+ ProductScanRangeControlProps,
9
+ ProductScanRangeControlValues,
10
+ } from './ProductScanRangeControl';
11
+
12
+
13
+ const meta: Meta<typeof ProductScanRangeControl> = {
14
+ title: 'Product Set/Product/Scan Range',
15
+ component: ProductScanRangeControl,
16
+ };
17
+ export default meta;
18
+
19
+
20
+ type Story = StoryObj<typeof ProductScanRangeControl>;
21
+
22
+ export const Default: Story = {
23
+ args: {
24
+ isLoading: false,
25
+ },
26
+
27
+ render: (args: ProductScanRangeControlProps<{}>) => {
28
+ const methods = useForm<ProductScanRangeControlValues>({ mode: 'onChange' });
29
+ const onSubmit = (data: ProductScanRangeControlValues) =>
30
+ console.log('onSubmit', data);
31
+
32
+ return (
33
+ <FormProvider {...methods}>
34
+ <Form
35
+ className="d-flex flex-column"
36
+ noValidate
37
+ onSubmit={methods.handleSubmit(onSubmit)}
38
+ >
39
+ <ProductScanRangeControl {...args} />
40
+ </Form>
41
+ </FormProvider>
42
+ );
43
+ },
44
+ };
45
+