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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "willba-component-library",
3
- "version": "0.2.41",
3
+ "version": "0.2.43",
4
4
  "description": "A custom UI component library",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.esm.js",
@@ -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
- <div style={{ padding: '30px', height: '100vh' }}>
170
- <FilterCalendar {...args} />
171
- </div>
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({ calendarRange })
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: initialCalendarRange?.from || calendarRange?.from,
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: initialCalendarRange?.to || calendarRange?.to,
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
- setCalendarRange(undefined)
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
- disableCalendarDates.disabledDates = updatedDisabledDates
101
+ const newDisableCalendarDates = {
102
+ ...disableCalendarDates,
103
+ disabledDates: updatedDisabledDates,
104
+ }
105
+
106
+ return newDisableCalendarDates
102
107
  }
103
- }, [disableCalendarDates])
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
- disableCalendarDates,
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
- disableCalendarDates,
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
- (disableCalendarDates?.disabledDates?.length
240
- ? disableCalendarDates.disabledDates[0].from
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
- : disableCalendarDates?.disabledDates || []
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
- : disableCalendarDates?.disabledDates || [],
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
- disableCalendarDates,
342
+ newDisableCalendarDates,
331
343
  setCalendarRange,
332
344
  setDisabledDates,
333
345
  calendarRange,
334
346
  overlappingDate,
335
347
  }: {
336
348
  range: DateRange | undefined
337
- disableCalendarDates?: DisableCalendarDates
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 = disableCalendarDates?.availableDates?.length
358
- ? disableCalendarDates.availableDates.find(
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
- ...(disableCalendarDates?.disabledDates || []),
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
- disableCalendarDates,
416
+ newDisableCalendarDates,
405
417
  selectedPath,
406
418
  today,
407
419
  }: {
408
- disableCalendarDates?: DisableCalendarDates
420
+ newDisableCalendarDates?: DisableCalendarDates
409
421
  selectedPath?: string
410
422
  today: Date
411
423
  }) => {
412
424
  const daysToOffsetCalendar =
413
- disableCalendarDates?.disabledDatesByPage && selectedPath
425
+ newDisableCalendarDates?.disabledDatesByPage && selectedPath
414
426
  ? [
415
- disableCalendarDates?.disabledDatesByPage?.find(
427
+ newDisableCalendarDates?.disabledDatesByPage?.find(
416
428
  (item) => selectedPath === item.page
417
429
  ),
418
430
  ]