@acusti/date-picker 0.14.1 → 0.15.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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![latest version](https://img.shields.io/npm/v/@acusti/date-picker?style=for-the-badge)](https://www.npmjs.com/package/@acusti/date-picker)
4
4
  [![downloads per month](https://img.shields.io/npm/dm/@acusti/date-picker?style=for-the-badge)](https://www.npmjs.com/package/@acusti/date-picker)
5
5
  [![bundle size](https://deno.bundlejs.com/badge?q=@acusti/date-picker)](https://bundlejs.com/?q=%40acusti%2Fdate-picker)
6
- [![supply chain security](https://socket.dev/api/badge/npm/package/@acusti/date-picker/0.8.0)](https://socket.dev/npm/package/@acusti/date-picker/overview/0.8.0)
6
+ [![supply chain security](https://socket.dev/api/badge/npm/package/@acusti/date-picker/0.14.1)](https://socket.dev/npm/package/@acusti/date-picker/overview/0.14.1)
7
7
 
8
8
  A comprehensive React date picker library with support for single date
9
9
  selection, date ranges, and two-up month calendar views. Built with
@@ -49,7 +49,7 @@ function SimpleDatePicker() {
49
49
  return (
50
50
  <DatePicker
51
51
  onChange={({ dateStart }) => setSelectedDate(dateStart)}
52
- dateStart={selectedDate}
52
+ defaultDateStart={selectedDate}
53
53
  />
54
54
  );
55
55
  }
@@ -59,7 +59,7 @@ function DateRangePicker() {
59
59
  const [dateRange, setDateRange] = useState({ start: '', end: '' });
60
60
 
61
61
  const handleChange = ({ dateStart, dateEnd }) => {
62
- setDateRange({ start: dateStart, end: dateEnd || '' });
62
+ setDateRange({ start: dateStart, end: dateEnd ?? '' });
63
63
  };
64
64
 
65
65
  return (
@@ -67,14 +67,57 @@ function DateRangePicker() {
67
67
  isRange
68
68
  isTwoUp
69
69
  onChange={handleChange}
70
- dateStart={dateRange.start}
71
- dateEnd={dateRange.end}
70
+ defaultDateStart={dateRange.start}
71
+ defaultDateEnd={dateRange.end}
72
72
  useMonthAbbreviations
73
73
  />
74
74
  );
75
75
  }
76
76
  ```
77
77
 
78
+ ## Component Behavior
79
+
80
+ The `DatePicker` component is **uncontrolled**, meaning it manages its own
81
+ internal state. The `defaultDateStart` and `defaultDateEnd` props are used
82
+ only to set the default state when the component first mounts.
83
+
84
+ ### Resetting State
85
+
86
+ To reset the date picker’s internal state (for example, to clear selected
87
+ dates), change the component’s `key` prop:
88
+
89
+ ```tsx
90
+ function DatePickerWithReset() {
91
+ const [resetKey, setResetKey] = useState(0);
92
+ const [selectedDates, setSelectedDates] = useState({
93
+ start: '',
94
+ end: '',
95
+ });
96
+
97
+ const handleReset = () => {
98
+ setResetKey((prev) => prev + 1); // This will reset the DatePicker
99
+ setSelectedDates({ start: '', end: '' });
100
+ };
101
+
102
+ return (
103
+ <div>
104
+ <DatePicker
105
+ key={resetKey} // Changing this resets all internal state
106
+ defaultDateStart={selectedDates.start}
107
+ defaultDateEnd={selectedDates.end}
108
+ onChange={({ dateStart, dateEnd }) => {
109
+ setSelectedDates({
110
+ start: dateStart,
111
+ end: dateEnd ?? '',
112
+ });
113
+ }}
114
+ />
115
+ <button onClick={handleReset}>Reset Dates</button>
116
+ </div>
117
+ );
118
+ }
119
+ ```
120
+
78
121
  ## API Reference
79
122
 
80
123
  ### DatePicker Component
@@ -84,11 +127,11 @@ type Props = {
84
127
  /** Additional CSS class name for styling */
85
128
  className?: string;
86
129
 
87
- /** End date for range selection (Date object, ISO string, timestamp, or null) */
88
- dateEnd?: Date | string | number | null;
130
+ /** Default end date for range selection (Date object, ISO string, timestamp, or null) */
131
+ defaultDateEnd?: Date | string | number | null;
89
132
 
90
- /** Start date for single or range selection (Date object, ISO string, timestamp, or null) */
91
- dateStart?: Date | string | number | null;
133
+ /** Default start date for single or range selection (Date object, ISO string, timestamp, or null) */
134
+ defaultDateStart?: Date | string | number | null;
92
135
 
93
136
  /** Initial month to display (number of months since January 1970) */
94
137
  initialMonth?: number;
@@ -173,6 +216,7 @@ import { DatePicker } from '@acusti/date-picker';
173
216
  import { useState } from 'react';
174
217
 
175
218
  function BookingDatePicker() {
219
+ const [resetKey, setResetKey] = useState(0);
176
220
  const [checkIn, setCheckIn] = useState('');
177
221
  const [checkOut, setCheckOut] = useState('');
178
222
  const isValid = checkIn && checkOut;
@@ -182,11 +226,20 @@ function BookingDatePicker() {
182
226
  const monthLimitFirst = getMonthFromDate(today);
183
227
  const monthLimitLast = monthLimitFirst + 12;
184
228
 
229
+ const handleClearDates = () => {
230
+ setResetKey((prev) => prev + 1);
231
+ setCheckIn('');
232
+ setCheckOut('');
233
+ };
234
+
185
235
  return (
186
236
  <div className="booking-date-picker">
187
237
  <h3>Select Your Stay</h3>
188
238
  <DatePicker
189
- className="booking-date-picker-story"
239
+ key={resetKey}
240
+ className="booking-calendar"
241
+ defaultDateStart={checkIn}
242
+ defaultDateEnd={checkOut}
190
243
  isRange
191
244
  isTwoUp
192
245
  monthLimitFirst={monthLimitFirst}
@@ -195,11 +248,22 @@ function BookingDatePicker() {
195
248
  setCheckIn(dateStart);
196
249
  setCheckOut(dateEnd ?? '');
197
250
  }}
198
- dateStart={checkIn}
199
- dateEnd={checkOut}
200
251
  useMonthAbbreviations
201
252
  />
202
253
 
254
+ <button
255
+ onClick={handleClearDates}
256
+ style={{
257
+ marginTop: '12px',
258
+ padding: '8px 16px',
259
+ border: '1px solid #ccc',
260
+ borderRadius: '4px',
261
+ cursor: 'pointer',
262
+ }}
263
+ >
264
+ Clear Dates
265
+ </button>
266
+
203
267
  {isValid ? (
204
268
  <div
205
269
  className="booking-summary"
@@ -415,6 +479,7 @@ import { DatePicker, getMonthFromDate } from '@acusti/date-picker';
415
479
  import { useState } from 'react';
416
480
 
417
481
  function BirthdayPicker() {
482
+ const [resetKey, setResetKey] = useState(0);
418
483
  const [birthday, setBirthday] = useState('');
419
484
 
420
485
  // Reasonable age limits: 13 to 120 years ago
@@ -442,36 +507,59 @@ function BirthdayPicker() {
442
507
  ),
443
508
  );
444
509
 
510
+ const handleClear = () => {
511
+ setResetKey((prev) => prev + 1);
512
+ setBirthday('');
513
+ };
514
+
445
515
  return (
446
516
  <div className="birthday-picker">
447
517
  <h3>Enter Your Birthday</h3>
448
518
  <DatePicker
519
+ key={resetKey}
449
520
  initialMonth={defaultMonth}
450
521
  monthLimitFirst={monthLimitFirst}
451
522
  monthLimitLast={monthLimitLast}
452
523
  onChange={({ dateStart }) => setBirthday(dateStart)}
453
- dateStart={birthday}
524
+ defaultDateStart={birthday}
454
525
  />
455
526
 
456
527
  {birthday ? (
457
- <p
458
- style={{
459
- marginTop: '16px',
460
- padding: '12px',
461
- backgroundColor: '#e3f2fd',
462
- borderRadius: '6px',
463
- }}
464
- >
465
- <strong>
466
- You are{' '}
467
- {Math.floor(
468
- (today.getTime() -
469
- new Date(birthday).getTime()) /
470
- (1000 * 60 * 60 * 24 * 365.25),
471
- )}{' '}
472
- years old
473
- </strong>
474
- </p>
528
+ <>
529
+ <button
530
+ onClick={handleClear}
531
+ style={{
532
+ marginTop: '12px',
533
+ padding: '6px 12px',
534
+ border: '1px solid #dc3545',
535
+ borderRadius: '4px',
536
+ cursor: 'pointer',
537
+ backgroundColor: '#fff',
538
+ color: '#dc3545',
539
+ fontSize: '14px',
540
+ }}
541
+ >
542
+ Clear Birthday
543
+ </button>
544
+ <p
545
+ style={{
546
+ marginTop: '12px',
547
+ padding: '12px',
548
+ backgroundColor: '#e3f2fd',
549
+ borderRadius: '6px',
550
+ }}
551
+ >
552
+ <strong>
553
+ You are{' '}
554
+ {Math.floor(
555
+ (today.getTime() -
556
+ new Date(birthday).getTime()) /
557
+ (1000 * 60 * 60 * 24 * 365.25),
558
+ )}{' '}
559
+ years old
560
+ </strong>
561
+ </p>
562
+ </>
475
563
  ) : null}
476
564
  </div>
477
565
  );
@@ -1,7 +1,7 @@
1
1
  export type Props = {
2
2
  className?: string;
3
- dateEnd?: Date | null | number | string;
4
- dateStart?: Date | null | number | string;
3
+ defaultDateEnd?: Date | null | number | string;
4
+ defaultDateStart?: Date | null | number | string;
5
5
  initialMonth?: number;
6
6
  isRange?: boolean;
7
7
  isTwoUp?: boolean;
@@ -19,4 +19,4 @@ export type Props = {
19
19
  showEndInitially?: boolean;
20
20
  useMonthAbbreviations?: boolean;
21
21
  };
22
- export default function DatePicker({ className, dateEnd: _dateEnd, dateStart: _dateStart, initialMonth, isRange: _isRange, isTwoUp, monthLimitFirst, monthLimitLast: _monthLimitLast, onChange, showEndInitially, useMonthAbbreviations, }: Props): import("react/jsx-runtime").JSX.Element;
22
+ export default function DatePicker({ className, defaultDateEnd, defaultDateStart, initialMonth, isRange: _isRange, isTwoUp, monthLimitFirst, monthLimitLast: _monthLimitLast, onChange, showEndInitially, useMonthAbbreviations, }: Props): import("react/jsx-runtime").JSX.Element;
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { Style } from "@acusti/styling";
4
4
  import clsx from "clsx";
5
- import { Fragment, useState, useRef, useEffect } from "react";
5
+ import { Fragment, useState, useRef } from "react";
6
6
  const ROOT_CLASS_NAME$1 = "uktmonthcalendar";
7
7
  const STYLES$1 = `
8
8
  .${ROOT_CLASS_NAME$1} {
@@ -515,11 +515,11 @@ const normalizeDate = (date) => {
515
515
  return typeof date === "string" ? date : new Date(date).toISOString();
516
516
  };
517
517
  function DatePicker(t0) {
518
- const $ = c(68);
518
+ const $ = c(62);
519
519
  let {
520
520
  className,
521
- dateEnd: _dateEnd,
522
- dateStart: _dateStart,
521
+ defaultDateEnd,
522
+ defaultDateStart,
523
523
  initialMonth,
524
524
  isRange: _isRange,
525
525
  isTwoUp,
@@ -529,77 +529,41 @@ function DatePicker(t0) {
529
529
  showEndInitially,
530
530
  useMonthAbbreviations
531
531
  } = t0;
532
- const isRange = _isRange ?? _dateEnd != null;
532
+ const isRange = _isRange ?? defaultDateEnd != null;
533
533
  const monthLimitLast = isTwoUp && _monthLimitLast != null ? _monthLimitLast - 1 : _monthLimitLast;
534
534
  let t1;
535
- if ($[0] !== _dateEnd) {
536
- t1 = normalizeDate(_dateEnd);
537
- $[0] = _dateEnd;
535
+ if ($[0] !== defaultDateEnd) {
536
+ t1 = normalizeDate(defaultDateEnd);
537
+ $[0] = defaultDateEnd;
538
538
  $[1] = t1;
539
539
  } else {
540
540
  t1 = $[1];
541
541
  }
542
- const dateEndFromProps = t1;
542
+ const defaultDateEndNormalized = t1;
543
543
  let t2;
544
- if ($[2] !== _dateStart) {
545
- t2 = normalizeDate(_dateStart);
546
- $[2] = _dateStart;
544
+ if ($[2] !== defaultDateStart) {
545
+ t2 = normalizeDate(defaultDateStart);
546
+ $[2] = defaultDateStart;
547
547
  $[3] = t2;
548
548
  } else {
549
549
  t2 = $[3];
550
550
  }
551
- const dateStartFromProps = t2;
552
- const [dateEnd, setDateEnd] = useState(dateEndFromProps);
553
- const [dateStart, setDateStart] = useState(dateStartFromProps);
551
+ const defaultDateStartNormalized = t2;
552
+ const [dateEnd, setDateEnd] = useState(defaultDateEndNormalized);
553
+ const [dateStart, setDateStart] = useState(defaultDateStartNormalized);
554
554
  const updatingDateEndRef = useRef(false);
555
- let t3;
556
- let t4;
557
- if ($[4] !== dateEndFromProps) {
558
- t3 = () => {
559
- if (dateEndFromProps == null) {
560
- return;
561
- }
562
- setDateEnd(dateEndFromProps);
563
- };
564
- t4 = [dateEndFromProps];
565
- $[4] = dateEndFromProps;
566
- $[5] = t3;
567
- $[6] = t4;
568
- } else {
569
- t3 = $[5];
570
- t4 = $[6];
571
- }
572
- useEffect(t3, t4);
573
- let t5;
574
- let t6;
575
- if ($[7] !== dateStartFromProps) {
576
- t5 = () => {
577
- if (dateStartFromProps == null) {
578
- return;
579
- }
580
- setDateStart(dateStartFromProps);
581
- };
582
- t6 = [dateStartFromProps];
583
- $[7] = dateStartFromProps;
584
- $[8] = t5;
585
- $[9] = t6;
586
- } else {
587
- t5 = $[8];
588
- t6 = $[9];
589
- }
590
- useEffect(t5, t6);
591
555
  if (initialMonth == null) {
592
556
  const useDateEnd = dateStart == null || Boolean(showEndInitially && dateEnd);
593
557
  const initialDate = useDateEnd ? dateEnd : dateStart;
594
- let t72;
595
- if ($[10] !== initialDate) {
596
- t72 = getMonthFromDate(initialDate == null ? /* @__PURE__ */ new Date() : new Date(initialDate));
597
- $[10] = initialDate;
598
- $[11] = t72;
558
+ let t32;
559
+ if ($[4] !== initialDate) {
560
+ t32 = getMonthFromDate(initialDate == null ? /* @__PURE__ */ new Date() : new Date(initialDate));
561
+ $[4] = initialDate;
562
+ $[5] = t32;
599
563
  } else {
600
- t72 = $[11];
564
+ t32 = $[5];
601
565
  }
602
- initialMonth = t72;
566
+ initialMonth = t32;
603
567
  if (useDateEnd && isTwoUp) {
604
568
  initialMonth = initialMonth - 1;
605
569
  }
@@ -609,33 +573,33 @@ function DatePicker(t0) {
609
573
  const [month, setMonth] = useState(initialMonth);
610
574
  const [dateEndPreview, setDateEndPreview] = useState(null);
611
575
  const delta = isTwoUp ? 2 : 1;
612
- let t7;
613
- if ($[12] !== delta || $[13] !== monthLimitFirst) {
614
- t7 = () => {
576
+ let t3;
577
+ if ($[6] !== delta || $[7] !== monthLimitFirst) {
578
+ t3 = () => {
615
579
  setMonth((existingMonth) => Math.max(existingMonth - delta, monthLimitFirst ?? -Infinity));
616
580
  };
617
- $[12] = delta;
618
- $[13] = monthLimitFirst;
619
- $[14] = t7;
581
+ $[6] = delta;
582
+ $[7] = monthLimitFirst;
583
+ $[8] = t3;
620
584
  } else {
621
- t7 = $[14];
585
+ t3 = $[8];
622
586
  }
623
- const handleClickLeftArrow = t7;
624
- let t8;
625
- if ($[15] !== delta || $[16] !== monthLimitLast) {
626
- t8 = () => {
587
+ const handleClickLeftArrow = t3;
588
+ let t4;
589
+ if ($[9] !== delta || $[10] !== monthLimitLast) {
590
+ t4 = () => {
627
591
  setMonth((existingMonth_0) => Math.min(existingMonth_0 + delta, monthLimitLast ?? Infinity));
628
592
  };
629
- $[15] = delta;
630
- $[16] = monthLimitLast;
631
- $[17] = t8;
593
+ $[9] = delta;
594
+ $[10] = monthLimitLast;
595
+ $[11] = t4;
632
596
  } else {
633
- t8 = $[17];
597
+ t4 = $[11];
634
598
  }
635
- const handleClickRightArrow = t8;
636
- let t9;
637
- if ($[18] !== dateEnd || $[19] !== dateStart || $[20] !== isRange || $[21] !== onChange) {
638
- t9 = (date) => {
599
+ const handleClickRightArrow = t4;
600
+ let t5;
601
+ if ($[12] !== dateEnd || $[13] !== dateStart || $[14] !== isRange || $[15] !== onChange) {
602
+ t5 = (date) => {
639
603
  if (isRange && dateStart != null && (updatingDateEndRef.current || dateEnd == null)) {
640
604
  if (date < dateStart) {
641
605
  setDateStart(date);
@@ -668,162 +632,162 @@ function DatePicker(t0) {
668
632
  }
669
633
  }
670
634
  };
671
- $[18] = dateEnd;
672
- $[19] = dateStart;
673
- $[20] = isRange;
674
- $[21] = onChange;
675
- $[22] = t9;
635
+ $[12] = dateEnd;
636
+ $[13] = dateStart;
637
+ $[14] = isRange;
638
+ $[15] = onChange;
639
+ $[16] = t5;
676
640
  } else {
677
- t9 = $[22];
641
+ t5 = $[16];
678
642
  }
679
- const handleChange = t9;
680
- let t10;
681
- if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
682
- t10 = (date_0) => {
643
+ const handleChange = t5;
644
+ let t6;
645
+ if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
646
+ t6 = (date_0) => {
683
647
  setDateEndPreview(date_0);
684
648
  };
685
- $[23] = t10;
649
+ $[17] = t6;
686
650
  } else {
687
- t10 = $[23];
651
+ t6 = $[17];
688
652
  }
689
- const handleChangeEndPreview = t10;
690
- let t11;
691
- if ($[24] === Symbol.for("react.memo_cache_sentinel")) {
692
- t11 = /* @__PURE__ */ jsx(Style, { href: "@acusti/date-picker/DatePicker", children: STYLES });
693
- $[24] = t11;
653
+ const handleChangeEndPreview = t6;
654
+ let t7;
655
+ if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
656
+ t7 = /* @__PURE__ */ jsx(Style, { href: "@acusti/date-picker/DatePicker", children: STYLES });
657
+ $[18] = t7;
694
658
  } else {
695
- t11 = $[24];
659
+ t7 = $[18];
696
660
  }
697
- let t12;
698
- if ($[25] !== className || $[26] !== isTwoUp) {
699
- t12 = clsx(ROOT_CLASS_NAME, className, {
661
+ let t8;
662
+ if ($[19] !== className || $[20] !== isTwoUp) {
663
+ t8 = clsx(ROOT_CLASS_NAME, className, {
700
664
  "two-up": isTwoUp
701
665
  });
702
- $[25] = className;
703
- $[26] = isTwoUp;
704
- $[27] = t12;
666
+ $[19] = className;
667
+ $[20] = isTwoUp;
668
+ $[21] = t8;
705
669
  } else {
706
- t12 = $[27];
670
+ t8 = $[21];
707
671
  }
708
- const t13 = monthLimitFirst != null && month <= monthLimitFirst;
709
- let t14;
710
- if ($[28] !== t13) {
711
- t14 = clsx(`${ROOT_CLASS_NAME}-range-arrow left-arrow`, {
712
- disabled: t13
672
+ const t9 = monthLimitFirst != null && month <= monthLimitFirst;
673
+ let t10;
674
+ if ($[22] !== t9) {
675
+ t10 = clsx(`${ROOT_CLASS_NAME}-range-arrow left-arrow`, {
676
+ disabled: t9
713
677
  });
714
- $[28] = t13;
715
- $[29] = t14;
678
+ $[22] = t9;
679
+ $[23] = t10;
716
680
  } else {
717
- t14 = $[29];
681
+ t10 = $[23];
718
682
  }
719
- let t15;
720
- if ($[30] !== handleClickLeftArrow || $[31] !== t14) {
721
- t15 = /* @__PURE__ */ jsx("button", { "aria-label": "Previous Month", className: t14, onClick: handleClickLeftArrow, type: "button" });
722
- $[30] = handleClickLeftArrow;
723
- $[31] = t14;
724
- $[32] = t15;
683
+ let t11;
684
+ if ($[24] !== handleClickLeftArrow || $[25] !== t10) {
685
+ t11 = /* @__PURE__ */ jsx("button", { "aria-label": "Previous Month", className: t10, onClick: handleClickLeftArrow, type: "button" });
686
+ $[24] = handleClickLeftArrow;
687
+ $[25] = t10;
688
+ $[26] = t11;
725
689
  } else {
726
- t15 = $[32];
690
+ t11 = $[26];
727
691
  }
728
- const t16 = monthLimitLast != null && month >= monthLimitLast;
729
- let t17;
730
- if ($[33] !== t16) {
731
- t17 = clsx(`${ROOT_CLASS_NAME}-range-arrow right-arrow`, {
732
- disabled: t16
692
+ const t12 = monthLimitLast != null && month >= monthLimitLast;
693
+ let t13;
694
+ if ($[27] !== t12) {
695
+ t13 = clsx(`${ROOT_CLASS_NAME}-range-arrow right-arrow`, {
696
+ disabled: t12
733
697
  });
734
- $[33] = t16;
735
- $[34] = t17;
698
+ $[27] = t12;
699
+ $[28] = t13;
736
700
  } else {
737
- t17 = $[34];
701
+ t13 = $[28];
738
702
  }
739
- let t18;
740
- if ($[35] !== handleClickRightArrow || $[36] !== t17) {
741
- t18 = /* @__PURE__ */ jsx("button", { "aria-label": "Next Month", className: t17, onClick: handleClickRightArrow, type: "button" });
742
- $[35] = handleClickRightArrow;
743
- $[36] = t17;
744
- $[37] = t18;
703
+ let t14;
704
+ if ($[29] !== handleClickRightArrow || $[30] !== t13) {
705
+ t14 = /* @__PURE__ */ jsx("button", { "aria-label": "Next Month", className: t13, onClick: handleClickRightArrow, type: "button" });
706
+ $[29] = handleClickRightArrow;
707
+ $[30] = t13;
708
+ $[31] = t14;
745
709
  } else {
746
- t18 = $[37];
710
+ t14 = $[31];
747
711
  }
748
- let t19;
749
- if ($[38] !== t15 || $[39] !== t18) {
750
- t19 = /* @__PURE__ */ jsxs("div", { className: `${ROOT_CLASS_NAME}-range-arrow-wrap`, children: [
751
- t15,
752
- t18
712
+ let t15;
713
+ if ($[32] !== t11 || $[33] !== t14) {
714
+ t15 = /* @__PURE__ */ jsxs("div", { className: `${ROOT_CLASS_NAME}-range-arrow-wrap`, children: [
715
+ t11,
716
+ t14
753
717
  ] });
754
- $[38] = t15;
755
- $[39] = t18;
756
- $[40] = t19;
718
+ $[32] = t11;
719
+ $[33] = t14;
720
+ $[34] = t15;
757
721
  } else {
758
- t19 = $[40];
722
+ t15 = $[34];
759
723
  }
760
- let t20;
761
- if ($[41] !== month || $[42] !== useMonthAbbreviations) {
762
- t20 = useMonthAbbreviations ? getAbbreviatedMonthTitle(month) : void 0;
763
- $[41] = month;
764
- $[42] = useMonthAbbreviations;
765
- $[43] = t20;
724
+ let t16;
725
+ if ($[35] !== month || $[36] !== useMonthAbbreviations) {
726
+ t16 = useMonthAbbreviations ? getAbbreviatedMonthTitle(month) : void 0;
727
+ $[35] = month;
728
+ $[36] = useMonthAbbreviations;
729
+ $[37] = t16;
766
730
  } else {
767
- t20 = $[43];
731
+ t16 = $[37];
768
732
  }
769
- let t21;
770
- if ($[44] !== dateEnd || $[45] !== dateEndPreview || $[46] !== dateStart || $[47] !== handleChange || $[48] !== isRange || $[49] !== month || $[50] !== t20) {
771
- t21 = /* @__PURE__ */ jsx(MonthCalendar, { dateEnd, dateEndPreview, dateStart, isRange, month, onChange: handleChange, onChangeEndPreview: handleChangeEndPreview, title: t20 });
772
- $[44] = dateEnd;
773
- $[45] = dateEndPreview;
774
- $[46] = dateStart;
775
- $[47] = handleChange;
776
- $[48] = isRange;
777
- $[49] = month;
778
- $[50] = t20;
779
- $[51] = t21;
733
+ let t17;
734
+ if ($[38] !== dateEnd || $[39] !== dateEndPreview || $[40] !== dateStart || $[41] !== handleChange || $[42] !== isRange || $[43] !== month || $[44] !== t16) {
735
+ t17 = /* @__PURE__ */ jsx(MonthCalendar, { dateEnd, dateEndPreview, dateStart, isRange, month, onChange: handleChange, onChangeEndPreview: handleChangeEndPreview, title: t16 });
736
+ $[38] = dateEnd;
737
+ $[39] = dateEndPreview;
738
+ $[40] = dateStart;
739
+ $[41] = handleChange;
740
+ $[42] = isRange;
741
+ $[43] = month;
742
+ $[44] = t16;
743
+ $[45] = t17;
780
744
  } else {
781
- t21 = $[51];
745
+ t17 = $[45];
782
746
  }
783
- let t22;
784
- if ($[52] !== dateEnd || $[53] !== dateEndPreview || $[54] !== dateStart || $[55] !== handleChange || $[56] !== isRange || $[57] !== isTwoUp || $[58] !== month || $[59] !== useMonthAbbreviations) {
785
- t22 = isTwoUp ? /* @__PURE__ */ jsx(MonthCalendar, { dateEnd, dateEndPreview, dateStart, isRange, month: month + 1, onChange: handleChange, onChangeEndPreview: handleChangeEndPreview, title: useMonthAbbreviations ? getAbbreviatedMonthTitle(month + 1) : void 0 }) : null;
786
- $[52] = dateEnd;
787
- $[53] = dateEndPreview;
788
- $[54] = dateStart;
789
- $[55] = handleChange;
790
- $[56] = isRange;
791
- $[57] = isTwoUp;
792
- $[58] = month;
793
- $[59] = useMonthAbbreviations;
794
- $[60] = t22;
747
+ let t18;
748
+ if ($[46] !== dateEnd || $[47] !== dateEndPreview || $[48] !== dateStart || $[49] !== handleChange || $[50] !== isRange || $[51] !== isTwoUp || $[52] !== month || $[53] !== useMonthAbbreviations) {
749
+ t18 = isTwoUp ? /* @__PURE__ */ jsx(MonthCalendar, { dateEnd, dateEndPreview, dateStart, isRange, month: month + 1, onChange: handleChange, onChangeEndPreview: handleChangeEndPreview, title: useMonthAbbreviations ? getAbbreviatedMonthTitle(month + 1) : void 0 }) : null;
750
+ $[46] = dateEnd;
751
+ $[47] = dateEndPreview;
752
+ $[48] = dateStart;
753
+ $[49] = handleChange;
754
+ $[50] = isRange;
755
+ $[51] = isTwoUp;
756
+ $[52] = month;
757
+ $[53] = useMonthAbbreviations;
758
+ $[54] = t18;
795
759
  } else {
796
- t22 = $[60];
760
+ t18 = $[54];
797
761
  }
798
- let t23;
799
- if ($[61] !== t21 || $[62] !== t22) {
800
- t23 = /* @__PURE__ */ jsxs("div", { className: `${ROOT_CLASS_NAME}-month-container`, children: [
801
- t21,
802
- t22
762
+ let t19;
763
+ if ($[55] !== t17 || $[56] !== t18) {
764
+ t19 = /* @__PURE__ */ jsxs("div", { className: `${ROOT_CLASS_NAME}-month-container`, children: [
765
+ t17,
766
+ t18
803
767
  ] });
804
- $[61] = t21;
805
- $[62] = t22;
806
- $[63] = t23;
768
+ $[55] = t17;
769
+ $[56] = t18;
770
+ $[57] = t19;
807
771
  } else {
808
- t23 = $[63];
772
+ t19 = $[57];
809
773
  }
810
- let t24;
811
- if ($[64] !== t12 || $[65] !== t19 || $[66] !== t23) {
812
- t24 = /* @__PURE__ */ jsxs(Fragment, { children: [
813
- t11,
814
- /* @__PURE__ */ jsxs("div", { className: t12, children: [
815
- t19,
816
- t23
774
+ let t20;
775
+ if ($[58] !== t15 || $[59] !== t19 || $[60] !== t8) {
776
+ t20 = /* @__PURE__ */ jsxs(Fragment, { children: [
777
+ t7,
778
+ /* @__PURE__ */ jsxs("div", { className: t8, children: [
779
+ t15,
780
+ t19
817
781
  ] })
818
782
  ] });
819
- $[64] = t12;
820
- $[65] = t19;
821
- $[66] = t23;
822
- $[67] = t24;
783
+ $[58] = t15;
784
+ $[59] = t19;
785
+ $[60] = t8;
786
+ $[61] = t20;
823
787
  } else {
824
- t24 = $[67];
788
+ t20 = $[61];
825
789
  }
826
- return t24;
790
+ return t20;
827
791
  }
828
792
  export {
829
793
  DatePicker,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/styles/month-calendar.ts","../src/utils.ts","../src/MonthCalendar.tsx","../src/styles/date-picker.ts","../src/DatePicker.tsx"],"sourcesContent":["export const ROOT_CLASS_NAME = 'uktmonthcalendar';\n\nexport const STYLES = `\n.${ROOT_CLASS_NAME} {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n box-sizing: border-box;\n max-width: 325px;\n}\n\n.${ROOT_CLASS_NAME}-month-title {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n box-sizing: border-box;\n padding-bottom: 25px;\n}\n\nh3.${ROOT_CLASS_NAME}-month-title-text {\n font-size: 18px;\n line-height: 23px;\n font-weight: 600;\n color: #000;\n margin: 0px;\n text-align: center;\n}\n\n.${ROOT_CLASS_NAME}-month-week {\n flex: 0 0 auto;\n display: grid;\n grid-column-gap: 0px;\n grid-template-columns: repeat(auto-fit, minmax(46px, 1fr));\n grid-auto-flow: dense;\n box-sizing: border-box;\n padding-bottom: 12px;\n}\n\n.${ROOT_CLASS_NAME}-month-week .week-day-item {\n flex: 1 1 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.${ROOT_CLASS_NAME}-month-week span.week-day-item-text {\n text-align: center;\n font-size: 13px;\n line-height: 21px;\n margin: 0px;\n color: #9a9a9a;\n}\n\n.${ROOT_CLASS_NAME}-month-days {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n}\n\n.${ROOT_CLASS_NAME}-month-row {\n flex: 1 1 auto;\n display: grid;\n grid-column-gap: 0px;\n grid-template-columns: repeat(auto-fit, minmax(46px, 1fr));\n grid-auto-flow: dense;\n margin-bottom: 1px;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n height: 46px;\n width: 46px;\n cursor: pointer;\n border: none;\n background-color: transparent;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item:disabled {\n cursor: auto;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.is-today span.month-day-item-text {\n color: #eb4e3d;\n}\n\n.${ROOT_CLASS_NAME}.is-range .${ROOT_CLASS_NAME}-month-day-item.is-selected {\n background-color: #f6f6f6;\n}\n\n.${ROOT_CLASS_NAME}.is-range .${ROOT_CLASS_NAME}-month-day-item.start-date {\n background-color: #f6f6f6;\n border-top-left-radius: 50%;\n border-bottom-left-radius: 50%;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.start-date:after {\n background-color: #000;\n opacity: 1;\n visibility: visible;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.start-date span.month-day-item-text {\n color: #fff;\n}\n\n.${ROOT_CLASS_NAME}.is-range .${ROOT_CLASS_NAME}-month-day-item.end-date {\n background-color: #f6f6f6;\n border-top-right-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.end-date:after {\n background-color: #000;\n opacity: 1;\n visibility: visible;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.end-date span.month-day-item-text {\n color: #fff;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item:hover:after,\n.${ROOT_CLASS_NAME}-month-day-item.is-today:hover:after {\n border-color: #000;\n opacity: 1;\n visibility: visible;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item:after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n border-radius: 50%;\n border: 1px solid #000;\n width: 43px;\n height: 43px;\n transition: opacity 0.25s ease-in-out;\n opacity: 0;\n visibility: hidden;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.is-empty:after {\n content: none;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item span.month-day-item-text {\n text-align: center;\n font-size: 13px;\n line-height: 21px;\n margin: 0px;\n color: #000;\n position: relative;\n z-index: 1;\n}\n`;\n","// The following utils work on a “month” as a unique numerical value\n// representing the number of months since the unix epoch (jan 1970)\nconst START_YEAR = 1970;\nconst MONTH_NAMES = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nconst getYearFromDate = (date: Date, asUTC?: boolean) =>\n (asUTC ? date.getUTCFullYear() : date.getFullYear()) - START_YEAR;\n\nexport const getMonthFromDate = (date: Date, asUTC?: boolean) => {\n const yearAsMonths = getYearFromDate(date, asUTC) * 12;\n return yearAsMonths + (asUTC ? date.getUTCMonth() : date.getMonth());\n};\n\nexport const getYearFromMonth = (month: number) => Math.floor(month / 12) + START_YEAR;\n\nexport const getMonthNameFromMonth = (month: number): string => {\n let index = month % 12;\n if (Number.isNaN(index)) return '';\n if (index < 0) index = 12 + index;\n return MONTH_NAMES[index];\n};\n\nexport const getMonthAbbreviationFromMonth = (month: number) => {\n const monthName = getMonthNameFromMonth(month);\n if (monthName === 'September') return 'Sept';\n return monthName.substring(0, 3);\n};\n\nexport const getDateFromMonthAndDay = (month: number, day: number, asUTC?: boolean) => {\n const monthIn12 = month < 0 ? (12 - Math.abs(month % 12)) % 12 : month % 12;\n const year = getYearFromMonth(month);\n return asUTC\n ? new Date(Date.UTC(year, monthIn12, day))\n : new Date(year, monthIn12, day);\n};\n\nexport const getLastDateFromMonth = (month: number, asUTC?: boolean) => {\n // day 0 of the next month is the last day of the current month\n return getDateFromMonthAndDay(month + 1, 0, asUTC);\n};\n","import { Style } from '@acusti/styling';\nimport clsx from 'clsx';\nimport { Fragment } from 'react';\n\nimport { ROOT_CLASS_NAME, STYLES } from './styles/month-calendar.js';\nimport {\n getDateFromMonthAndDay,\n getLastDateFromMonth,\n getMonthFromDate,\n getMonthNameFromMonth,\n getYearFromMonth,\n} from './utils.js';\n\nexport type Props = {\n className?: string;\n dateEnd?: Date | null | number | string;\n dateEndPreview?: null | string;\n dateStart?: Date | null | number | string;\n isRange?: boolean;\n month: number; // a unique numerical value representing the number of months since jan 1970\n onChange?: (date: string) => void;\n onChangeEndPreview?: (date: string) => void;\n title?: string;\n};\n\ntype DateRangeDays = [null | number, null | number, null | number];\n\nconst DAYS = Array(7).fill(null);\n\nexport default function MonthCalendar({\n className,\n dateEnd,\n dateEndPreview,\n dateStart,\n isRange,\n month: _month,\n onChange,\n onChangeEndPreview,\n title,\n}: Props) {\n const today = new Date();\n // props.month must be a finite number within safe integer range\n const month = Number.isFinite(_month)\n ? Math.max(Number.MIN_SAFE_INTEGER, Math.min(Number.MAX_SAFE_INTEGER, _month))\n : getMonthFromDate(today);\n const year = getYearFromMonth(month);\n title = title ?? `${getMonthNameFromMonth(month)} ${year}`;\n const firstDate = getDateFromMonthAndDay(month, 1);\n const lastDate = getLastDateFromMonth(month);\n const totalDays = lastDate.getDate();\n const firstDay = firstDate.getDay();\n const spacesAfterLastDay = 7 - (lastDate.getDay() % 7); // prettier-ignore\n const daySpaces = totalDays + firstDay + spacesAfterLastDay;\n\n const [dateRangeStartDay, dateRangeEndDay, dateRangeEndPreviewDay]: DateRangeDays = [\n dateStart,\n dateEnd,\n dateEndPreview,\n ].reduce(\n (acc: DateRangeDays, date, index) => {\n if (date != null && !(date instanceof Date)) {\n date = new Date(date);\n }\n if (date == null || Number.isNaN(date.getTime())) return acc;\n\n const dateMonth = getMonthFromDate(date);\n if (dateMonth < month) acc[index] = -1;\n else if (dateMonth > month) acc[index] = totalDays + 1;\n else acc[index] = date.getDate();\n if (index === 1) {\n const startDay = acc[index - 1];\n const endDay = acc[index];\n // Ensure that end date is after start date and swap them if not\n if (startDay != null && endDay != null && startDay > endDay) {\n acc[index - 1] = endDay;\n acc[index] = startDay;\n }\n }\n\n return acc;\n },\n [null, null, null],\n );\n\n const handleClickDay = (event: React.SyntheticEvent<HTMLElement>) => {\n const { date } = event.currentTarget.dataset;\n if (date && onChange) onChange(date);\n };\n\n const handleMouseEnterDay = (event: React.SyntheticEvent<HTMLElement>) => {\n if (isRange && onChangeEndPreview) {\n const { date } = event.currentTarget.dataset;\n if (date) onChangeEndPreview(date);\n }\n };\n\n return (\n <Fragment>\n <Style href=\"@acusti/date-picker/MonthCalendar\">{STYLES}</Style>\n <div className={clsx(ROOT_CLASS_NAME, className, { 'is-range': isRange })}>\n <div className={`${ROOT_CLASS_NAME}-month-title`}>\n <h3 className={`${ROOT_CLASS_NAME}-month-title-text`}>{title}</h3>\n </div>\n <div className={`${ROOT_CLASS_NAME}-month-week`}>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Su</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Mo</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Tu</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">We</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Th</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Fr</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Sa</span>\n </div>\n </div>\n <div className={`${ROOT_CLASS_NAME}-month-days`}>\n {Array(Math.floor(daySpaces / 7))\n .fill(null)\n .map((_, weekIndex) => (\n <div\n className={`${ROOT_CLASS_NAME}-month-row`}\n key={`MonthRow-${weekIndex}`}\n >\n {DAYS.map((__, dayIndex) => {\n dayIndex += weekIndex * 7;\n const dayNumber = (dayIndex - firstDay) + 1; // prettier-ignore\n const isEmpty =\n dayNumber < 1 || dayNumber > totalDays;\n const date = isEmpty\n ? null\n : getDateFromMonthAndDay(month, dayNumber);\n const isAfterDateRangeStart =\n dateRangeStartDay != null &&\n dayNumber > dateRangeStartDay;\n const isBeforeDateRangeEnd =\n (dateRangeEndDay == null &&\n dateRangeEndPreviewDay != null &&\n dayNumber < dateRangeEndPreviewDay) ||\n (dateRangeEndDay != null &&\n dayNumber < dateRangeEndDay);\n\n return (\n <button\n className={clsx(\n `${ROOT_CLASS_NAME}-month-day-item`,\n {\n 'end-date':\n !isEmpty &&\n dayNumber === dateRangeEndDay,\n 'is-empty': isEmpty,\n 'is-selected':\n !isEmpty &&\n isAfterDateRangeStart &&\n isBeforeDateRangeEnd,\n 'is-today':\n !isEmpty &&\n month ===\n getMonthFromDate(today) &&\n dayNumber === today.getDate(),\n 'start-date':\n !isEmpty &&\n dayNumber === dateRangeStartDay,\n },\n )}\n data-date={date?.toISOString()}\n disabled={isEmpty}\n key={`MonthDayItem-${dayNumber}`}\n onClick={handleClickDay}\n onMouseEnter={handleMouseEnterDay}\n type=\"button\"\n >\n {isEmpty ? null : (\n <span className=\"month-day-item-text\">\n {dayNumber}\n </span>\n )}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </Fragment>\n );\n}\n","export const ROOT_CLASS_NAME = 'uktdatepicker';\n\nexport const STYLES = `\n.${ROOT_CLASS_NAME} {\n display: flex;\n box-sizing: border-box;\n padding: 40px 60px 60px;\n flex: 1 1 auto;\n position: relative;\n max-width: 450px;\n}\n\n.${ROOT_CLASS_NAME}.two-up {\n max-width: 820px;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow-wrap {\n position: absolute;\n top: 30px;\n left: 0px;\n display: flex;\n justify-content: space-between;\n height: 0px;\n width: 100%;\n padding: 0px 60px;\n box-sizing: border-box;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow {\n background-color: transparent;\n border: 0;\n width: 35px;\n height: 35px;\n text-align: center;\n cursor: pointer;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow.disabled {\n color: #ccc;\n cursor: default;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow:active {\n transform: translateY(1px);\n}\n\n.${ROOT_CLASS_NAME}-range-arrow.left-arrow:after,\n.${ROOT_CLASS_NAME}-range-arrow.right-arrow:after {\n content: \"‹\";\n font-size: 24px;\n line-height: 35px;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow.right-arrow:after {\n content: \"›\";\n}\n\n.${ROOT_CLASS_NAME}-month-container {\n display: flex;\n flex: 1 1 auto;\n justify-content: space-between;\n}\n`;\n","import { Style } from '@acusti/styling';\nimport clsx from 'clsx';\nimport { Fragment, useEffect, useRef, useState } from 'react';\n\nimport MonthCalendar from './MonthCalendar.js';\nimport { ROOT_CLASS_NAME, STYLES } from './styles/date-picker.js';\nimport {\n getMonthAbbreviationFromMonth,\n getMonthFromDate,\n getYearFromMonth,\n} from './utils.js';\n\nexport type Props = {\n className?: string;\n dateEnd?: Date | null | number | string;\n dateStart?: Date | null | number | string;\n initialMonth?: number;\n isRange?: boolean;\n isTwoUp?: boolean;\n monthLimitFirst?: number;\n monthLimitLast?: number;\n onChange: (payload: { dateEnd?: null | string; dateStart: string }) => void;\n /**\n * Boolean to specify that date picker should initially render with the\n * end date’s month visible. The default behavior is to initially render\n * with the start date’s month visible.\n */\n showEndInitially?: boolean;\n useMonthAbbreviations?: boolean;\n};\n\nconst getAbbreviatedMonthTitle = (month: number) =>\n `${getMonthAbbreviationFromMonth(month)} ${getYearFromMonth(month)}`;\n\nconst normalizeDate = (date: Date | null | number | string | undefined) => {\n if (date == null || date === '') return null;\n return typeof date === 'string' ? date : new Date(date).toISOString();\n};\n\nexport default function DatePicker({\n className,\n dateEnd: _dateEnd,\n dateStart: _dateStart,\n initialMonth,\n isRange: _isRange,\n isTwoUp,\n monthLimitFirst,\n monthLimitLast: _monthLimitLast,\n onChange,\n showEndInitially,\n useMonthAbbreviations,\n}: Props) {\n const isRange = _isRange ?? _dateEnd != null;\n // In two-up view we see 1 more month, so monthLimitLast needs to be 1 less\n const monthLimitLast =\n isTwoUp && _monthLimitLast != null ? _monthLimitLast - 1 : _monthLimitLast;\n const dateEndFromProps = normalizeDate(_dateEnd);\n const dateStartFromProps = normalizeDate(_dateStart);\n const [dateEnd, setDateEnd] = useState(dateEndFromProps);\n const [dateStart, setDateStart] = useState(dateStartFromProps);\n const updatingDateEndRef = useRef(false);\n\n useEffect(() => {\n if (dateEndFromProps == null) return;\n setDateEnd(dateEndFromProps);\n }, [dateEndFromProps]);\n\n useEffect(() => {\n if (dateStartFromProps == null) return;\n setDateStart(dateStartFromProps);\n }, [dateStartFromProps]);\n\n if (initialMonth == null) {\n // if no valid initial date, initially show present month as date end\n const useDateEnd = dateStart == null || Boolean(showEndInitially && dateEnd);\n // use date from props if set\n const initialDate = useDateEnd ? dateEnd : dateStart;\n initialMonth = getMonthFromDate(\n initialDate == null ? new Date() : new Date(initialDate),\n );\n if (useDateEnd && isTwoUp) {\n initialMonth -= 1;\n }\n }\n\n // clamp initial month to monthLimit bounds\n const maxInitialMonth =\n (monthLimitLast ?? Number.MAX_SAFE_INTEGER) + (isTwoUp ? -1 : 0);\n initialMonth = Math.max(\n Math.min(initialMonth, maxInitialMonth),\n monthLimitFirst ?? Number.MIN_SAFE_INTEGER,\n );\n const [month, setMonth] = useState<number>(initialMonth);\n const [dateEndPreview, setDateEndPreview] = useState<null | string>(null);\n\n const delta = isTwoUp ? 2 : 1;\n\n const handleClickLeftArrow = () => {\n setMonth((existingMonth: number) =>\n Math.max(existingMonth - delta, monthLimitFirst ?? -Infinity),\n );\n };\n\n const handleClickRightArrow = () => {\n setMonth((existingMonth: number) =>\n Math.min(existingMonth + delta, monthLimitLast ?? Infinity),\n );\n };\n\n const handleChange = (date: string) => {\n // If we last set the dateStart or we have a dateStart but no dateEnd, set dateEnd\n if (\n isRange &&\n dateStart != null &&\n (updatingDateEndRef.current || dateEnd == null)\n ) {\n // Ensure that dateEnd is after dateStart; if not, swap them\n if (date < dateStart) {\n setDateStart(date);\n setDateEnd(dateStart);\n onChange({ dateEnd: dateStart, dateStart: date });\n } else {\n setDateEnd(date);\n onChange({ dateEnd: date, dateStart });\n }\n updatingDateEndRef.current = false;\n } else {\n setDateStart(date);\n setDateEnd(null);\n if (isRange) {\n onChange({ dateEnd: null, dateStart: date });\n updatingDateEndRef.current = true;\n } else {\n onChange({ dateStart: date });\n }\n }\n };\n\n const handleChangeEndPreview = (date: string) => {\n setDateEndPreview(date);\n };\n\n return (\n <Fragment>\n <Style href=\"@acusti/date-picker/DatePicker\">{STYLES}</Style>\n <div\n className={clsx(ROOT_CLASS_NAME, className, {\n 'two-up': isTwoUp,\n })}\n >\n <div className={`${ROOT_CLASS_NAME}-range-arrow-wrap`}>\n <button\n aria-label=\"Previous Month\"\n className={clsx(`${ROOT_CLASS_NAME}-range-arrow left-arrow`, {\n disabled: monthLimitFirst != null && month <= monthLimitFirst,\n })}\n onClick={handleClickLeftArrow}\n type=\"button\"\n />\n <button\n aria-label=\"Next Month\"\n className={clsx(`${ROOT_CLASS_NAME}-range-arrow right-arrow`, {\n disabled: monthLimitLast != null && month >= monthLimitLast,\n })}\n onClick={handleClickRightArrow}\n type=\"button\"\n />\n </div>\n <div className={`${ROOT_CLASS_NAME}-month-container`}>\n <MonthCalendar\n dateEnd={dateEnd}\n dateEndPreview={dateEndPreview}\n dateStart={dateStart}\n isRange={isRange}\n month={month}\n onChange={handleChange}\n onChangeEndPreview={handleChangeEndPreview}\n title={\n useMonthAbbreviations\n ? getAbbreviatedMonthTitle(month)\n : undefined\n }\n />\n {isTwoUp ? (\n <MonthCalendar\n dateEnd={dateEnd}\n dateEndPreview={dateEndPreview}\n dateStart={dateStart}\n isRange={isRange}\n month={month + 1}\n onChange={handleChange}\n onChangeEndPreview={handleChangeEndPreview}\n title={\n useMonthAbbreviations\n ? getAbbreviatedMonthTitle(month + 1)\n : undefined\n }\n />\n ) : null}\n </div>\n </div>\n </Fragment>\n );\n}\n"],"names":["ROOT_CLASS_NAME","STYLES","START_YEAR","MONTH_NAMES","getYearFromDate","date","asUTC","getUTCFullYear","getFullYear","getMonthFromDate","yearAsMonths","getUTCMonth","getMonth","getYearFromMonth","month","Math","floor","getMonthNameFromMonth","index","Number","isNaN","getMonthAbbreviationFromMonth","monthName","substring","getDateFromMonthAndDay","day","monthIn12","abs","year","Date","UTC","getLastDateFromMonth","DAYS","Array","fill","MonthCalendar","t0","$","_c","className","dateEnd","dateEndPreview","dateStart","isRange","_month","onChange","onChangeEndPreview","title","T0","t1","t2","t3","t4","t5","t6","today","isFinite","max","MIN_SAFE_INTEGER","min","MAX_SAFE_INTEGER","firstDate","lastDate","totalDays","getDate","firstDay","getDay","spacesAfterLastDay","daySpaces","dateRangeStartDay","dateRangeEndDay","dateRangeEndPreviewDay","reduce","acc","getTime","dateMonth","startDay","endDay","t7","event","date_0","currentTarget","dataset","handleClickDay","t8","event_0","date_1","handleMouseEnterDay","Fragment","Symbol","for","clsx","t9","t10","t11","t12","t13","t14","map","_","weekIndex","__","dayIndex","dayNumber","isEmpty","date_2","isAfterDateRangeStart","isBeforeDateRangeEnd","toISOString","getAbbreviatedMonthTitle","normalizeDate","DatePicker","_dateEnd","_dateStart","initialMonth","_isRange","isTwoUp","monthLimitFirst","monthLimitLast","_monthLimitLast","showEndInitially","useMonthAbbreviations","dateEndFromProps","dateStartFromProps","setDateEnd","useState","setDateStart","updatingDateEndRef","useRef","useEffect","useDateEnd","Boolean","initialDate","maxInitialMonth","setMonth","setDateEndPreview","delta","existingMonth","handleClickLeftArrow","existingMonth_0","Infinity","handleClickRightArrow","current","handleChange","handleChangeEndPreview","disabled","t15","t16","t17","t18","t19","t20","undefined","t21","t22","t23","t24"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/styles/month-calendar.ts","../src/utils.ts","../src/MonthCalendar.tsx","../src/styles/date-picker.ts","../src/DatePicker.tsx"],"sourcesContent":["export const ROOT_CLASS_NAME = 'uktmonthcalendar';\n\nexport const STYLES = `\n.${ROOT_CLASS_NAME} {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n box-sizing: border-box;\n max-width: 325px;\n}\n\n.${ROOT_CLASS_NAME}-month-title {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n box-sizing: border-box;\n padding-bottom: 25px;\n}\n\nh3.${ROOT_CLASS_NAME}-month-title-text {\n font-size: 18px;\n line-height: 23px;\n font-weight: 600;\n color: #000;\n margin: 0px;\n text-align: center;\n}\n\n.${ROOT_CLASS_NAME}-month-week {\n flex: 0 0 auto;\n display: grid;\n grid-column-gap: 0px;\n grid-template-columns: repeat(auto-fit, minmax(46px, 1fr));\n grid-auto-flow: dense;\n box-sizing: border-box;\n padding-bottom: 12px;\n}\n\n.${ROOT_CLASS_NAME}-month-week .week-day-item {\n flex: 1 1 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.${ROOT_CLASS_NAME}-month-week span.week-day-item-text {\n text-align: center;\n font-size: 13px;\n line-height: 21px;\n margin: 0px;\n color: #9a9a9a;\n}\n\n.${ROOT_CLASS_NAME}-month-days {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n}\n\n.${ROOT_CLASS_NAME}-month-row {\n flex: 1 1 auto;\n display: grid;\n grid-column-gap: 0px;\n grid-template-columns: repeat(auto-fit, minmax(46px, 1fr));\n grid-auto-flow: dense;\n margin-bottom: 1px;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n height: 46px;\n width: 46px;\n cursor: pointer;\n border: none;\n background-color: transparent;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item:disabled {\n cursor: auto;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.is-today span.month-day-item-text {\n color: #eb4e3d;\n}\n\n.${ROOT_CLASS_NAME}.is-range .${ROOT_CLASS_NAME}-month-day-item.is-selected {\n background-color: #f6f6f6;\n}\n\n.${ROOT_CLASS_NAME}.is-range .${ROOT_CLASS_NAME}-month-day-item.start-date {\n background-color: #f6f6f6;\n border-top-left-radius: 50%;\n border-bottom-left-radius: 50%;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.start-date:after {\n background-color: #000;\n opacity: 1;\n visibility: visible;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.start-date span.month-day-item-text {\n color: #fff;\n}\n\n.${ROOT_CLASS_NAME}.is-range .${ROOT_CLASS_NAME}-month-day-item.end-date {\n background-color: #f6f6f6;\n border-top-right-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.end-date:after {\n background-color: #000;\n opacity: 1;\n visibility: visible;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.end-date span.month-day-item-text {\n color: #fff;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item:hover:after,\n.${ROOT_CLASS_NAME}-month-day-item.is-today:hover:after {\n border-color: #000;\n opacity: 1;\n visibility: visible;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item:after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n border-radius: 50%;\n border: 1px solid #000;\n width: 43px;\n height: 43px;\n transition: opacity 0.25s ease-in-out;\n opacity: 0;\n visibility: hidden;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item.is-empty:after {\n content: none;\n}\n\n.${ROOT_CLASS_NAME}-month-day-item span.month-day-item-text {\n text-align: center;\n font-size: 13px;\n line-height: 21px;\n margin: 0px;\n color: #000;\n position: relative;\n z-index: 1;\n}\n`;\n","// The following utils work on a “month” as a unique numerical value\n// representing the number of months since the unix epoch (jan 1970)\nconst START_YEAR = 1970;\nconst MONTH_NAMES = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nconst getYearFromDate = (date: Date, asUTC?: boolean) =>\n (asUTC ? date.getUTCFullYear() : date.getFullYear()) - START_YEAR;\n\nexport const getMonthFromDate = (date: Date, asUTC?: boolean) => {\n const yearAsMonths = getYearFromDate(date, asUTC) * 12;\n return yearAsMonths + (asUTC ? date.getUTCMonth() : date.getMonth());\n};\n\nexport const getYearFromMonth = (month: number) => Math.floor(month / 12) + START_YEAR;\n\nexport const getMonthNameFromMonth = (month: number): string => {\n let index = month % 12;\n if (Number.isNaN(index)) return '';\n if (index < 0) index = 12 + index;\n return MONTH_NAMES[index];\n};\n\nexport const getMonthAbbreviationFromMonth = (month: number) => {\n const monthName = getMonthNameFromMonth(month);\n if (monthName === 'September') return 'Sept';\n return monthName.substring(0, 3);\n};\n\nexport const getDateFromMonthAndDay = (month: number, day: number, asUTC?: boolean) => {\n const monthIn12 = month < 0 ? (12 - Math.abs(month % 12)) % 12 : month % 12;\n const year = getYearFromMonth(month);\n return asUTC\n ? new Date(Date.UTC(year, monthIn12, day))\n : new Date(year, monthIn12, day);\n};\n\nexport const getLastDateFromMonth = (month: number, asUTC?: boolean) => {\n // day 0 of the next month is the last day of the current month\n return getDateFromMonthAndDay(month + 1, 0, asUTC);\n};\n","import { Style } from '@acusti/styling';\nimport clsx from 'clsx';\nimport { Fragment } from 'react';\n\nimport { ROOT_CLASS_NAME, STYLES } from './styles/month-calendar.js';\nimport {\n getDateFromMonthAndDay,\n getLastDateFromMonth,\n getMonthFromDate,\n getMonthNameFromMonth,\n getYearFromMonth,\n} from './utils.js';\n\nexport type Props = {\n className?: string;\n dateEnd?: Date | null | number | string;\n dateEndPreview?: null | string;\n dateStart?: Date | null | number | string;\n isRange?: boolean;\n month: number; // a unique numerical value representing the number of months since jan 1970\n onChange?: (date: string) => void;\n onChangeEndPreview?: (date: string) => void;\n title?: string;\n};\n\ntype DateRangeDays = [null | number, null | number, null | number];\n\nconst DAYS = Array(7).fill(null);\n\nexport default function MonthCalendar({\n className,\n dateEnd,\n dateEndPreview,\n dateStart,\n isRange,\n month: _month,\n onChange,\n onChangeEndPreview,\n title,\n}: Props) {\n const today = new Date();\n // props.month must be a finite number within safe integer range\n const month = Number.isFinite(_month)\n ? Math.max(Number.MIN_SAFE_INTEGER, Math.min(Number.MAX_SAFE_INTEGER, _month))\n : getMonthFromDate(today);\n const year = getYearFromMonth(month);\n title = title ?? `${getMonthNameFromMonth(month)} ${year}`;\n const firstDate = getDateFromMonthAndDay(month, 1);\n const lastDate = getLastDateFromMonth(month);\n const totalDays = lastDate.getDate();\n const firstDay = firstDate.getDay();\n const spacesAfterLastDay = 7 - (lastDate.getDay() % 7); // prettier-ignore\n const daySpaces = totalDays + firstDay + spacesAfterLastDay;\n\n const [dateRangeStartDay, dateRangeEndDay, dateRangeEndPreviewDay]: DateRangeDays = [\n dateStart,\n dateEnd,\n dateEndPreview,\n ].reduce(\n (acc: DateRangeDays, date, index) => {\n if (date != null && !(date instanceof Date)) {\n date = new Date(date);\n }\n if (date == null || Number.isNaN(date.getTime())) return acc;\n\n const dateMonth = getMonthFromDate(date);\n if (dateMonth < month) acc[index] = -1;\n else if (dateMonth > month) acc[index] = totalDays + 1;\n else acc[index] = date.getDate();\n if (index === 1) {\n const startDay = acc[index - 1];\n const endDay = acc[index];\n // Ensure that end date is after start date and swap them if not\n if (startDay != null && endDay != null && startDay > endDay) {\n acc[index - 1] = endDay;\n acc[index] = startDay;\n }\n }\n\n return acc;\n },\n [null, null, null],\n );\n\n const handleClickDay = (event: React.SyntheticEvent<HTMLElement>) => {\n const { date } = event.currentTarget.dataset;\n if (date && onChange) onChange(date);\n };\n\n const handleMouseEnterDay = (event: React.SyntheticEvent<HTMLElement>) => {\n if (isRange && onChangeEndPreview) {\n const { date } = event.currentTarget.dataset;\n if (date) onChangeEndPreview(date);\n }\n };\n\n return (\n <Fragment>\n <Style href=\"@acusti/date-picker/MonthCalendar\">{STYLES}</Style>\n <div className={clsx(ROOT_CLASS_NAME, className, { 'is-range': isRange })}>\n <div className={`${ROOT_CLASS_NAME}-month-title`}>\n <h3 className={`${ROOT_CLASS_NAME}-month-title-text`}>{title}</h3>\n </div>\n <div className={`${ROOT_CLASS_NAME}-month-week`}>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Su</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Mo</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Tu</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">We</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Th</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Fr</span>\n </div>\n <div className=\"week-day-item\">\n <span className=\"week-day-item-text\">Sa</span>\n </div>\n </div>\n <div className={`${ROOT_CLASS_NAME}-month-days`}>\n {Array(Math.floor(daySpaces / 7))\n .fill(null)\n .map((_, weekIndex) => (\n <div\n className={`${ROOT_CLASS_NAME}-month-row`}\n key={`MonthRow-${weekIndex}`}\n >\n {DAYS.map((__, dayIndex) => {\n dayIndex += weekIndex * 7;\n const dayNumber = (dayIndex - firstDay) + 1; // prettier-ignore\n const isEmpty =\n dayNumber < 1 || dayNumber > totalDays;\n const date = isEmpty\n ? null\n : getDateFromMonthAndDay(month, dayNumber);\n const isAfterDateRangeStart =\n dateRangeStartDay != null &&\n dayNumber > dateRangeStartDay;\n const isBeforeDateRangeEnd =\n (dateRangeEndDay == null &&\n dateRangeEndPreviewDay != null &&\n dayNumber < dateRangeEndPreviewDay) ||\n (dateRangeEndDay != null &&\n dayNumber < dateRangeEndDay);\n\n return (\n <button\n className={clsx(\n `${ROOT_CLASS_NAME}-month-day-item`,\n {\n 'end-date':\n !isEmpty &&\n dayNumber === dateRangeEndDay,\n 'is-empty': isEmpty,\n 'is-selected':\n !isEmpty &&\n isAfterDateRangeStart &&\n isBeforeDateRangeEnd,\n 'is-today':\n !isEmpty &&\n month ===\n getMonthFromDate(today) &&\n dayNumber === today.getDate(),\n 'start-date':\n !isEmpty &&\n dayNumber === dateRangeStartDay,\n },\n )}\n data-date={date?.toISOString()}\n disabled={isEmpty}\n key={`MonthDayItem-${dayNumber}`}\n onClick={handleClickDay}\n onMouseEnter={handleMouseEnterDay}\n type=\"button\"\n >\n {isEmpty ? null : (\n <span className=\"month-day-item-text\">\n {dayNumber}\n </span>\n )}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n </Fragment>\n );\n}\n","export const ROOT_CLASS_NAME = 'uktdatepicker';\n\nexport const STYLES = `\n.${ROOT_CLASS_NAME} {\n display: flex;\n box-sizing: border-box;\n padding: 40px 60px 60px;\n flex: 1 1 auto;\n position: relative;\n max-width: 450px;\n}\n\n.${ROOT_CLASS_NAME}.two-up {\n max-width: 820px;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow-wrap {\n position: absolute;\n top: 30px;\n left: 0px;\n display: flex;\n justify-content: space-between;\n height: 0px;\n width: 100%;\n padding: 0px 60px;\n box-sizing: border-box;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow {\n background-color: transparent;\n border: 0;\n width: 35px;\n height: 35px;\n text-align: center;\n cursor: pointer;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow.disabled {\n color: #ccc;\n cursor: default;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow:active {\n transform: translateY(1px);\n}\n\n.${ROOT_CLASS_NAME}-range-arrow.left-arrow:after,\n.${ROOT_CLASS_NAME}-range-arrow.right-arrow:after {\n content: \"‹\";\n font-size: 24px;\n line-height: 35px;\n}\n\n.${ROOT_CLASS_NAME}-range-arrow.right-arrow:after {\n content: \"›\";\n}\n\n.${ROOT_CLASS_NAME}-month-container {\n display: flex;\n flex: 1 1 auto;\n justify-content: space-between;\n}\n`;\n","import { Style } from '@acusti/styling';\nimport clsx from 'clsx';\nimport { Fragment, useRef, useState } from 'react';\n\nimport MonthCalendar from './MonthCalendar.js';\nimport { ROOT_CLASS_NAME, STYLES } from './styles/date-picker.js';\nimport {\n getMonthAbbreviationFromMonth,\n getMonthFromDate,\n getYearFromMonth,\n} from './utils.js';\n\nexport type Props = {\n className?: string;\n defaultDateEnd?: Date | null | number | string;\n defaultDateStart?: Date | null | number | string;\n initialMonth?: number;\n isRange?: boolean;\n isTwoUp?: boolean;\n monthLimitFirst?: number;\n monthLimitLast?: number;\n onChange: (payload: { dateEnd?: null | string; dateStart: string }) => void;\n /**\n * Boolean to specify that date picker should initially render with the\n * end date’s month visible. The default behavior is to initially render\n * with the start date’s month visible.\n */\n showEndInitially?: boolean;\n useMonthAbbreviations?: boolean;\n};\n\nconst getAbbreviatedMonthTitle = (month: number) =>\n `${getMonthAbbreviationFromMonth(month)} ${getYearFromMonth(month)}`;\n\nconst normalizeDate = (date: Date | null | number | string | undefined) => {\n if (date == null || date === '') return null;\n return typeof date === 'string' ? date : new Date(date).toISOString();\n};\n\nexport default function DatePicker({\n className,\n defaultDateEnd,\n defaultDateStart,\n initialMonth,\n isRange: _isRange,\n isTwoUp,\n monthLimitFirst,\n monthLimitLast: _monthLimitLast,\n onChange,\n showEndInitially,\n useMonthAbbreviations,\n}: Props) {\n const isRange = _isRange ?? defaultDateEnd != null;\n // In two-up view we see 1 more month, so monthLimitLast needs to be 1 less\n const monthLimitLast =\n isTwoUp && _monthLimitLast != null ? _monthLimitLast - 1 : _monthLimitLast;\n const defaultDateEndNormalized = normalizeDate(defaultDateEnd);\n const defaultDateStartNormalized = normalizeDate(defaultDateStart);\n const [dateEnd, setDateEnd] = useState(defaultDateEndNormalized);\n const [dateStart, setDateStart] = useState(defaultDateStartNormalized);\n const updatingDateEndRef = useRef(false);\n\n if (initialMonth == null) {\n // if no valid initial date, initially show present month as date end\n const useDateEnd = dateStart == null || Boolean(showEndInitially && dateEnd);\n // use date from props if set\n const initialDate = useDateEnd ? dateEnd : dateStart;\n initialMonth = getMonthFromDate(\n initialDate == null ? new Date() : new Date(initialDate),\n );\n if (useDateEnd && isTwoUp) {\n initialMonth -= 1;\n }\n }\n\n // clamp initial month to monthLimit bounds\n const maxInitialMonth =\n (monthLimitLast ?? Number.MAX_SAFE_INTEGER) + (isTwoUp ? -1 : 0);\n initialMonth = Math.max(\n Math.min(initialMonth, maxInitialMonth),\n monthLimitFirst ?? Number.MIN_SAFE_INTEGER,\n );\n const [month, setMonth] = useState<number>(initialMonth);\n const [dateEndPreview, setDateEndPreview] = useState<null | string>(null);\n\n const delta = isTwoUp ? 2 : 1;\n\n const handleClickLeftArrow = () => {\n setMonth((existingMonth: number) =>\n Math.max(existingMonth - delta, monthLimitFirst ?? -Infinity),\n );\n };\n\n const handleClickRightArrow = () => {\n setMonth((existingMonth: number) =>\n Math.min(existingMonth + delta, monthLimitLast ?? Infinity),\n );\n };\n\n const handleChange = (date: string) => {\n // If we last set the dateStart or we have a dateStart but no dateEnd, set dateEnd\n if (\n isRange &&\n dateStart != null &&\n (updatingDateEndRef.current || dateEnd == null)\n ) {\n // Ensure that dateEnd is after dateStart; if not, swap them\n if (date < dateStart) {\n setDateStart(date);\n setDateEnd(dateStart);\n onChange({ dateEnd: dateStart, dateStart: date });\n } else {\n setDateEnd(date);\n onChange({ dateEnd: date, dateStart });\n }\n updatingDateEndRef.current = false;\n } else {\n setDateStart(date);\n setDateEnd(null);\n if (isRange) {\n onChange({ dateEnd: null, dateStart: date });\n updatingDateEndRef.current = true;\n } else {\n onChange({ dateStart: date });\n }\n }\n };\n\n const handleChangeEndPreview = (date: string) => {\n setDateEndPreview(date);\n };\n\n return (\n <Fragment>\n <Style href=\"@acusti/date-picker/DatePicker\">{STYLES}</Style>\n <div\n className={clsx(ROOT_CLASS_NAME, className, {\n 'two-up': isTwoUp,\n })}\n >\n <div className={`${ROOT_CLASS_NAME}-range-arrow-wrap`}>\n <button\n aria-label=\"Previous Month\"\n className={clsx(`${ROOT_CLASS_NAME}-range-arrow left-arrow`, {\n disabled: monthLimitFirst != null && month <= monthLimitFirst,\n })}\n onClick={handleClickLeftArrow}\n type=\"button\"\n />\n <button\n aria-label=\"Next Month\"\n className={clsx(`${ROOT_CLASS_NAME}-range-arrow right-arrow`, {\n disabled: monthLimitLast != null && month >= monthLimitLast,\n })}\n onClick={handleClickRightArrow}\n type=\"button\"\n />\n </div>\n <div className={`${ROOT_CLASS_NAME}-month-container`}>\n <MonthCalendar\n dateEnd={dateEnd}\n dateEndPreview={dateEndPreview}\n dateStart={dateStart}\n isRange={isRange}\n month={month}\n onChange={handleChange}\n onChangeEndPreview={handleChangeEndPreview}\n title={\n useMonthAbbreviations\n ? getAbbreviatedMonthTitle(month)\n : undefined\n }\n />\n {isTwoUp ? (\n <MonthCalendar\n dateEnd={dateEnd}\n dateEndPreview={dateEndPreview}\n dateStart={dateStart}\n isRange={isRange}\n month={month + 1}\n onChange={handleChange}\n onChangeEndPreview={handleChangeEndPreview}\n title={\n useMonthAbbreviations\n ? getAbbreviatedMonthTitle(month + 1)\n : undefined\n }\n />\n ) : null}\n </div>\n </div>\n </Fragment>\n );\n}\n"],"names":["ROOT_CLASS_NAME","STYLES","START_YEAR","MONTH_NAMES","getYearFromDate","date","asUTC","getUTCFullYear","getFullYear","getMonthFromDate","yearAsMonths","getUTCMonth","getMonth","getYearFromMonth","month","Math","floor","getMonthNameFromMonth","index","Number","isNaN","getMonthAbbreviationFromMonth","monthName","substring","getDateFromMonthAndDay","day","monthIn12","abs","year","Date","UTC","getLastDateFromMonth","DAYS","Array","fill","MonthCalendar","t0","$","_c","className","dateEnd","dateEndPreview","dateStart","isRange","_month","onChange","onChangeEndPreview","title","T0","t1","t2","t3","t4","t5","t6","today","isFinite","max","MIN_SAFE_INTEGER","min","MAX_SAFE_INTEGER","firstDate","lastDate","totalDays","getDate","firstDay","getDay","spacesAfterLastDay","daySpaces","dateRangeStartDay","dateRangeEndDay","dateRangeEndPreviewDay","reduce","acc","getTime","dateMonth","startDay","endDay","t7","event","date_0","currentTarget","dataset","handleClickDay","t8","event_0","date_1","handleMouseEnterDay","Fragment","Symbol","for","clsx","t9","t10","t11","t12","t13","t14","map","_","weekIndex","__","dayIndex","dayNumber","isEmpty","date_2","isAfterDateRangeStart","isBeforeDateRangeEnd","toISOString","getAbbreviatedMonthTitle","normalizeDate","DatePicker","defaultDateEnd","defaultDateStart","initialMonth","_isRange","isTwoUp","monthLimitFirst","monthLimitLast","_monthLimitLast","showEndInitially","useMonthAbbreviations","defaultDateEndNormalized","defaultDateStartNormalized","setDateEnd","useState","setDateStart","updatingDateEndRef","useRef","useDateEnd","Boolean","initialDate","maxInitialMonth","setMonth","setDateEndPreview","delta","existingMonth","handleClickLeftArrow","existingMonth_0","Infinity","handleClickRightArrow","current","handleChange","handleChangeEndPreview","disabled","t15","t16","undefined","t17","t18","t19","t20"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acusti/date-picker",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -47,21 +47,21 @@
47
47
  "homepage": "https://github.com/acusti/uikit/tree/main/packages/date-picker#readme",
48
48
  "devDependencies": {
49
49
  "@testing-library/dom": "^10.4.1",
50
- "@testing-library/react": "^16.3.0",
50
+ "@testing-library/react": "^16.3.2",
51
51
  "@testing-library/user-event": "^14.6.1",
52
- "@types/react": "^19.1.10",
53
- "@vitejs/plugin-react": "^5.0.0",
54
- "babel-plugin-react-compiler": "rc",
55
- "happy-dom": "^18.0.1",
56
- "react": "^19.1.1",
57
- "react-dom": "^19.1.1",
52
+ "@types/react": "^19.2.10",
53
+ "@vitejs/plugin-react": "^5.0.4",
54
+ "babel-plugin-react-compiler": "^1",
55
+ "happy-dom": "^20.4.0",
56
+ "react": "^19.2.4",
57
+ "react-dom": "^19.2.4",
58
58
  "typescript": "5.9.2",
59
59
  "unplugin-dts": "^1.0.0-beta.6",
60
- "vite": "^7.1.2",
60
+ "vite": "^7.1.10",
61
61
  "vitest": "^3.2.4"
62
62
  },
63
63
  "dependencies": {
64
- "@acusti/styling": "^2.1.0",
64
+ "@acusti/styling": "^2.1.1",
65
65
  "clsx": "^2"
66
66
  },
67
67
  "peerDependencies": {