react-day-picker 8.4.0 → 8.5.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.
Files changed (89) hide show
  1. package/dist/index.d.ts +123 -70
  2. package/dist/index.esm.js +14 -50
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +122 -158
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.min.js +2 -0
  7. package/dist/index.min.js.map +1 -0
  8. package/dist/style.css +2 -1
  9. package/dist/style.css.d.ts +38 -37
  10. package/dist/style.css.map +1 -0
  11. package/dist/style.module.css +0 -1
  12. package/dist/style.module.css.d.ts +38 -37
  13. package/package.json +35 -32
  14. package/src/DayPicker.tsx +1 -1
  15. package/src/components/Caption/Caption.test.tsx +2 -2
  16. package/src/components/CaptionDropdowns/CaptionDropdowns.test.tsx +7 -6
  17. package/src/components/CaptionLabel/CaptionLabel.test.tsx +1 -1
  18. package/src/components/CaptionLabel/CaptionLabel.tsx +3 -3
  19. package/src/components/CaptionNavigation/CaptionNavigation.test.tsx +11 -10
  20. package/src/components/CaptionNavigation/CaptionNavigation.tsx +1 -1
  21. package/src/components/Day/Day.test.tsx +15 -16
  22. package/src/components/Day/Day.tsx +1 -1
  23. package/src/components/DayContent/DayContent.test.tsx +1 -1
  24. package/src/components/Footer/Footer.test.tsx +1 -1
  25. package/src/components/HeadRow/HeadRow.test.tsx +1 -20
  26. package/src/components/HeadRow/HeadRow.tsx +2 -6
  27. package/src/components/HeadRow/utils/getWeekdays.test.ts +1 -1
  28. package/src/components/HeadRow/utils/getWeekdays.ts +1 -5
  29. package/src/components/Month/Month.test.tsx +1 -1
  30. package/src/components/MonthsDropdown/MonthsDropdown.test.tsx +3 -2
  31. package/src/components/MonthsDropdown/MonthsDropdown.tsx +1 -3
  32. package/src/components/Navigation/Navigation.test.tsx +10 -9
  33. package/src/components/Root/Root.test.tsx +2 -3
  34. package/src/components/Row/Row.tsx +2 -1
  35. package/src/components/Table/Table.tsx +1 -1
  36. package/src/components/Table/__snapshots__/Table.test.tsx.snap +219 -210
  37. package/src/components/Table/utils/daysToMonthWeeks.ts +11 -10
  38. package/src/components/Table/utils/getMonthWeeks.ts +7 -6
  39. package/src/components/YearsDropdown/YearsDropdown.test.tsx +3 -2
  40. package/src/components/YearsDropdown/YearsDropdown.tsx +1 -3
  41. package/src/contexts/DayPicker/DayPickerContext.test.ts +55 -138
  42. package/src/contexts/DayPicker/defaultContextValues.ts +1 -1
  43. package/src/contexts/DayPicker/formatters/formatCaption.test.ts +1 -1
  44. package/src/contexts/DayPicker/formatters/formatCaption.ts +1 -2
  45. package/src/contexts/DayPicker/formatters/formatDay.ts +1 -1
  46. package/src/contexts/DayPicker/formatters/formatMonthCaption.test.ts +1 -1
  47. package/src/contexts/DayPicker/formatters/formatMonthCaption.ts +1 -1
  48. package/src/contexts/DayPicker/formatters/formatWeekdayName.test.ts +3 -3
  49. package/src/contexts/DayPicker/formatters/formatWeekdayName.ts +2 -2
  50. package/src/contexts/DayPicker/formatters/formatYearCaption.ts +1 -1
  51. package/src/contexts/DayPicker/labels/labelDay.ts +1 -1
  52. package/src/contexts/DayPicker/labels/labelWeekday.test.ts +1 -1
  53. package/src/contexts/DayPicker/labels/labelWeekday.ts +1 -1
  54. package/src/contexts/DayPicker/utils/parseFromToProps.ts +1 -3
  55. package/src/contexts/Focus/FocusContext.test.ts +35 -62
  56. package/src/contexts/Focus/FocusContext.tsx +1 -1
  57. package/src/contexts/Focus/utils/getInitialFocusTarget.ts +1 -3
  58. package/src/contexts/Focus/utils/getNextFocus.ts +12 -10
  59. package/src/contexts/Modifiers/ModifiersContext.test.ts +8 -14
  60. package/src/contexts/Modifiers/utils/getActiveModifiers.ts +1 -1
  61. package/src/contexts/Modifiers/utils/isDateInRange.ts +1 -2
  62. package/src/contexts/Modifiers/utils/isMatch.ts +1 -4
  63. package/src/contexts/Navigation/NavigationContext.test.ts +12 -17
  64. package/src/contexts/Navigation/NavigationContext.tsx +1 -3
  65. package/src/contexts/Navigation/useNavigationState.test.ts +9 -16
  66. package/src/contexts/Navigation/useNavigationState.ts +6 -4
  67. package/src/contexts/Navigation/utils/getDisplayMonths.ts +1 -3
  68. package/src/contexts/Navigation/utils/getInitialMonth.ts +1 -3
  69. package/src/contexts/Navigation/utils/getNextMonth.ts +1 -3
  70. package/src/contexts/Navigation/utils/getPreviousMonth.ts +1 -3
  71. package/src/contexts/SelectMultiple/SelectMultipleContext.test.ts +15 -20
  72. package/src/contexts/SelectMultiple/SelectMultipleContext.tsx +1 -1
  73. package/src/contexts/SelectRange/SelectRangeContext.test.ts +23 -29
  74. package/src/contexts/SelectRange/SelectRangeContext.tsx +6 -4
  75. package/src/contexts/SelectRange/utils/addToRange.ts +1 -3
  76. package/src/contexts/SelectSingle/SelectSingleContext.test.ts +18 -15
  77. package/src/hooks/useActiveModifiers/useActiveModifiers.test.tsx +9 -16
  78. package/src/hooks/useControlledValue/useControlledValue.test.ts +16 -39
  79. package/src/hooks/useDayEventHandlers/useDayEventHandlers.test.tsx +18 -78
  80. package/src/hooks/useDayRender/useDayRender.test.tsx +68 -95
  81. package/src/hooks/useDayRender/useDayRender.tsx +5 -8
  82. package/src/hooks/useInput/useInput.ts +2 -4
  83. package/src/hooks/useSelectedDays/useSelectedDays.test.ts +15 -45
  84. package/src/index.ts +1 -0
  85. package/src/style.css +0 -1
  86. package/src/style.css.d.ts +37 -36
  87. package/src/types/Labels.ts +1 -0
  88. package/dist/index.esm.d.ts +0 -1175
  89. package/dist/react-day-picker.min.js +0 -1
