react-day-picker 9.1.4 → 9.2.1

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 (293) hide show
  1. package/dist/cjs/DayPicker.js +33 -28
  2. package/dist/cjs/DayPicker.js.map +1 -1
  3. package/dist/cjs/classes/CalendarDay.d.ts +2 -4
  4. package/dist/cjs/classes/CalendarDay.js +2 -4
  5. package/dist/cjs/classes/CalendarDay.js.map +1 -1
  6. package/dist/cjs/classes/DateLib.d.ts +268 -0
  7. package/dist/cjs/classes/DateLib.js +360 -0
  8. package/dist/cjs/classes/DateLib.js.map +1 -0
  9. package/dist/cjs/classes/index.d.ts +1 -0
  10. package/dist/cjs/classes/index.js +1 -0
  11. package/dist/cjs/classes/index.js.map +1 -1
  12. package/dist/cjs/formatters/formatCaption.d.ts +2 -4
  13. package/dist/cjs/formatters/formatCaption.js +3 -5
  14. package/dist/cjs/formatters/formatCaption.js.map +1 -1
  15. package/dist/cjs/formatters/formatDay.d.ts +2 -4
  16. package/dist/cjs/formatters/formatDay.js +3 -5
  17. package/dist/cjs/formatters/formatDay.js.map +1 -1
  18. package/dist/cjs/formatters/formatMonthDropdown.d.ts +1 -1
  19. package/dist/cjs/formatters/formatMonthDropdown.js +2 -2
  20. package/dist/cjs/formatters/formatMonthDropdown.js.map +1 -1
  21. package/dist/cjs/formatters/formatWeekdayName.d.ts +2 -4
  22. package/dist/cjs/formatters/formatWeekdayName.js +3 -5
  23. package/dist/cjs/formatters/formatWeekdayName.js.map +1 -1
  24. package/dist/cjs/helpers/getDates.d.ts +3 -2
  25. package/dist/cjs/helpers/getDates.js +3 -9
  26. package/dist/cjs/helpers/getDates.js.map +1 -1
  27. package/dist/cjs/helpers/getDisplayMonths.d.ts +1 -1
  28. package/dist/cjs/helpers/getFocusableDate.d.ts +2 -2
  29. package/dist/cjs/helpers/getFocusableDate.js +3 -5
  30. package/dist/cjs/helpers/getFocusableDate.js.map +1 -1
  31. package/dist/cjs/helpers/getInitialMonth.d.ts +2 -1
  32. package/dist/cjs/helpers/getInitialMonth.js.map +1 -1
  33. package/dist/cjs/helpers/getMonthOptions.d.ts +2 -2
  34. package/dist/cjs/helpers/getMonthOptions.js +2 -2
  35. package/dist/cjs/helpers/getMonthOptions.js.map +1 -1
  36. package/dist/cjs/helpers/getMonths.d.ts +2 -2
  37. package/dist/cjs/helpers/getMonths.js +3 -15
  38. package/dist/cjs/helpers/getMonths.js.map +1 -1
  39. package/dist/cjs/helpers/getNavMonth.d.ts +2 -2
  40. package/dist/cjs/helpers/getNavMonth.js.map +1 -1
  41. package/dist/cjs/helpers/getNextFocus.d.ts +2 -2
  42. package/dist/cjs/helpers/getNextFocus.js.map +1 -1
  43. package/dist/cjs/helpers/getNextMonth.d.ts +1 -1
  44. package/dist/cjs/helpers/getPreviousMonth.d.ts +1 -1
  45. package/dist/cjs/helpers/getWeekdays.d.ts +5 -7
  46. package/dist/cjs/helpers/getWeekdays.js +5 -8
  47. package/dist/cjs/helpers/getWeekdays.js.map +1 -1
  48. package/dist/cjs/helpers/getYearOptions.d.ts +1 -1
  49. package/dist/cjs/index.d.ts +1 -2
  50. package/dist/cjs/index.js +3 -4
  51. package/dist/cjs/index.js.map +1 -1
  52. package/dist/cjs/labels/labelDayButton.d.ts +2 -4
  53. package/dist/cjs/labels/labelDayButton.js +3 -5
  54. package/dist/cjs/labels/labelDayButton.js.map +1 -1
  55. package/dist/cjs/labels/labelGrid.d.ts +2 -4
  56. package/dist/cjs/labels/labelGrid.js +3 -5
  57. package/dist/cjs/labels/labelGrid.js.map +1 -1
  58. package/dist/cjs/labels/labelGridcell.d.ts +2 -5
  59. package/dist/cjs/labels/labelGridcell.js +3 -5
  60. package/dist/cjs/labels/labelGridcell.js.map +1 -1
  61. package/dist/cjs/labels/labelMonthDropdown.d.ts +2 -2
  62. package/dist/cjs/labels/labelMonthDropdown.js.map +1 -1
  63. package/dist/cjs/labels/labelWeekNumber.d.ts +2 -2
  64. package/dist/cjs/labels/labelWeekNumber.js.map +1 -1
  65. package/dist/cjs/labels/labelWeekNumberHeader.d.ts +2 -2
  66. package/dist/cjs/labels/labelWeekNumberHeader.js.map +1 -1
  67. package/dist/cjs/labels/labelWeekday.d.ts +2 -4
  68. package/dist/cjs/labels/labelWeekday.js +3 -5
  69. package/dist/cjs/labels/labelWeekday.js.map +1 -1
  70. package/dist/cjs/labels/labelYearDropdown.d.ts +2 -2
  71. package/dist/cjs/labels/labelYearDropdown.js.map +1 -1
  72. package/dist/cjs/selection/useMulti.d.ts +1 -1
  73. package/dist/cjs/selection/useMulti.js.map +1 -1
  74. package/dist/cjs/selection/useRange.d.ts +1 -1
  75. package/dist/cjs/selection/useRange.js +2 -1
  76. package/dist/cjs/selection/useRange.js.map +1 -1
  77. package/dist/cjs/selection/useSingle.d.ts +1 -1
  78. package/dist/cjs/selection/useSingle.js.map +1 -1
  79. package/dist/cjs/types/props.d.ts +4 -4
  80. package/dist/cjs/useCalendar.d.ts +2 -3
  81. package/dist/cjs/useCalendar.js.map +1 -1
  82. package/dist/cjs/useFocus.d.ts +1 -2
  83. package/dist/cjs/useFocus.js.map +1 -1
  84. package/dist/cjs/useGetModifiers.d.ts +1 -2
  85. package/dist/cjs/useGetModifiers.js.map +1 -1
  86. package/dist/cjs/useSelection.d.ts +1 -1
  87. package/dist/cjs/utils/addToRange.d.ts +1 -1
  88. package/dist/cjs/utils/addToRange.js +2 -2
  89. package/dist/cjs/utils/addToRange.js.map +1 -1
  90. package/dist/cjs/utils/dateMatchModifiers.d.ts +1 -1
  91. package/dist/cjs/utils/dateMatchModifiers.js +2 -2
  92. package/dist/cjs/utils/dateMatchModifiers.js.map +1 -1
  93. package/dist/cjs/utils/rangeIncludesDate.d.ts +1 -4
  94. package/dist/cjs/utils/rangeIncludesDate.js +3 -5
  95. package/dist/cjs/utils/rangeIncludesDate.js.map +1 -1
  96. package/dist/cjs/utils/typeguards.d.ts +1 -1
  97. package/dist/esm/DayPicker.js +33 -28
  98. package/dist/esm/DayPicker.js.map +1 -1
  99. package/dist/esm/classes/CalendarDay.d.ts +2 -4
  100. package/dist/esm/classes/CalendarDay.js +2 -4
  101. package/dist/esm/classes/CalendarDay.js.map +1 -1
  102. package/dist/esm/classes/DateLib.d.ts +268 -0
  103. package/dist/esm/classes/DateLib.js +355 -0
  104. package/dist/esm/classes/DateLib.js.map +1 -0
  105. package/dist/esm/classes/index.d.ts +1 -0
  106. package/dist/esm/classes/index.js +1 -0
  107. package/dist/esm/classes/index.js.map +1 -1
  108. package/dist/esm/formatters/formatCaption.d.ts +2 -4
  109. package/dist/esm/formatters/formatCaption.js +3 -5
  110. package/dist/esm/formatters/formatCaption.js.map +1 -1
  111. package/dist/esm/formatters/formatDay.d.ts +2 -4
  112. package/dist/esm/formatters/formatDay.js +3 -5
  113. package/dist/esm/formatters/formatDay.js.map +1 -1
  114. package/dist/esm/formatters/formatMonthDropdown.d.ts +1 -1
  115. package/dist/esm/formatters/formatMonthDropdown.js +2 -2
  116. package/dist/esm/formatters/formatMonthDropdown.js.map +1 -1
  117. package/dist/esm/formatters/formatWeekdayName.d.ts +2 -4
  118. package/dist/esm/formatters/formatWeekdayName.js +3 -5
  119. package/dist/esm/formatters/formatWeekdayName.js.map +1 -1
  120. package/dist/esm/helpers/getDates.d.ts +3 -2
  121. package/dist/esm/helpers/getDates.js +3 -9
  122. package/dist/esm/helpers/getDates.js.map +1 -1
  123. package/dist/esm/helpers/getDisplayMonths.d.ts +1 -1
  124. package/dist/esm/helpers/getFocusableDate.d.ts +2 -2
  125. package/dist/esm/helpers/getFocusableDate.js +3 -5
  126. package/dist/esm/helpers/getFocusableDate.js.map +1 -1
  127. package/dist/esm/helpers/getInitialMonth.d.ts +2 -1
  128. package/dist/esm/helpers/getInitialMonth.js.map +1 -1
  129. package/dist/esm/helpers/getMonthOptions.d.ts +2 -2
  130. package/dist/esm/helpers/getMonthOptions.js +2 -2
  131. package/dist/esm/helpers/getMonthOptions.js.map +1 -1
  132. package/dist/esm/helpers/getMonths.d.ts +2 -2
  133. package/dist/esm/helpers/getMonths.js +3 -15
  134. package/dist/esm/helpers/getMonths.js.map +1 -1
  135. package/dist/esm/helpers/getNavMonth.d.ts +2 -2
  136. package/dist/esm/helpers/getNavMonth.js.map +1 -1
  137. package/dist/esm/helpers/getNextFocus.d.ts +2 -2
  138. package/dist/esm/helpers/getNextFocus.js.map +1 -1
  139. package/dist/esm/helpers/getNextMonth.d.ts +1 -1
  140. package/dist/esm/helpers/getPreviousMonth.d.ts +1 -1
  141. package/dist/esm/helpers/getWeekdays.d.ts +5 -7
  142. package/dist/esm/helpers/getWeekdays.js +5 -8
  143. package/dist/esm/helpers/getWeekdays.js.map +1 -1
  144. package/dist/esm/helpers/getYearOptions.d.ts +1 -1
  145. package/dist/esm/index.d.ts +1 -2
  146. package/dist/esm/index.js +1 -2
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/labels/labelDayButton.d.ts +2 -4
  149. package/dist/esm/labels/labelDayButton.js +3 -5
  150. package/dist/esm/labels/labelDayButton.js.map +1 -1
  151. package/dist/esm/labels/labelGrid.d.ts +2 -4
  152. package/dist/esm/labels/labelGrid.js +3 -5
  153. package/dist/esm/labels/labelGrid.js.map +1 -1
  154. package/dist/esm/labels/labelGridcell.d.ts +2 -5
  155. package/dist/esm/labels/labelGridcell.js +3 -5
  156. package/dist/esm/labels/labelGridcell.js.map +1 -1
  157. package/dist/esm/labels/labelMonthDropdown.d.ts +2 -2
  158. package/dist/esm/labels/labelMonthDropdown.js.map +1 -1
  159. package/dist/esm/labels/labelWeekNumber.d.ts +2 -2
  160. package/dist/esm/labels/labelWeekNumber.js.map +1 -1
  161. package/dist/esm/labels/labelWeekNumberHeader.d.ts +2 -2
  162. package/dist/esm/labels/labelWeekNumberHeader.js.map +1 -1
  163. package/dist/esm/labels/labelWeekday.d.ts +2 -4
  164. package/dist/esm/labels/labelWeekday.js +3 -5
  165. package/dist/esm/labels/labelWeekday.js.map +1 -1
  166. package/dist/esm/labels/labelYearDropdown.d.ts +2 -2
  167. package/dist/esm/labels/labelYearDropdown.js.map +1 -1
  168. package/dist/esm/selection/useMulti.d.ts +1 -1
  169. package/dist/esm/selection/useMulti.js.map +1 -1
  170. package/dist/esm/selection/useRange.d.ts +1 -1
  171. package/dist/esm/selection/useRange.js +2 -1
  172. package/dist/esm/selection/useRange.js.map +1 -1
  173. package/dist/esm/selection/useSingle.d.ts +1 -1
  174. package/dist/esm/selection/useSingle.js.map +1 -1
  175. package/dist/esm/types/props.d.ts +4 -4
  176. package/dist/esm/useCalendar.d.ts +2 -3
  177. package/dist/esm/useCalendar.js.map +1 -1
  178. package/dist/esm/useFocus.d.ts +1 -2
  179. package/dist/esm/useFocus.js.map +1 -1
  180. package/dist/esm/useGetModifiers.d.ts +1 -2
  181. package/dist/esm/useGetModifiers.js.map +1 -1
  182. package/dist/esm/useSelection.d.ts +1 -1
  183. package/dist/esm/utils/addToRange.d.ts +1 -1
  184. package/dist/esm/utils/addToRange.js +1 -1
  185. package/dist/esm/utils/addToRange.js.map +1 -1
  186. package/dist/esm/utils/dateMatchModifiers.d.ts +1 -1
  187. package/dist/esm/utils/dateMatchModifiers.js +1 -1
  188. package/dist/esm/utils/dateMatchModifiers.js.map +1 -1
  189. package/dist/esm/utils/rangeIncludesDate.d.ts +1 -4
  190. package/dist/esm/utils/rangeIncludesDate.js +2 -4
  191. package/dist/esm/utils/rangeIncludesDate.js.map +1 -1
  192. package/dist/esm/utils/typeguards.d.ts +1 -1
  193. package/examples/Formatters.tsx +2 -2
  194. package/examples/NumberingSystem.tsx +5 -2
  195. package/examples/Range.test.tsx +8 -0
  196. package/examples/Range.tsx +13 -8
  197. package/examples/TestCase2511.test.tsx +14 -0
  198. package/examples/TestCase2511.tsx +19 -0
  199. package/examples/__snapshots__/Range.test.tsx.snap +1253 -1239
  200. package/examples/index.ts +1 -0
  201. package/package.json +78 -35
  202. package/src/DayPicker.tsx +44 -52
  203. package/src/classes/CalendarDay.ts +1 -3
  204. package/src/classes/DateLib.ts +478 -0
  205. package/src/classes/index.ts +1 -0
  206. package/src/formatters/formatCaption.test.ts +12 -4
  207. package/src/formatters/formatCaption.ts +4 -9
  208. package/src/formatters/formatDay.ts +4 -6
  209. package/src/formatters/formatMonthDropdown.ts +3 -3
  210. package/src/formatters/formatWeekdayName.ts +4 -6
  211. package/src/helpers/getDates.test.ts +29 -20
  212. package/src/helpers/getDates.ts +6 -14
  213. package/src/helpers/getDisplayMonths.test.ts +4 -4
  214. package/src/helpers/getDisplayMonths.ts +1 -1
  215. package/src/helpers/getFocusableDate.ts +5 -8
  216. package/src/helpers/getFormatters.test.ts +9 -5
  217. package/src/helpers/getInitialMonth.test.ts +7 -6
  218. package/src/helpers/getInitialMonth.ts +2 -1
  219. package/src/helpers/getMonthOptions.test.ts +3 -4
  220. package/src/helpers/getMonthOptions.ts +2 -3
  221. package/src/helpers/getMonths.test.ts +7 -10
  222. package/src/helpers/getMonths.ts +5 -26
  223. package/src/helpers/getNavMonth.test.ts +9 -9
  224. package/src/helpers/getNavMonth.ts +1 -2
  225. package/src/helpers/getNextFocus.test.tsx +11 -12
  226. package/src/helpers/getNextFocus.tsx +2 -8
  227. package/src/helpers/getNextMonth.test.ts +9 -8
  228. package/src/helpers/getNextMonth.ts +1 -1
  229. package/src/helpers/getPossibleFocusDate.test.ts +6 -5
  230. package/src/helpers/getPreviousMonth.test.ts +7 -7
  231. package/src/helpers/getPreviousMonth.ts +1 -1
  232. package/src/helpers/getWeekdays.test.ts +8 -4
  233. package/src/helpers/getWeekdays.ts +6 -10
  234. package/src/helpers/getYearOptions.test.ts +4 -4
  235. package/src/helpers/getYearOptions.ts +1 -1
  236. package/src/index.ts +1 -3
  237. package/src/labels/labelDayButton.ts +4 -6
  238. package/src/labels/labelGrid.ts +4 -6
  239. package/src/labels/labelGridcell.ts +4 -7
  240. package/src/labels/labelMonthDropdown.ts +2 -2
  241. package/src/labels/labelWeekNumber.ts +2 -2
  242. package/src/labels/labelWeekNumberHeader.ts +2 -2
  243. package/src/labels/labelWeekday.ts +4 -6
  244. package/src/labels/labelYearDropdown.ts +2 -2
  245. package/src/selection/useMulti.test.tsx +3 -3
  246. package/src/selection/useMulti.tsx +1 -1
  247. package/src/selection/useRange.test.tsx +8 -8
  248. package/src/selection/useRange.tsx +5 -2
  249. package/src/selection/useSingle.test.tsx +3 -3
  250. package/src/selection/useSingle.tsx +1 -1
  251. package/{style.css → src/style.css} +2 -2
  252. package/src/style.module.css.d.ts +29 -0
  253. package/src/types/props.ts +4 -4
  254. package/src/useCalendar.ts +2 -3
  255. package/src/useFocus.ts +1 -2
  256. package/src/useGetModifiers.tsx +1 -2
  257. package/src/useSelection.ts +1 -1
  258. package/src/utils/addToRange.ts +1 -1
  259. package/src/utils/dateMatchModifiers.test.ts +21 -13
  260. package/src/utils/dateMatchModifiers.ts +1 -1
  261. package/src/utils/rangeIncludesDate.ts +2 -3
  262. package/src/utils/typeguards.test.ts +5 -5
  263. package/src/utils/typeguards.ts +1 -1
  264. package/website/docs/upgrading.mdx +1 -1
  265. package/dist/cjs/helpers/getDateLib.d.ts +0 -3
  266. package/dist/cjs/helpers/getDateLib.js +0 -11
  267. package/dist/cjs/helpers/getDateLib.js.map +0 -1
  268. package/dist/cjs/lib/dateLib.d.ts +0 -138
  269. package/dist/cjs/lib/dateLib.js +0 -68
  270. package/dist/cjs/lib/dateLib.js.map +0 -1
  271. package/dist/cjs/lib/index.d.ts +0 -2
  272. package/dist/cjs/lib/index.js +0 -21
  273. package/dist/cjs/lib/index.js.map +0 -1
  274. package/dist/cjs/lib/locales.d.ts +0 -1
  275. package/dist/cjs/lib/locales.js +0 -6
  276. package/dist/cjs/lib/locales.js.map +0 -1
  277. package/dist/esm/helpers/getDateLib.d.ts +0 -3
  278. package/dist/esm/helpers/getDateLib.js +0 -8
  279. package/dist/esm/helpers/getDateLib.js.map +0 -1
  280. package/dist/esm/lib/dateLib.d.ts +0 -138
  281. package/dist/esm/lib/dateLib.js +0 -65
  282. package/dist/esm/lib/dateLib.js.map +0 -1
  283. package/dist/esm/lib/index.d.ts +0 -2
  284. package/dist/esm/lib/index.js +0 -3
  285. package/dist/esm/lib/index.js.map +0 -1
  286. package/dist/esm/lib/locales.d.ts +0 -1
  287. package/dist/esm/lib/locales.js +0 -2
  288. package/dist/esm/lib/locales.js.map +0 -1
  289. package/src/helpers/getDateLib.ts +0 -9
  290. package/src/lib/dateLib.ts +0 -175
  291. package/src/lib/index.ts +0 -2
  292. package/src/lib/locales.ts +0 -1
  293. /package/{style.module.css → src/style.module.css} +0 -0
