willba-component-library 0.2.41 → 0.2.43
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/lib/index.esm.js +30 -20
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +30 -20
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +30 -20
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FilterCalendar/FilterCalendar.stories.tsx +14 -6
- package/src/components/FilterCalendar/FilterCalendar.tsx +5 -3
- package/src/components/FilterCalendar/hooks/useFilterCalendar.ts +1 -1
- package/src/core/components/calendar/Calendar.tsx +30 -18
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react'
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
2
|
import type { Meta, StoryObj } from '@storybook/react'
|
|
3
3
|
|
|
4
4
|
import FilterCalendar from './FilterCalendar'
|
|
@@ -165,9 +165,17 @@ export const Primary: Story = {
|
|
|
165
165
|
showFeedback: true,
|
|
166
166
|
noActiveSelection: true,
|
|
167
167
|
},
|
|
168
|
-
render: (args) =>
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
168
|
+
render: (args) => {
|
|
169
|
+
const [toggleCalendar, setToggleCalendar] = useState(true)
|
|
170
|
+
return (
|
|
171
|
+
<div style={{ padding: '30px', height: '100vh' }}>
|
|
172
|
+
<FilterCalendar
|
|
173
|
+
{...args}
|
|
174
|
+
toggleCalendar={toggleCalendar}
|
|
175
|
+
setToggleCalendar={setToggleCalendar}
|
|
176
|
+
/>
|
|
177
|
+
<button onClick={() => setToggleCalendar(true)}>Open calendar</button>
|
|
178
|
+
</div>
|
|
179
|
+
)
|
|
180
|
+
},
|
|
173
181
|
}
|
|
@@ -61,7 +61,9 @@ export default function FilterCalendar({
|
|
|
61
61
|
handleSelectedFilter: setToggleCalendar,
|
|
62
62
|
})
|
|
63
63
|
|
|
64
|
-
const nights = nightsCount({
|
|
64
|
+
const nights = nightsCount({
|
|
65
|
+
calendarRange: calendarRange || initialCalendarRange,
|
|
66
|
+
})
|
|
65
67
|
|
|
66
68
|
return (
|
|
67
69
|
<div className={`will-root`} style={themePalette}>
|
|
@@ -99,7 +101,7 @@ export default function FilterCalendar({
|
|
|
99
101
|
<div>
|
|
100
102
|
<span>
|
|
101
103
|
{parseDate({
|
|
102
|
-
date:
|
|
104
|
+
date: calendarRange?.from || initialCalendarRange?.from,
|
|
103
105
|
dateFormat: 'EEEEEE d.M.yyyy',
|
|
104
106
|
language,
|
|
105
107
|
}) || t('common:checkIn')}
|
|
@@ -109,7 +111,7 @@ export default function FilterCalendar({
|
|
|
109
111
|
</span>
|
|
110
112
|
<span>
|
|
111
113
|
{parseDate({
|
|
112
|
-
date:
|
|
114
|
+
date: calendarRange?.to || initialCalendarRange?.to,
|
|
113
115
|
dateFormat: 'EEEEEE d.M.yyyy',
|
|
114
116
|
language,
|
|
115
117
|
}) || t('common:checkOut')}
|
|
@@ -34,7 +34,7 @@ export const useFilterCalendar = ({
|
|
|
34
34
|
|
|
35
35
|
if (startDateParam && endDateParam) {
|
|
36
36
|
if (noActiveSelection) {
|
|
37
|
-
|
|
37
|
+
handleClearDates()
|
|
38
38
|
setUpdateCalendarDefaultMoth((prev) => prev + 1)
|
|
39
39
|
setInitialCalendarRange({
|
|
40
40
|
from: new Date(startDateParam),
|
|
@@ -44,7 +44,7 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
44
44
|
DateRange[] | undefined
|
|
45
45
|
>(undefined)
|
|
46
46
|
|
|
47
|
-
useMemo(() => {
|
|
47
|
+
const newDisableCalendarDates = useMemo(() => {
|
|
48
48
|
if (disableCalendarDates?.availableDates) {
|
|
49
49
|
const dateFormat = 'dd-MM-yyyy'
|
|
50
50
|
|
|
@@ -98,15 +98,27 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
98
98
|
setOverlappingDate((prev = []) => [...prev, ...newOverlappingDates])
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
const newDisableCalendarDates = {
|
|
102
|
+
...disableCalendarDates,
|
|
103
|
+
disabledDates: updatedDisabledDates,
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return newDisableCalendarDates
|
|
102
107
|
}
|
|
103
|
-
|
|
108
|
+
return disableCalendarDates
|
|
109
|
+
}, [
|
|
110
|
+
disableCalendarDates,
|
|
111
|
+
calendarRange,
|
|
112
|
+
updateCalendarMonthNavigation,
|
|
113
|
+
initialCalendarRange,
|
|
114
|
+
updateCalendarDefaultMoth,
|
|
115
|
+
])
|
|
104
116
|
|
|
105
117
|
// Handle disable dates by page
|
|
106
118
|
const disabledDatesByPage = handleDisabledDatesByPage({
|
|
107
119
|
today,
|
|
108
120
|
selectedPath,
|
|
109
|
-
|
|
121
|
+
newDisableCalendarDates,
|
|
110
122
|
})
|
|
111
123
|
|
|
112
124
|
// Handle tooltip
|
|
@@ -225,7 +237,7 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
225
237
|
onSelect={(range) =>
|
|
226
238
|
handleSelectedCheckIn({
|
|
227
239
|
range,
|
|
228
|
-
|
|
240
|
+
newDisableCalendarDates,
|
|
229
241
|
setCalendarRange,
|
|
230
242
|
setDisabledDates,
|
|
231
243
|
calendarRange,
|
|
@@ -236,8 +248,8 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
236
248
|
defaultMonth={
|
|
237
249
|
initialCalendarRange?.from ||
|
|
238
250
|
selectedStartDate ||
|
|
239
|
-
(
|
|
240
|
-
?
|
|
251
|
+
(newDisableCalendarDates?.disabledDates?.length
|
|
252
|
+
? newDisableCalendarDates.disabledDates[0].from
|
|
241
253
|
: today)
|
|
242
254
|
}
|
|
243
255
|
disabled={
|
|
@@ -245,7 +257,7 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
245
257
|
? disabledDatesByPage
|
|
246
258
|
: disabledDates?.length
|
|
247
259
|
? disabledDates
|
|
248
|
-
:
|
|
260
|
+
: newDisableCalendarDates?.disabledDates || []
|
|
249
261
|
}
|
|
250
262
|
fromMonth={today}
|
|
251
263
|
onMonthChange={(val) => {
|
|
@@ -272,7 +284,7 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
272
284
|
? disabledDatesByPage
|
|
273
285
|
: disabledDates?.length
|
|
274
286
|
? disabledDates
|
|
275
|
-
:
|
|
287
|
+
: newDisableCalendarDates?.disabledDates || [],
|
|
276
288
|
|
|
277
289
|
disabledAfterCheckIn: calendarRange?.from
|
|
278
290
|
? [{ after: calendarRange.from }]
|
|
@@ -327,14 +339,14 @@ export const Calendar = forwardRef<HTMLDivElement, CalendarTypes>(
|
|
|
327
339
|
|
|
328
340
|
const handleSelectedCheckIn = ({
|
|
329
341
|
range,
|
|
330
|
-
|
|
342
|
+
newDisableCalendarDates,
|
|
331
343
|
setCalendarRange,
|
|
332
344
|
setDisabledDates,
|
|
333
345
|
calendarRange,
|
|
334
346
|
overlappingDate,
|
|
335
347
|
}: {
|
|
336
348
|
range: DateRange | undefined
|
|
337
|
-
|
|
349
|
+
newDisableCalendarDates?: DisableCalendarDates
|
|
338
350
|
setCalendarRange: (range: DateRange | undefined) => void
|
|
339
351
|
setDisabledDates: ((arg: Matcher[]) => void) | undefined
|
|
340
352
|
calendarRange?: DateRange
|
|
@@ -354,8 +366,8 @@ const handleSelectedCheckIn = ({
|
|
|
354
366
|
)
|
|
355
367
|
: null
|
|
356
368
|
|
|
357
|
-
const checkOutRange =
|
|
358
|
-
?
|
|
369
|
+
const checkOutRange = newDisableCalendarDates?.availableDates?.length
|
|
370
|
+
? newDisableCalendarDates.availableDates.find(
|
|
359
371
|
(checkInDate) =>
|
|
360
372
|
format(checkInDate.checkIn || 1, dateFormat) ===
|
|
361
373
|
format(range?.from || 1, dateFormat)
|
|
@@ -372,7 +384,7 @@ const handleSelectedCheckIn = ({
|
|
|
372
384
|
setDisabledDates([
|
|
373
385
|
// { before: findCheckOutRange?.checkIn },
|
|
374
386
|
|
|
375
|
-
...(
|
|
387
|
+
...(newDisableCalendarDates?.disabledDates || []),
|
|
376
388
|
|
|
377
389
|
{
|
|
378
390
|
from: noDatesRange ? undefined : checkIn,
|
|
@@ -401,18 +413,18 @@ const handleSelectedCheckIn = ({
|
|
|
401
413
|
}
|
|
402
414
|
|
|
403
415
|
const handleDisabledDatesByPage = ({
|
|
404
|
-
|
|
416
|
+
newDisableCalendarDates,
|
|
405
417
|
selectedPath,
|
|
406
418
|
today,
|
|
407
419
|
}: {
|
|
408
|
-
|
|
420
|
+
newDisableCalendarDates?: DisableCalendarDates
|
|
409
421
|
selectedPath?: string
|
|
410
422
|
today: Date
|
|
411
423
|
}) => {
|
|
412
424
|
const daysToOffsetCalendar =
|
|
413
|
-
|
|
425
|
+
newDisableCalendarDates?.disabledDatesByPage && selectedPath
|
|
414
426
|
? [
|
|
415
|
-
|
|
427
|
+
newDisableCalendarDates?.disabledDatesByPage?.find(
|
|
416
428
|
(item) => selectedPath === item.page
|
|
417
429
|
),
|
|
418
430
|
]
|