@loczer/storefront-sdk 0.158.0 → 0.160.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/components/BookingPeriodSelector/components/BookingEndDateField.d.ts.map +1 -1
- package/dist/components/BookingPeriodSelector/components/BookingEndDateField.js +89 -90
- package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.d.ts.map +1 -1
- package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.js +51 -53
- package/dist/components/BookingPeriodSelector/components/BookingStartDateField.d.ts.map +1 -1
- package/dist/components/BookingPeriodSelector/components/BookingStartDateField.js +70 -66
- package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.d.ts.map +1 -1
- package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.js +69 -89
- package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts +1 -0
- package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts.map +1 -1
- package/dist/components/BookingPeriodSelector/useBookingPeriodController.js +236 -224
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,391 +1,403 @@
|
|
|
1
|
-
import { useMemo as
|
|
2
|
-
import { differenceInCalendarDays as
|
|
3
|
-
import { fr as
|
|
4
|
-
import { useMediaQuery as
|
|
5
|
-
import { createBookingPeriodConstants as
|
|
6
|
-
import { getBookingPeriodTimeSlotsSync as
|
|
7
|
-
const
|
|
1
|
+
import { useMemo as f, useState as w, useRef as N, useCallback as g, useEffect as F } from "react";
|
|
2
|
+
import { differenceInCalendarDays as De } from "date-fns";
|
|
3
|
+
import { fr as ot, de as lt, es as ut, it as ct, enUS as ft } from "date-fns/locale";
|
|
4
|
+
import { useMediaQuery as dt } from "@rpcbase/client";
|
|
5
|
+
import { createBookingPeriodConstants as mt, parseTimeToMinutes as R, dateToBusinessDateString as St, instantToBusinessDateTimeParts as Tt, businessDateStringToDate as Dt, getWeekdayFromDateString as pt, minutesToTimeString as vt } from "../../lib/booking-period.js";
|
|
6
|
+
import { getBookingPeriodTimeSlotsSync as pe } from "../../lib/booking-period-time-slots.js";
|
|
7
|
+
const gt = (s) => s, ht = {
|
|
8
8
|
startDate: "Start date",
|
|
9
9
|
pickStartDate: "Pick a date",
|
|
10
10
|
startTime: "Start time",
|
|
11
11
|
endDate: "End date",
|
|
12
12
|
pickEndDate: "Pick a date",
|
|
13
13
|
endTime: "End time"
|
|
14
|
-
},
|
|
15
|
-
locale:
|
|
16
|
-
localeCode:
|
|
14
|
+
}, Et = ({
|
|
15
|
+
locale: s,
|
|
16
|
+
localeCode: n
|
|
17
17
|
}) => {
|
|
18
|
-
if (
|
|
19
|
-
return
|
|
20
|
-
const
|
|
21
|
-
return
|
|
22
|
-
},
|
|
23
|
-
if (!
|
|
18
|
+
if (s)
|
|
19
|
+
return s;
|
|
20
|
+
const a = n?.toLowerCase() ?? "";
|
|
21
|
+
return a.startsWith("fr") ? ot : a.startsWith("de") ? lt : a.startsWith("es") ? ut : a.startsWith("it") ? ct : ft;
|
|
22
|
+
}, bt = (s) => {
|
|
23
|
+
if (!s?.length)
|
|
24
24
|
return null;
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
25
|
+
const n = s.map((r) => R(r.value)).filter((r) => typeof r == "number").sort((r, K) => r - K);
|
|
26
|
+
if (n.length < 2)
|
|
27
27
|
return null;
|
|
28
|
-
const
|
|
29
|
-
return !Number.isFinite(
|
|
30
|
-
},
|
|
31
|
-
if (typeof
|
|
28
|
+
const a = n[1] - n[0];
|
|
29
|
+
return !Number.isFinite(a) || a <= 0 ? null : a;
|
|
30
|
+
}, Mt = (s) => {
|
|
31
|
+
if (typeof s != "string")
|
|
32
32
|
return null;
|
|
33
|
-
const
|
|
34
|
-
return
|
|
35
|
-
},
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
33
|
+
const n = s.match(/(\d{1,2}:\d{2})\s*-\s*(\d{1,2}:\d{2})/);
|
|
34
|
+
return n ? R(n[2]) : null;
|
|
35
|
+
}, Ae = (s, n) => s.map((a) => {
|
|
36
|
+
const r = R(a.value);
|
|
37
|
+
if (r == null)
|
|
38
38
|
return null;
|
|
39
|
-
const K =
|
|
39
|
+
const K = Mt(a.label) ?? r + n, T = typeof a.label == "string" ? a.label : a.value;
|
|
40
40
|
return {
|
|
41
|
-
value:
|
|
42
|
-
label:
|
|
43
|
-
startMinutes:
|
|
41
|
+
value: a.value,
|
|
42
|
+
label: T,
|
|
43
|
+
startMinutes: r,
|
|
44
44
|
endMinutes: K,
|
|
45
45
|
isExtra: !1,
|
|
46
|
-
isDisabled: !!
|
|
46
|
+
isDisabled: !!a.disabled
|
|
47
47
|
};
|
|
48
|
-
}).filter((
|
|
48
|
+
}).filter((a) => !!a), ve = (s) => !s.isDisabled && !s.isExtra, Be = (s) => {
|
|
49
|
+
for (let n = s.length - 1; n >= 0; n -= 1)
|
|
50
|
+
if (ve(s[n]))
|
|
51
|
+
return s[n];
|
|
52
|
+
return null;
|
|
53
|
+
}, At = (s) => {
|
|
49
54
|
const {
|
|
50
|
-
startDate:
|
|
51
|
-
onStartDateChange:
|
|
52
|
-
startTime:
|
|
55
|
+
startDate: n,
|
|
56
|
+
onStartDateChange: a,
|
|
57
|
+
startTime: r,
|
|
53
58
|
onStartTimeChange: K,
|
|
54
|
-
endDate:
|
|
59
|
+
endDate: T,
|
|
55
60
|
onEndDateChange: _,
|
|
56
|
-
endTime:
|
|
57
|
-
onEndTimeChange:
|
|
61
|
+
endTime: d,
|
|
62
|
+
onEndTimeChange: ge,
|
|
58
63
|
onEndDateCommit: Q,
|
|
59
64
|
onEndTimeCommit: V,
|
|
60
|
-
errors:
|
|
61
|
-
labels:
|
|
62
|
-
t:
|
|
63
|
-
language:
|
|
64
|
-
labelClassName:
|
|
65
|
-
inputClassName:
|
|
66
|
-
buttonClassName:
|
|
67
|
-
bookingPeriodConfig:
|
|
68
|
-
fetchTimeSlots:
|
|
69
|
-
selectionFlow:
|
|
70
|
-
withMobileDateDrawer:
|
|
71
|
-
currencyCode:
|
|
65
|
+
errors: Ie = {},
|
|
66
|
+
labels: Le,
|
|
67
|
+
t: xe = gt,
|
|
68
|
+
language: he,
|
|
69
|
+
labelClassName: Re,
|
|
70
|
+
inputClassName: Ke,
|
|
71
|
+
buttonClassName: He,
|
|
72
|
+
bookingPeriodConfig: o,
|
|
73
|
+
fetchTimeSlots: i,
|
|
74
|
+
selectionFlow: E = "chained-times",
|
|
75
|
+
withMobileDateDrawer: Ue = !1,
|
|
76
|
+
currencyCode: We = "EUR",
|
|
72
77
|
disableAutomaticTimeCorrection: H = !1,
|
|
73
|
-
openDatePickerOnFocus:
|
|
78
|
+
openDatePickerOnFocus: ze = !0,
|
|
74
79
|
startTimeOptions: U = [],
|
|
75
|
-
endTimeOptions:
|
|
76
|
-
locale:
|
|
77
|
-
localeCode:
|
|
78
|
-
} =
|
|
79
|
-
() =>
|
|
80
|
-
[
|
|
81
|
-
),
|
|
82
|
-
() =>
|
|
83
|
-
[
|
|
84
|
-
),
|
|
80
|
+
endTimeOptions: Ee,
|
|
81
|
+
locale: be,
|
|
82
|
+
localeCode: Ne
|
|
83
|
+
} = s, W = dt("(max-width: 767px)"), Y = Ne ?? he ?? "en-US", qe = f(
|
|
84
|
+
() => Et({ locale: be, localeCode: Y }),
|
|
85
|
+
[be, Y]
|
|
86
|
+
), b = f(
|
|
87
|
+
() => o ? mt(o) : null,
|
|
88
|
+
[o]
|
|
89
|
+
), L = f(() => o?.timing.slotIntervalMinutes ? o.timing.slotIntervalMinutes : bt(U) ?? 30, [o?.timing.slotIntervalMinutes, U]), [ne, j] = w(!1), [re, ie] = w(!1), [se, z] = w(!1), [ae, oe] = w(!1), [$e, le] = w(void 0), [Ze, _e] = w(!1), [Me, Qe] = w(!1), [ue, Ve] = w([]), [ye, G] = w([]), [J, q] = w(void 0), M = N(null), ce = N(0), fe = N(0), de = N(0), Ce = N(void 0), $ = N(void 0), Ye = g(() => {
|
|
85
90
|
le(void 0);
|
|
86
|
-
}, []), X =
|
|
91
|
+
}, []), X = f(() => !n || !T ? !1 : De(T, n) === 0, [n, T]), je = f(() => R(r), [r]), A = g(
|
|
87
92
|
(e) => {
|
|
88
|
-
const
|
|
89
|
-
if (
|
|
90
|
-
return
|
|
91
|
-
const u =
|
|
92
|
-
return `${u}-${v}-${
|
|
93
|
+
const m = (e instanceof Date ? e : e ? new Date(e) : void 0) ?? /* @__PURE__ */ new Date();
|
|
94
|
+
if (b)
|
|
95
|
+
return St(m, b.timeZone) ?? void 0;
|
|
96
|
+
const u = m.getFullYear(), v = String(m.getMonth() + 1).padStart(2, "0"), D = String(m.getDate()).padStart(2, "0");
|
|
97
|
+
return `${u}-${v}-${D}`;
|
|
93
98
|
},
|
|
94
|
-
[
|
|
95
|
-
),
|
|
96
|
-
if (
|
|
97
|
-
return
|
|
99
|
+
[b]
|
|
100
|
+
), y = f(() => A(n), [n, A]), l = f(() => A(T ?? n), [T, n, A]), Oe = b ? Tt(/* @__PURE__ */ new Date(), b.timeZone) : null, P = Oe?.dateString, me = Oe?.minutesFromMidnight, B = f(() => P ? !!(n && y && y === P) : !!n && De(n, /* @__PURE__ */ new Date()) === 0, [n, y, P]), Z = f(() => P ? !!(T && l && l === P) : !!T && De(T, /* @__PURE__ */ new Date()) === 0, [T, l, P]), Ge = f(() => {
|
|
101
|
+
if (P)
|
|
102
|
+
return Dt(P);
|
|
98
103
|
const e = /* @__PURE__ */ new Date();
|
|
99
104
|
return e.setHours(0, 0, 0, 0), e;
|
|
100
|
-
}, [
|
|
105
|
+
}, [P]), Se = o?.timing.minBufferMinutes ?? 10, I = f(() => {
|
|
101
106
|
if (!B && !Z)
|
|
102
107
|
return null;
|
|
103
|
-
if (
|
|
104
|
-
return
|
|
108
|
+
if (me != null)
|
|
109
|
+
return me + Se;
|
|
105
110
|
const e = /* @__PURE__ */ new Date();
|
|
106
|
-
return e.setMinutes(e.getMinutes() +
|
|
107
|
-
}, [
|
|
111
|
+
return e.setMinutes(e.getMinutes() + Se), e.getHours() * 60 + e.getMinutes();
|
|
112
|
+
}, [me, Z, B, Se]), Te = f(
|
|
108
113
|
() => B ? I : null,
|
|
109
114
|
[I, B]
|
|
110
|
-
),
|
|
115
|
+
), we = g(
|
|
111
116
|
(e) => {
|
|
112
|
-
if (!
|
|
117
|
+
if (!b)
|
|
113
118
|
return;
|
|
114
|
-
const t =
|
|
119
|
+
const t = A(e);
|
|
115
120
|
if (!t)
|
|
116
|
-
return
|
|
117
|
-
const
|
|
121
|
+
return b.defaultEndTime;
|
|
122
|
+
const m = pt(t), u = b.getLastStartMinutesForWeekday(m, {
|
|
118
123
|
dateString: t
|
|
119
124
|
});
|
|
120
|
-
return typeof u == "number" ?
|
|
125
|
+
return typeof u == "number" ? vt(u) : b.defaultEndTime;
|
|
121
126
|
},
|
|
122
|
-
[
|
|
127
|
+
[b, A]
|
|
123
128
|
);
|
|
124
129
|
F(() => {
|
|
125
|
-
if (!
|
|
130
|
+
if (!i || !y)
|
|
126
131
|
return;
|
|
127
132
|
let e = !0;
|
|
128
|
-
return
|
|
129
|
-
e && t &&
|
|
133
|
+
return i(y, "start").then((t) => {
|
|
134
|
+
e && t && Ve(t);
|
|
130
135
|
}).catch((t) => {
|
|
131
136
|
console.error("Failed to fetch availability time slots", t);
|
|
132
137
|
}), () => {
|
|
133
138
|
e = !1;
|
|
134
139
|
};
|
|
135
|
-
}, [
|
|
136
|
-
if (!
|
|
140
|
+
}, [i, y]), F(() => {
|
|
141
|
+
if (!i)
|
|
137
142
|
return;
|
|
138
|
-
const e =
|
|
139
|
-
|
|
140
|
-
}, [l,
|
|
141
|
-
if (!
|
|
143
|
+
const e = Ce.current, t = e !== void 0 && e !== l;
|
|
144
|
+
Ce.current = l, t && l && ($.current = l);
|
|
145
|
+
}, [l, i]), F(() => {
|
|
146
|
+
if (!i)
|
|
142
147
|
return;
|
|
143
148
|
if (!l) {
|
|
144
149
|
G([]), q(void 0);
|
|
145
150
|
return;
|
|
146
151
|
}
|
|
147
152
|
let e = !0;
|
|
148
|
-
return q(void 0),
|
|
153
|
+
return q(void 0), i(l, "end").then((t) => {
|
|
149
154
|
e && (t ? (G(t), q(l)) : (G([]), q(void 0)));
|
|
150
155
|
}).catch((t) => {
|
|
151
156
|
console.error("Failed to fetch availability time slots", t), e && (G([]), q(void 0));
|
|
152
157
|
}), () => {
|
|
153
158
|
e = !1;
|
|
154
159
|
};
|
|
155
|
-
}, [l,
|
|
156
|
-
const ee =
|
|
157
|
-
date:
|
|
158
|
-
}), [
|
|
159
|
-
|
|
160
|
+
}, [l, i]);
|
|
161
|
+
const ee = f(() => i || !o ? null : pe(o, {
|
|
162
|
+
date: y
|
|
163
|
+
}), [o, i, y]), Pe = f(() => !i || !o ? null : pe(o, {
|
|
164
|
+
date: y
|
|
165
|
+
}).startTimeSlots, [o, i, y]), ke = f(() => !i || !o ? null : pe(o, {
|
|
166
|
+
date: l
|
|
167
|
+
}).endTimeSlots, [o, l, i]), k = f(() => i ? ue.length ? ue : Pe ?? [] : o ? ee?.startTimeSlots ?? [] : Ae(U, L), [
|
|
168
|
+
o,
|
|
160
169
|
ee?.startTimeSlots,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
170
|
+
Pe,
|
|
171
|
+
i,
|
|
172
|
+
ue,
|
|
173
|
+
L,
|
|
164
174
|
U
|
|
165
|
-
]),
|
|
166
|
-
|
|
175
|
+
]), C = f(() => i ? J === l ? ye : ke ?? [] : o ? ee?.endTimeSlots ?? [] : Ae(Ee ?? U, L), [
|
|
176
|
+
o,
|
|
167
177
|
ee?.endTimeSlots,
|
|
168
178
|
l,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
179
|
+
Ee,
|
|
180
|
+
ke,
|
|
181
|
+
i,
|
|
182
|
+
ye,
|
|
172
183
|
J,
|
|
173
|
-
|
|
184
|
+
L,
|
|
174
185
|
U
|
|
175
|
-
]),
|
|
186
|
+
]), O = g(
|
|
176
187
|
(e, t) => {
|
|
177
|
-
e !==
|
|
188
|
+
e !== r && (Qe(t === "user"), K(e, { source: t }));
|
|
178
189
|
},
|
|
179
|
-
[K,
|
|
180
|
-
), p =
|
|
190
|
+
[K, r]
|
|
191
|
+
), p = g(
|
|
181
192
|
(e, t = "auto") => {
|
|
182
|
-
e !==
|
|
193
|
+
e !== d && (t !== "user" && e && C.find((u) => u.value === e)?.isExtra || ge(e, { source: t }));
|
|
183
194
|
},
|
|
184
|
-
[
|
|
185
|
-
), te =
|
|
195
|
+
[C, d, ge]
|
|
196
|
+
), te = f(() => k.length ? k.find((e) => !(e.isDisabled || Te != null && e.startMinutes < Te)) ?? null : null, [Te, k]);
|
|
186
197
|
F(() => {
|
|
187
|
-
H ||
|
|
188
|
-
}, [H, te,
|
|
189
|
-
if (H || !
|
|
198
|
+
H || Me || te && r !== te.value && O(te.value, "auto");
|
|
199
|
+
}, [H, te, Me, r, O]), F(() => {
|
|
200
|
+
if (H || !k.length)
|
|
190
201
|
return;
|
|
191
|
-
const e =
|
|
192
|
-
const
|
|
193
|
-
|
|
202
|
+
const e = r ? k.find((S) => S.value === r) : void 0, t = I ?? void 0, m = B ? t : null, u = (S) => {
|
|
203
|
+
const c = typeof S == "number" ? S : null, h = k.find((x) => !(x.isDisabled || c != null && x.startMinutes < c));
|
|
204
|
+
h && h.value !== r ? O(h.value, "auto") : !h && r && O("", "auto");
|
|
194
205
|
};
|
|
195
|
-
if (
|
|
196
|
-
u(
|
|
206
|
+
if (r && !e) {
|
|
207
|
+
u(m);
|
|
197
208
|
return;
|
|
198
209
|
}
|
|
199
210
|
if (e?.isDisabled) {
|
|
200
|
-
u(
|
|
211
|
+
u(m);
|
|
201
212
|
return;
|
|
202
213
|
}
|
|
203
214
|
if (!B || t == null)
|
|
204
215
|
return;
|
|
205
|
-
const v =
|
|
216
|
+
const v = R(r);
|
|
206
217
|
if (v != null && v >= t && !e?.isDisabled)
|
|
207
218
|
return;
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
}, [H, I, B,
|
|
211
|
-
if (H || !
|
|
219
|
+
const D = k.find((S) => !S.isDisabled && S.startMinutes >= t);
|
|
220
|
+
D && D.value !== r && O(D.value, "auto");
|
|
221
|
+
}, [H, I, B, r, k, O]), F(() => {
|
|
222
|
+
if (H || !C.length)
|
|
212
223
|
return;
|
|
213
|
-
if (
|
|
224
|
+
if (i && $.current === l && J === l) {
|
|
214
225
|
$.current = void 0;
|
|
215
|
-
const
|
|
216
|
-
if (
|
|
217
|
-
p(
|
|
226
|
+
const h = Be(C);
|
|
227
|
+
if (h && h.value !== d) {
|
|
228
|
+
p(h.value);
|
|
218
229
|
return;
|
|
219
230
|
}
|
|
220
231
|
}
|
|
221
|
-
const e =
|
|
232
|
+
const e = R(r), t = R(d), m = d ? C.find((c) => c.value === d) : void 0;
|
|
222
233
|
if (X && e != null && t != null && t < e) {
|
|
223
|
-
const
|
|
224
|
-
|
|
234
|
+
const c = Be(C);
|
|
235
|
+
c && c.value !== d ? p(c.value) : !c && d && p("");
|
|
225
236
|
return;
|
|
226
237
|
}
|
|
227
238
|
const u = [];
|
|
228
|
-
Z && I != null && u.push(I), X && e != null && u.push(e +
|
|
229
|
-
const v = u.length ? Math.max(...u) : null,
|
|
230
|
-
const
|
|
231
|
-
|
|
239
|
+
Z && I != null && u.push(I), X && e != null && u.push(e + L);
|
|
240
|
+
const v = u.length ? Math.max(...u) : null, D = (c) => {
|
|
241
|
+
const h = typeof c == "number" ? c : null, x = C.find((Fe) => !(!ve(Fe) || h != null && Fe.startMinutes < h));
|
|
242
|
+
x && x.value !== d ? p(x.value) : !x && d && p("");
|
|
232
243
|
};
|
|
233
|
-
if (
|
|
234
|
-
|
|
244
|
+
if (i && d && !m) {
|
|
245
|
+
D(v);
|
|
235
246
|
return;
|
|
236
247
|
}
|
|
237
|
-
if (
|
|
238
|
-
|
|
248
|
+
if (m?.isDisabled) {
|
|
249
|
+
D(v);
|
|
239
250
|
return;
|
|
240
251
|
}
|
|
241
252
|
if (v == null || t != null && t >= v)
|
|
242
253
|
return;
|
|
243
|
-
const
|
|
244
|
-
|
|
254
|
+
const S = C.find((c) => ve(c) && c.startMinutes >= v);
|
|
255
|
+
S && S.value !== d ? p(S.value) : !S && d && p("");
|
|
245
256
|
}, [
|
|
246
|
-
|
|
257
|
+
C,
|
|
247
258
|
H,
|
|
248
259
|
I,
|
|
249
260
|
l,
|
|
250
|
-
|
|
251
|
-
|
|
261
|
+
d,
|
|
262
|
+
i,
|
|
252
263
|
J,
|
|
253
264
|
Z,
|
|
254
265
|
X,
|
|
255
|
-
|
|
256
|
-
|
|
266
|
+
L,
|
|
267
|
+
r,
|
|
257
268
|
p
|
|
258
|
-
]), F(() => (
|
|
259
|
-
|
|
269
|
+
]), F(() => (_e(!0), () => {
|
|
270
|
+
M.current != null && clearTimeout(M.current);
|
|
260
271
|
}), []), F(() => {
|
|
261
272
|
re && ne && j(!1);
|
|
262
273
|
}, [ne, re]), F(() => {
|
|
263
274
|
ae && se && z(!1);
|
|
264
275
|
}, [se, ae]);
|
|
265
|
-
const
|
|
266
|
-
e &&
|
|
267
|
-
}, []),
|
|
268
|
-
e &&
|
|
269
|
-
}, []),
|
|
270
|
-
e &&
|
|
271
|
-
}, []),
|
|
276
|
+
const Je = g((e) => {
|
|
277
|
+
e && ce.current && Date.now() < ce.current || j(e);
|
|
278
|
+
}, []), Xe = g((e) => {
|
|
279
|
+
e && fe.current && Date.now() < fe.current || z(e);
|
|
280
|
+
}, []), et = g((e) => {
|
|
281
|
+
e && de.current && Date.now() < de.current || oe(e);
|
|
282
|
+
}, []), tt = g(
|
|
272
283
|
(e, {
|
|
273
284
|
openTimePicker: t,
|
|
274
|
-
openEndDatePicker:
|
|
285
|
+
openEndDatePicker: m,
|
|
275
286
|
close: u = !0
|
|
276
287
|
} = {}) => {
|
|
277
|
-
const v = t ??
|
|
288
|
+
const v = t ?? E === "chained-times", D = m ?? E === "dates-first";
|
|
278
289
|
if (!e) {
|
|
279
290
|
u && j(!1);
|
|
280
291
|
return;
|
|
281
292
|
}
|
|
282
|
-
|
|
293
|
+
a(e), (u || D) && (ce.current = Date.now() + 250, j(!1)), T && e > T && _(e), v && ie(!0), D && (M.current != null && clearTimeout(M.current), W ? (z(!0), M.current = null) : M.current = setTimeout(() => {
|
|
283
294
|
z(!0);
|
|
284
295
|
}, 100));
|
|
285
296
|
},
|
|
286
|
-
[
|
|
287
|
-
),
|
|
297
|
+
[T, W, _, a, E]
|
|
298
|
+
), nt = g(
|
|
288
299
|
(e) => {
|
|
289
|
-
|
|
300
|
+
O(e, "user"), ie(!1), M.current != null && clearTimeout(M.current), E === "chained-times" && e && n ? M.current = setTimeout(() => {
|
|
290
301
|
z(!0);
|
|
291
|
-
}, 100) :
|
|
302
|
+
}, 100) : M.current = null;
|
|
292
303
|
},
|
|
293
|
-
[
|
|
294
|
-
),
|
|
304
|
+
[E, n, O]
|
|
305
|
+
), rt = g(
|
|
295
306
|
(e) => {
|
|
296
|
-
e && e !==
|
|
307
|
+
e && e !== r && O(e, "user");
|
|
297
308
|
},
|
|
298
|
-
[
|
|
299
|
-
),
|
|
309
|
+
[r, O]
|
|
310
|
+
), it = g(
|
|
300
311
|
(e, {
|
|
301
312
|
openTimePicker: t,
|
|
302
|
-
close:
|
|
303
|
-
commit: u =
|
|
313
|
+
close: m = !0,
|
|
314
|
+
commit: u = E === "dates-first" ? W : !1
|
|
304
315
|
} = {}) => {
|
|
305
|
-
const v = t ??
|
|
306
|
-
let
|
|
307
|
-
if (e &&
|
|
308
|
-
if (
|
|
309
|
-
const
|
|
310
|
-
|
|
316
|
+
const v = t ?? E === "chained-times";
|
|
317
|
+
let D = d;
|
|
318
|
+
if (e && E === "dates-first") {
|
|
319
|
+
if (i) {
|
|
320
|
+
const c = A(e);
|
|
321
|
+
c && ($.current = c);
|
|
311
322
|
}
|
|
312
|
-
const
|
|
313
|
-
|
|
323
|
+
const S = we(e);
|
|
324
|
+
S && (D = S, p(S));
|
|
314
325
|
}
|
|
315
|
-
_(e), le(void 0),
|
|
326
|
+
_(e), le(void 0), m && (fe.current = Date.now() + 250, z(!1)), e && v && oe(!0), e && u && Q && (typeof window > "u" ? Q(e, D) : requestAnimationFrame(() => Q(e, D)));
|
|
316
327
|
},
|
|
317
328
|
[
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
329
|
+
d,
|
|
330
|
+
i,
|
|
331
|
+
we,
|
|
321
332
|
W,
|
|
322
333
|
_,
|
|
323
334
|
Q,
|
|
324
|
-
|
|
325
|
-
|
|
335
|
+
E,
|
|
336
|
+
A,
|
|
326
337
|
p
|
|
327
338
|
]
|
|
328
|
-
),
|
|
339
|
+
), st = g(
|
|
329
340
|
(e) => {
|
|
330
341
|
p(e, "user");
|
|
331
342
|
},
|
|
332
343
|
[p]
|
|
333
|
-
),
|
|
344
|
+
), at = g(
|
|
334
345
|
(e) => {
|
|
335
|
-
$.current = void 0, p(e, "user"),
|
|
346
|
+
$.current = void 0, p(e, "user"), de.current = Date.now() + 250, oe(!1), V && (typeof window > "u" ? V() : requestAnimationFrame(() => {
|
|
336
347
|
requestAnimationFrame(V);
|
|
337
348
|
}));
|
|
338
349
|
},
|
|
339
350
|
[V, p]
|
|
340
351
|
);
|
|
341
352
|
return {
|
|
342
|
-
startDate:
|
|
343
|
-
startTime:
|
|
344
|
-
endDate:
|
|
345
|
-
endTime:
|
|
346
|
-
errors:
|
|
347
|
-
labels:
|
|
348
|
-
t:
|
|
349
|
-
language:
|
|
350
|
-
labelClassName:
|
|
351
|
-
inputClassName:
|
|
352
|
-
buttonClassName:
|
|
353
|
-
currencyCode:
|
|
353
|
+
startDate: n,
|
|
354
|
+
startTime: r,
|
|
355
|
+
endDate: T,
|
|
356
|
+
endTime: d,
|
|
357
|
+
errors: Ie,
|
|
358
|
+
labels: Le ?? ht,
|
|
359
|
+
t: xe,
|
|
360
|
+
language: he ?? Y,
|
|
361
|
+
labelClassName: Re,
|
|
362
|
+
inputClassName: Ke,
|
|
363
|
+
buttonClassName: He,
|
|
364
|
+
currencyCode: We,
|
|
354
365
|
localeCode: Y,
|
|
355
|
-
slotIntervalMinutes:
|
|
356
|
-
dateLocale:
|
|
366
|
+
slotIntervalMinutes: L,
|
|
367
|
+
dateLocale: qe,
|
|
357
368
|
numberOfMonths: W ? 1 : 2,
|
|
358
369
|
isMobile: W,
|
|
359
|
-
isHydrated:
|
|
360
|
-
openDatePickerOnFocus:
|
|
361
|
-
withMobileDateDrawer:
|
|
370
|
+
isHydrated: Ze,
|
|
371
|
+
openDatePickerOnFocus: ze,
|
|
372
|
+
withMobileDateDrawer: Ue,
|
|
373
|
+
selectionFlow: E,
|
|
362
374
|
isStartDatePopoverOpen: ne,
|
|
363
|
-
setIsStartDatePopoverOpen:
|
|
375
|
+
setIsStartDatePopoverOpen: Je,
|
|
364
376
|
isStartTimeSelectOpen: re,
|
|
365
377
|
setIsStartTimeSelectOpen: ie,
|
|
366
378
|
isEndDatePopoverOpen: se,
|
|
367
|
-
setIsEndDatePopoverOpen:
|
|
379
|
+
setIsEndDatePopoverOpen: Xe,
|
|
368
380
|
isEndTimeSelectOpen: ae,
|
|
369
|
-
setIsEndTimeSelectOpen:
|
|
370
|
-
hoveredEndDate:
|
|
381
|
+
setIsEndTimeSelectOpen: et,
|
|
382
|
+
hoveredEndDate: $e,
|
|
371
383
|
setHoveredEndDate: le,
|
|
372
|
-
resetHoveredEndDate:
|
|
373
|
-
startTimeSlots:
|
|
374
|
-
availableEndTimeSlots:
|
|
384
|
+
resetHoveredEndDate: Ye,
|
|
385
|
+
startTimeSlots: k,
|
|
386
|
+
availableEndTimeSlots: C,
|
|
375
387
|
isStartToday: B,
|
|
376
388
|
isEndToday: Z,
|
|
377
|
-
minSelectableDate:
|
|
389
|
+
minSelectableDate: Ge,
|
|
378
390
|
earliestMinutesForToday: I,
|
|
379
|
-
startMinutesValue:
|
|
391
|
+
startMinutesValue: je,
|
|
380
392
|
isSameDaySelection: X,
|
|
381
|
-
updateStartTime:
|
|
382
|
-
selectStartDate:
|
|
383
|
-
selectStartTime:
|
|
384
|
-
selectEndDate:
|
|
385
|
-
updateEndTime:
|
|
386
|
-
selectEndTime:
|
|
393
|
+
updateStartTime: rt,
|
|
394
|
+
selectStartDate: tt,
|
|
395
|
+
selectStartTime: nt,
|
|
396
|
+
selectEndDate: it,
|
|
397
|
+
updateEndTime: st,
|
|
398
|
+
selectEndTime: at
|
|
387
399
|
};
|
|
388
400
|
};
|
|
389
401
|
export {
|
|
390
|
-
|
|
402
|
+
At as useBookingPeriodController
|
|
391
403
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -657,6 +657,7 @@ export declare interface BookingPeriodControllerValue {
|
|
|
657
657
|
isHydrated: boolean;
|
|
658
658
|
openDatePickerOnFocus: boolean;
|
|
659
659
|
withMobileDateDrawer: boolean;
|
|
660
|
+
selectionFlow: BookingPeriodSelectionFlow;
|
|
660
661
|
isStartDatePopoverOpen: boolean;
|
|
661
662
|
setIsStartDatePopoverOpen: (open: boolean) => void;
|
|
662
663
|
isStartTimeSelectOpen: boolean;
|