@licklist/design 0.67.4 → 0.67.5-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 (311) hide show
  1. package/.storybook/main.cjs +15 -12
  2. package/dist/auth/Login/LoginComponent.js +2 -1
  3. package/dist/calendar/Calendar.d.ts +2 -2
  4. package/dist/calendar/Calendar.d.ts.map +1 -1
  5. package/dist/calendar/components/CalendarButtons/CalendarButtons.d.ts.map +1 -1
  6. package/dist/calendar/components/CalendarButtons/CalendarButtons.js +35 -40
  7. package/dist/calendar/utils/index.d.ts +2 -2
  8. package/dist/calendar/utils/index.d.ts.map +1 -1
  9. package/dist/calendar/utils/index.js +20 -4
  10. package/dist/date-time-button/DateTimeButton.d.ts +1 -2
  11. package/dist/date-time-button/DateTimeButton.d.ts.map +1 -1
  12. package/dist/date-time-button/DateTimeButton.js +2 -3
  13. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts +2 -1
  14. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
  15. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +4 -4
  16. package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts +2 -2
  17. package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts.map +1 -1
  18. package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.js +27 -26
  19. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts +2 -2
  20. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts.map +1 -1
  21. package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.js +3 -3
  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/iframe/event/event-card/IframeEventCard.d.ts +1 -1
  25. package/dist/iframe/event/event-card/IframeEventCard.d.ts.map +1 -1
  26. package/dist/iframe/event/event-card/IframeEventCard.js +9 -3
  27. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts.map +1 -1
  28. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.js +2 -0
  29. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
  30. package/dist/index.js +1 -0
  31. package/dist/layout/DropDown.d.ts +2 -1
  32. package/dist/layout/DropDown.d.ts.map +1 -1
  33. package/dist/modals/confirmation/ConfirmModal.d.ts +3 -1
  34. package/dist/modals/confirmation/ConfirmModal.d.ts.map +1 -1
  35. package/dist/modals/confirmation/ConfirmModal.js +172 -8
  36. package/dist/product-set/card/ProductSetCard.d.ts +6 -2
  37. package/dist/product-set/card/ProductSetCard.d.ts.map +1 -1
  38. package/dist/product-set/card/ProductSetCard.js +30 -11
  39. package/dist/product-set/control/DateAndRecurrenceInput.d.ts +3 -2
  40. package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
  41. package/dist/product-set/control/DateAndRecurrenceInput.js +3 -1
  42. package/dist/product-set/control/DateInput.d.ts.map +1 -1
  43. package/dist/product-set/control/DateInput.js +2 -2
  44. package/dist/product-set/control/ProductSetControl.d.ts +3 -3
  45. package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
  46. package/dist/product-set/control/ProductSetControl.js +4 -16
  47. package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
  48. package/dist/product-set/form/ProductCategoriesControl.js +48 -2
  49. package/dist/product-set/form/ProductSetForm.d.ts +6 -2
  50. package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
  51. package/dist/product-set/form/ProductSetForm.js +65 -5
  52. package/dist/product-set/form/ProductSetNameControl.d.ts +6 -0
  53. package/dist/product-set/form/ProductSetNameControl.d.ts.map +1 -0
  54. package/dist/product-set/form/ProductSetNameControl.js +35 -0
  55. package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
  56. package/dist/product-set/form/ProductZonesControl.js +0 -2
  57. package/dist/product-set/form/SelectCategoryModal.d.ts +12 -0
  58. package/dist/product-set/form/SelectCategoryModal.d.ts.map +1 -1
  59. package/dist/product-set/form/SelectCategoryModal.js +1 -1
  60. package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
  61. package/dist/product-set/form/SubProductsControl.js +0 -3
  62. package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
  63. package/dist/product-set/form/VenueMapsControl.js +0 -3
  64. package/dist/product-set/form/index.d.ts +1 -0
  65. package/dist/product-set/form/index.d.ts.map +1 -1
  66. package/dist/product-set/utils/index.d.ts +7 -0
  67. package/dist/product-set/utils/index.d.ts.map +1 -1
  68. package/dist/product-set/utils/index.js +10 -1
  69. package/dist/provider/location-input/LocationInput.d.ts +4 -1
  70. package/dist/provider/location-input/LocationInput.d.ts.map +1 -1
  71. package/dist/provider/location-input/LocationInput.js +41 -2
  72. package/dist/provider/location-input/LocationInputDescription.d.ts +4 -1
  73. package/dist/provider/location-input/LocationInputDescription.d.ts.map +1 -1
  74. package/dist/provider/location-input/LocationInputDescription.js +27 -12
  75. package/dist/provider/location-input/index.d.ts +1 -0
  76. package/dist/provider/location-input/index.d.ts.map +1 -1
  77. package/dist/provider/provider-form/ProviderForm.d.ts +3 -1
  78. package/dist/provider/provider-form/ProviderForm.d.ts.map +1 -1
  79. package/dist/provider/provider-form/ProviderForm.js +7 -3
  80. package/dist/provider/venue-form/VenueForm.d.ts +3 -1
  81. package/dist/provider/venue-form/VenueForm.d.ts.map +1 -1
  82. package/dist/provider/venue-form/VenueForm.js +7 -3
  83. package/dist/provider/working-hours-input/WorkingHoursInput.d.ts.map +1 -1
  84. package/dist/provider/working-hours-input/WorkingHoursInput.js +2 -2
  85. package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
  86. package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +7 -14
  87. package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts +2 -1
  88. package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts.map +1 -1
  89. package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.js +7 -13
  90. package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts +4 -1
  91. package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts.map +1 -1
  92. package/dist/recurring-date-picker-input/RecurringDatePickerInput.js +7 -3
  93. package/dist/recurring-date-picker-input/utils.d.ts +5 -0
  94. package/dist/recurring-date-picker-input/utils.d.ts.map +1 -1
  95. package/dist/recurring-date-picker-input/utils.js +83 -3
  96. package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
  97. package/dist/sales/booking/results/components/ResultCard.js +4 -7
  98. package/dist/sales/guest-profile/previous-bookings/PreviousBookings.js +1 -1
  99. package/dist/sales/manual-booking/formatDays.js +3 -3
  100. package/dist/sales/manual-booking/select-event/SelectEvent.d.ts.map +1 -1
  101. package/dist/sales/manual-booking/select-event/SelectEvent.js +3 -3
  102. package/dist/sales/manual-booking/summary/ManualBookingSummary.d.ts.map +1 -1
  103. package/dist/sales/manual-booking/summary/ManualBookingSummary.js +2 -2
  104. package/dist/sales/notes/NotesTableRow.js +3 -4
  105. package/dist/setting/admin/AdminSettingForm.d.ts +2 -2
  106. package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
  107. package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
  108. package/dist/snippet/snippet-template/preview/Preview.js +6 -0
  109. package/dist/sortable-tree/SortableTreeItem.d.ts +2 -1
  110. package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  111. package/dist/sortable-tree/SortableTreeItem.js +10 -4
  112. package/dist/styles/auth/AccessDenied.scss +1 -1
  113. package/dist/styles/back-button/BackButton.scss +25 -24
  114. package/dist/styles/back-button/_index.scss +1 -1
  115. package/dist/styles/company-user-form/UserForm.scss +4 -7
  116. package/dist/styles/company-user-form/_index.scss +1 -1
  117. package/dist/styles/custom-fields/CreateSortableListItem.scss +2 -1
  118. package/dist/styles/custom-fields/_index.scss +1 -1
  119. package/dist/styles/customers/Filter.scss +5 -5
  120. package/dist/styles/events/EditEventModal.scss +1 -3
  121. package/dist/styles/events/EventVenueMap.scss +7 -7
  122. package/dist/styles/form/Input.scss +1 -1
  123. package/dist/styles/header/Header.scss +1 -1
  124. package/dist/styles/header/elements/CompanySelector.scss +2 -2
  125. package/dist/styles/iframe-events/Calendar.scss +0 -1
  126. package/dist/styles/iframe-events/CalendarSelect.scss +1 -1
  127. package/dist/styles/iframe-events/CategoryStepsForm.scss +6 -7
  128. package/dist/styles/iframe-events/Event.scss +2 -4
  129. package/dist/styles/iframe-events/EventForm.scss +54 -54
  130. package/dist/styles/iframe-events/EventNavigationFooter.scss +1 -0
  131. package/dist/styles/iframe-events/TicketDescription.scss +1 -1
  132. package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  133. package/dist/styles/iframe-payments/PaymentForm.scss +1 -1
  134. package/dist/styles/layout/BackgroundVideoContainer.scss +2 -2
  135. package/dist/styles/notification/Notification.scss +1 -1
  136. package/dist/styles/order-items-table/OrderItemsTable.scss +1 -2
  137. package/dist/styles/product-set/CreateProductSetItem.scss +15 -13
  138. package/dist/styles/product-set/DateAndRecurrenceInput.scss +6 -8
  139. package/dist/styles/product-set/EditCategoryModal.scss +4 -4
  140. package/dist/styles/product-set/EditProductModal.scss +3 -3
  141. package/dist/styles/product-set/EditStepModal.scss +4 -4
  142. package/dist/styles/product-set/EditVenueMapSetModal.scss +6 -6
  143. package/dist/styles/product-set/ProductSetForm.scss +25 -2
  144. package/dist/styles/product-set/TutorialGifCard.scss +1 -1
  145. package/dist/styles/product-set/_index.scss +2 -2
  146. package/dist/styles/report/ReportCard.scss +1 -0
  147. package/dist/styles/report/_index.scss +1 -1
  148. package/dist/styles/resources-blocking/_index.scss +4 -0
  149. package/dist/styles/sales/BookingFilter.scss +2 -2
  150. package/dist/styles/sales/BookingResults.scss +1 -1
  151. package/dist/styles/sales/BookingTabs.scss +7 -5
  152. package/dist/styles/sales/Filters.scss +5 -4
  153. package/dist/styles/sales/GuestProfile.scss +170 -175
  154. package/dist/styles/sales/LifeTimeSales.scss +1 -1
  155. package/dist/styles/sales/ManualBooking.scss +4 -2
  156. package/dist/styles/snippet-templates/_snippetVariables.scss +63 -244
  157. package/dist/styles/sortable-field/SortableField.scss +16 -16
  158. package/dist/styles/sortable-field/_index.scss +1 -1
  159. package/dist/styles/sortable-tree/Item.scss +4 -4
  160. package/dist/styles/table/Table.scss +1 -1
  161. package/dist/styles/themes/bookedit/_variables.scss +10 -32
  162. package/dist/styles/themes/licklist/_variables.scss +1 -1
  163. package/dist/styles/tiptap-editor/TiptapEditor.scss +9 -10
  164. package/dist/styles/tiptap-editor/_index.scss +1 -1
  165. package/dist/styles/venue-map-sets/VenueMapSetForm.scss +5 -4
  166. package/dist/styles/virtualized/_index.scss +1 -1
  167. package/dist/styles/zones/ZoneForm.scss +1 -0
  168. package/dist/styles/zones/ZoneRecurrencesControl.scss +6 -8
  169. package/dist/typeahead/Typeahead.d.ts +5 -1
  170. package/dist/typeahead/Typeahead.d.ts.map +1 -1
  171. package/dist/typeahead/Typeahead.js +9 -2
  172. package/dist/zone/form/ZoneForm.d.ts +3 -2
  173. package/dist/zone/form/ZoneForm.d.ts.map +1 -1
  174. package/dist/zone/form/ZoneForm.js +4 -2
  175. package/dist/zone/form/components/ZoneControl.d.ts +3 -2
  176. package/dist/zone/form/components/ZoneControl.d.ts.map +1 -1
  177. package/dist/zone/form/components/ZoneControl.js +5 -2
  178. package/dist/zone/form/components/ZoneRecurrencesControl.d.ts +5 -4
  179. package/dist/zone/form/components/ZoneRecurrencesControl.d.ts.map +1 -1
  180. package/dist/zone/form/components/ZoneRecurrencesControl.js +5 -2
  181. package/dist/zone/form/utils/dates.d.ts.map +1 -1
  182. package/package.json +11 -11
  183. package/src/auth/ChangePassword/ChangePassword.stories.tsx +1 -1
  184. package/src/auth/Login/LoginComponent.tsx +1 -1
  185. package/src/auth/ResetPassword/ResetPassword.stories.tsx +1 -1
  186. package/src/calendar/Calendar.stories.tsx +0 -2
  187. package/src/calendar/Calendar.tsx +1 -4
  188. package/src/calendar/components/CalendarButtons/CalendarButtons.tsx +31 -28
  189. package/src/calendar/utils/index.ts +26 -4
  190. package/src/date-time-button/DateTimeButton.stories.tsx +0 -1
  191. package/src/date-time-button/DateTimeButton.tsx +1 -6
  192. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +3 -2
  193. package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +35 -37
  194. package/src/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.tsx +3 -3
  195. package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +0 -1
  196. package/src/header/elements/Elements.stories.tsx +1 -1
  197. package/src/help/popover/Popover.stories.tsx +1 -1
  198. package/src/iframe/event/event-card/IframeEventCard.tsx +16 -2
  199. package/src/iframe/event/event-venue-map/IframeEventVenueMap.stories.tsx +3 -3
  200. package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx +1 -0
  201. package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +1 -0
  202. package/src/layout/DropDown.tsx +2 -1
  203. package/src/modals/confirmation/ConfirmModal.tsx +19 -3
  204. package/src/product-set/card/ProductSetCard.stories.tsx +3 -1
  205. package/src/product-set/card/ProductSetCard.tsx +47 -8
  206. package/src/product-set/control/DateAndRecurrenceInput.tsx +6 -4
  207. package/src/product-set/control/DateInput.tsx +2 -1
  208. package/src/product-set/control/ProductSetControl.tsx +4 -15
  209. package/src/product-set/control/ProductSetRecurrenceControl.stories.tsx +2 -2
  210. package/src/product-set/form/ProductCategoriesControl.tsx +37 -1
  211. package/src/product-set/form/ProductSetForm.tsx +25 -3
  212. package/src/product-set/form/ProductSetNameControl.tsx +27 -0
  213. package/src/product-set/form/ProductZonesControl.tsx +4 -7
  214. package/src/product-set/form/SelectCategoryModal.stories.tsx +1 -1
  215. package/src/product-set/form/SelectCategoryModal.tsx +2 -2
  216. package/src/product-set/form/SubProductsControl.tsx +0 -3
  217. package/src/product-set/form/VenueMapsControl.tsx +0 -3
  218. package/src/product-set/form/index.ts +1 -0
  219. package/src/product-set/product/advanced-options/AdvancedOptions.tsx +5 -5
  220. package/src/product-set/product/booking-management/ProductBookingManagement.stories.tsx +1 -1
  221. package/src/product-set/product/quantity/ProductQuantity.stories.tsx +1 -1
  222. package/src/product-set/product-zone/ProductZoneControl.tsx +9 -9
  223. package/src/product-set/utils/index.ts +11 -0
  224. package/src/provider/location-input/LocationInput.tsx +36 -1
  225. package/src/provider/location-input/LocationInputDescription.tsx +23 -11
  226. package/src/provider/location-input/index.ts +1 -0
  227. package/src/provider/provider-form/ProviderForm.tsx +7 -2
  228. package/src/provider/venue-form/VenueForm.tsx +5 -2
  229. package/src/provider/working-hours-input/WorkingHoursInput.tsx +15 -6
  230. package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +11 -30
  231. package/src/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.tsx +8 -22
  232. package/src/recurring-date-picker-input/RecurringDatePickerInput.stories.tsx +11 -4
  233. package/src/recurring-date-picker-input/RecurringDatePickerInput.tsx +17 -3
  234. package/src/recurring-date-picker-input/utils.ts +97 -1
  235. package/src/sales/booking/results/components/ResultCard.tsx +4 -10
  236. package/src/sales/guest-profile/previous-bookings/PreviousBookings.tsx +1 -1
  237. package/src/sales/manual-booking/formatDays.ts +3 -3
  238. package/src/sales/manual-booking/select-event/SelectEvent.tsx +2 -2
  239. package/src/sales/manual-booking/summary/ManualBookingSummary.tsx +2 -2
  240. package/src/sales/notes/NotesTableRow.tsx +3 -3
  241. package/src/setting/admin/AdminSetting.stories.tsx +1 -0
  242. package/src/setting/admin/AdminSettingForm.tsx +2 -2
  243. package/src/setting/system/SystemSetting.stories.tsx +1 -1
  244. package/src/snippet/snippet-template/preview/Preview.tsx +6 -0
  245. package/src/sortable-tree/SortableTreeItem.tsx +6 -0
  246. package/src/styles/auth/AccessDenied.scss +1 -1
  247. package/src/styles/back-button/BackButton.scss +25 -24
  248. package/src/styles/back-button/_index.scss +1 -1
  249. package/src/styles/company-user-form/UserForm.scss +4 -7
  250. package/src/styles/company-user-form/_index.scss +1 -1
  251. package/src/styles/custom-fields/CreateSortableListItem.scss +2 -1
  252. package/src/styles/custom-fields/_index.scss +1 -1
  253. package/src/styles/customers/Filter.scss +5 -5
  254. package/src/styles/events/EditEventModal.scss +1 -3
  255. package/src/styles/events/EventVenueMap.scss +7 -7
  256. package/src/styles/form/Input.scss +1 -1
  257. package/src/styles/header/Header.scss +1 -1
  258. package/src/styles/header/elements/CompanySelector.scss +2 -2
  259. package/src/styles/iframe-events/Calendar.scss +0 -1
  260. package/src/styles/iframe-events/CalendarSelect.scss +1 -1
  261. package/src/styles/iframe-events/CategoryStepsForm.scss +6 -7
  262. package/src/styles/iframe-events/Event.scss +2 -4
  263. package/src/styles/iframe-events/EventForm.scss +54 -54
  264. package/src/styles/iframe-events/EventNavigationFooter.scss +1 -0
  265. package/src/styles/iframe-events/TicketDescription.scss +1 -1
  266. package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
  267. package/src/styles/iframe-payments/PaymentForm.scss +1 -1
  268. package/src/styles/layout/BackgroundVideoContainer.scss +2 -2
  269. package/src/styles/notification/Notification.scss +1 -1
  270. package/src/styles/order-items-table/OrderItemsTable.scss +1 -2
  271. package/src/styles/product-set/CreateProductSetItem.scss +15 -13
  272. package/src/styles/product-set/DateAndRecurrenceInput.scss +6 -8
  273. package/src/styles/product-set/EditCategoryModal.scss +4 -4
  274. package/src/styles/product-set/EditProductModal.scss +3 -3
  275. package/src/styles/product-set/EditStepModal.scss +4 -4
  276. package/src/styles/product-set/EditVenueMapSetModal.scss +6 -6
  277. package/src/styles/product-set/ProductSetForm.scss +25 -2
  278. package/src/styles/product-set/TutorialGifCard.scss +1 -1
  279. package/src/styles/product-set/_index.scss +2 -2
  280. package/src/styles/report/ReportCard.scss +1 -0
  281. package/src/styles/report/_index.scss +1 -1
  282. package/src/styles/resources-blocking/_index.scss +4 -0
  283. package/src/styles/sales/BookingFilter.scss +2 -2
  284. package/src/styles/sales/BookingResults.scss +1 -1
  285. package/src/styles/sales/BookingTabs.scss +7 -5
  286. package/src/styles/sales/Filters.scss +5 -4
  287. package/src/styles/sales/GuestProfile.scss +170 -175
  288. package/src/styles/sales/LifeTimeSales.scss +1 -1
  289. package/src/styles/sales/ManualBooking.scss +4 -2
  290. package/src/styles/snippet-templates/_snippetVariables.scss +63 -244
  291. package/src/styles/sortable-field/SortableField.scss +16 -16
  292. package/src/styles/sortable-field/_index.scss +1 -1
  293. package/src/styles/sortable-tree/Item.scss +4 -4
  294. package/src/styles/table/Table.scss +1 -1
  295. package/src/styles/themes/bookedit/_variables.scss +10 -32
  296. package/src/styles/themes/licklist/_variables.scss +1 -1
  297. package/src/styles/tiptap-editor/TiptapEditor.scss +9 -10
  298. package/src/styles/tiptap-editor/_index.scss +1 -1
  299. package/src/styles/venue-map-sets/VenueMapSetForm.scss +5 -4
  300. package/src/styles/virtualized/_index.scss +1 -1
  301. package/src/styles/zones/ZoneForm.scss +1 -0
  302. package/src/styles/zones/ZoneRecurrencesControl.scss +6 -8
  303. package/src/tiptap-editor/TipTapEditor.stories.tsx +6 -4
  304. package/src/tiptap-editor/TipTapMenu/TipTapMenu.stories.tsx +5 -2
  305. package/src/typeahead/Typeahead.tsx +15 -1
  306. package/src/zone/form/ZoneForm.tsx +9 -2
  307. package/src/zone/form/components/ZoneControl.tsx +8 -3
  308. package/src/zone/form/components/ZoneRecurrencesControl.tsx +10 -5
  309. package/src/zone/form/utils/dates.ts +9 -10
  310. package/yarn.lock +834 -856
  311. package/dist/assets/iframe/selectArrow.svg.js +0 -17
