@licklist/design 0.65.1 → 0.66.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/date-time-button/DateTimeButton.js +1 -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 +1 -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 +1 -1
- package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
- package/dist/iframe/ryft/RyftPaymentForm.d.ts +4 -1
- package/dist/iframe/ryft/RyftPaymentForm.d.ts.map +1 -1
- package/dist/iframe/ryft/RyftPaymentForm.js +1 -1
- package/dist/iframe/ryft/utils/ryft-form.d.ts +5 -2
- package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -1
- package/dist/iframe/ryft/utils/ryft-form.js +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.js +1 -1
- package/dist/product-set/control/DateInput.js +1 -1
- 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 +1 -1
- package/dist/product-set/form/ProductCategoriesControl.d.ts +3 -1
- package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductCategoriesControl.js +1 -1
- 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 +1 -1
- package/dist/product-set/form/ProductsControl.d.ts +3 -1
- package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductsControl.js +1 -1
- package/dist/product-set/form/StepsControl.d.ts +3 -1
- package/dist/product-set/form/StepsControl.d.ts.map +1 -1
- package/dist/product-set/form/StepsControl.js +1 -1
- package/dist/product-set/product/ProductControl.d.ts +1 -0
- package/dist/product-set/product/ProductControl.d.ts.map +1 -1
- package/dist/product-set/product/ProductControl.js +1 -1
- package/dist/product-set/step/StepControl.d.ts +2 -1
- package/dist/product-set/step/StepControl.d.ts.map +1 -1
- package/dist/product-set/step/StepControl.js +1 -1
- package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
- package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +1 -1
- package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.js +1 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts +3 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.js +1 -1
- 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 +1 -1
- package/dist/report/ReportRunnerModal/ReportRunnerModal.d.ts +1 -1
- package/dist/report/ReportRunnerModal/ReportRunnerModal.d.ts.map +1 -1
- package/dist/report/ReportRunnerModal/ReportRunnerModal.js +1 -1
- package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
- package/dist/setting/admin/AdminSettingForm.d.ts +2 -2
- package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
- package/dist/sortable-tree/SortableTreeItem.d.ts +1 -2
- package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
- package/dist/sortable-tree/SortableTreeItem.js +1 -1
- package/dist/styles/date-time-button/DateTimeButton.scss +1 -0
- package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +8 -0
- package/dist/styles/sales/BookingResults.scss +1 -1
- package/dist/styles/zones/ZoneForm.scss +2 -1
- package/dist/zone/form/ZoneForm.d.ts +2 -2
- package/dist/zone/form/ZoneForm.d.ts.map +1 -1
- package/dist/zone/form/ZoneForm.js +1 -1
- package/dist/zone/form/components/ZoneControl.d.ts +2 -2
- package/dist/zone/form/components/ZoneControl.d.ts.map +1 -1
- package/dist/zone/form/components/ZoneControl.js +1 -1
- package/dist/zone/form/components/ZoneRecurrencesControl.d.ts +4 -4
- package/dist/zone/form/components/ZoneRecurrencesControl.d.ts.map +1 -1
- package/dist/zone/form/components/ZoneRecurrencesControl.js +1 -1
- package/dist/zone/form/utils/dates.d.ts.map +1 -1
- package/package.json +3 -5
- package/src/date-time-button/DateTimeButton.stories.tsx +2 -1
- package/src/date-time-button/DateTimeButton.tsx +7 -5
- package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +14 -9
- package/src/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.tsx +2 -0
- package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +1 -0
- package/src/iframe/ryft/RyftPaymentForm.tsx +11 -2
- package/src/iframe/ryft/utils/ryft-form.ts +23 -4
- package/src/product-set/control/DateAndRecurrenceInput.tsx +3 -4
- package/src/product-set/control/DateInput.tsx +2 -2
- package/src/product-set/control/ProductSetControl.tsx +17 -5
- package/src/product-set/form/ProductCategoriesControl.tsx +15 -4
- package/src/product-set/form/ProductSetForm.tsx +13 -2
- package/src/product-set/form/ProductsControl.tsx +93 -77
- package/src/product-set/form/StepsControl.tsx +15 -7
- package/src/product-set/product/ProductControl.tsx +8 -5
- package/src/product-set/step/StepControl.tsx +4 -3
- package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +4 -18
- package/src/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.tsx +49 -21
- package/src/recurring-date-picker-input/RecurringDatePickerInput.stories.tsx +13 -7
- package/src/recurring-date-picker-input/RecurringDatePickerInput.tsx +12 -1
- package/src/recurring-date-picker-input/utils.ts +90 -1
- package/src/report/ReportRunnerModal/ReportRunnerModal.stories.tsx +307 -0
- package/src/report/ReportRunnerModal/ReportRunnerModal.tsx +24 -14
- package/src/sales/booking/results/components/ResultCard.tsx +0 -3
- package/src/setting/admin/AdminSettingForm.tsx +2 -2
- package/src/sortable-tree/SortableTreeItem.tsx +0 -3
- package/src/static/switch/BooleanSwitch.tsx +1 -1
- package/src/styles/date-time-button/DateTimeButton.scss +1 -0
- package/src/styles/ryft-payment-form/RyftPaymentForm.scss +8 -0
- package/src/styles/sales/BookingResults.scss +1 -1
- package/src/styles/zones/ZoneForm.scss +2 -1
- package/src/zone/form/ZoneForm.tsx +3 -2
- package/src/zone/form/components/ZoneControl.tsx +3 -3
- package/src/zone/form/components/ZoneRecurrencesControl.tsx +7 -5
- package/src/zone/form/utils/dates.ts +9 -10
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TIME_FORMAT, TIME_FULL_FORMAT } from "@licklist/core/dist/Config";
|
|
2
|
+
import { WorkHour } from "@licklist/core/dist/DataMapper/Provider/WorkHourDataMapper";
|
|
3
|
+
import { fromFormat } from "@licklist/plugins/dist/utils/dateTime";
|
|
4
|
+
import { DateTime, Interval } from "luxon";
|
|
5
|
+
import { Validate } from "react-hook-form";
|
|
6
|
+
import { useTranslation } from "react-i18next";
|
|
2
7
|
import RRule, { Frequency, Weekday } from "rrule";
|
|
3
8
|
|
|
4
9
|
export const getWeekdayForFrequency = ({
|
|
@@ -11,6 +16,7 @@ export const getWeekdayForFrequency = ({
|
|
|
11
16
|
const parsedDate = DateTime.fromISO(date);
|
|
12
17
|
return new Weekday(
|
|
13
18
|
parsedDate.weekday - 1,
|
|
19
|
+
// eslint-disable-next-line no-nested-ternary
|
|
14
20
|
frequency !== Frequency.MONTHLY
|
|
15
21
|
? undefined
|
|
16
22
|
: parsedDate.day + 7 > parsedDate.daysInMonth
|
|
@@ -109,3 +115,86 @@ export const parseAndValidateRRule = ({
|
|
|
109
115
|
until: options.until,
|
|
110
116
|
} as ParsedRRuleOptions;
|
|
111
117
|
};
|
|
118
|
+
|
|
119
|
+
export const useWorkHoursValidation = (
|
|
120
|
+
byWeekDay: Weekday[] = [],
|
|
121
|
+
workHours: WorkHour[] | undefined
|
|
122
|
+
): {
|
|
123
|
+
validate?: Validate<string>;
|
|
124
|
+
} => {
|
|
125
|
+
const { t } = useTranslation("Validation");
|
|
126
|
+
if (!workHours) return {};
|
|
127
|
+
|
|
128
|
+
const fromTimeFormat = fromFormat(TIME_FORMAT);
|
|
129
|
+
const fromTimeFullFormat = fromFormat(TIME_FULL_FORMAT);
|
|
130
|
+
|
|
131
|
+
// map every day to array of intervals describing workhours for that day
|
|
132
|
+
let intervalsByDay = workHours.map((workhour, index, self) => {
|
|
133
|
+
const res: Interval[] = [];
|
|
134
|
+
|
|
135
|
+
const startTime = fromTimeFormat(workhour.start);
|
|
136
|
+
const endTime = fromTimeFormat(workhour.end);
|
|
137
|
+
|
|
138
|
+
if (endTime > startTime) {
|
|
139
|
+
res.push(Interval.fromDateTimes(startTime, endTime));
|
|
140
|
+
} else {
|
|
141
|
+
// if end is before start, then it means that end is on the next day
|
|
142
|
+
// so count only to the end of current day
|
|
143
|
+
res.push(Interval.fromDateTimes(startTime, startTime.endOf("day")));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const prevIndex = index === 0 ? self.length - 1 : index - 1;
|
|
147
|
+
|
|
148
|
+
const prevStartTime = fromTimeFormat(self[prevIndex].start);
|
|
149
|
+
const prevEndTime = fromTimeFormat(self[prevIndex].end);
|
|
150
|
+
|
|
151
|
+
// if prevStartTime > prevEndTime then it means that prevEndTime is on the current day
|
|
152
|
+
// so we need to add interval from start of current day to prevEndTime
|
|
153
|
+
if (prevStartTime > prevEndTime) {
|
|
154
|
+
res.push(Interval.fromDateTimes(prevEndTime.startOf("day"), prevEndTime));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return res;
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// if length === 0 or length === 7 then all workhours are selected, no need to filter
|
|
161
|
+
if (![0, 7].includes(byWeekDay.length)) {
|
|
162
|
+
intervalsByDay = intervalsByDay.filter((_, index) =>
|
|
163
|
+
byWeekDay.find(({ weekday }) => weekday === index)
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return {
|
|
168
|
+
validate: (_time: string) => {
|
|
169
|
+
// workaround for issue with form values
|
|
170
|
+
// default values and entered values have different formats
|
|
171
|
+
const time = fromTimeFormat(_time).isValid
|
|
172
|
+
? fromTimeFormat(_time)
|
|
173
|
+
: fromTimeFullFormat(_time);
|
|
174
|
+
|
|
175
|
+
const notFittingIntervalsByDay = intervalsByDay.reduce<Interval[][]>(
|
|
176
|
+
(acc, intervalsByDay) => {
|
|
177
|
+
if (!intervalsByDay.some((interval) => interval.contains(time))) {
|
|
178
|
+
acc.push(intervalsByDay);
|
|
179
|
+
}
|
|
180
|
+
return acc;
|
|
181
|
+
},
|
|
182
|
+
[]
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
const notFittingIntervals = notFittingIntervalsByDay
|
|
186
|
+
.flat()
|
|
187
|
+
.filter((interval) => !interval.contains(time));
|
|
188
|
+
|
|
189
|
+
const attribute = notFittingIntervals
|
|
190
|
+
.map((interval) => interval.toFormat("HH:mm"))
|
|
191
|
+
.join(", ");
|
|
192
|
+
|
|
193
|
+
if (notFittingIntervalsByDay.length !== 0) {
|
|
194
|
+
return t("outsideWorkingHours", { attribute }) as string;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return true;
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
};
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { Meta, Story } from "@storybook/react";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Card } from "react-bootstrap";
|
|
4
|
+
import { ReportRunnerModal, ReportRunnerModalProps } from "./ReportRunnerModal";
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: "Report/ReportRunnerModal",
|
|
8
|
+
component: ReportRunnerModal,
|
|
9
|
+
} as Meta;
|
|
10
|
+
|
|
11
|
+
export const Default: Story<ReportRunnerModalProps> = (args) => (
|
|
12
|
+
<Card style={{ maxWidth: "max-content" }}>
|
|
13
|
+
<Card.Body>
|
|
14
|
+
<ReportRunnerModal {...args} />
|
|
15
|
+
</Card.Body>
|
|
16
|
+
</Card>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
Default.args = {
|
|
20
|
+
reportId: 47,
|
|
21
|
+
show: true,
|
|
22
|
+
generate: { isLoading: false },
|
|
23
|
+
download: { isLoading: false },
|
|
24
|
+
useShowReportFields: (type) => ({ data: [], isLoading: false }),
|
|
25
|
+
onHide: () => {},
|
|
26
|
+
onEdit: () => {},
|
|
27
|
+
reports: [
|
|
28
|
+
{
|
|
29
|
+
id: 47,
|
|
30
|
+
providerId: null,
|
|
31
|
+
type: "payments",
|
|
32
|
+
name: "Test 1",
|
|
33
|
+
createdAt: "2024-04-26 08:16:59",
|
|
34
|
+
updatedAt: "2024-04-26 08:16:59",
|
|
35
|
+
deletedAt: null,
|
|
36
|
+
reportFieldValues: [
|
|
37
|
+
{
|
|
38
|
+
id: 580,
|
|
39
|
+
reportId: 47,
|
|
40
|
+
reportFieldId: 16,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 581,
|
|
44
|
+
reportId: 47,
|
|
45
|
+
reportFieldId: 17,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: 582,
|
|
49
|
+
reportId: 47,
|
|
50
|
+
reportFieldId: 18,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: 583,
|
|
54
|
+
reportId: 47,
|
|
55
|
+
reportFieldId: 19,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 584,
|
|
59
|
+
reportId: 47,
|
|
60
|
+
reportFieldId: 20,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 585,
|
|
64
|
+
reportId: 47,
|
|
65
|
+
reportFieldId: 21,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 586,
|
|
69
|
+
reportId: 47,
|
|
70
|
+
reportFieldId: 22,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 587,
|
|
74
|
+
reportId: 47,
|
|
75
|
+
reportFieldId: 23,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 588,
|
|
79
|
+
reportId: 47,
|
|
80
|
+
reportFieldId: 24,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 589,
|
|
84
|
+
reportId: 47,
|
|
85
|
+
reportFieldId: 26,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: 590,
|
|
89
|
+
reportId: 47,
|
|
90
|
+
reportFieldId: 27,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 591,
|
|
94
|
+
reportId: 47,
|
|
95
|
+
reportFieldId: 28,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: 592,
|
|
99
|
+
reportId: 47,
|
|
100
|
+
reportFieldId: 40,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: 593,
|
|
104
|
+
reportId: 47,
|
|
105
|
+
reportFieldId: 41,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 594,
|
|
109
|
+
reportId: 47,
|
|
110
|
+
reportFieldId: 42,
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: 52,
|
|
116
|
+
providerId: null,
|
|
117
|
+
type: "bookings",
|
|
118
|
+
name: "new report",
|
|
119
|
+
createdAt: "2024-04-29 16:05:51",
|
|
120
|
+
updatedAt: "2024-04-29 16:08:39",
|
|
121
|
+
deletedAt: null,
|
|
122
|
+
reportFieldValues: [
|
|
123
|
+
{
|
|
124
|
+
id: 635,
|
|
125
|
+
reportId: 52,
|
|
126
|
+
reportFieldId: 1,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 636,
|
|
130
|
+
reportId: 52,
|
|
131
|
+
reportFieldId: 2,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: 637,
|
|
135
|
+
reportId: 52,
|
|
136
|
+
reportFieldId: 3,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
id: 638,
|
|
140
|
+
reportId: 52,
|
|
141
|
+
reportFieldId: 4,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: 639,
|
|
145
|
+
reportId: 52,
|
|
146
|
+
reportFieldId: 5,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 640,
|
|
150
|
+
reportId: 52,
|
|
151
|
+
reportFieldId: 6,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: 641,
|
|
155
|
+
reportId: 52,
|
|
156
|
+
reportFieldId: 7,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
id: 642,
|
|
160
|
+
reportId: 52,
|
|
161
|
+
reportFieldId: 8,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
id: 643,
|
|
165
|
+
reportId: 52,
|
|
166
|
+
reportFieldId: 9,
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: 644,
|
|
170
|
+
reportId: 52,
|
|
171
|
+
reportFieldId: 10,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 645,
|
|
175
|
+
reportId: 52,
|
|
176
|
+
reportFieldId: 11,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: 646,
|
|
180
|
+
reportId: 52,
|
|
181
|
+
reportFieldId: 12,
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
id: 647,
|
|
185
|
+
reportId: 52,
|
|
186
|
+
reportFieldId: 13,
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: 648,
|
|
190
|
+
reportId: 52,
|
|
191
|
+
reportFieldId: 14,
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
id: 649,
|
|
195
|
+
reportId: 52,
|
|
196
|
+
reportFieldId: 15,
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: 650,
|
|
200
|
+
reportId: 52,
|
|
201
|
+
reportFieldId: 36,
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: 651,
|
|
205
|
+
reportId: 52,
|
|
206
|
+
reportFieldId: 37,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
id: 652,
|
|
210
|
+
reportId: 52,
|
|
211
|
+
reportFieldId: 38,
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
id: 653,
|
|
215
|
+
reportId: 52,
|
|
216
|
+
reportFieldId: 39,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
id: 654,
|
|
220
|
+
reportId: 52,
|
|
221
|
+
reportFieldId: 47,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
id: 655,
|
|
225
|
+
reportId: 52,
|
|
226
|
+
reportFieldId: 48,
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
id: 53,
|
|
232
|
+
providerId: null,
|
|
233
|
+
type: "tickets",
|
|
234
|
+
name: "tickets",
|
|
235
|
+
createdAt: "2024-04-29 16:12:36",
|
|
236
|
+
updatedAt: "2024-04-29 16:12:36",
|
|
237
|
+
deletedAt: null,
|
|
238
|
+
reportFieldValues: [
|
|
239
|
+
{
|
|
240
|
+
id: 656,
|
|
241
|
+
reportId: 53,
|
|
242
|
+
reportFieldId: 29,
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
id: 657,
|
|
246
|
+
reportId: 53,
|
|
247
|
+
reportFieldId: 30,
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: 658,
|
|
251
|
+
reportId: 53,
|
|
252
|
+
reportFieldId: 31,
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: 659,
|
|
256
|
+
reportId: 53,
|
|
257
|
+
reportFieldId: 32,
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
id: 660,
|
|
261
|
+
reportId: 53,
|
|
262
|
+
reportFieldId: 33,
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: 661,
|
|
266
|
+
reportId: 53,
|
|
267
|
+
reportFieldId: 34,
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
id: 662,
|
|
271
|
+
reportId: 53,
|
|
272
|
+
reportFieldId: 35,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
id: 663,
|
|
276
|
+
reportId: 53,
|
|
277
|
+
reportFieldId: 43,
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
id: 664,
|
|
281
|
+
reportId: 53,
|
|
282
|
+
reportFieldId: 44,
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
id: 665,
|
|
286
|
+
reportId: 53,
|
|
287
|
+
reportFieldId: 45,
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
id: 666,
|
|
291
|
+
reportId: 53,
|
|
292
|
+
reportFieldId: 46,
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
id: 667,
|
|
296
|
+
reportId: 53,
|
|
297
|
+
reportFieldId: 51,
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
id: 668,
|
|
301
|
+
reportId: 53,
|
|
302
|
+
reportFieldId: 52,
|
|
303
|
+
},
|
|
304
|
+
],
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
};
|
|
@@ -23,7 +23,7 @@ interface ReportField {
|
|
|
23
23
|
title: string;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
type ReportRunnerModalProps = {
|
|
26
|
+
export type ReportRunnerModalProps = {
|
|
27
27
|
reportId: Report["id"] | null;
|
|
28
28
|
show: boolean;
|
|
29
29
|
useShowReportFields: (
|
|
@@ -136,28 +136,38 @@ export const ReportRunnerModal = ({
|
|
|
136
136
|
</Button>
|
|
137
137
|
|
|
138
138
|
<form noValidate>
|
|
139
|
-
<div
|
|
140
|
-
{
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
<div
|
|
140
|
+
className={`pl-1 ${
|
|
141
|
+
errors.periodBy?.message && "border-danger border rounded"
|
|
142
|
+
}`}
|
|
143
|
+
>
|
|
144
|
+
<div className="period-by">
|
|
145
|
+
{PERIOD_BY_TYPES.map((type) => (
|
|
146
|
+
<div key={type}>
|
|
143
147
|
<Form.Check
|
|
144
148
|
inline
|
|
145
|
-
isInvalid={!!errors.periodBy}
|
|
146
149
|
label={t(labelByPeriodType[type])}
|
|
147
150
|
type="radio"
|
|
148
151
|
id={type}
|
|
152
|
+
required
|
|
149
153
|
value={type}
|
|
150
|
-
{...register("periodBy"
|
|
154
|
+
{...register("periodBy", {
|
|
155
|
+
required: `${t("Validation:fieldRequired", {
|
|
156
|
+
attribute: t("Design:period"),
|
|
157
|
+
})}`,
|
|
158
|
+
})}
|
|
151
159
|
/>
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
</div>
|
|
161
|
+
))}
|
|
162
|
+
</div>
|
|
163
|
+
{errors.periodBy?.message && (
|
|
164
|
+
<div className="iframe-event__message-error justify-content-start mb-1">
|
|
165
|
+
{errors.periodBy?.message}
|
|
156
166
|
</div>
|
|
157
|
-
)
|
|
167
|
+
)}
|
|
158
168
|
</div>
|
|
159
169
|
|
|
160
|
-
<div className="controls">
|
|
170
|
+
<div className="controls mt-4">
|
|
161
171
|
<Form.Group controlId="from-input">
|
|
162
172
|
<Form.Label>{t("Design:from")}</Form.Label>
|
|
163
173
|
<Form.Control
|
|
@@ -168,7 +178,7 @@ export const ReportRunnerModal = ({
|
|
|
168
178
|
required: {
|
|
169
179
|
value: true,
|
|
170
180
|
message: `${t("Validation:fieldRequired", {
|
|
171
|
-
attribute: t("Design:
|
|
181
|
+
attribute: t("Design:from"),
|
|
172
182
|
})}`,
|
|
173
183
|
},
|
|
174
184
|
})}
|
|
@@ -12,7 +12,6 @@ import { TIME_FORMAT } from "@licklist/core/dist/Config";
|
|
|
12
12
|
import * as Config from "@licklist/core/dist/Config";
|
|
13
13
|
import { formatDateStringForEvent } from "@licklist/plugins/dist/utils/formatDate";
|
|
14
14
|
import { getOrderSourceTitle } from "@licklist/plugins/dist/utils/sourceTitle";
|
|
15
|
-
|
|
16
15
|
import Icon from "../../../../static/Icon";
|
|
17
16
|
|
|
18
17
|
export type ResultCardProps = {
|
|
@@ -22,8 +21,6 @@ export type ResultCardProps = {
|
|
|
22
21
|
onCardClick?: (id: number) => void;
|
|
23
22
|
};
|
|
24
23
|
|
|
25
|
-
// @TODO integrate when API will be available
|
|
26
|
-
// activity and staff keys
|
|
27
24
|
export const ResultCard = ({
|
|
28
25
|
order,
|
|
29
26
|
className,
|
|
@@ -11,7 +11,7 @@ import Row from "react-bootstrap/Row";
|
|
|
11
11
|
import Col from "react-bootstrap/Col";
|
|
12
12
|
import { Link } from "react-router-dom";
|
|
13
13
|
import HookFormService from "@licklist/plugins/dist/services/Form/HookFormService";
|
|
14
|
-
import {
|
|
14
|
+
import { ProvidableType } from "@licklist/core/dist/DataMapper/Provider/ProvidableDataMapper";
|
|
15
15
|
import Icon from "../../static/Icon";
|
|
16
16
|
import { PaymentFeeForm, PaymentFeeFormFieldValues } from "./PaymentFeeForm";
|
|
17
17
|
import { Currency } from "../../types/currency";
|
|
@@ -33,7 +33,7 @@ export interface AdminSettingFormProps extends HasPermissionProp {
|
|
|
33
33
|
providerMetadata: {
|
|
34
34
|
country?: string;
|
|
35
35
|
providableId?: number;
|
|
36
|
-
providerType?:
|
|
36
|
+
providerType?: ProvidableType;
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -53,7 +53,6 @@ export interface SortableTreeItemProps {
|
|
|
53
53
|
};
|
|
54
54
|
setIsExpanded?: () => void;
|
|
55
55
|
isOverride?: boolean;
|
|
56
|
-
isProduct?: boolean;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
export function SortableTreeItem({
|
|
@@ -81,7 +80,6 @@ export function SortableTreeItem({
|
|
|
81
80
|
secondaryBadge,
|
|
82
81
|
setIsExpanded,
|
|
83
82
|
isOverride,
|
|
84
|
-
isProduct = false,
|
|
85
83
|
}: SortableTreeItemProps) {
|
|
86
84
|
const [expanded, setExpanded] = useState(isExpanded);
|
|
87
85
|
const [isModalVisible, setIsModalVisible] = useState(isNewAdded);
|
|
@@ -152,7 +150,6 @@ export function SortableTreeItem({
|
|
|
152
150
|
};
|
|
153
151
|
|
|
154
152
|
const onEdit = (e) => {
|
|
155
|
-
if (isOverride && !isProduct) return;
|
|
156
153
|
e.stopPropagation();
|
|
157
154
|
if (edit && !isModalVisible) edit();
|
|
158
155
|
setIsModalVisible(true);
|
|
@@ -23,7 +23,7 @@ export function BooleanSwitch({
|
|
|
23
23
|
const { t } = useTranslation("Design");
|
|
24
24
|
|
|
25
25
|
const options: SelectItem[] = [
|
|
26
|
-
{ id: 1, value: firstValueTitle ??
|
|
26
|
+
{ id: 1, value: firstValueTitle ?? t("yes") },
|
|
27
27
|
{ id: 0, value: secondValueTitle ?? t("no") },
|
|
28
28
|
];
|
|
29
29
|
|
|
@@ -135,6 +135,14 @@
|
|
|
135
135
|
margin-bottom: 0.5rem;
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
+
.ryft-pay-grid {
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-direction: column;
|
|
141
|
+
.apple-pay-button {
|
|
142
|
+
height: 2.5rem;
|
|
143
|
+
margin-top: 1rem;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
138
146
|
.mobile-pay-title {
|
|
139
147
|
display: block;
|
|
140
148
|
font-weight: 600;
|
|
@@ -13,7 +13,7 @@ export type ZoneFormProps = {
|
|
|
13
13
|
onSubmit: (values: Partial<Zone>) => void;
|
|
14
14
|
serverErrors?: ServerError;
|
|
15
15
|
isLoading?: boolean;
|
|
16
|
-
workHours
|
|
16
|
+
workHours: WorkHour[] | undefined;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
export type ZoneFormValues = Partial<Zone> & {
|
|
@@ -25,6 +25,7 @@ export const ZoneForm = ({
|
|
|
25
25
|
onSubmit,
|
|
26
26
|
serverErrors,
|
|
27
27
|
isLoading = false,
|
|
28
|
+
workHours,
|
|
28
29
|
}: ZoneFormProps) => {
|
|
29
30
|
const { t } = useTranslation("Design");
|
|
30
31
|
const form = useForm<ZoneFormValues>({
|
|
@@ -54,7 +55,7 @@ export const ZoneForm = ({
|
|
|
54
55
|
return (
|
|
55
56
|
<FormProvider {...form}>
|
|
56
57
|
<Form onSubmit={handleSubmit(onFormSubmit)}>
|
|
57
|
-
<ZoneControl isLoading={isLoading} />
|
|
58
|
+
<ZoneControl isLoading={isLoading} workHours={workHours} />
|
|
58
59
|
<Row>
|
|
59
60
|
<Col md={6} sm={12} />
|
|
60
61
|
<Col
|
|
@@ -11,15 +11,15 @@ import { GameDurationControl } from "./GameDurationControl";
|
|
|
11
11
|
|
|
12
12
|
export type ZoneControlProps = {
|
|
13
13
|
isLoading: boolean;
|
|
14
|
-
workHours
|
|
14
|
+
workHours: WorkHour[] | undefined;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
export const ZoneControl = ({ isLoading }: ZoneControlProps) => {
|
|
17
|
+
export const ZoneControl = ({ isLoading, workHours }: ZoneControlProps) => {
|
|
18
18
|
return (
|
|
19
19
|
<Row>
|
|
20
20
|
<Col md={6} sm={12} className="pr-5">
|
|
21
21
|
<NameControl isLoading={isLoading} />
|
|
22
|
-
<ZoneRecurrencesControl />
|
|
22
|
+
<ZoneRecurrencesControl workHours={workHours} />
|
|
23
23
|
<hr />
|
|
24
24
|
<Row>
|
|
25
25
|
<Col md={6} sm={6}>
|
|
@@ -25,12 +25,13 @@ export interface DateAndRecurrenceInputValues {
|
|
|
25
25
|
zoneRecurrences?: Partial<ZoneRecurrence>[];
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
workHours
|
|
30
|
-
isLoading?: boolean;
|
|
28
|
+
type ZoneRecurrenceControlProps = {
|
|
29
|
+
workHours: WorkHour[] | undefined;
|
|
31
30
|
};
|
|
32
31
|
|
|
33
|
-
export const ZoneRecurrencesControl = (
|
|
32
|
+
export const ZoneRecurrencesControl = ({
|
|
33
|
+
workHours,
|
|
34
|
+
}: ZoneRecurrenceControlProps) => {
|
|
34
35
|
const {
|
|
35
36
|
control,
|
|
36
37
|
register,
|
|
@@ -69,7 +70,7 @@ export const ZoneRecurrencesControl = () => {
|
|
|
69
70
|
clearEditState();
|
|
70
71
|
});
|
|
71
72
|
|
|
72
|
-
const popoverId = useId()
|
|
73
|
+
const popoverId = useId();
|
|
73
74
|
|
|
74
75
|
const { t } = useTranslation(["Design", "Validation"]);
|
|
75
76
|
|
|
@@ -166,6 +167,7 @@ export const ZoneRecurrencesControl = () => {
|
|
|
166
167
|
onChange={handleRecurringDateChange}
|
|
167
168
|
onDelete={handleDelete}
|
|
168
169
|
setInitialStartDateAfterSelect
|
|
170
|
+
workHours={workHours}
|
|
169
171
|
/>
|
|
170
172
|
</Popover.Content>
|
|
171
173
|
</Popover>
|