package/dist/index.esm.js CHANGED
@@ -1,38 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { createContext, useContext, useState, forwardRef, useEffect, useRef } from 'react';
3
- import enUS from 'date-fns/locale/en-US';
4
- import format from 'date-fns/format';
5
- import endOfMonth from 'date-fns/endOfMonth';
6
- import startOfDay from 'date-fns/startOfDay';
7
- import startOfMonth from 'date-fns/startOfMonth';
8
- import isSameYear from 'date-fns/isSameYear';
9
- import setMonth from 'date-fns/setMonth';
10
- import setYear from 'date-fns/setYear';
11
- import startOfYear from 'date-fns/startOfYear';
12
- import addMonths from 'date-fns/addMonths';
13
- import isBefore from 'date-fns/isBefore';
14
- import isSameMonth from 'date-fns/isSameMonth';
15
- import differenceInCalendarMonths from 'date-fns/differenceInCalendarMonths';
16
- import addDays from 'date-fns/addDays';
17
- import startOfISOWeek from 'date-fns/startOfISOWeek';
18
- import startOfWeek from 'date-fns/startOfWeek';
19
- import getUnixTime from 'date-fns/getUnixTime';
20
- import isSameDay from 'date-fns/isSameDay';
21
- import { isSameDay as isSameDay$1, isAfter as isAfter$1 } from 'date-fns';
22
- import differenceInCalendarDays from 'date-fns/differenceInCalendarDays';
23
- import subDays from 'date-fns/subDays';
24
- import isAfter from 'date-fns/isAfter';
25
- import isDate from 'date-fns/isDate';
26
- import addWeeks from 'date-fns/addWeeks';
27
- import addYears from 'date-fns/addYears';
28
- import endOfISOWeek from 'date-fns/endOfISOWeek';
29
- import endOfWeek from 'date-fns/endOfWeek';
30
- import max from 'date-fns/max';
31
- import min from 'date-fns/min';
32
- import getWeeksInMonth from 'date-fns/getWeeksInMonth';
33
- import getISOWeek from 'date-fns/getISOWeek';
34
- import getWeek from 'date-fns/getWeek';
35
- import parse from 'date-fns/parse';
3
+ import { enUS } from 'date-fns/locale';
4
+ import { format, startOfMonth, endOfMonth, startOfDay, isSameYear, setMonth, setYear, startOfYear, differenceInCalendarMonths, addMonths, isSameMonth, isBefore, startOfISOWeek, startOfWeek, addDays, isSameDay, isAfter, subDays, differenceInCalendarDays, isDate, max, min, addWeeks, addYears, endOfISOWeek, endOfWeek, getUnixTime, getISOWeek, getWeek, getWeeksInMonth, parse } from 'date-fns';
36
5
 
