@licklist/design 0.67.4 → 0.67.5-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.
- package/.storybook/main.cjs +15 -12
- package/dist/auth/Login/LoginComponent.js +2 -1
- package/dist/calendar/Calendar.d.ts +2 -2
- package/dist/calendar/Calendar.d.ts.map +1 -1
- package/dist/calendar/components/CalendarButtons/CalendarButtons.d.ts.map +1 -1
- package/dist/calendar/components/CalendarButtons/CalendarButtons.js +35 -40
- package/dist/calendar/utils/index.d.ts +2 -2
- package/dist/calendar/utils/index.d.ts.map +1 -1
- package/dist/calendar/utils/index.js +20 -4
- package/dist/date-time-button/DateTimeButton.d.ts +1 -2
- package/dist/date-time-button/DateTimeButton.d.ts.map +1 -1
- package/dist/date-time-button/DateTimeButton.js +2 -3
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts +2 -1
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +4 -4
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts +2 -2
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.js +27 -26
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts +2 -2
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.js +3 -3
- package/dist/events/edit-event-modal/utils/getDefaultProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/utils/getDefaultProductSet.js +0 -1
- package/dist/iframe/event/event-card/IframeEventCard.d.ts +1 -1
- package/dist/iframe/event/event-card/IframeEventCard.d.ts.map +1 -1
- package/dist/iframe/event/event-card/IframeEventCard.js +9 -3
- package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts.map +1 -1
- package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.js +2 -0
- package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/layout/DropDown.d.ts +2 -1
- package/dist/layout/DropDown.d.ts.map +1 -1
- package/dist/modals/confirmation/ConfirmModal.d.ts +3 -1
- package/dist/modals/confirmation/ConfirmModal.d.ts.map +1 -1
- package/dist/modals/confirmation/ConfirmModal.js +172 -8
- package/dist/product-set/card/ProductSetCard.d.ts +6 -2
- package/dist/product-set/card/ProductSetCard.d.ts.map +1 -1
- package/dist/product-set/card/ProductSetCard.js +30 -11
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts +3 -2
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.js +3 -1
- package/dist/product-set/control/DateInput.d.ts.map +1 -1
- package/dist/product-set/control/DateInput.js +2 -2
- package/dist/product-set/control/ProductSetControl.d.ts +3 -3
- package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
- package/dist/product-set/control/ProductSetControl.js +4 -16
- package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductCategoriesControl.js +48 -2
- package/dist/product-set/form/ProductSetForm.d.ts +6 -2
- package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
- package/dist/product-set/form/ProductSetForm.js +65 -5
- package/dist/product-set/form/ProductSetNameControl.d.ts +6 -0
- package/dist/product-set/form/ProductSetNameControl.d.ts.map +1 -0
- package/dist/product-set/form/ProductSetNameControl.js +35 -0
- package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductZonesControl.js +0 -2
- package/dist/product-set/form/SelectCategoryModal.d.ts +12 -0
- package/dist/product-set/form/SelectCategoryModal.d.ts.map +1 -1
- package/dist/product-set/form/SelectCategoryModal.js +1 -1
- package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
- package/dist/product-set/form/SubProductsControl.js +0 -3
- package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
- package/dist/product-set/form/VenueMapsControl.js +0 -3
- package/dist/product-set/form/index.d.ts +1 -0
- package/dist/product-set/form/index.d.ts.map +1 -1
- package/dist/product-set/utils/index.d.ts +7 -0
- package/dist/product-set/utils/index.d.ts.map +1 -1
- package/dist/product-set/utils/index.js +10 -1
- package/dist/provider/location-input/LocationInput.d.ts +4 -1
- package/dist/provider/location-input/LocationInput.d.ts.map +1 -1
- package/dist/provider/location-input/LocationInput.js +41 -2
- package/dist/provider/location-input/LocationInputDescription.d.ts +4 -1
- package/dist/provider/location-input/LocationInputDescription.d.ts.map +1 -1
- package/dist/provider/location-input/LocationInputDescription.js +27 -12
- package/dist/provider/location-input/index.d.ts +1 -0
- package/dist/provider/location-input/index.d.ts.map +1 -1
- package/dist/provider/provider-form/ProviderForm.d.ts +3 -1
- package/dist/provider/provider-form/ProviderForm.d.ts.map +1 -1
- package/dist/provider/provider-form/ProviderForm.js +7 -3
- package/dist/provider/venue-form/VenueForm.d.ts +3 -1
- package/dist/provider/venue-form/VenueForm.d.ts.map +1 -1
- package/dist/provider/venue-form/VenueForm.js +7 -3
- package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
- package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +4 -8
- package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts +2 -1
- package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.js +7 -13
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts +4 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.js +7 -3
- package/dist/recurring-date-picker-input/utils.d.ts +5 -0
- package/dist/recurring-date-picker-input/utils.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/utils.js +72 -3
- package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
- package/dist/sales/booking/results/components/ResultCard.js +4 -7
- package/dist/sales/guest-profile/previous-bookings/PreviousBookings.js +1 -1
- package/dist/sales/manual-booking/formatDays.js +3 -3
- package/dist/sales/manual-booking/select-event/SelectEvent.d.ts.map +1 -1
- package/dist/sales/manual-booking/select-event/SelectEvent.js +3 -3
- package/dist/sales/manual-booking/summary/ManualBookingSummary.d.ts.map +1 -1
- package/dist/sales/manual-booking/summary/ManualBookingSummary.js +2 -2
- package/dist/sales/notes/NotesTableRow.js +3 -4
- package/dist/setting/admin/AdminSettingForm.d.ts +2 -2
- package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
- package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
- package/dist/snippet/snippet-template/preview/Preview.js +6 -0
- package/dist/sortable-tree/SortableTreeItem.d.ts +2 -1
- package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
- package/dist/sortable-tree/SortableTreeItem.js +10 -4
- package/dist/styles/auth/AccessDenied.scss +1 -1
- package/dist/styles/back-button/BackButton.scss +25 -24
- package/dist/styles/back-button/_index.scss +1 -1
- package/dist/styles/company-user-form/UserForm.scss +4 -7
- package/dist/styles/company-user-form/_index.scss +1 -1
- package/dist/styles/custom-fields/CreateSortableListItem.scss +2 -1
- package/dist/styles/custom-fields/_index.scss +1 -1
- package/dist/styles/customers/Filter.scss +5 -5
- package/dist/styles/events/EditEventModal.scss +1 -3
- package/dist/styles/events/EventVenueMap.scss +7 -7
- package/dist/styles/form/Input.scss +1 -1
- package/dist/styles/header/Header.scss +1 -1
- package/dist/styles/header/elements/CompanySelector.scss +2 -2
- package/dist/styles/iframe-events/Calendar.scss +0 -1
- package/dist/styles/iframe-events/CalendarSelect.scss +1 -1
- package/dist/styles/iframe-events/CategoryStepsForm.scss +6 -7
- package/dist/styles/iframe-events/Event.scss +2 -4
- package/dist/styles/iframe-events/EventForm.scss +54 -54
- package/dist/styles/iframe-events/EventNavigationFooter.scss +1 -0
- package/dist/styles/iframe-events/TicketDescription.scss +1 -1
- package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
- package/dist/styles/iframe-payments/PaymentForm.scss +1 -1
- package/dist/styles/layout/BackgroundVideoContainer.scss +2 -2
- package/dist/styles/notification/Notification.scss +1 -1
- package/dist/styles/order-items-table/OrderItemsTable.scss +1 -2
- package/dist/styles/product-set/CreateProductSetItem.scss +15 -13
- package/dist/styles/product-set/DateAndRecurrenceInput.scss +6 -8
- package/dist/styles/product-set/EditCategoryModal.scss +4 -4
- package/dist/styles/product-set/EditProductModal.scss +3 -3
- package/dist/styles/product-set/EditStepModal.scss +4 -4
- package/dist/styles/product-set/EditVenueMapSetModal.scss +6 -6
- package/dist/styles/product-set/ProductSetForm.scss +25 -2
- package/dist/styles/product-set/TutorialGifCard.scss +1 -1
- package/dist/styles/product-set/_index.scss +2 -2
- package/dist/styles/report/ReportCard.scss +1 -0
- package/dist/styles/report/_index.scss +1 -1
- package/dist/styles/resources-blocking/_index.scss +4 -0
- package/dist/styles/sales/BookingFilter.scss +2 -2
- package/dist/styles/sales/BookingResults.scss +1 -1
- package/dist/styles/sales/BookingTabs.scss +7 -5
- package/dist/styles/sales/Filters.scss +5 -4
- package/dist/styles/sales/GuestProfile.scss +170 -175
- package/dist/styles/sales/LifeTimeSales.scss +1 -1
- package/dist/styles/sales/ManualBooking.scss +4 -2
- package/dist/styles/snippet-templates/_snippetVariables.scss +63 -244
- package/dist/styles/sortable-field/SortableField.scss +16 -16
- package/dist/styles/sortable-field/_index.scss +1 -1
- package/dist/styles/sortable-tree/Item.scss +4 -4
- package/dist/styles/table/Table.scss +1 -1
- package/dist/styles/themes/bookedit/_variables.scss +10 -32
- package/dist/styles/themes/licklist/_variables.scss +1 -1
- package/dist/styles/tiptap-editor/TiptapEditor.scss +9 -10
- package/dist/styles/tiptap-editor/_index.scss +1 -1
- package/dist/styles/venue-map-sets/VenueMapSetForm.scss +5 -4
- package/dist/styles/virtualized/_index.scss +1 -1
- package/dist/styles/zones/ZoneForm.scss +1 -0
- package/dist/styles/zones/ZoneRecurrencesControl.scss +6 -8
- package/dist/typeahead/Typeahead.d.ts +5 -1
- package/dist/typeahead/Typeahead.d.ts.map +1 -1
- package/dist/typeahead/Typeahead.js +9 -2
- package/dist/zone/form/ZoneForm.d.ts +3 -2
- package/dist/zone/form/ZoneForm.d.ts.map +1 -1
- package/dist/zone/form/ZoneForm.js +4 -2
- package/dist/zone/form/components/ZoneControl.d.ts +3 -2
- package/dist/zone/form/components/ZoneControl.d.ts.map +1 -1
- package/dist/zone/form/components/ZoneControl.js +5 -2
- package/dist/zone/form/components/ZoneRecurrencesControl.d.ts +5 -4
- package/dist/zone/form/components/ZoneRecurrencesControl.d.ts.map +1 -1
- package/dist/zone/form/components/ZoneRecurrencesControl.js +5 -2
- package/dist/zone/form/utils/dates.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/auth/ChangePassword/ChangePassword.stories.tsx +1 -1
- package/src/auth/Login/LoginComponent.tsx +1 -1
- package/src/auth/ResetPassword/ResetPassword.stories.tsx +1 -1
- package/src/calendar/Calendar.stories.tsx +0 -2
- package/src/calendar/Calendar.tsx +1 -4
- package/src/calendar/components/CalendarButtons/CalendarButtons.tsx +31 -28
- package/src/calendar/utils/index.ts +26 -4
- package/src/date-time-button/DateTimeButton.stories.tsx +0 -1
- package/src/date-time-button/DateTimeButton.tsx +1 -6
- package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +3 -2
- package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +35 -37
- package/src/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.tsx +3 -3
- package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +0 -1
- package/src/header/elements/Elements.stories.tsx +1 -1
- package/src/help/popover/Popover.stories.tsx +1 -1
- package/src/iframe/event/event-card/IframeEventCard.tsx +16 -2
- package/src/iframe/event/event-venue-map/IframeEventVenueMap.stories.tsx +3 -3
- package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx +1 -0
- package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +1 -0
- package/src/layout/DropDown.tsx +2 -1
- package/src/modals/confirmation/ConfirmModal.tsx +19 -3
- package/src/product-set/card/ProductSetCard.stories.tsx +3 -1
- package/src/product-set/card/ProductSetCard.tsx +47 -8
- package/src/product-set/control/DateAndRecurrenceInput.tsx +6 -4
- package/src/product-set/control/DateInput.tsx +2 -1
- package/src/product-set/control/ProductSetControl.tsx +4 -15
- package/src/product-set/control/ProductSetRecurrenceControl.stories.tsx +2 -2
- package/src/product-set/form/ProductCategoriesControl.tsx +37 -1
- package/src/product-set/form/ProductSetForm.tsx +25 -3
- package/src/product-set/form/ProductSetNameControl.tsx +27 -0
- package/src/product-set/form/ProductZonesControl.tsx +4 -7
- package/src/product-set/form/SelectCategoryModal.stories.tsx +1 -1
- package/src/product-set/form/SelectCategoryModal.tsx +2 -2
- package/src/product-set/form/SubProductsControl.tsx +0 -3
- package/src/product-set/form/VenueMapsControl.tsx +0 -3
- package/src/product-set/form/index.ts +1 -0
- package/src/product-set/product/advanced-options/AdvancedOptions.tsx +5 -5
- package/src/product-set/product/booking-management/ProductBookingManagement.stories.tsx +1 -1
- package/src/product-set/product/quantity/ProductQuantity.stories.tsx +1 -1
- package/src/product-set/product-zone/ProductZoneControl.tsx +9 -9
- package/src/product-set/utils/index.ts +11 -0
- package/src/provider/location-input/LocationInput.tsx +36 -1
- package/src/provider/location-input/LocationInputDescription.tsx +23 -11
- package/src/provider/location-input/index.ts +1 -0
- package/src/provider/provider-form/ProviderForm.tsx +7 -2
- package/src/provider/venue-form/VenueForm.tsx +5 -2
- package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +4 -18
- package/src/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.tsx +8 -22
- package/src/recurring-date-picker-input/RecurringDatePickerInput.stories.tsx +11 -4
- package/src/recurring-date-picker-input/RecurringDatePickerInput.tsx +17 -3
- package/src/recurring-date-picker-input/utils.ts +86 -1
- package/src/sales/booking/results/components/ResultCard.tsx +4 -10
- package/src/sales/guest-profile/previous-bookings/PreviousBookings.tsx +1 -1
- package/src/sales/manual-booking/formatDays.ts +3 -3
- package/src/sales/manual-booking/select-event/SelectEvent.tsx +2 -2
- package/src/sales/manual-booking/summary/ManualBookingSummary.tsx +2 -2
- package/src/sales/notes/NotesTableRow.tsx +3 -3
- package/src/setting/admin/AdminSetting.stories.tsx +1 -0
- package/src/setting/admin/AdminSettingForm.tsx +2 -2
- package/src/setting/system/SystemSetting.stories.tsx +1 -1
- package/src/snippet/snippet-template/preview/Preview.tsx +6 -0
- package/src/sortable-tree/SortableTreeItem.tsx +6 -0
- package/src/styles/auth/AccessDenied.scss +1 -1
- package/src/styles/back-button/BackButton.scss +25 -24
- package/src/styles/back-button/_index.scss +1 -1
- package/src/styles/company-user-form/UserForm.scss +4 -7
- package/src/styles/company-user-form/_index.scss +1 -1
- package/src/styles/custom-fields/CreateSortableListItem.scss +2 -1
- package/src/styles/custom-fields/_index.scss +1 -1
- package/src/styles/customers/Filter.scss +5 -5
- package/src/styles/events/EditEventModal.scss +1 -3
- package/src/styles/events/EventVenueMap.scss +7 -7
- package/src/styles/form/Input.scss +1 -1
- package/src/styles/header/Header.scss +1 -1
- package/src/styles/header/elements/CompanySelector.scss +2 -2
- package/src/styles/iframe-events/Calendar.scss +0 -1
- package/src/styles/iframe-events/CalendarSelect.scss +1 -1
- package/src/styles/iframe-events/CategoryStepsForm.scss +6 -7
- package/src/styles/iframe-events/Event.scss +2 -4
- package/src/styles/iframe-events/EventForm.scss +54 -54
- package/src/styles/iframe-events/EventNavigationFooter.scss +1 -0
- package/src/styles/iframe-events/TicketDescription.scss +1 -1
- package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
- package/src/styles/iframe-payments/PaymentForm.scss +1 -1
- package/src/styles/layout/BackgroundVideoContainer.scss +2 -2
- package/src/styles/notification/Notification.scss +1 -1
- package/src/styles/order-items-table/OrderItemsTable.scss +1 -2
- package/src/styles/product-set/CreateProductSetItem.scss +15 -13
- package/src/styles/product-set/DateAndRecurrenceInput.scss +6 -8
- package/src/styles/product-set/EditCategoryModal.scss +4 -4
- package/src/styles/product-set/EditProductModal.scss +3 -3
- package/src/styles/product-set/EditStepModal.scss +4 -4
- package/src/styles/product-set/EditVenueMapSetModal.scss +6 -6
- package/src/styles/product-set/ProductSetForm.scss +25 -2
- package/src/styles/product-set/TutorialGifCard.scss +1 -1
- package/src/styles/product-set/_index.scss +2 -2
- package/src/styles/report/ReportCard.scss +1 -0
- package/src/styles/report/_index.scss +1 -1
- package/src/styles/resources-blocking/_index.scss +4 -0
- package/src/styles/sales/BookingFilter.scss +2 -2
- package/src/styles/sales/BookingResults.scss +1 -1
- package/src/styles/sales/BookingTabs.scss +7 -5
- package/src/styles/sales/Filters.scss +5 -4
- package/src/styles/sales/GuestProfile.scss +170 -175
- package/src/styles/sales/LifeTimeSales.scss +1 -1
- package/src/styles/sales/ManualBooking.scss +4 -2
- package/src/styles/snippet-templates/_snippetVariables.scss +63 -244
- package/src/styles/sortable-field/SortableField.scss +16 -16
- package/src/styles/sortable-field/_index.scss +1 -1
- package/src/styles/sortable-tree/Item.scss +4 -4
- package/src/styles/table/Table.scss +1 -1
- package/src/styles/themes/bookedit/_variables.scss +10 -32
- package/src/styles/themes/licklist/_variables.scss +1 -1
- package/src/styles/tiptap-editor/TiptapEditor.scss +9 -10
- package/src/styles/tiptap-editor/_index.scss +1 -1
- package/src/styles/venue-map-sets/VenueMapSetForm.scss +5 -4
- package/src/styles/virtualized/_index.scss +1 -1
- package/src/styles/zones/ZoneForm.scss +1 -0
- package/src/styles/zones/ZoneRecurrencesControl.scss +6 -8
- package/src/tiptap-editor/TipTapEditor.stories.tsx +6 -4
- package/src/tiptap-editor/TipTapMenu/TipTapMenu.stories.tsx +5 -2
- package/src/typeahead/Typeahead.tsx +15 -1
- package/src/zone/form/ZoneForm.tsx +9 -2
- package/src/zone/form/components/ZoneControl.tsx +8 -3
- package/src/zone/form/components/ZoneRecurrencesControl.tsx +10 -5
- package/src/zone/form/utils/dates.ts +9 -10
- package/yarn.lock +127 -140
- 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
|
-
|
|
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
|
});
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
import
|
|
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>
|
|
@@ -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
|
|
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
|
-
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
}
|
|
@@ -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"
|
|
@@ -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
|
|
|
@@ -24,22 +22,10 @@ export function WorkingHoursInputDescription() {
|
|
|
24
22
|
<Row key={i}>
|
|
25
23
|
<Col xs="auto">{weekdays[i]}:</Col>
|
|
26
24
|
<Col>
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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}
|
|
25
|
+
{t("timeInterval", {
|
|
26
|
+
start: weekday.start,
|
|
27
|
+
end: weekday.end,
|
|
28
|
+
})}
|
|
43
29
|
</Col>
|
|
44
30
|
</Row>
|
|
45
31
|
);
|
|
@@ -8,12 +8,8 @@ import {
|
|
|
8
8
|
useWatch,
|
|
9
9
|
Validate,
|
|
10
10
|
} from "react-hook-form";
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
TIME_FORMAT,
|
|
14
|
-
TIME_FULL_FORMAT,
|
|
15
|
-
} from "@licklist/core/dist/Config";
|
|
16
|
-
import { fromFormat } from "@licklist/plugins/dist/utils/dateTime";
|
|
11
|
+
import { TIME_FORMAT } from "@licklist/core/dist/Config";
|
|
12
|
+
import { fromIso } from "@licklist/core/dist/Services";
|
|
17
13
|
import { RecurringDatePickerInputValues } from "./RecurringDatePickerInput";
|
|
18
14
|
|
|
19
15
|
interface RecurrenceIntervalAndFrequencyInputProps {
|
|
@@ -31,17 +27,9 @@ interface RecurrenceIntervalAndFrequencyInputProps {
|
|
|
31
27
|
RegisterOptions,
|
|
32
28
|
"max" | "min" | "validate" | "required" | "pattern"
|
|
33
29
|
>;
|
|
30
|
+
timeZone: string;
|
|
34
31
|
}
|
|
35
32
|
|
|
36
|
-
const fromTimeFormat = fromFormat(TIME_FORMAT);
|
|
37
|
-
const fromTimeFullFormat = fromFormat(TIME_FULL_FORMAT);
|
|
38
|
-
|
|
39
|
-
// default values and entered values are in different formats
|
|
40
|
-
const fromTimeFormats = (time: string) =>
|
|
41
|
-
fromTimeFormat(time).isValid
|
|
42
|
-
? fromTimeFormat(time)
|
|
43
|
-
: fromTimeFullFormat(time);
|
|
44
|
-
|
|
45
33
|
function RecurrenceIntervalAndFrequencyInput({
|
|
46
34
|
disabled = false,
|
|
47
35
|
minDate,
|
|
@@ -51,6 +39,7 @@ function RecurrenceIntervalAndFrequencyInput({
|
|
|
51
39
|
endTimeLabel,
|
|
52
40
|
startTimeRules,
|
|
53
41
|
endTimeRules,
|
|
42
|
+
timeZone,
|
|
54
43
|
}: RecurrenceIntervalAndFrequencyInputProps) {
|
|
55
44
|
const { t } = useTranslation(["Design", "Notification", "App"]);
|
|
56
45
|
|
|
@@ -66,10 +55,10 @@ function RecurrenceIntervalAndFrequencyInput({
|
|
|
66
55
|
|
|
67
56
|
const _startTime = useWatch({ control, name: "startTime" });
|
|
68
57
|
const startTime =
|
|
69
|
-
_startTime &&
|
|
58
|
+
_startTime && fromIso(_startTime, timeZone).toFormat(TIME_FORMAT);
|
|
70
59
|
|
|
71
60
|
const _endTime = useWatch({ control, name: "endTime" });
|
|
72
|
-
const endTime = _endTime &&
|
|
61
|
+
const endTime = _endTime && fromIso(_endTime, timeZone).toFormat(TIME_FORMAT);
|
|
73
62
|
|
|
74
63
|
useEffect(() => {
|
|
75
64
|
if (!startDate || !endDate) {
|
|
@@ -119,11 +108,8 @@ function RecurrenceIntervalAndFrequencyInput({
|
|
|
119
108
|
if (!startDate || !date) {
|
|
120
109
|
return true;
|
|
121
110
|
}
|
|
122
|
-
const currentStartDate =
|
|
123
|
-
|
|
124
|
-
DATE_FORMAT,
|
|
125
|
-
);
|
|
126
|
-
const currentEndDate = DateTime.fromFormat(date, DATE_FORMAT);
|
|
111
|
+
const currentStartDate = fromIso(startDate, timeZone);
|
|
112
|
+
const currentEndDate = fromIso(date, timeZone);
|
|
127
113
|
return currentEndDate.diff(currentStartDate, ["days"]).days >=
|
|
128
114
|
0
|
|
129
115
|
? true
|
|
@@ -12,9 +12,7 @@ export default {
|
|
|
12
12
|
component: RecurringDatePickerInput,
|
|
13
13
|
} as Meta;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export const Default: Story<DefaultRecurringDatePickerInputProps> = (args) => {
|
|
15
|
+
export const Default: Story<RecurringDatePickerInputProps> = (args) => {
|
|
18
16
|
return (
|
|
19
17
|
<Card style={{ maxWidth: "max-content" }}>
|
|
20
18
|
<Card.Body>
|
|
@@ -23,7 +21,7 @@ export const Default: Story<DefaultRecurringDatePickerInputProps> = (args) => {
|
|
|
23
21
|
</Card>
|
|
24
22
|
);
|
|
25
23
|
};
|
|
26
|
-
export const Valid: Story<
|
|
24
|
+
export const Valid: Story<RecurringDatePickerInputProps> = (args) => {
|
|
27
25
|
return (
|
|
28
26
|
<Card style={{ maxWidth: "max-content" }}>
|
|
29
27
|
<Card.Body>
|
|
@@ -34,6 +32,15 @@ export const Valid: Story<DefaultRecurringDatePickerInputProps> = (args) => {
|
|
|
34
32
|
};
|
|
35
33
|
Default.args = {
|
|
36
34
|
onChange: (data) => console.log("onSubmit", data),
|
|
35
|
+
workHours: [
|
|
36
|
+
{ start: "20:00", end: "04:00", day: 0, description: "" },
|
|
37
|
+
{ start: "20:00", end: "04:00", day: 1, description: "" },
|
|
38
|
+
{ start: "20:00", end: "04:00", day: 2, description: "" },
|
|
39
|
+
{ start: "20:00", end: "12:00", day: 3, description: "" },
|
|
40
|
+
{ start: "20:00", end: "23:00", day: 4, description: "" },
|
|
41
|
+
{ start: "08:00", end: "12:00", day: 5, description: "" },
|
|
42
|
+
{ start: "10:00", end: "16:00", day: 6, description: "" },
|
|
43
|
+
],
|
|
37
44
|
};
|
|
38
45
|
Valid.args = {
|
|
39
46
|
onChange: (data) => console.log("onSubmit", data),
|