@licklist/design 0.67.2 → 0.67.3-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.
- package/.storybook/main.cjs +15 -12
- package/dist/auth/Login/LoginComponent.js +2 -1
- package/dist/calendar/Calendar.d.ts +1 -1
- 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/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 +5 -3
- package/dist/events/edit-event-modal/component/SaleDeadline/SaleDeadline.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SaleDeadline/SaleDeadline.js +5 -3
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts +2 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.js +6 -8
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts +2 -1
- 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 -2
- 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/layout/DropDown.d.ts +2 -1
- package/dist/layout/DropDown.d.ts.map +1 -1
- package/dist/layout/DropDownToggle.d.ts.map +1 -1
- package/dist/layout/DropDownToggle.js +1 -0
- 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 -2
- package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
- package/dist/product-set/control/ProductSetControl.js +4 -2
- 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/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/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/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 +11 -11
- 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/components/CalendarButtons/CalendarButtons.tsx +31 -28
- package/src/calendar/utils/index.ts +26 -4
- package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +3 -0
- package/src/events/edit-event-modal/component/SaleDeadline/SaleDeadline.tsx +3 -5
- package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +3 -4
- package/src/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.tsx +3 -0
- 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/layout/DropDownToggle.tsx +2 -0
- package/src/product-set/card/ProductSetCard.stories.tsx +3 -1
- 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 +5 -1
- 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/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/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/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/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 +217 -204
- package/dist/assets/iframe/selectArrow.svg.js +0 -17
|
@@ -88,11 +88,12 @@ export interface ProductSetControlProps {
|
|
|
88
88
|
fieldSets?: FieldSet[];
|
|
89
89
|
showEmailTemplate?: boolean;
|
|
90
90
|
showSmsTemplate?: boolean;
|
|
91
|
-
workHours
|
|
91
|
+
workHours: WorkHour[] | undefined;
|
|
92
92
|
providerHasBookingManagement?: boolean;
|
|
93
93
|
isOverrides?: boolean;
|
|
94
94
|
occurrenceStartAtDate?: string;
|
|
95
95
|
isCreateNewOverrides?: boolean;
|
|
96
|
+
timeZone: string;
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
export function ProductSetControl({
|
|
@@ -111,6 +112,7 @@ export function ProductSetControl({
|
|
|
111
112
|
isOverrides = false,
|
|
112
113
|
occurrenceStartAtDate,
|
|
113
114
|
isCreateNewOverrides = false,
|
|
115
|
+
timeZone,
|
|
114
116
|
}: ProductSetControlProps) {
|
|
115
117
|
const { t } = useTranslation(["Design", "Validation", "Notification"]);
|
|
116
118
|
const {
|
|
@@ -143,6 +145,7 @@ export function ProductSetControl({
|
|
|
143
145
|
const eventStartDate = DateTime.fromISO(occurrenceStartAtDate);
|
|
144
146
|
const eventStart = eventStartDate.toFormat(DATE_MONTH_LOCALE_FORMAT);
|
|
145
147
|
setValue("name", `${productSetName} (${eventStart})`);
|
|
148
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
146
149
|
}, [setValue, occurrenceStartAtDate]);
|
|
147
150
|
|
|
148
151
|
return (
|
|
@@ -200,6 +203,7 @@ export function ProductSetControl({
|
|
|
200
203
|
workHours={isZoneAdded ? workHours : undefined}
|
|
201
204
|
isLoading={isLoading}
|
|
202
205
|
providerHasBookingManagement={providerHasBookingManagement}
|
|
206
|
+
timeZone={timeZone}
|
|
203
207
|
/>
|
|
204
208
|
)}
|
|
205
209
|
</>
|
|
@@ -23,7 +23,7 @@ interface ProductSetRecurrences {
|
|
|
23
23
|
|
|
24
24
|
export const Default: Story<ProductSetRecurrences> = (args) => {
|
|
25
25
|
const [items, setItems] = useState(
|
|
26
|
-
args.menuRecurrences?.sort((a, b) => a.sort - b.sort) ?? []
|
|
26
|
+
args.menuRecurrences?.sort((a, b) => a.sort - b.sort) ?? []
|
|
27
27
|
);
|
|
28
28
|
|
|
29
29
|
const onDragEnd = ({ over, active }) => {
|
|
@@ -31,7 +31,7 @@ export const Default: Story<ProductSetRecurrences> = (args) => {
|
|
|
31
31
|
|
|
32
32
|
setItems((items) => {
|
|
33
33
|
const prevIndex = items.findIndex(
|
|
34
|
-
(item) => String(item.id) === active.id
|
|
34
|
+
(item) => String(item.id) === active.id
|
|
35
35
|
);
|
|
36
36
|
const nextIndex = items.findIndex((item) => String(item.id) === over.id);
|
|
37
37
|
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
useFormContext,
|
|
9
9
|
useWatch,
|
|
10
10
|
} from "react-hook-form";
|
|
11
|
+
import { FaBars, FaBowlingBall, FaCalendar, FaTicketAlt } from "react-icons/fa";
|
|
11
12
|
import { useTranslation } from "react-i18next";
|
|
12
13
|
import { useSensor, MouseSensor } from "@dnd-kit/core";
|
|
13
14
|
import {
|
|
@@ -25,7 +26,11 @@ import { ProductCategoryControl } from "../product-category";
|
|
|
25
26
|
import { ProductCategory } from "../types";
|
|
26
27
|
import { ProductsControl } from "./ProductsControl";
|
|
27
28
|
import { ProductSetFormValues, WithIsLoading } from "./ProductSetForm";
|
|
28
|
-
import {
|
|
29
|
+
import {
|
|
30
|
+
SelectCategoryModal,
|
|
31
|
+
CATEGORY_TYPES_NAMES,
|
|
32
|
+
CategoryConfig,
|
|
33
|
+
} from "./SelectCategoryModal";
|
|
29
34
|
import { ProductSetLoadingContext } from "./context";
|
|
30
35
|
import { VenueMapSetModal } from "./VenueMapSetModal";
|
|
31
36
|
import { moveArrayElements, sortArrayByIndex } from "../utils";
|
|
@@ -33,6 +38,29 @@ import { useSortableTreeFunctions } from "../hooks/useSortableTreeFunctions";
|
|
|
33
38
|
// @TODO not for first release
|
|
34
39
|
// import Popover from "./ProductSetFormPopover";
|
|
35
40
|
|
|
41
|
+
const CATEGORIES_TYPE: Partial<Record<CategoryType, CategoryConfig>> = {
|
|
42
|
+
[CATEGORY_TYPES_NAMES.tickets]: {
|
|
43
|
+
label: "tickets",
|
|
44
|
+
icon: <FaTicketAlt color="#0e8ce2" size={10} />,
|
|
45
|
+
},
|
|
46
|
+
[CATEGORY_TYPES_NAMES.bookings]: {
|
|
47
|
+
label: "bookings",
|
|
48
|
+
icon: <FaCalendar color="#0e8ce2" size={10} />,
|
|
49
|
+
},
|
|
50
|
+
[CATEGORY_TYPES_NAMES.menuItems]: {
|
|
51
|
+
label: "menuItems",
|
|
52
|
+
icon: <FaBars color="#0e8ce2" size={10} />,
|
|
53
|
+
},
|
|
54
|
+
[CATEGORY_TYPES_NAMES.game]: {
|
|
55
|
+
label: "game",
|
|
56
|
+
icon: <FaBowlingBall color="#0e8ce2" size={10} />,
|
|
57
|
+
},
|
|
58
|
+
[CATEGORY_TYPES_NAMES.fixedDuration]: {
|
|
59
|
+
label: "fixedDuration",
|
|
60
|
+
icon: <FaCalendar color="#0e8ce2" size={10} />,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
36
64
|
interface ProductCategoriesControlProps extends WithIsLoading {
|
|
37
65
|
stepIndex: number;
|
|
38
66
|
isOverrides?: boolean;
|
|
@@ -228,6 +256,8 @@ export function ProductCategoriesControl({
|
|
|
228
256
|
setIsExpanded(productCategoryId);
|
|
229
257
|
};
|
|
230
258
|
|
|
259
|
+
const categoryType = CATEGORIES_TYPE[productCategory.type];
|
|
260
|
+
|
|
231
261
|
return (
|
|
232
262
|
<Controller
|
|
233
263
|
key={`product-category-${productCategory._id}`}
|
|
@@ -272,6 +302,12 @@ export function ProductCategoriesControl({
|
|
|
272
302
|
)}
|
|
273
303
|
modalClass={ProductSetModalClasses.category}
|
|
274
304
|
isNewAdded={showCategoryModal}
|
|
305
|
+
itemButton={
|
|
306
|
+
<div className="btn-outline-primary item-icon sm border border-primary rounded-sm">
|
|
307
|
+
{categoryType.icon}
|
|
308
|
+
<span className="ml-2">{t(categoryType.label)}</span>
|
|
309
|
+
</div>
|
|
310
|
+
}
|
|
275
311
|
body={
|
|
276
312
|
<ProductCategoryControl
|
|
277
313
|
isLoading={isLoading}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
2
|
import { FormValues } from "@licklist/plugins/dist/types/services/Form/hook-form-service";
|
|
3
3
|
import { Button, Form, Col, Row } from "react-bootstrap";
|
|
4
4
|
import { FormProvider, useForm } from "react-hook-form";
|
|
@@ -22,16 +22,21 @@ import { Step } from "../types";
|
|
|
22
22
|
import { ProductSetContextProvider, ProductSetLoadingContext } from "./context";
|
|
23
23
|
import { SelectItem } from "../../types/generic/SelectItem";
|
|
24
24
|
import { checkAvailableTimesErrors, getFilteredTemplates } from "../utils";
|
|
25
|
+
import { ErrorModal } from "../../iframe/order-process/components/ErrorModal";
|
|
25
26
|
|
|
26
27
|
export interface WithIsLoading {
|
|
27
28
|
isLoading: boolean;
|
|
28
29
|
}
|
|
30
|
+
export interface WithIdOptional {
|
|
31
|
+
id?: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
29
34
|
export interface WithId {
|
|
30
35
|
id: number;
|
|
31
36
|
}
|
|
32
37
|
export interface ProductSetFormValues
|
|
33
38
|
extends FormValues,
|
|
34
|
-
|
|
39
|
+
WithIdOptional,
|
|
35
40
|
ProductSetControlValues {
|
|
36
41
|
steps: Step[];
|
|
37
42
|
isOverrides?: boolean;
|
|
@@ -54,6 +59,7 @@ export interface ProductSetFormProps
|
|
|
54
59
|
isOverrides?: boolean;
|
|
55
60
|
workHours?: WorkHour[];
|
|
56
61
|
isCreateNewOverrides?: boolean;
|
|
62
|
+
timeZone: string;
|
|
57
63
|
}
|
|
58
64
|
|
|
59
65
|
export function ProductSetForm({
|
|
@@ -72,6 +78,7 @@ export function ProductSetForm({
|
|
|
72
78
|
workHours,
|
|
73
79
|
isOverrides,
|
|
74
80
|
isCreateNewOverrides,
|
|
81
|
+
timeZone,
|
|
75
82
|
...shared
|
|
76
83
|
}: ProductSetFormProps) {
|
|
77
84
|
const { t } = useTranslation("Design");
|
|
@@ -82,6 +89,7 @@ export function ProductSetForm({
|
|
|
82
89
|
onApproveDialog,
|
|
83
90
|
onDeclineDialog,
|
|
84
91
|
} = useDialogContext();
|
|
92
|
+
const [errorMessage, setErrorMessage] = useState("");
|
|
85
93
|
|
|
86
94
|
const form = useForm<ProductSetFormValues>({
|
|
87
95
|
defaultValues,
|
|
@@ -119,11 +127,18 @@ export function ProductSetForm({
|
|
|
119
127
|
if (!serverErrors) {
|
|
120
128
|
return;
|
|
121
129
|
}
|
|
130
|
+
if (Array.isArray(serverErrors) && serverErrors[0]) {
|
|
131
|
+
setErrorMessage(serverErrors[0]);
|
|
132
|
+
}
|
|
122
133
|
FormErrorService.handleServerErrors(serverErrors, setError);
|
|
123
134
|
}, [serverErrors, setError]);
|
|
124
135
|
|
|
125
136
|
useEffect(() => {
|
|
126
|
-
window.history.pushState(
|
|
137
|
+
window.history.pushState(
|
|
138
|
+
null,
|
|
139
|
+
"",
|
|
140
|
+
window.location.pathname + window.location.search,
|
|
141
|
+
);
|
|
127
142
|
window.addEventListener("beforeunload", onBeforeUnload);
|
|
128
143
|
window.addEventListener("popstate", onPopState);
|
|
129
144
|
|
|
@@ -150,6 +165,12 @@ export function ProductSetForm({
|
|
|
150
165
|
onDecline={onDeclineDialog}
|
|
151
166
|
/>
|
|
152
167
|
|
|
168
|
+
<ErrorModal
|
|
169
|
+
message={errorMessage}
|
|
170
|
+
isOpen={!!errorMessage}
|
|
171
|
+
onClose={() => setErrorMessage("")}
|
|
172
|
+
/>
|
|
173
|
+
|
|
153
174
|
<FormProvider {...form}>
|
|
154
175
|
<Form onSubmit={form.handleSubmit(submitHandler(onSubmitAndRedirect))}>
|
|
155
176
|
<ProductSetLoadingContext.Consumer>
|
|
@@ -175,6 +196,7 @@ export function ProductSetForm({
|
|
|
175
196
|
providerHasBookingManagement={providerHasBookingManagement}
|
|
176
197
|
isOverrides={isOverrides}
|
|
177
198
|
isCreateNewOverrides={isCreateNewOverrides}
|
|
199
|
+
timeZone={timeZone}
|
|
178
200
|
/>
|
|
179
201
|
<Row>
|
|
180
202
|
<Col md={6} sm={12} />
|
|
@@ -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>
|
|
@@ -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"
|