package/examples/index.ts CHANGED
@@ -66,6 +66,7 @@ export * from "./TailwindCSS";
66
66
  export * from "./Testcase1567";
67
67
  export * from "./TestCase2047";
68
68
  export * from "./TestCase2389";
69
+ export * from "./TestCase2511";
69
70
  export * from "./TimeZone";
70
71
  export * from "./Utc";
71
72
  export * from "./WeekIso";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-day-picker",
3
- "version": "9.1.4",
3
+ "version": "9.2.1",
4
4
  "description": "Customizable Date Picker for React",
5
5
  "author": "Giampaolo Bellavite <io@gpbl.dev>",
6
6
  "homepage": "https://daypicker.dev",
@@ -19,7 +19,7 @@
19
19
  "main": "./dist/cjs/index.js",
20
20
  "types": "./dist/cjs/index.d.ts",
21
21
  "module": "./dist/esm/index.js",
22
- "style": "./style.css",
22
+ "style": "./src/style.css",
23
23
  "type": "module",
24
24
  "exports": {
25
25
  ".": {
@@ -52,44 +52,88 @@
52
52
  "default": "./dist/cjs/locale.js"
53
53
  }
54
54
  },
55
+ "./style": {
56
+ "sass": "./src/style.css"
57
+ },
55
58
  "./style.css": {
59
+ "style": {
60
+ "default": "./src/style.css"
61
+ },
56
62
  "import": {
57
- "types": "./style.css.d.ts",
58
- "default": "./style.css"
63
+ "types": "./src/style.module.css.d.ts",
64
+ "default": "./src/style.css"
59
65
  },
60
66
  "require": {
61
- "types": "./style.css.d.ts",
62
- "default": "./style.css"
67
+ "types": "./src/style.module.css.d.ts",
68
+ "default": "./src/style.css"
63
69
  }
64
70
  },