@@ -0,0 +1,27 @@
1
+ import { Form } from "react-bootstrap";
2
+ import { useTranslation } from "react-i18next";
3
+
4
+ export const ProductSetNameControl = ({
5
+ value,
6
+ onChange,
7
+ error,
8
+ }: {
9
+ value: string;
10
+ onChange: (value: string) => void;
11
+ error?: string;
12
+ }) => {
13
+ const { t } = useTranslation(["Design"]);
14
+ return (
15
+ <Form.Group>
16
+ <Form.Label>{t("Design:ProductSetName")}*</Form.Label>
17
+ <Form.Control
18
+ value={value}
19
+ maxLength={255}
20
+ onChange={(e) => onChange(e.target.value)}
21
+ placeholder={t("Design:placeholderProductSetName")}
22
+ isInvalid={Boolean(error)}
23
+ />
24
+ <Form.Control.Feedback type="invalid">{error}</Form.Control.Feedback>
25
+ </Form.Group>
26
+ );
27
+ };
@@ -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,
@@ -82,14 +79,14 @@ export const ProductZonesControl = <T extends FormValues>({
82
79
 
83
80
  const productZonesError = HookFormService.getErrors<T>(
84
81
  `${productZonesFieldName}.root` as Path<T>,
85
- errors
82
+ errors,
86
83
  );
87
84
 
88
85
  const zoneCapacity = useWatch({
89
86
  control,
90
87
  name: [
91
88
  ...fields.map(
92
- (_, index) => `${productZonesFieldName}.${index}.capacity` as const
89
+ (_, index) => `${productZonesFieldName}.${index}.capacity` as const,
93
90
  ),
94
91
  ],
95
92
  });
@@ -98,7 +95,7 @@ export const ProductZonesControl = <T extends FormValues>({
98
95
  control,
99
96
  name: [
100
97
  ...fields.map(
101
- (_, index) => `${productZonesFieldName}.${index}.duration` as const
98
+ (_, index) => `${productZonesFieldName}.${index}.duration` as const,
102
99
  ),
103
100
  ],
104
101
  });
@@ -29,7 +29,7 @@ Default.args = {
29
29
  };
30
30
 
31
31
  export const WithBookingManagement: Story<SelectCategoryModalProps> = (
32
- args,
32
+ args
33
33
  ) => (
34
34
  <ProductSetLoadingContext.Provider value={contextValue}>
35
35
  <SelectCategoryModal {...args} />
@@ -25,7 +25,7 @@ import {
25
25
  } from "react-icons/fa";
26
26
  import { ProductSetLoadingContext } from "./context";
27
27
 
28
- const CATEGORY_TYPES_NAMES = {
28
+ export const CATEGORY_TYPES_NAMES = {
29
29
  menuItems: CATEGORY_TYPE_MENU_ITEMS,
30
30
  tickets: CATEGORY_TYPE_TICKETS,
31
31
  bookings: CATEGORY_TYPE_BOOKINGS,
@@ -33,7 +33,7 @@ const CATEGORY_TYPES_NAMES = {
33
33
  fixedDuration: CATEGORY_TYPE_FIXED_DURATION,
34
34
  } as const;
35
35
 
36
- type CategoryConfig = { label: string; icon: ReactElement };
36
+ export type CategoryConfig = { label: string; icon: ReactElement };
37
37
 
38
38
  const MAIN_CATEGORIES: Partial<Record<CategoryType, CategoryConfig>> = {
39
39
  [CATEGORY_TYPES_NAMES.tickets]: {
@@ -71,9 +71,6 @@ export function SubProductsControl({
71
71
  images: subProducts[index]?.images as Image[],
72
72
  };
73
73
  // @ts-expect-error TS2345
74
- // @TODO fix prod type error
75
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
76
- // @ts-ignore
77
74
  append(subProductCopy);
78
75
  }}
79
76
  />
@@ -47,9 +47,6 @@ export const VenueMapsControl = ({
47
47
  url={image.url}
48
48
  name={name}
49
49
  points={points}
50
- // @TODO fix prod type error
51
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
52
- // @ts-ignore
53
50
  products={products}
54
51
  pointProducts={pointProducts}
55
52
  onPointProductsChange={onPointProductsChange}
@@ -1 +1,2 @@
1
1
  export * from "./ProductSetForm";
2
+ export * from "./ProductSetNameControl";
@@ -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";
@@ -98,7 +98,7 @@ export const AdvancedOptions = <T extends FormValues>({
98
98
  {...register(`${fieldNamePrefix}.productGroupId` as Path<T>)}
99
99
  isInvalid={HookFormService.isInvalid<T>(
100
100
  `${fieldNamePrefix}.productGroupId` as Path<T>,
101
- errors
101
+ errors,
102
102
  )}
103
103
  disabled={isLoading || isOverrides}
104
104
  defaultValue=""
@@ -115,7 +115,7 @@ export const AdvancedOptions = <T extends FormValues>({
115
115
  <Form.Control.Feedback type="invalid">
116
116
  {HookFormService.getErrors<T>(
117
117
  `${fieldNamePrefix}.productGroupId` as Path<T>,
118
- errors
118
+ errors,
119
119
  )}
120
120
  </Form.Control.Feedback>
121
121
  </Form.Group>
@@ -134,7 +134,7 @@ export const AdvancedOptions = <T extends FormValues>({
134
134
  onChange={onChange}
135
135
  isInvalid={HookFormService.isInvalid<T>(
136
136
  `${fieldNamePrefix}.termsAndConditions` as Path<T>,
137
- errors
137
+ errors,
138
138
  )}
139
139
  disabled={isLoading || isOverrides}
140
140
  name={name}
@@ -147,7 +147,7 @@ export const AdvancedOptions = <T extends FormValues>({
147
147
  <Form.Control.Feedback type="invalid">
148
148
  {HookFormService.getErrors<T>(
149
149
  `${fieldNamePrefix}.termsAndConditions` as Path<T>,
150
- errors
150
+ errors,
151
151
  )}
152
152
  </Form.Control.Feedback>
153
153
  </Form.Group>
@@ -12,7 +12,7 @@ export default {
12
12
  } as Meta;
13
13
 
14
14
  export const Default: Story<ProductBookingManagementControlProps<{}>> = (
15
- args,
15
+ args
16
16
  ) => {
17
17
  const form = useForm<ProductBookingManagementControlValues>({
18
18
  mode: "onChange",
@@ -42,7 +42,7 @@ export const Default: Story<ProductQuantityControlProps<{}>> = (args) => {
42
42
  };
43
43
 
44
44
  export const ConstantForm: Story<ProductQuantityConstantControlProps<{}>> = (
45
- args,
45
+ args
46
46
  ) => {
47
47
  const form = useForm<ProductQuantityConstantControlValues>({
48
48
  mode: "onChange",
@@ -1,4 +1,4 @@
1
- import React, { useContext, useEffect, useMemo } from "react";
1
+ import { useContext, useEffect, useMemo } from "react";
2
2
  import { Col, Form, Row } from "react-bootstrap";
3
3
  import {
4
4
  ArrayPath,
@@ -63,7 +63,7 @@ export const ProductZoneControl = <T extends FormValues>({
63
63
  const disabledDuration = capacity === "0" || !capacity;
64
64
 
65
65
  const { providerHasBookingManagement, zones = [] } = useContext(
66
- ProductSetLoadingContext
66
+ ProductSetLoadingContext,
67
67
  );
68
68
 
69
69
  const currentZoneData = zones.find((zone) => zone.id === Number(zoneId));
@@ -75,10 +75,10 @@ export const ProductZoneControl = <T extends FormValues>({
75
75
  !productZones.find(
76
76
  (productZone) =>
77
77
  Number(productZone.zoneId) === zone.id &&
78
- productZone.zoneId !== zoneId
79
- )
78
+ productZone.zoneId !== zoneId,
79
+ ),
80
80
  ),
81
- [zones, productZones, zoneId]
81
+ [zones, productZones, zoneId],
82
82
  );
83
83
 
84
84
  useEffect(() => {
@@ -89,7 +89,7 @@ export const ProductZoneControl = <T extends FormValues>({
89
89
  setValue(
90
90
  `${fieldNamePrefix}.duration` as Path<T>,
91
91
  /* @ts-expect-error 6385 */
92
- 0 as UnpackNestedValue<PathValue<T, Path<T>>>
92
+ 0 as UnpackNestedValue<PathValue<T, Path<T>>>,
93
93
  );
94
94
  clearErrors(`${fieldNamePrefix}.duration` as Path<T>);
95
95
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -104,7 +104,7 @@ export const ProductZoneControl = <T extends FormValues>({
104
104
  /* @ts-expect-error 6385 */
105
105
  (value * currentZoneData?.defaultDuration) as UnpackNestedValue<
106
106
  PathValue<T, Path<T>>
107
- >
107
+ >,
108
108
  );
109
109
  };
110
110
  return (
@@ -123,7 +123,7 @@ export const ProductZoneControl = <T extends FormValues>({
123
123
  disabled={isOverrides}
124
124
  isInvalid={HookFormService.isInvalid(
125
125
  `${fieldNamePrefix}.zoneId`,
126
- errors
126
+ errors,
127
127
  )}
128
128
  {...field}
129
129
  >
@@ -147,7 +147,7 @@ export const ProductZoneControl = <T extends FormValues>({
147
147
  <Form.Control.Feedback type="invalid">
148
148
  {HookFormService.getErrors(
149
149
  `${fieldNamePrefix}.zoneId` as Path<T>,
150
- errors
150
+ errors,
151
151
  )}
152
152
  </Form.Control.Feedback>
153
153
  </Form.Group>
@@ -3,6 +3,7 @@ import { SmsTemplate } from "@licklist/core/dist/DataMapper/Notification/SmsTemp
3
3
  import { TFunction } from "react-i18next";
4
4
  import { UseFormSetError } from "react-hook-form";
5
5
  import { checkIfZoneCategory } from "@licklist/plugins";
6
+ import { ProductSet } from "@licklist/core/dist/DataMapper/Product/ProductSetDataMapper";
6
7
  import { TemplateItem } from "../control/ProductSetControl";
7
8
  import { ProductSetFormValues } from "../form/ProductSetForm";
8
9
 
@@ -12,6 +13,11 @@ interface CheckAvailableTimesErrors {
12
13
  t: TFunction;
13
14
  }
14
15
 
16
+ export interface MenuTypeheadItem {
17
+ id: number;
18
+ label: string;
19
+ value: number;
20
+ }
15
21
  export const moveArrayElements = <T>(
16
22
  array: T[],
17
23
  prevIndex: number,
@@ -84,3 +90,8 @@ export const checkAvailableTimesErrors = ({
84
90
  });
85
91
  return hasError;
86
92
  };
93
+
94
+ export const getTypeHeadItemsFromMenus = (
95
+ menus?: (ProductSet | ProductSetFormValues)[],
96
+ ): MenuTypeheadItem[] =>
97
+ menus?.map((menu) => ({ id: menu.id, value: menu.id, label: menu.name }));
@@ -2,17 +2,21 @@ import { useId } from "@react-aria/utils";
2
2
  import { Form } from "react-bootstrap";
3
3
  import { useFormContext } from "react-hook-form";
4
4
  import { useTranslation } from "react-i18next";
5
+ import { TimeZonePath, useTimeZoneApi } from "@licklist/plugins";
6
+ import { BlockLoader } from "src/static";
5
7
  import CountryCodeSelect from "../../static/CountryCodeSelect";
6
8
  import { LocationInputValues } from ".";
7
9
  import { FormGroupControll } from "./components";
8
10
 
9
- export function LocationInput() {
11
+ export function LocationInput({ path }: { path: TimeZonePath }) {
10
12
  const {
11
13
  register,
12
14
  formState: { errors },
13
15
  } = useFormContext<LocationInputValues>();
14
16
  const { t } = useTranslation("Design");
15
17
 
18
+ const { data, isLoading } = useTimeZoneApi(path).useAll();
19
+
16
20
  const countryId = useId();
17
21
 
18
22
  return (
@@ -39,6 +43,7 @@ export function LocationInput() {
39
43
  name="location.postcode"
40
44
  label={t("locationPostcode")}
41
45
  />
46
+
42
47
  <Form.Group controlId={countryId}>
43
48
  <Form.Label>{t("locationCountry")}</Form.Label>
44
49
  <CountryCodeSelect
@@ -47,6 +52,36 @@ export function LocationInput() {
47
52
  error={errors?.location?.country?.message}
48
53
  />
49
54
  </Form.Group>
55
+
56
+ {isLoading ? (
57
+ <BlockLoader />
58
+ ) : (
59
+ <Form.Group controlId="timeZoneId">
60
+ <Form.Label>{t("locationTimeZone")}</Form.Label>
61
+ <Form.Control
62
+ {...register("timeZoneId", {
63
+ required: t("Validation:fieldRequired", {
64
+ attribute: t("locationTimeZone"),
65
+ }) as string,
66
+ })}
67
+ as="select"
68
+ custom
69
+ isInvalid={Boolean(errors?.timeZoneId?.message)}
70
+ >
71
+ <option key="" value="" disabled>
72
+ {t("chooseTimeZone")}
73
+ </option>
74
+ {data.map((zone) => (
75
+ <option key={zone.id} value={zone.id.toString()}>
76
+ {zone.name}
77
+ </option>
78
+ ))}
79
+ </Form.Control>
80
+ <Form.Control.Feedback type="invalid">
81
+ {errors?.timeZoneId?.message}
82
+ </Form.Control.Feedback>
83
+ </Form.Group>
84
+ )}
50
85
  </>
51
86
  );
52
87
  }
@@ -1,20 +1,19 @@
1
1
  import { ReactElement } from "react";
2
2
  import { useFormContext } from "react-hook-form";
3
3
  import en from "react-phone-number-input/locale/en.json";
4
+ import { TimeZonePath, useTimeZoneApi } from "@licklist/plugins";
4
5
  import { LocationInputValues } from ".";
5
6
 
6
- export function LocationInputDescription() {
7
+ const fieldNames = ["street", "city", "state", "postcode", "country"] as const;
8
+
9
+ export function LocationInputDescription({ path }: { path: TimeZonePath }) {
7
10
  const { watch } = useFormContext<LocationInputValues>();
8
- const values = watch("location");
9
- const fieldNames = [
10
- "street",
11
- "city",
12
- "state",
13
- "postcode",
14
- "country",
15
- ] as const;
11
+ const location = watch("location");
12
+
13
+ const { data } = useTimeZoneApi(path).useAll();
14
+
16
15
  const fields = fieldNames.reduce<ReactElement[]>((acc, field) => {
17
- const value = values?.[field];
16
+ const value = location?.[field];
18
17
  if (!value) return acc;
19
18
 
20
19
  return [
@@ -22,5 +21,18 @@ export function LocationInputDescription() {
22
21
  <div key={field}>{field === "country" ? en[value] : value}</div>,
23
22
  ];
24
23
  }, []);
25
- return <div>{fields}</div>;
24
+
25
+ const timeZoneId = watch("timeZoneId");
26
+ const timeZoneName = data?.find(
27
+ (timeZone) => timeZone.id === +timeZoneId,
28
+ )?.name;
29
+
30
+ return (
31
+ <div>
32
+ <>
33
+ {fields}
34
+ {timeZoneName && <div key="timeZone">{timeZoneName}</div>}
35
+ </>
36
+ </div>
37
+ );
26
38
  }
@@ -11,4 +11,5 @@ export type LocationInputValues = {
11
11
  latitude: string;
12
12
  longitude: string;
13
13
  };
14
+ timeZoneId: string;
14
15
  };
@@ -10,6 +10,7 @@ import {
10
10
  } from "@licklist/core/dist/DataMapper/Media/ImageDataMapper";
11
11
  import { useMultipleImages } from "@licklist/plugins/dist/hooks/Media/useMultipleImages";
12
12
  import { HasPermissionProp } from "@licklist/plugins/dist/types/permission/Permission";
13
+ import { TimeZonePath } from "@licklist/plugins";
13
14
  import { CollapsibleInputGroup } from "../../collapsible-input-group";
14
15
  import {
15
16
  CategoriesInput,
@@ -41,6 +42,7 @@ export interface ProviderFormProps extends HasPermissionProp {
41
42
  companiesOptions?: TypeaheadOptions[];
42
43
  onSubmit: (values: ProviderFormValues) => void;
43
44
  intent?: "create" | "update";
45
+ path: TimeZonePath;
44
46
  }
45
47
 
46
48
  const providerImageTypes = {
@@ -56,14 +58,17 @@ export function ProviderForm({
56
58
  onSubmit,
57
59
  intent = "update",
58
60
  hasPermission = true,
61
+ path,
59
62
  }: ProviderFormProps) {
60
63
  const form = useForm<ProviderFormValues>({ defaultValues });
64
+
61
65
  const {
62
66
  setValue,
63
67
  handleSubmit,
64
68
  formState: { isSubmitting, errors },
65
69
  getValues,
66
70
  } = form;
71
+
67
72
  const { t } = useTranslation("Design");
68
73
  const [initialImages, setInitialImages] = useState<Image[] | null>(null);
69
74
 
@@ -101,10 +106,10 @@ export function ProviderForm({
101
106
  <CollapsibleInputGroup
102
107
  eventKey="location"
103
108
  label={t("location")}
104
- description={<LocationInputDescription />}
109
+ description={<LocationInputDescription path={path} />}
105
110
  error={errors?.location?.country?.message}
106
111
  >
107
- <LocationInput />
112
+ <LocationInput path={path} />
108
113
  </CollapsibleInputGroup>
109
114
  {categories && categories.length > 0 && (
110
115
  <CollapsibleInputGroup
@@ -11,6 +11,7 @@ import {
11
11
  import { HasPermissionProp } from "@licklist/plugins/dist/types/permission/Permission";
12
12
  import { useMultipleImages } from "@licklist/plugins/dist/hooks/Media/useMultipleImages";
13
13
  import { parseServerErrorForFormValidation } from "@licklist/plugins/dist/utils/parseError";
14
+ import { TimeZonePath } from "@licklist/plugins";
14
15
  import { CollapsibleInputGroup } from "../../collapsible-input-group";
15
16
  import {
16
17
  CategoriesInput,
@@ -50,6 +51,7 @@ export interface VenueFormProps extends HasPermissionProp {
50
51
  intent?: "create" | "update";
51
52
  isLoading?: boolean;
52
53
  errorResponse?: unknown;
54
+ path: TimeZonePath;
53
55
  }
54
56
 
55
57
  const providerImageTypes = {
@@ -67,6 +69,7 @@ export function VenueForm({
67
69
  hasPermission = true,
68
70
  isLoading,
69
71
  errorResponse,
72
+ path,
70
73
  }: VenueFormProps) {
71
74
  const form = useForm<VenueFormValues>({ defaultValues, mode: "onChange" });
72
75
  const {
@@ -134,7 +137,7 @@ export function VenueForm({
134
137
  <CollapsibleInputGroup
135
138
  eventKey="location"
136
139
  label={t("location")}
137
- description={<LocationInputDescription />}
140
+ description={<LocationInputDescription path={path} />}
138
141
  error={
139
142
  errors?.location?.message ||
140
143
  (errors?.location &&
@@ -143,7 +146,7 @@ export function VenueForm({
143
146
  }))
144
147
  }
145
148
  >
146
- <LocationInput />
149
+ <LocationInput path={path} />
147
150
  </CollapsibleInputGroup>
148
151
  <CollapsibleInputGroup
149
152
  eventKey="workingHours"
@@ -24,8 +24,9 @@ export function WorkingHoursInput() {
24
24
  <Col>{t("Design:until")}</Col>
25
25
  <Col>{t("Design:description")}</Col>
26
26
  </Form.Row>
27
+
27
28
  <Form.Control
28
- {...register(`workingHours` as const, {
29
+ {...register(`workingHours`, {
29
30
  validate: (value) => {
30
31
  const oneOfDaysFilled = value?.some(
31
32
  (workingDay) => workingDay.start,
@@ -42,6 +43,7 @@ export function WorkingHoursInput() {
42
43
  })}
43
44
  type="hidden"
44
45
  />
46
+
45
47
  {weekdays.map((name, i) => (
46
48
  /*
47
49
  * The only reason inputs have placeholders here is to fix
@@ -49,14 +51,19 @@ export function WorkingHoursInput() {
49
51
  * which miscalculates alignment for empty inputs.
50
52
  * Otherwise placeholders should not be used.
51
53
  */
52
- <Form.Row key={i} className="align-items-baseline">
53
- <Col className="h5 text-lg-right mb-4 mb-lg-0" xs="12" lg="2">
54
+ <Form.Row key={name} className="align-items-baseline">
55
+ <Col
56
+ className="h5 text-lg-right text-nowrap mb-4 mb-lg-0"
57
+ xs="12"
58
+ lg="2"
59
+ >
54
60
  {name}
55
61
  </Col>
62
+
56
63
  <Form.Group as={Col}>
57
64
  <Form.Label className="d-lg-none">{t("Design:from")}</Form.Label>
58
65
  <Form.Control
59
- {...register(`workingHours.${i}.start` as const, {
66
+ {...register(`workingHours.${i}.start`, {
60
67
  validate: (nextStartValue) => {
61
68
  if (nextStartValue) {
62
69
  clearErrors("workingHours");
@@ -69,20 +76,22 @@ export function WorkingHoursInput() {
69
76
  placeholder={t("Design:from")}
70
77
  />
71
78
  </Form.Group>
79
+
72
80
  <Form.Group as={Col}>
73
81
  <Form.Label className="d-lg-none">{t("Design:until")}</Form.Label>
74
82
  <Form.Control
75
- {...register(`workingHours.${i}.end` as const)}
83
+ {...register(`workingHours.${i}.end`)}
76
84
  type="time"
77
85
  placeholder={t("Design:until")}
78
86
  />
79
87
  </Form.Group>
88
+
80
89
  <Form.Group as={Col} xs="12" lg>
81
90
  <Form.Label className="d-lg-none">
82
91
  {t("Design:description")}
83
92
  </Form.Label>
84
93
  <Form.Control
85
- {...register(`workingHours.${i}.description` as const)}
94
+ {...register(`workingHours.${i}.description`)}
86
95
  placeholder={t("Design:description")}
87
96
  />
88
97
  </Form.Group>
@@ -1,8 +1,6 @@
1
- import { DateTime } from "luxon";
2
1
  import { Col, Row } from "react-bootstrap";
3
2
  import { useFormContext } from "react-hook-form";
4
3
  import { useTranslation } from "react-i18next";
5
- import { TIME_FORMAT } from "@licklist/core/dist/Config";
6
4
  import { WorkingHoursInputValues } from ".";
7
5
  import { useWeekdays } from "./utils";
8
6
 
@@ -16,34 +14,17 @@ export function WorkingHoursInputDescription() {
16
14
 
17
15
  return (
18
16
  <>
19
- {Array.from({ length: weekdays.length }, (_, i) => i)
20
- .filter((i) => values?.[i]?.start)
21
- .map((i) => {
22
- const weekday = values?.[i];
23
- return (
24
- <Row key={i}>
25
- <Col xs="auto">{weekdays[i]}:</Col>
26
- <Col>
27
- {weekday?.end
28
- ? weekday.start
29
- ? t("timeInterval", {
30
- start: DateTime.fromISO(weekday.start).toFormat(
31
- TIME_FORMAT,
32
- ),
33
- end: DateTime.fromISO(weekday.start).toFormat(
34
- TIME_FORMAT,
35
- ),
36
- })
37
- : t("timeFrom", {
38
- start: DateTime.fromISO(weekday.start).toFormat(
39
- TIME_FORMAT,
40
- ),
41
- })
42
- : null}
43
- </Col>
44
- </Row>
45
- );
46
- })}
17
+ {Array.from({ length: weekdays.length }, (_, i) => i).map((i) => (
18
+ <Row key={i}>
19
+ <Col xs="auto">{weekdays[i]}:</Col>
20
+ <Col>
21
+ {t("timeInterval", {
22
+ start: values?.[i].start ?? "00:00",
23
+ end: values?.[i].end ?? "23:59",
24
+ })}
25
+ </Col>
26
+ </Row>
27
+ ))}
47
28
  </>
48
29
  );
49
30
  }