37
6
  /******************************************************************************
38
7
  Copyright (c) Microsoft Corporation.
@@ -176,7 +145,7 @@ function formatWeekNumber(weekNumber) {
176
145
  * The default formatter for the name of the weekday.
177
146
  */
178
147
  function formatWeekdayName(weekday, options) {
179
- return format(weekday, 'cccccc', options);
148
+ return format(weekday, 'cccccc', options).toUpperCase();
180
149
  }
181
150
 
182
151
  /**
@@ -251,8 +220,8 @@ var labels = /*#__PURE__*/Object.freeze({
251
220
  labelMonthDropdown: labelMonthDropdown,
252
221
  labelNext: labelNext,
253
222
  labelPrevious: labelPrevious,
254
- labelWeekday: labelWeekday,
255
223
  labelWeekNumber: labelWeekNumber,
224
+ labelWeekday: labelWeekday,
256
225
  labelYearDropdown: labelYearDropdown
257
226
  });
258
227
 
@@ -354,7 +323,7 @@ function useDayPicker() {
354
323
  /** Render the caption for the displayed month. This component is used when `captionLayout="buttons"`. */
355
324
  function CaptionLabel(props) {
356
325
  var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, formatCaption = _a.formatters.formatCaption;
357
- return (React__default.createElement("h2", { className: classNames.caption_label, style: styles.caption_label, "aria-live": "polite", "aria-atomic": "true", id: props.id }, formatCaption(props.displayMonth, { locale: locale })));
326
+ return (React__default.createElement("div", { className: classNames.caption_label, style: styles.caption_label, "aria-live": "polite", role: "presentation", id: props.id }, formatCaption(props.displayMonth, { locale: locale })));
358
327
  }
359
328
 
360
329
  /**
@@ -788,9 +757,7 @@ function HeadRow() {
788
757
  var weekdays = getWeekdays(locale, weekStartsOn, ISOWeek);
789
758
  return (React__default.createElement("tr", { style: styles.head_row, className: classNames.head_row },
790
759
  showWeekNumber && (React__default.createElement("th", { scope: "col", style: styles.head_cell, className: classNames.head_cell })),
791
- weekdays.map(function (weekday, i) { return (React__default.createElement("th", { key: i, scope: "col", className: classNames.head_cell, style: styles.head_cell },
792
- React__default.createElement("span", { "aria-hidden": true }, formatWeekdayName(weekday, { locale: locale })),
793
- React__default.createElement("span", { className: classNames.vhidden }, labelWeekday(weekday, { locale: locale })))); })));
760
+ weekdays.map(function (weekday, i) { return (React__default.createElement("th", { key: i, scope: "col", className: classNames.head_cell, style: styles.head_cell, "aria-label": labelWeekday(weekday, { locale: locale }) }, formatWeekdayName(weekday, { locale: locale }))); })));
794
761
  }
795
762
 
796
763
  /** Render the table head. */
@@ -969,7 +936,7 @@ function SelectRangeProviderInternal(_a) {
969
936
  }
970
937
  else {
971
938
  modifiers.range_end = [selectedTo];
972
- if (!isSameDay$1(selectedFrom, selectedTo)) {
939
+ if (!isSameDay(selectedFrom, selectedTo)) {
973
940
  modifiers.range_middle = [
974
941
  {
975
942
  after: selectedFrom,
@@ -1223,7 +1190,7 @@ function isMatch(day, matchers) {
1223
1190
  var diffAfter = differenceInCalendarDays(matcher.after, day);
1224
1191
  var isDayBefore = diffBefore > 0;
1225
1192
  var isDayAfter = diffAfter < 0;
1226
- var isClosedInterval = isAfter$1(matcher.before, matcher.after);
1193
+ var isClosedInterval = isAfter(matcher.before, matcher.after);
1227
1194
  if (isClosedInterval) {
1228
1195
  return isDayAfter && isDayBefore;
1229
1196
  }
@@ -1745,9 +1712,6 @@ buttonRef) {
1745
1712
  ]);
1746
1713
  var className = getDayClassNames(dayPicker, activeModifiers).join(' ');
1747
1714
  var style = getDayStyle(dayPicker, activeModifiers);
1748
- var ariaLabel = dayPicker.labels.labelDay(day, activeModifiers, {
1749
- locale: dayPicker.locale
1750
- });
1751
1715
  var isHidden = Boolean((activeModifiers.outside && !dayPicker.showOutsideDays) ||
1752
1716
  activeModifiers.hidden);
1753
1717
  var DayContentComponent = (_c = (_b = dayPicker.components) === null || _b === void 0 ? void 0 : _b.DayContent) !== null && _c !== void 0 ? _c : DayContent;
@@ -1756,13 +1720,13 @@ buttonRef) {
1756
1720
  style: style,
1757
1721
  className: className,
1758
1722
  children: children,
1759
- 'aria-label': ariaLabel
1723
+ role: 'gridcell'
1760
1724
  };
1761
1725
  var isFocusTarget = focusContext.focusTarget &&
1762
1726
  isSameDay(focusContext.focusTarget, day) &&
1763
1727
  !activeModifiers.outside;
1764
1728
  var isFocused = focusContext.focusedDay && isSameDay(focusContext.focusedDay, day);
1765
- var buttonProps = __assign(__assign(__assign({}, divProps), (_a = { disabled: activeModifiers.disabled }, _a['aria-pressed'] = activeModifiers.selected, _a['aria-label'] = ariaLabel, _a.tabIndex = isFocused || isFocusTarget ? 0 : -1, _a)), eventHandlers);
1729
+ var buttonProps = __assign(__assign(__assign({}, divProps), (_a = { disabled: activeModifiers.disabled, role: 'gridcell' }, _a['aria-selected'] = activeModifiers.selected, _a.tabIndex = isFocused || isFocusTarget ? 0 : -1, _a)), eventHandlers);
1766
1730
  var dayRender = {
1767
1731
  isButton: isButton,
1768
1732
  isHidden: isHidden,
@@ -1782,7 +1746,7 @@ function Day(props) {
1782
1746
  var buttonRef = useRef(null);
1783
1747
  var dayRender = useDayRender(props.date, props.displayMonth, buttonRef);
1784
1748
  if (dayRender.isHidden) {
1785
- return React__default.createElement(React__default.Fragment, null);
1749
+ return React__default.createElement("div", { role: "gridcell" });
1786
1750
  }
1787
1751
  if (!dayRender.isButton) {
1788
1752
  return React__default.createElement("div", __assign({}, dayRender.divProps));
@@ -1821,7 +1785,7 @@ function Row(props) {
1821
1785
  }
1822
1786
  return (React__default.createElement("tr", { className: classNames.row, style: styles.row },
1823
1787
  weekNumberCell,
1824
- props.dates.map(function (date) { return (React__default.createElement("td", { className: classNames.cell, style: styles.cell, key: getUnixTime(date) },
1788
+ props.dates.map(function (date) { return (React__default.createElement("td", { className: classNames.cell, style: styles.cell, key: getUnixTime(date), role: "presentation" },
1825
1789
  React__default.createElement(DayComponent, { displayMonth: props.displayMonth, date: date }))); })));
1826
1790
  }
1827
1791
 
@@ -1892,7 +1856,7 @@ function Table(props) {
1892
1856
  var FooterComponent = (_c = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c !== void 0 ? _c : Footer;
1893
1857
  return (React__default.createElement("table", { className: classNames.table, style: styles.table, role: "grid", "aria-labelledby": props['aria-labelledby'] },
1894
1858
  !hideHead && React__default.createElement(HeadComponent, null),
1895
- React__default.createElement("tbody", { className: classNames.tbody, style: styles.tbody }, weeks.map(function (week) { return (React__default.createElement(RowComponent, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber })); })),
1859
+ React__default.createElement("tbody", { className: classNames.tbody, style: styles.tbody, role: "rowgroup" }, weeks.map(function (week) { return (React__default.createElement(RowComponent, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber })); })),
1896
1860
  React__default.createElement(FooterComponent, null)));
1897
1861
  }
1898
1862
 
@@ -2138,7 +2102,7 @@ function RootProvider(props) {
2138
2102
  * For example, to use Spanish locale:
2139
2103
  *
2140
2104
  * ```
2141
- * import es from 'date-fns/locale/es';
2105
+ * import { es } from 'date-fns/locale';
2142
2106
  * <DayPicker locale={es} />
2143
2107
  * ```
2144
2108
  */