71
+ "./style.module": {
72
+ "sass": "./src/style.module.css"
73
+ },
65
74
  "./style.module.css": {
75
+ "style": {
76
+ "default": "./src/style.module.css"
77
+ },
78
+ "import": {
79
+ "types": "./src/style.module.css.d.ts",
80
+ "default": "./src/style.module.css"
81
+ },
82
+ "require": {
83
+ "types": "./src/style.module.css.d.ts",
84
+ "default": "./src/style.module.css"
85
+ }
86
+ },
87
+ "./src/style.css": {
88
+ "style": {
89
+ "default": "./src/style.css"
90
+ },
66
91
  "import": {
67
- "types": "./style.css.d.ts",
68
- "default": "./style.module.css"
92
+ "types": "./src/style.module.css.d.ts",
93
+ "default": "./src/style.css"
69
94
  },
70
95
  "require": {
71
- "types": "./style.css.d.ts",
72
- "default": "./style.module.css"
96
+ "types": "./src/style.module.css.d.ts",
97
+ "default": "./src/style.css"
98
+ }
99
+ },
100
+ "./src/style.module.css": {
101
+ "style": {
102
+ "default": "./src/style.module.css"
103
+ },
104
+ "import": {
105
+ "types": "./src/style.module.css.d.ts",
106
+ "default": "./src/style.module.css"
107
+ },
108
+ "require": {
109
+ "types": "./src/style.module.css.d.ts",
110
+ "default": "./src/style.module.css"
73
111
  }
74
112
  },
75
113
  "./dist/style.css": {
114
+ "style": {
115
+ "default": "./src/style.css"
116
+ },
76
117
  "import": {
77
- "types": "./style.css.d.ts",
78
- "default": "./style.css"
118
+ "types": "./src/style.module.css.d.ts",
119
+ "default": "./src/style.css"
79
120
  },
80
121
  "require": {
81
- "types": "./style.css.d.ts",
82
- "default": "./style.css"
122
+ "types": "./src/style.module.css.d.ts",
123
+ "default": "./src/style.css"
83
124
  }
84
125
  },
85
126
  "./dist/style.module.css": {
127
+ "style": {
128
+ "default": "./src/style.module.css"
129
+ },
86
130
  "import": {
87
- "types": "./style.css.d.ts",
88
- "default": "./style.module.css"
131
+ "types": "./src/style.module.css.d.ts",
132
+ "default": "./src/style.module.css"
89
133
  },
90
134
  "require": {
91
- "types": "./style.css.d.ts",
92
- "default": "./style.module.css"
135
+ "types": "./src/style.module.css.d.ts",
136
+ "default": "./src/style.module.css"
93
137
  }
94
138
  },
95
139
  "./package.json": {
@@ -107,7 +151,7 @@
107
151
  "build": "pnpm build:cjs && pnpm build:esm && pnpm build:css",
108
152
  "build:cjs": "tsc --project tsconfig-cjs.json && echo '{ \"type\": \"commonjs\" }' > dist/cjs/package.json",
109
153
  "build:esm": "tsc --project tsconfig-esm.json",
110
- "build:css": "./scripts/build-css.sh ./style.css ./style.module.css",
154
+ "build:css": "./scripts/build-css.sh ./src/style.css ./src/style.module.css",
111
155
  "lint": "eslint .",
112
156
  "test": "jest",
113
157
  "test-watch": "jest --watch",
@@ -135,29 +179,28 @@
135
179
  "devDependencies": {
136
180
  "@jest/types": "^29.6.3",
137
181
  "@testing-library/dom": "^10.4.0",
138
- "@testing-library/jest-dom": "^6.5.0",
182
+ "@testing-library/jest-dom": "^6.6.2",
139
183
  "@testing-library/react": "^16.0.1",
140
184
  "@testing-library/user-event": "^14.5.2",
141
185
  "@trivago/prettier-plugin-sort-imports": "^4.3.0",
142
- "@types/jest": "^29.5.12",
143
- "@types/node": "^22.5.4",
144
- "@types/react": "^18.3.8",
145
- "@types/react-dom": "^18.3.0",
146
- "@typescript-eslint/eslint-plugin": "^8.4.0",
147
- "@typescript-eslint/parser": "^8.6.0",
148
- "date-fns": "^3.6.0",
149
- "date-fns-jalali": "3.6.0-1",
150
- "eslint": "^8.57.0",
186
+ "@types/jest": "^29.5.13",
187
+ "@types/node": "^22.7.7",
188
+ "@types/react": "^18.3.11",
189
+ "@types/react-dom": "^18.3.1",
190
+ "@typescript-eslint/eslint-plugin": "^8.10.0",
191
+ "@typescript-eslint/parser": "^8.10.0",
192
+ "date-fns-jalali": "^3.6.0-1",
193
+ "eslint": "^8.57.1",
151
194
  "eslint-config-prettier": "^9.1.0",
152
195
  "eslint-import-resolver-typescript": "^3.6.3",
153
- "eslint-plugin-import": "^2.30.0",
196
+ "eslint-plugin-import": "^2.31.0",
154
197
  "eslint-plugin-jest": "^28.8.3",
155
198
  "eslint-plugin-prettier": "^5.2.1",
156
- "eslint-plugin-react": "^7.35.2",
157
- "eslint-plugin-react-hooks": "^4.6.2",
199
+ "eslint-plugin-react": "^7.37.1",
200
+ "eslint-plugin-react-hooks": "^5.0.0",
158
201
  "eslint-plugin-require-extensions": "^0.1.3",
159
- "eslint-plugin-testing-library": "^6.3.0",
160
- "html-validate": "^8.23.0",
202
+ "eslint-plugin-testing-library": "^6.4.0",
203
+ "html-validate": "^8.24.2",
161
204
  "jest": "^29.7.0",
162
205
  "jest-environment-jsdom": "^29.7.0",
163
206
  "mockdate": "^3.0.5",
@@ -167,7 +210,7 @@
167
210
  "react-dom": "^18.3.1",
168
211
  "ts-jest": "^29.2.5",
169
212
  "ts-node": "^10.9.2",
170
- "tslib": "^2.7.0",
213
+ "tslib": "^2.8.0",
171
214
  "typescript": "~5.5.4",
172
215
  "typescript-css-modules": "^1.0.4"
173
216
  },
package/src/DayPicker.tsx CHANGED
@@ -8,10 +8,10 @@ import type {
8
8
 
9
9
  import { UI, DayFlag, SelectionState } from "./UI.js";
10
10
  import type { CalendarDay } from "./classes/CalendarDay.js";
11
+ import { DateLib, defaultLocale } from "./classes/DateLib.js";
11
12
  import { getClassNamesForModifiers } from "./helpers/getClassNamesForModifiers.js";
12
13
  import { getComponents } from "./helpers/getComponents.js";
13
14
  import { getDataAttributes } from "./helpers/getDataAttributes.js";
14
- import { getDateLib } from "./helpers/getDateLib.js";
15
15
  import { getDefaultClassNames } from "./helpers/getDefaultClassNames.js";
16
16
  import { getFormatters } from "./helpers/getFormatters.js";
17
17
  import { getMonthOptions } from "./helpers/getMonthOptions.js";
@@ -19,8 +19,6 @@ import { getStyleForModifiers } from "./helpers/getStyleForModifiers.js";
19
19
  import { getWeekdays } from "./helpers/getWeekdays.js";
20
20
  import { getYearOptions } from "./helpers/getYearOptions.js";
21
21
  import * as defaultLabels from "./labels/index.js";
22
- import type { FormatOptions, LabelOptions } from "./lib/dateLib.js";
23
- import { enUS } from "./lib/locales.js";
24
22
  import type {
25
23
  DayPickerProps,
26
24
  Modifiers,
@@ -45,28 +43,43 @@ import { isDateRange } from "./utils/typeguards.js";
45
43
  */
46
44
  export function DayPicker(props: DayPickerProps) {
47
45
  const { components, formatters, labels, dateLib, locale, classNames } =
48
- useMemo(
49
- () => ({
50
- dateLib: getDateLib(props.dateLib),
46
+ useMemo(() => {
47
+ const locale = { ...defaultLocale, ...props.locale };
48
+
49
+ const dateLib = new DateLib(
50
+ {
51
+ locale,
52
+ weekStartsOn: props.weekStartsOn,
53
+ firstWeekContainsDate: props.firstWeekContainsDate,
54
+ useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,
55
+ useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens
56
+ },
57
+ props.dateLib
58
+ );
59
+
60
+ return {
61
+ dateLib,
51
62
  components: getComponents(props.components),
52
63
  formatters: getFormatters(props.formatters),
53
64
  labels: { ...defaultLabels, ...props.labels },
54
- locale: { ...enUS, ...props.locale },
65
+ locale,
55
66
  classNames: { ...getDefaultClassNames(), ...props.classNames }
56
- }),
57
- [
58
- props.classNames,
59
- props.components,
60
- props.dateLib,
61
- props.formatters,
62
- props.labels,
63
- props.locale
64
- ]
65
- );
67
+ };
68
+ }, [
69
+ props.classNames,
70
+ props.components,
71
+ props.dateLib,
72
+ props.firstWeekContainsDate,
73
+ props.formatters,
74
+ props.labels,
75
+ props.locale,
76
+ props.useAdditionalDayOfYearTokens,
77
+ props.useAdditionalWeekYearTokens,
78
+ props.weekStartsOn
79
+ ]);
66
80
 
67
81
  const {
68
82
  captionLayout,
69
- firstWeekContainsDate,
70
83
  mode,
71
84
  onDayBlur,
72
85
  onDayClick,
@@ -77,22 +90,9 @@ export function DayPicker(props: DayPickerProps) {
77
90
  onNextClick,
78
91
  onPrevClick,
79
92
  showWeekNumber,
80
- styles,
81
- useAdditionalDayOfYearTokens,
82
- useAdditionalWeekYearTokens,
83
- weekStartsOn
93
+ styles
84
94
  } = props;
85
95
 
86
- const formatOptions: FormatOptions = {
87
- locale,
88
- weekStartsOn,
89
- firstWeekContainsDate,
90
- useAdditionalWeekYearTokens,
91
- useAdditionalDayOfYearTokens
92
- };
93
-
94
- const labelOptions: LabelOptions = formatOptions;
95
-
96
96
  const {
97
97
  formatCaption,
98
98
  formatDay,
@@ -144,15 +144,8 @@ export function DayPicker(props: DayPickerProps) {
144
144
  } = labels;
145
145
 
146
146
  const weekdays = useMemo(
147
- () =>
148
- getWeekdays(
149
- locale,
150
- props.weekStartsOn,
151
- props.ISOWeek,
152
- props.timeZone,
153
- dateLib
154
- ),
155
- [dateLib, locale, props.ISOWeek, props.timeZone, props.weekStartsOn]
147
+ () => getWeekdays(dateLib, props.ISOWeek, props.timeZone),
148
+ [dateLib, props.ISOWeek, props.timeZone]
156
149
  );
157
150
 
158
151
  const isInteractive = mode !== undefined || onDayClick !== undefined;
@@ -317,7 +310,6 @@ export function DayPicker(props: DayPickerProps) {
317
310
  navStart,
318
311
  navEnd,
319
312
  formatters,
320
- locale,
321
313
  dateLib
322
314
  );
323
315
 
@@ -373,7 +365,7 @@ export function DayPicker(props: DayPickerProps) {
373
365
  captionLayout === "dropdown-years" ? (
374
366
  <components.YearsDropdown
375
367
  className={classNames[UI.YearsDropdown]}
376
- aria-label={labelYearDropdown(labelOptions)}
368
+ aria-label={labelYearDropdown(dateLib.options)}
377
369
  classNames={classNames}
378
370
  components={components}
379
371
  disabled={Boolean(props.disableNavigation)}
@@ -396,7 +388,7 @@ export function DayPicker(props: DayPickerProps) {
396
388
  >
397
389
  {formatCaption(
398
390
  calendarMonth.date,
399
- formatOptions,
391
+ dateLib.options,
400
392
  dateLib
401
393
  )}
402
394
  </components.CaptionLabel>
@@ -406,7 +398,7 @@ export function DayPicker(props: DayPickerProps) {
406
398
  role="grid"
407
399
  aria-multiselectable={mode === "multiple" || mode === "range"}
408
400
  aria-label={
409
- labelGrid(calendarMonth.date, labelOptions, dateLib) ||
401
+ labelGrid(calendarMonth.date, dateLib.options, dateLib) ||
410
402
  undefined
411
403
  }
412
404
  className={classNames[UI.MonthGrid]}
@@ -419,7 +411,7 @@ export function DayPicker(props: DayPickerProps) {
419
411
  >
420
412
  {showWeekNumber && (
421
413
  <components.WeekNumberHeader
422
- aria-label={labelWeekNumberHeader(labelOptions)}
414
+ aria-label={labelWeekNumberHeader(dateLib.options)}
423
415
  className={classNames[UI.WeekNumberHeader]}
424
416
  style={styles?.[UI.WeekNumberHeader]}
425
417
  scope="col"
@@ -431,7 +423,7 @@ export function DayPicker(props: DayPickerProps) {
431
423
  <components.Weekday
432
424
  aria-label={labelWeekday(
433
425
  weekday,
434
- labelOptions,
426
+ dateLib.options,
435
427
  dateLib
436
428
  )}
437
429
  className={classNames[UI.Weekday]}
@@ -439,7 +431,7 @@ export function DayPicker(props: DayPickerProps) {
439
431
  style={styles?.[UI.Weekday]}
440
432
  scope="col"
441
433
  >
442
- {formatWeekdayName(weekday, formatOptions, dateLib)}
434
+ {formatWeekdayName(weekday, dateLib.options, dateLib)}
443
435
  </components.Weekday>
444
436
  ))}
445
437
  </components.Weekdays>
@@ -515,7 +507,7 @@ export function DayPicker(props: DayPickerProps) {
515
507
  ? labelGridcell(
516
508
  date,
517
509
  modifiers,
518
- labelOptions,
510
+ dateLib.options,
519
511
  dateLib
520
512
  )
521
513
  : undefined;
@@ -555,7 +547,7 @@ export function DayPicker(props: DayPickerProps) {
555
547
  aria-label={labelDayButton(
556
548
  date,
557
549
  modifiers,
558
- labelOptions,
550
+ dateLib.options,
559
551
  dateLib
560
552
  )}
561
553
  onClick={handleDayClick(day, modifiers)}
@@ -571,10 +563,10 @@ export function DayPicker(props: DayPickerProps) {
571
563
  modifiers
572
564
  )}
573
565
  >
574
- {formatDay(date, formatOptions, dateLib)}
566
+ {formatDay(date, dateLib.options, dateLib)}
575
567
  </components.DayButton>
576
568
  ) : (
577
- formatDay(day.date, formatOptions, dateLib)
569
+ formatDay(day.date, dateLib.options, dateLib)
578
570
  )}
579
571
  </components.Day>
580
572
  );
@@ -1,5 +1,4 @@
1
- import type { DateLib } from "../lib/index.js";
2
- import { dateLib as defaultDateLib } from "../lib/index.js";
1
+ import { type DateLib, defaultDateLib } from "./DateLib.js";
3
2
 
4
3
  /**
5
4
  * Represent the day displayed in the calendar.
@@ -12,7 +11,6 @@ export class CalendarDay {
12
11
  constructor(
13
12
  date: Date,
14
13
  displayMonth: Date,
15
- /** @ignore */
16
14
  dateLib: DateLib = defaultDateLib
17
15
  ) {
18
16
  this.date = date;