@mantine/dates 3.3.3 → 3.4.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 (241) hide show
  1. package/cjs/components/Calendar/Calendar.js +6 -137
  2. package/cjs/components/Calendar/Calendar.js.map +1 -1
  3. package/cjs/components/CalendarBase/CalendarBase.js +242 -0
  4. package/cjs/components/CalendarBase/CalendarBase.js.map +1 -0
  5. package/cjs/components/CalendarBase/CalendarBase.styles.js +22 -0
  6. package/cjs/components/CalendarBase/CalendarBase.styles.js.map +1 -0
  7. package/cjs/components/{Calendar → CalendarBase/CalendarHeader}/ArrowIcon.js +0 -0
  8. package/cjs/components/CalendarBase/CalendarHeader/ArrowIcon.js.map +1 -0
  9. package/cjs/components/CalendarBase/CalendarHeader/CalendarHeader.js +119 -0
  10. package/cjs/components/CalendarBase/CalendarHeader/CalendarHeader.js.map +1 -0
  11. package/cjs/components/CalendarBase/CalendarHeader/CalendarHeader.styles.js +58 -0
  12. package/cjs/components/CalendarBase/CalendarHeader/CalendarHeader.styles.js.map +1 -0
  13. package/cjs/components/CalendarBase/MonthPicker/MonthPicker.js +113 -0
  14. package/cjs/components/CalendarBase/MonthPicker/MonthPicker.js.map +1 -0
  15. package/cjs/components/CalendarBase/MonthPicker/MonthPicker.styles.js +52 -0
  16. package/cjs/components/CalendarBase/MonthPicker/MonthPicker.styles.js.map +1 -0
  17. package/cjs/components/CalendarBase/MonthPicker/is-month-in-range/is-month-in-range.js +25 -0
  18. package/cjs/components/CalendarBase/MonthPicker/is-month-in-range/is-month-in-range.js.map +1 -0
  19. package/cjs/components/CalendarBase/MonthsList/MonthsList.js +123 -0
  20. package/cjs/components/CalendarBase/MonthsList/MonthsList.js.map +1 -0
  21. package/cjs/components/CalendarBase/MonthsList/format-month-label/format-month-label.js +17 -0
  22. package/cjs/components/CalendarBase/MonthsList/format-month-label/format-month-label.js.map +1 -0
  23. package/cjs/components/CalendarBase/YearPicker/YearPicker.js +102 -0
  24. package/cjs/components/CalendarBase/YearPicker/YearPicker.js.map +1 -0
  25. package/cjs/components/CalendarBase/YearPicker/YearPicker.styles.js +54 -0
  26. package/cjs/components/CalendarBase/YearPicker/YearPicker.styles.js.map +1 -0
  27. package/cjs/components/CalendarBase/YearPicker/get-decade-range/get-decade-range.js +16 -0
  28. package/cjs/components/CalendarBase/YearPicker/get-decade-range/get-decade-range.js.map +1 -0
  29. package/cjs/components/DatePicker/DatePicker.js +10 -10
  30. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  31. package/cjs/components/DatePickerBase/DatePickerBase.js +5 -5
  32. package/cjs/components/DatePickerBase/DatePickerBase.js.map +1 -1
  33. package/cjs/components/DateRangePicker/DateRangePicker.js +0 -6
  34. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  35. package/cjs/components/Month/Day/Day.js +12 -15
  36. package/cjs/components/Month/Day/Day.js.map +1 -1
  37. package/cjs/components/Month/Day/Day.styles.js +2 -1
  38. package/cjs/components/Month/Day/Day.styles.js.map +1 -1
  39. package/cjs/components/Month/Day/get-day-autofocus/get-day-autofocus.js +13 -0
  40. package/cjs/components/Month/Day/get-day-autofocus/get-day-autofocus.js.map +1 -0
  41. package/cjs/components/Month/Day/get-day-tab-index/get-day-tab-index.js +16 -0
  42. package/cjs/components/Month/Day/get-day-tab-index/get-day-tab-index.js.map +1 -0
  43. package/cjs/components/Month/Month.js +36 -67
  44. package/cjs/components/Month/Month.js.map +1 -1
  45. package/cjs/components/Month/Month.styles.js +1 -1
  46. package/cjs/components/Month/Month.styles.js.map +1 -1
  47. package/cjs/components/Month/get-day-props/get-day-props.js +9 -24
  48. package/cjs/components/Month/get-day-props/get-day-props.js.map +1 -1
  49. package/cjs/components/Month/get-day-props/get-range-props/get-range-props.js +25 -0
  50. package/cjs/components/Month/get-day-props/get-range-props/get-range-props.js.map +1 -0
  51. package/cjs/components/Month/get-day-props/is-disabled/is-disabled.js +27 -0
  52. package/cjs/components/Month/get-day-props/is-disabled/is-disabled.js.map +1 -0
  53. package/cjs/components/Month/get-day-props/is-outside/is-outside.js +13 -0
  54. package/cjs/components/Month/get-day-props/is-outside/is-outside.js.map +1 -0
  55. package/cjs/components/Month/get-day-props/is-weekend/is-weekend.js +11 -0
  56. package/cjs/components/Month/get-day-props/is-weekend/is-weekend.js.map +1 -0
  57. package/cjs/components/RangeCalendar/RangeCalendar.js +19 -122
  58. package/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
  59. package/cjs/components/TimeInput/TimeField/TimeField.js +6 -1
  60. package/cjs/components/TimeInput/TimeField/TimeField.js.map +1 -1
  61. package/cjs/components/TimeInput/TimeField/TimeField.styles.js +54 -0
  62. package/cjs/components/TimeInput/TimeField/TimeField.styles.js.map +1 -0
  63. package/cjs/components/TimeInput/TimeInput.styles.js +1 -24
  64. package/cjs/components/TimeInput/TimeInput.styles.js.map +1 -1
  65. package/cjs/components/TimeRangeInput/TimeRangeInput.styles.js +2 -19
  66. package/cjs/components/TimeRangeInput/TimeRangeInput.styles.js.map +1 -1
  67. package/cjs/utils/get-months-names/get-months-names.js +2 -2
  68. package/cjs/utils/get-months-names/get-months-names.js.map +1 -1
  69. package/esm/components/Calendar/Calendar.js +6 -136
  70. package/esm/components/Calendar/Calendar.js.map +1 -1
  71. package/esm/components/CalendarBase/CalendarBase.js +234 -0
  72. package/esm/components/CalendarBase/CalendarBase.js.map +1 -0
  73. package/esm/components/CalendarBase/CalendarBase.styles.js +18 -0
  74. package/esm/components/CalendarBase/CalendarBase.styles.js.map +1 -0
  75. package/esm/components/{Calendar → CalendarBase/CalendarHeader}/ArrowIcon.js +0 -0
  76. package/esm/components/CalendarBase/CalendarHeader/ArrowIcon.js.map +1 -0
  77. package/esm/components/CalendarBase/CalendarHeader/CalendarHeader.js +111 -0
  78. package/esm/components/CalendarBase/CalendarHeader/CalendarHeader.js.map +1 -0
  79. package/esm/components/CalendarBase/CalendarHeader/CalendarHeader.styles.js +54 -0
  80. package/esm/components/CalendarBase/CalendarHeader/CalendarHeader.styles.js.map +1 -0
  81. package/esm/components/CalendarBase/MonthPicker/MonthPicker.js +105 -0
  82. package/esm/components/CalendarBase/MonthPicker/MonthPicker.js.map +1 -0
  83. package/esm/components/CalendarBase/MonthPicker/MonthPicker.styles.js +48 -0
  84. package/esm/components/CalendarBase/MonthPicker/MonthPicker.styles.js.map +1 -0
  85. package/esm/components/CalendarBase/MonthPicker/is-month-in-range/is-month-in-range.js +17 -0
  86. package/esm/components/CalendarBase/MonthPicker/is-month-in-range/is-month-in-range.js.map +1 -0
  87. package/esm/components/CalendarBase/MonthsList/MonthsList.js +114 -0
  88. package/esm/components/CalendarBase/MonthsList/MonthsList.js.map +1 -0
  89. package/esm/components/CalendarBase/MonthsList/format-month-label/format-month-label.js +9 -0
  90. package/esm/components/CalendarBase/MonthsList/format-month-label/format-month-label.js.map +1 -0
  91. package/esm/components/CalendarBase/YearPicker/YearPicker.js +94 -0
  92. package/esm/components/CalendarBase/YearPicker/YearPicker.js.map +1 -0
  93. package/esm/components/CalendarBase/YearPicker/YearPicker.styles.js +50 -0
  94. package/esm/components/CalendarBase/YearPicker/YearPicker.styles.js.map +1 -0
  95. package/esm/components/CalendarBase/YearPicker/get-decade-range/get-decade-range.js +12 -0
  96. package/esm/components/CalendarBase/YearPicker/get-decade-range/get-decade-range.js.map +1 -0
  97. package/esm/components/DatePicker/DatePicker.js +10 -10
  98. package/esm/components/DatePicker/DatePicker.js.map +1 -1
  99. package/esm/components/DatePickerBase/DatePickerBase.js +6 -6
  100. package/esm/components/DatePickerBase/DatePickerBase.js.map +1 -1
  101. package/esm/components/DateRangePicker/DateRangePicker.js +0 -6
  102. package/esm/components/DateRangePicker/DateRangePicker.js.map +1 -1
  103. package/esm/components/Month/Day/Day.js +12 -15
  104. package/esm/components/Month/Day/Day.js.map +1 -1
  105. package/esm/components/Month/Day/Day.styles.js +2 -1
  106. package/esm/components/Month/Day/Day.styles.js.map +1 -1
  107. package/esm/components/Month/Day/get-day-autofocus/get-day-autofocus.js +9 -0
  108. package/esm/components/Month/Day/get-day-autofocus/get-day-autofocus.js.map +1 -0
  109. package/esm/components/Month/Day/get-day-tab-index/get-day-tab-index.js +12 -0
  110. package/esm/components/Month/Day/get-day-tab-index/get-day-tab-index.js.map +1 -0
  111. package/esm/components/Month/Month.js +38 -69
  112. package/esm/components/Month/Month.js.map +1 -1
  113. package/esm/components/Month/Month.styles.js +1 -1
  114. package/esm/components/Month/Month.styles.js.map +1 -1
  115. package/esm/components/Month/get-day-props/get-day-props.js +9 -20
  116. package/esm/components/Month/get-day-props/get-day-props.js.map +1 -1
  117. package/esm/components/Month/get-day-props/get-range-props/get-range-props.js +17 -0
  118. package/esm/components/Month/get-day-props/get-range-props/get-range-props.js.map +1 -0
  119. package/esm/components/Month/get-day-props/is-disabled/is-disabled.js +19 -0
  120. package/esm/components/Month/get-day-props/is-disabled/is-disabled.js.map +1 -0
  121. package/esm/components/Month/get-day-props/is-outside/is-outside.js +9 -0
  122. package/esm/components/Month/get-day-props/is-outside/is-outside.js.map +1 -0
  123. package/esm/components/Month/get-day-props/is-weekend/is-weekend.js +7 -0
  124. package/esm/components/Month/get-day-props/is-weekend/is-weekend.js.map +1 -0
  125. package/esm/components/RangeCalendar/RangeCalendar.js +20 -123
  126. package/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  127. package/esm/components/TimeInput/TimeField/TimeField.js +6 -1
  128. package/esm/components/TimeInput/TimeField/TimeField.js.map +1 -1
  129. package/esm/components/TimeInput/TimeField/TimeField.styles.js +50 -0
  130. package/esm/components/TimeInput/TimeField/TimeField.styles.js.map +1 -0
  131. package/esm/components/TimeInput/TimeInput.styles.js +1 -24
  132. package/esm/components/TimeInput/TimeInput.styles.js.map +1 -1
  133. package/esm/components/TimeRangeInput/TimeRangeInput.styles.js +2 -19
  134. package/esm/components/TimeRangeInput/TimeRangeInput.styles.js.map +1 -1
  135. package/esm/utils/get-months-names/get-months-names.js +2 -2
  136. package/esm/utils/get-months-names/get-months-names.js.map +1 -1
  137. package/lib/components/Calendar/Calendar.d.ts +3 -45
  138. package/lib/components/Calendar/Calendar.d.ts.map +1 -1
  139. package/lib/components/Calendar/index.d.ts +1 -1
  140. package/lib/components/Calendar/index.d.ts.map +1 -1
  141. package/lib/components/CalendarBase/CalendarBase.d.ts +56 -0
  142. package/lib/components/CalendarBase/CalendarBase.d.ts.map +1 -0
  143. package/lib/components/CalendarBase/CalendarBase.styles.d.ts +13 -0
  144. package/lib/components/CalendarBase/CalendarBase.styles.d.ts.map +1 -0
  145. package/lib/components/CalendarBase/CalendarHeader/ArrowIcon.d.ts +10 -0
  146. package/lib/components/CalendarBase/CalendarHeader/ArrowIcon.d.ts.map +1 -0
  147. package/lib/components/CalendarBase/CalendarHeader/CalendarHeader.d.ts +24 -0
  148. package/lib/components/CalendarBase/CalendarHeader/CalendarHeader.d.ts.map +1 -0
  149. package/lib/components/CalendarBase/CalendarHeader/CalendarHeader.styles.d.ts +18 -0
  150. package/lib/components/CalendarBase/CalendarHeader/CalendarHeader.styles.d.ts.map +1 -0
  151. package/lib/components/CalendarBase/MonthPicker/MonthPicker.d.ts +27 -0
  152. package/lib/components/CalendarBase/MonthPicker/MonthPicker.d.ts.map +1 -0
  153. package/lib/components/CalendarBase/MonthPicker/MonthPicker.styles.d.ts +11 -0
  154. package/lib/components/CalendarBase/MonthPicker/MonthPicker.styles.d.ts.map +1 -0
  155. package/lib/components/CalendarBase/MonthPicker/is-month-in-range/is-month-in-range.d.ts +8 -0
  156. package/lib/components/CalendarBase/MonthPicker/is-month-in-range/is-month-in-range.d.ts.map +1 -0
  157. package/lib/components/CalendarBase/MonthsList/MonthsList.d.ts +24 -0
  158. package/lib/components/CalendarBase/MonthsList/MonthsList.d.ts.map +1 -0
  159. package/lib/components/CalendarBase/MonthsList/format-month-label/format-month-label.d.ts +8 -0
  160. package/lib/components/CalendarBase/MonthsList/format-month-label/format-month-label.d.ts.map +1 -0
  161. package/lib/components/CalendarBase/YearPicker/YearPicker.d.ts +20 -0
  162. package/lib/components/CalendarBase/YearPicker/YearPicker.d.ts.map +1 -0
  163. package/lib/components/CalendarBase/YearPicker/YearPicker.styles.d.ts +11 -0
  164. package/lib/components/CalendarBase/YearPicker/YearPicker.styles.d.ts.map +1 -0
  165. package/lib/components/CalendarBase/YearPicker/get-decade-range/get-decade-range.d.ts +2 -0
  166. package/lib/components/CalendarBase/YearPicker/get-decade-range/get-decade-range.d.ts.map +1 -0
  167. package/lib/components/DatePicker/DatePicker.d.ts +2 -2
  168. package/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
  169. package/lib/components/DatePickerBase/DatePickerBase.d.ts +2 -2
  170. package/lib/components/DatePickerBase/DatePickerBase.d.ts.map +1 -1
  171. package/lib/components/DateRangePicker/DateRangePicker.d.ts +2 -2
  172. package/lib/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  173. package/lib/components/Month/Day/Day.d.ts +3 -3
  174. package/lib/components/Month/Day/Day.d.ts.map +1 -1
  175. package/lib/components/Month/Day/Day.styles.d.ts +3 -2
  176. package/lib/components/Month/Day/Day.styles.d.ts.map +1 -1
  177. package/lib/components/Month/Day/get-day-autofocus/get-day-autofocus.d.ts +8 -0
  178. package/lib/components/Month/Day/get-day-autofocus/get-day-autofocus.d.ts.map +1 -0
  179. package/lib/components/Month/Day/get-day-tab-index/get-day-tab-index.d.ts +9 -0
  180. package/lib/components/Month/Day/get-day-tab-index/get-day-tab-index.d.ts.map +1 -0
  181. package/lib/components/Month/Month.d.ts +12 -11
  182. package/lib/components/Month/Month.d.ts.map +1 -1
  183. package/lib/components/Month/Month.styles.d.ts +2 -2
  184. package/lib/components/Month/get-day-props/get-day-props.d.ts +2 -27
  185. package/lib/components/Month/get-day-props/get-day-props.d.ts.map +1 -1
  186. package/lib/components/Month/get-day-props/get-range-props/get-range-props.d.ts +7 -0
  187. package/lib/components/Month/get-day-props/get-range-props/get-range-props.d.ts.map +1 -0
  188. package/lib/components/Month/get-day-props/is-disabled/is-disabled.d.ts +11 -0
  189. package/lib/components/Month/get-day-props/is-disabled/is-disabled.d.ts.map +1 -0
  190. package/lib/components/Month/get-day-props/is-outside/is-outside.d.ts +2 -0
  191. package/lib/components/Month/get-day-props/is-outside/is-outside.d.ts.map +1 -0
  192. package/lib/components/Month/get-day-props/is-weekend/is-weekend.d.ts +2 -0
  193. package/lib/components/Month/get-day-props/is-weekend/is-weekend.d.ts.map +1 -0
  194. package/lib/components/Month/index.d.ts +1 -0
  195. package/lib/components/Month/index.d.ts.map +1 -1
  196. package/lib/components/Month/types.d.ts +23 -0
  197. package/lib/components/Month/types.d.ts.map +1 -0
  198. package/lib/components/RangeCalendar/RangeCalendar.d.ts +2 -12
  199. package/lib/components/RangeCalendar/RangeCalendar.d.ts.map +1 -1
  200. package/lib/components/TimeInput/TimeField/TimeField.d.ts.map +1 -1
  201. package/lib/components/TimeInput/TimeField/TimeField.styles.d.ts +18 -0
  202. package/lib/components/TimeInput/TimeField/TimeField.styles.d.ts.map +1 -0
  203. package/lib/components/TimeInput/TimeInput.styles.d.ts +0 -7
  204. package/lib/components/TimeInput/TimeInput.styles.d.ts.map +1 -1
  205. package/lib/components/TimeRangeInput/TimeRangeInput.styles.d.ts +2 -2
  206. package/lib/components/TimeRangeInput/TimeRangeInput.styles.d.ts.map +1 -1
  207. package/lib/utils/get-months-names/get-months-names.d.ts +1 -1
  208. package/lib/utils/get-months-names/get-months-names.d.ts.map +1 -1
  209. package/package.json +3 -3
  210. package/cjs/components/Calendar/ArrowIcon.js.map +0 -1
  211. package/cjs/components/Calendar/CalendarHeader/CalendarHeader.js +0 -105
  212. package/cjs/components/Calendar/CalendarHeader/CalendarHeader.js.map +0 -1
  213. package/cjs/components/Calendar/CalendarLabel/CalendarLabel.js +0 -69
  214. package/cjs/components/Calendar/CalendarLabel/CalendarLabel.js.map +0 -1
  215. package/cjs/components/Calendar/CalendarLabel/CalendarLabel.styles.js +0 -14
  216. package/cjs/components/Calendar/CalendarLabel/CalendarLabel.styles.js.map +0 -1
  217. package/cjs/components/Calendar/CalendarWrapper/CalendarWrapper.js +0 -58
  218. package/cjs/components/Calendar/CalendarWrapper/CalendarWrapper.js.map +0 -1
  219. package/cjs/components/Calendar/get-disabled-state/get-disabled-state.js +0 -18
  220. package/cjs/components/Calendar/get-disabled-state/get-disabled-state.js.map +0 -1
  221. package/esm/components/Calendar/ArrowIcon.js.map +0 -1
  222. package/esm/components/Calendar/CalendarHeader/CalendarHeader.js +0 -97
  223. package/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +0 -1
  224. package/esm/components/Calendar/CalendarLabel/CalendarLabel.js +0 -60
  225. package/esm/components/Calendar/CalendarLabel/CalendarLabel.js.map +0 -1
  226. package/esm/components/Calendar/CalendarLabel/CalendarLabel.styles.js +0 -10
  227. package/esm/components/Calendar/CalendarLabel/CalendarLabel.styles.js.map +0 -1
  228. package/esm/components/Calendar/CalendarWrapper/CalendarWrapper.js +0 -50
  229. package/esm/components/Calendar/CalendarWrapper/CalendarWrapper.js.map +0 -1
  230. package/esm/components/Calendar/get-disabled-state/get-disabled-state.js +0 -10
  231. package/esm/components/Calendar/get-disabled-state/get-disabled-state.js.map +0 -1
  232. package/lib/components/Calendar/CalendarHeader/CalendarHeader.d.ts +0 -33
  233. package/lib/components/Calendar/CalendarHeader/CalendarHeader.d.ts.map +0 -1
  234. package/lib/components/Calendar/CalendarLabel/CalendarLabel.d.ts +0 -26
  235. package/lib/components/Calendar/CalendarLabel/CalendarLabel.d.ts.map +0 -1
  236. package/lib/components/Calendar/CalendarLabel/CalendarLabel.styles.d.ts +0 -7
  237. package/lib/components/Calendar/CalendarLabel/CalendarLabel.styles.d.ts.map +0 -1
  238. package/lib/components/Calendar/CalendarWrapper/CalendarWrapper.d.ts +0 -10
  239. package/lib/components/Calendar/CalendarWrapper/CalendarWrapper.d.ts.map +0 -1
  240. package/lib/components/Calendar/get-disabled-state/get-disabled-state.d.ts +0 -15
  241. package/lib/components/Calendar/get-disabled-state/get-disabled-state.d.ts.map +0 -1
@@ -1,10 +1,10 @@
1
- import React, { useRef, useEffect } from 'react';
2
- import { useExtractedMargins, useMantineTheme, Text } from '@mantine/core';
1
+ import React, { forwardRef } from 'react';
2
+ import { Text, Box } from '@mantine/core';
3
3
  import { upperFirst } from '@mantine/hooks';
4
4
  import dayjs from 'dayjs';
5
5
  import { getMonthDays } from '../../utils/get-month-days/get-month-days.js';
6
6
  import { getWeekdaysNames } from '../../utils/get-weekdays-names/get-weekdays-names.js';
7
- import { isSameMonth } from '../../utils/is-same-month/is-same-month.js';
7
+ import { isSameDate } from '../../utils/is-same-date/is-same-date.js';
8
8
  import { Day } from './Day/Day.js';
9
9
  import { getDayProps } from './get-day-props/get-day-props.js';
10
10
  import useStyles from './Month.styles.js';
@@ -39,19 +39,16 @@ var __objRest = (source, exclude) => {
39
39
  };
40
40
  const noop = () => {
41
41
  };
42
- function Month(_a) {
42
+ const Month = forwardRef((_a, ref) => {
43
43
  var _b = _a, {
44
44
  className,
45
- style,
46
45
  month,
47
46
  value,
48
47
  onChange,
49
- autoFocus = false,
50
48
  disableOutsideEvents = false,
51
49
  locale,
52
50
  dayClassName,
53
51
  dayStyle,
54
- disableOutsideDayStyle = false,
55
52
  classNames,
56
53
  styles,
57
54
  minDate,
@@ -64,20 +61,20 @@ function Month(_a) {
64
61
  size = "sm",
65
62
  fullWidth = false,
66
63
  preventFocus = false,
67
- sx,
68
- firstDayOfWeek = "monday"
64
+ focusable = true,
65
+ firstDayOfWeek = "monday",
66
+ onDayKeyDown,
67
+ daysRefs,
68
+ hideOutsideDates = false
69
69
  } = _b, others = __objRest(_b, [
70
70
  "className",
71
- "style",
72
71
  "month",
73
72
  "value",
74
73
  "onChange",
75
- "autoFocus",
76
74
  "disableOutsideEvents",
77
75
  "locale",
78
76
  "dayClassName",
79
77
  "dayStyle",
80
- "disableOutsideDayStyle",
81
78
  "classNames",
82
79
  "styles",
83
80
  "minDate",
@@ -90,51 +87,15 @@ function Month(_a) {
90
87
  "size",
91
88
  "fullWidth",
92
89
  "preventFocus",
93
- "sx",
94
- "firstDayOfWeek"
90
+ "focusable",
91
+ "firstDayOfWeek",
92
+ "onDayKeyDown",
93
+ "daysRefs",
94
+ "hideOutsideDates"
95
95
  ]);
96
- const { classes, cx } = useStyles({ fullWidth }, { sx, classNames, styles, name: __staticSelector });
97
- const { mergedStyles, rest } = useExtractedMargins({ others, style });
98
- const theme = useMantineTheme();
96
+ const { classes, cx, theme } = useStyles({ fullWidth }, { classNames, styles, name: __staticSelector });
99
97
  const finalLocale = locale || theme.datesLocale;
100
- const daysRefs = useRef({});
101
98
  const days = getMonthDays(month, firstDayOfWeek);
102
- const focusDay = (date, diff) => {
103
- const offset = new Date(date);
104
- offset.setDate(date.getDate() + diff);
105
- if (offset.toISOString() in daysRefs.current) {
106
- if (!(!isSameMonth(month, offset) && disableOutsideEvents)) {
107
- daysRefs.current[offset.toISOString()].focus();
108
- }
109
- }
110
- };
111
- const handleKeyDown = (currentDate, event) => {
112
- const { code } = event.nativeEvent;
113
- if (code === "ArrowUp") {
114
- event.preventDefault();
115
- focusDay(currentDate, -7);
116
- }
117
- if (code === "ArrowDown") {
118
- event.preventDefault();
119
- focusDay(currentDate, 7);
120
- }
121
- if (code === "ArrowRight") {
122
- event.preventDefault();
123
- currentDate.getDay() !== 0 && focusDay(currentDate, 1);
124
- }
125
- if (code === "ArrowLeft") {
126
- event.preventDefault();
127
- currentDate.getDay() !== 1 && focusDay(currentDate, -1);
128
- }
129
- };
130
- useEffect(() => {
131
- if (autoFocus) {
132
- const date = new Date(month.getFullYear(), month.getMonth(), value ? value.getDate() : 1).toISOString();
133
- if (date in daysRefs.current) {
134
- daysRefs.current[date].focus();
135
- }
136
- }
137
- }, []);
138
99
  const weekdays = getWeekdaysNames(finalLocale, firstDayOfWeek).map((weekday) => /* @__PURE__ */ React.createElement("th", {
139
100
  className: classes.weekdayCell,
140
101
  key: weekday
@@ -157,46 +118,54 @@ function Month(_a) {
157
118
  disableOutsideEvents,
158
119
  range
159
120
  });
160
- const withoutStylesOutsideMonth = disableOutsideDayStyle && dayProps.outside;
121
+ const onKeyDownPayload = { rowIndex, cellIndex, date };
161
122
  return /* @__PURE__ */ React.createElement("td", {
162
123
  className: classes.cell,
163
124
  key: cellIndex
164
125
  }, /* @__PURE__ */ React.createElement(Day, {
165
126
  ref: (button) => {
166
- daysRefs.current[date.toISOString()] = button;
127
+ if (daysRefs) {
128
+ if (!Array.isArray(daysRefs[rowIndex])) {
129
+ daysRefs[rowIndex] = [];
130
+ }
131
+ daysRefs[rowIndex][cellIndex] = button;
132
+ }
167
133
  },
168
134
  onClick: () => typeof onChange === "function" && onChange(date),
169
135
  onMouseDown: (event) => preventFocus && event.preventDefault(),
170
136
  value: date,
171
137
  outside: dayProps.outside,
172
138
  weekend: dayProps.weekend,
173
- inRange: dayProps.inRange && !withoutStylesOutsideMonth,
139
+ inRange: dayProps.inRange,
174
140
  firstInRange: dayProps.firstInRange,
175
141
  lastInRange: dayProps.lastInRange,
176
- firstInMonth: cellIndex === 0 && rowIndex === 0,
177
- selected: (dayProps.selected || dayProps.selectedInRange) && !withoutStylesOutsideMonth,
142
+ firstInMonth: hideOutsideDates ? isSameDate(date, dayjs(month).startOf("month").toDate()) : cellIndex === 0 && rowIndex === 0,
143
+ selected: dayProps.selected || dayProps.selectedInRange,
178
144
  hasValue: hasValueInMonthRange,
179
- onKeyDown: handleKeyDown,
145
+ onKeyDown: (event) => typeof onDayKeyDown === "function" && onDayKeyDown(onKeyDownPayload, event),
180
146
  className: typeof dayClassName === "function" ? dayClassName(date, dayProps) : null,
181
147
  style: typeof dayStyle === "function" ? dayStyle(date, dayProps) : null,
182
- styles,
183
- classNames,
184
148
  disabled: dayProps.disabled,
185
- __staticSelector,
186
149
  onMouseEnter: typeof onDayMouseEnter === "function" ? onDayMouseEnter : noop,
187
150
  size,
188
- fullWidth
151
+ fullWidth,
152
+ focusable,
153
+ hideOutsideDates,
154
+ __staticSelector,
155
+ styles,
156
+ classNames
189
157
  }));
190
158
  });
191
159
  return /* @__PURE__ */ React.createElement("tr", {
192
160
  key: rowIndex
193
161
  }, cells);
194
162
  });
195
- return /* @__PURE__ */ React.createElement("table", __spreadValues({
196
- className: cx(classes.root, className),
197
- style: mergedStyles
198
- }, rest), !hideWeekdays && /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, weekdays)), /* @__PURE__ */ React.createElement("tbody", null, rows));
199
- }
163
+ return /* @__PURE__ */ React.createElement(Box, __spreadValues({
164
+ component: "table",
165
+ className: cx(classes.month, className),
166
+ ref
167
+ }, others), !hideWeekdays && /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, weekdays)), /* @__PURE__ */ React.createElement("tbody", null, rows));
168
+ });
200
169
  Month.displayName = "@mantine/core/Month";
201
170
 
202
171
  export { Month };
@@ -1 +1 @@
1
- {"version":3,"file":"Month.js","sources":["../../../src/components/Month/Month.tsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\nimport {\n DefaultProps,\n Text,\n MantineSize,\n ClassNames,\n useExtractedMargins,\n useMantineTheme,\n} from '@mantine/core';\nimport { upperFirst } from '@mantine/hooks';\nimport dayjs from 'dayjs';\nimport { FirstDayOfWeek } from '../../types';\nimport { getMonthDays, isSameMonth, getWeekdaysNames } from '../../utils';\nimport { Day, DayStylesNames } from './Day/Day';\nimport { getDayProps, DayModifiers } from './get-day-props/get-day-props';\nimport useStyles from './Month.styles';\n\nexport interface MonthSettings {\n /** Adds className to day button based on date and modifiers */\n dayClassName?(date: Date, modifiers: DayModifiers): string;\n\n /** Adds style to day button based on date and modifiers */\n dayStyle?(date: Date, modifiers: DayModifiers): React.CSSProperties;\n\n /** When true dates that are outside of given month are not styled */\n disableOutsideDayStyle?: boolean;\n\n /** When true dates that are outside of given month cannot be clicked or focused */\n disableOutsideEvents?: boolean;\n\n /** Minimum possible date */\n minDate?: Date;\n\n /** Maximum possible date */\n maxDate?: Date;\n\n /** Callback function to determine if day should be disabled */\n excludeDate?(date: Date): boolean;\n\n /** Set to false to remove weekdays row */\n hideWeekdays?: boolean;\n\n /** Controls month days font-size and height */\n size?: MantineSize;\n\n /** Set to true to make calendar take 100% of container width */\n fullWidth?: boolean;\n\n /** Prevent focusing upon clicking */\n preventFocus?: boolean;\n}\n\nexport type MonthStylesNames = ClassNames<typeof useStyles> | DayStylesNames;\n\nexport interface MonthProps\n extends DefaultProps<MonthStylesNames>,\n MonthSettings,\n Omit<React.ComponentPropsWithoutRef<'table'>, 'onChange' | 'value'> {\n /** Date at which month should be shown */\n month: Date;\n\n /** Locale is used to get weekdays names with dayjs format */\n locale?: string;\n\n /** Selected date */\n value?: Date;\n\n /** Selected range */\n range?: [Date, Date];\n\n /** Autofocus selected date on mount, if no date is selected autofocus is applied to first month day */\n autoFocus?: boolean;\n\n /** Called when day is selected */\n onChange?(value: Date): void;\n\n /** Static css selector base */\n __staticSelector?: string;\n\n /** Called when onMouseEnter event fired on day button */\n onDayMouseEnter?(date: Date, event: React.MouseEvent): void;\n\n /** Set first day of the week */\n firstDayOfWeek?: FirstDayOfWeek;\n}\n\nconst noop = () => {};\n\nexport function Month({\n className,\n style,\n month,\n value,\n onChange,\n autoFocus = false,\n disableOutsideEvents = false,\n locale,\n dayClassName,\n dayStyle,\n disableOutsideDayStyle = false,\n classNames,\n styles,\n minDate,\n maxDate,\n excludeDate,\n onDayMouseEnter,\n range,\n hideWeekdays = false,\n __staticSelector = 'Month',\n size = 'sm',\n fullWidth = false,\n preventFocus = false,\n sx,\n firstDayOfWeek = 'monday',\n ...others\n}: MonthProps) {\n const { classes, cx } = useStyles(\n { fullWidth },\n { sx, classNames, styles, name: __staticSelector }\n );\n const { mergedStyles, rest } = useExtractedMargins({ others, style });\n const theme = useMantineTheme();\n const finalLocale = locale || theme.datesLocale;\n const daysRefs = useRef<Record<string, HTMLButtonElement>>({});\n const days = getMonthDays(month, firstDayOfWeek);\n\n const focusDay = (date: Date, diff: number) => {\n const offset = new Date(date);\n offset.setDate(date.getDate() + diff);\n\n if (offset.toISOString() in daysRefs.current) {\n if (!(!isSameMonth(month, offset) && disableOutsideEvents)) {\n daysRefs.current[offset.toISOString()].focus();\n }\n }\n };\n\n const handleKeyDown = (currentDate: Date, event: React.KeyboardEvent) => {\n const { code } = event.nativeEvent;\n\n if (code === 'ArrowUp') {\n event.preventDefault();\n focusDay(currentDate, -7);\n }\n\n if (code === 'ArrowDown') {\n event.preventDefault();\n focusDay(currentDate, 7);\n }\n\n if (code === 'ArrowRight') {\n event.preventDefault();\n currentDate.getDay() !== 0 && focusDay(currentDate, 1);\n }\n\n if (code === 'ArrowLeft') {\n event.preventDefault();\n currentDate.getDay() !== 1 && focusDay(currentDate, -1);\n }\n };\n\n useEffect(() => {\n if (autoFocus) {\n const date = new Date(\n month.getFullYear(),\n month.getMonth(),\n value ? value.getDate() : 1\n ).toISOString();\n\n if (date in daysRefs.current) {\n daysRefs.current[date].focus();\n }\n }\n }, []);\n\n const weekdays = getWeekdaysNames(finalLocale, firstDayOfWeek).map((weekday) => (\n <th className={classes.weekdayCell} key={weekday}>\n <Text size={size} className={classes.weekday}>\n {upperFirst(weekday)}\n </Text>\n </th>\n ));\n\n const hasValue = value instanceof Date;\n const hasValueInMonthRange =\n hasValue &&\n dayjs(value).isAfter(dayjs(month).startOf('month')) &&\n dayjs(value).isBefore(dayjs(month).endOf('month'));\n\n const rows = days.map((row, rowIndex) => {\n const cells = row.map((date, cellIndex) => {\n const dayProps = getDayProps({\n date,\n month,\n hasValue,\n minDate,\n maxDate,\n value,\n excludeDate,\n disableOutsideEvents,\n range,\n });\n\n const withoutStylesOutsideMonth = disableOutsideDayStyle && dayProps.outside;\n\n return (\n <td className={classes.cell} key={cellIndex}>\n <Day\n ref={(button) => {\n daysRefs.current[date.toISOString()] = button;\n }}\n onClick={() => typeof onChange === 'function' && onChange(date)}\n onMouseDown={(event) => preventFocus && event.preventDefault()}\n value={date}\n outside={dayProps.outside}\n weekend={dayProps.weekend}\n inRange={dayProps.inRange && !withoutStylesOutsideMonth}\n firstInRange={dayProps.firstInRange}\n lastInRange={dayProps.lastInRange}\n firstInMonth={cellIndex === 0 && rowIndex === 0}\n selected={(dayProps.selected || dayProps.selectedInRange) && !withoutStylesOutsideMonth}\n hasValue={hasValueInMonthRange}\n onKeyDown={handleKeyDown}\n className={typeof dayClassName === 'function' ? dayClassName(date, dayProps) : null}\n style={typeof dayStyle === 'function' ? dayStyle(date, dayProps) : null}\n styles={styles}\n classNames={classNames}\n disabled={dayProps.disabled}\n __staticSelector={__staticSelector}\n onMouseEnter={typeof onDayMouseEnter === 'function' ? onDayMouseEnter : noop}\n size={size}\n fullWidth={fullWidth}\n />\n </td>\n );\n });\n\n return <tr key={rowIndex}>{cells}</tr>;\n });\n\n return (\n <table className={cx(classes.root, className)} style={mergedStyles} {...rest}>\n {!hideWeekdays && (\n <thead>\n <tr>{weekdays}</tr>\n </thead>\n )}\n <tbody>{rows}</tbody>\n </table>\n );\n}\n\nMonth.displayName = '@mantine/core/Month';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Month.js","sources":["../../../src/components/Month/Month.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { DefaultProps, Text, Box, MantineSize, ClassNames } from '@mantine/core';\nimport { upperFirst } from '@mantine/hooks';\nimport dayjs from 'dayjs';\nimport { FirstDayOfWeek } from '../../types';\nimport { getMonthDays, getWeekdaysNames, isSameDate } from '../../utils';\nimport { Day, DayStylesNames } from './Day/Day';\nimport { getDayProps } from './get-day-props/get-day-props';\nimport { DayKeydownPayload, DayModifiers } from './types';\nimport useStyles from './Month.styles';\n\nexport interface MonthSettings {\n /** Adds className to day button based on date and modifiers */\n dayClassName?(date: Date, modifiers: DayModifiers): string;\n\n /** Adds style to day button based on date and modifiers */\n dayStyle?(date: Date, modifiers: DayModifiers): React.CSSProperties;\n\n /** When true dates that are outside of given month cannot be clicked or focused */\n disableOutsideEvents?: boolean;\n\n /** Minimum possible date */\n minDate?: Date;\n\n /** Maximum possible date */\n maxDate?: Date;\n\n /** Callback function to determine if day should be disabled */\n excludeDate?(date: Date): boolean;\n\n /** Set to false to remove weekdays row */\n hideWeekdays?: boolean;\n\n /** Controls month days font-size and height */\n size?: MantineSize;\n\n /** Set to true to make calendar take 100% of container width */\n fullWidth?: boolean;\n\n /** Prevent focusing upon clicking */\n preventFocus?: boolean;\n\n /** Should focusable days have tabIndex={0}? */\n focusable?: boolean;\n\n /** Set first day of the week */\n firstDayOfWeek?: FirstDayOfWeek;\n\n /** Remove outside dates */\n hideOutsideDates?: boolean;\n}\n\nexport type MonthStylesNames = ClassNames<typeof useStyles> | DayStylesNames;\n\nexport interface MonthProps\n extends DefaultProps<MonthStylesNames>,\n MonthSettings,\n Omit<React.ComponentPropsWithoutRef<'table'>, 'onChange' | 'value'> {\n /** Date at which month should be shown */\n month: Date;\n\n /** Locale is used to get weekdays names with dayjs format */\n locale?: string;\n\n /** Selected date */\n value?: Date;\n\n /** Selected range */\n range?: [Date, Date];\n\n /** Called when day is selected */\n onChange?(value: Date): void;\n\n /** Static css selector base */\n __staticSelector?: string;\n\n /** Called when onMouseEnter event fired on day button */\n onDayMouseEnter?(date: Date, event: React.MouseEvent): void;\n\n /** Get days buttons refs */\n daysRefs?: HTMLButtonElement[][];\n\n /** Called when keydown event is registered on day */\n onDayKeyDown?(payload: DayKeydownPayload, event: React.KeyboardEvent<HTMLButtonElement>): void;\n}\n\nconst noop = () => {};\n\nexport const Month = forwardRef<HTMLTableElement, MonthProps>(\n (\n {\n className,\n month,\n value,\n onChange,\n disableOutsideEvents = false,\n locale,\n dayClassName,\n dayStyle,\n classNames,\n styles,\n minDate,\n maxDate,\n excludeDate,\n onDayMouseEnter,\n range,\n hideWeekdays = false,\n __staticSelector = 'Month',\n size = 'sm',\n fullWidth = false,\n preventFocus = false,\n focusable = true,\n firstDayOfWeek = 'monday',\n onDayKeyDown,\n daysRefs,\n hideOutsideDates = false,\n ...others\n }: MonthProps,\n ref\n ) => {\n const { classes, cx, theme } = useStyles(\n { fullWidth },\n { classNames, styles, name: __staticSelector }\n );\n const finalLocale = locale || theme.datesLocale;\n const days = getMonthDays(month, firstDayOfWeek);\n\n const weekdays = getWeekdaysNames(finalLocale, firstDayOfWeek).map((weekday) => (\n <th className={classes.weekdayCell} key={weekday}>\n <Text size={size} className={classes.weekday}>\n {upperFirst(weekday)}\n </Text>\n </th>\n ));\n\n const hasValue = value instanceof Date;\n const hasValueInMonthRange =\n hasValue &&\n dayjs(value).isAfter(dayjs(month).startOf('month')) &&\n dayjs(value).isBefore(dayjs(month).endOf('month'));\n\n const rows = days.map((row, rowIndex) => {\n const cells = row.map((date, cellIndex) => {\n const dayProps = getDayProps({\n date,\n month,\n hasValue,\n minDate,\n maxDate,\n value,\n excludeDate,\n disableOutsideEvents,\n range,\n });\n\n const onKeyDownPayload = { rowIndex, cellIndex, date };\n\n return (\n <td className={classes.cell} key={cellIndex}>\n <Day\n ref={(button) => {\n if (daysRefs) {\n if (!Array.isArray(daysRefs[rowIndex])) {\n // eslint-disable-next-line no-param-reassign\n daysRefs[rowIndex] = [];\n }\n\n // eslint-disable-next-line no-param-reassign\n daysRefs[rowIndex][cellIndex] = button;\n }\n }}\n onClick={() => typeof onChange === 'function' && onChange(date)}\n onMouseDown={(event) => preventFocus && event.preventDefault()}\n value={date}\n outside={dayProps.outside}\n weekend={dayProps.weekend}\n inRange={dayProps.inRange}\n firstInRange={dayProps.firstInRange}\n lastInRange={dayProps.lastInRange}\n firstInMonth={\n hideOutsideDates\n ? isSameDate(date, dayjs(month).startOf('month').toDate())\n : cellIndex === 0 && rowIndex === 0\n }\n selected={dayProps.selected || dayProps.selectedInRange}\n hasValue={hasValueInMonthRange}\n onKeyDown={(event) =>\n typeof onDayKeyDown === 'function' && onDayKeyDown(onKeyDownPayload, event)\n }\n className={typeof dayClassName === 'function' ? dayClassName(date, dayProps) : null}\n style={typeof dayStyle === 'function' ? dayStyle(date, dayProps) : null}\n disabled={dayProps.disabled}\n onMouseEnter={typeof onDayMouseEnter === 'function' ? onDayMouseEnter : noop}\n size={size}\n fullWidth={fullWidth}\n focusable={focusable}\n hideOutsideDates={hideOutsideDates}\n __staticSelector={__staticSelector}\n styles={styles}\n classNames={classNames}\n />\n </td>\n );\n });\n\n return <tr key={rowIndex}>{cells}</tr>;\n });\n\n return (\n <Box component=\"table\" className={cx(classes.month, className)} ref={ref} {...others}>\n {!hideWeekdays && (\n <thead>\n <tr>{weekdays}</tr>\n </thead>\n )}\n <tbody>{rows}</tbody>\n </Box>\n );\n }\n);\n\nMonth.displayName = '@mantine/core/Month';\n"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ var useStyles = createStyles((theme, { fullWidth }) => ({
23
23
  weekday: {
24
24
  color: theme.colorScheme === "dark" ? theme.colors.dark[1] : theme.colors.gray[5]
25
25
  },
26
- root: __spreadProps(__spreadValues({}, theme.fn.fontStyles()), {
26
+ month: __spreadProps(__spreadValues({}, theme.fn.fontStyles()), {
27
27
  borderCollapse: "collapse",
28
28
  width: fullWidth ? "100%" : "auto",
29
29
  tableLayout: "fixed"
@@ -1 +1 @@
1
- {"version":3,"file":"Month.styles.js","sources":["../../../src/components/Month/Month.styles.ts"],"sourcesContent":["import { createStyles } from '@mantine/core';\n\ninterface MonthStyles {\n fullWidth: boolean;\n}\n\nexport default createStyles((theme, { fullWidth }: MonthStyles) => ({\n weekday: {\n color: theme.colorScheme === 'dark' ? theme.colors.dark[1] : theme.colors.gray[5],\n },\n\n root: {\n ...theme.fn.fontStyles(),\n borderCollapse: 'collapse',\n width: fullWidth ? '100%' : 'auto',\n tableLayout: 'fixed',\n },\n\n cell: {\n boxSizing: 'border-box',\n padding: 0,\n borderTop: '1px solid transparent',\n },\n\n weekdayCell: {\n boxSizing: 'border-box',\n padding: 0,\n fontWeight: 'normal',\n paddingBottom: theme.spacing.xs / 2,\n textAlign: 'center',\n cursor: 'default',\n userSelect: 'none',\n },\n}));\n"],"names":[],"mappings":";;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,gBAAe,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM;AACvD,EAAE,OAAO,EAAE;AACX,IAAI,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE;AACjE,IAAI,cAAc,EAAE,UAAU;AAC9B,IAAI,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;AACtC,IAAI,WAAW,EAAE,OAAO;AACxB,GAAG,CAAC;AACJ,EAAE,IAAI,EAAE;AACR,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,SAAS,EAAE,uBAAuB;AACtC,GAAG;AACH,EAAE,WAAW,EAAE;AACf,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AACvC,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,UAAU,EAAE,MAAM;AACtB,GAAG;AACH,CAAC,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"Month.styles.js","sources":["../../../src/components/Month/Month.styles.ts"],"sourcesContent":["import { createStyles } from '@mantine/core';\n\ninterface MonthStyles {\n fullWidth: boolean;\n}\n\nexport default createStyles((theme, { fullWidth }: MonthStyles) => ({\n weekday: {\n color: theme.colorScheme === 'dark' ? theme.colors.dark[1] : theme.colors.gray[5],\n },\n\n month: {\n ...theme.fn.fontStyles(),\n borderCollapse: 'collapse',\n width: fullWidth ? '100%' : 'auto',\n tableLayout: 'fixed',\n },\n\n cell: {\n boxSizing: 'border-box',\n padding: 0,\n borderTop: '1px solid transparent',\n },\n\n weekdayCell: {\n boxSizing: 'border-box',\n padding: 0,\n fontWeight: 'normal',\n paddingBottom: theme.spacing.xs / 2,\n textAlign: 'center',\n cursor: 'default',\n userSelect: 'none',\n },\n}));\n"],"names":[],"mappings":";;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,gBAAe,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM;AACvD,EAAE,OAAO,EAAE;AACX,IAAI,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE;AAClE,IAAI,cAAc,EAAE,UAAU;AAC9B,IAAI,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;AACtC,IAAI,WAAW,EAAE,OAAO;AACxB,GAAG,CAAC;AACJ,EAAE,IAAI,EAAE;AACR,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,SAAS,EAAE,uBAAuB;AACtC,GAAG;AACH,EAAE,WAAW,EAAE;AACf,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AACvC,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,UAAU,EAAE,MAAM;AACtB,GAAG;AACH,CAAC,CAAC,CAAC;;;;"}
@@ -1,5 +1,9 @@
1
- import dayjs from 'dayjs';
1
+ import 'dayjs';
2
2
  import { isSameDate } from '../../../utils/is-same-date/is-same-date.js';
3
+ import { isWeekend } from './is-weekend/is-weekend.js';
4
+ import { isOutside } from './is-outside/is-outside.js';
5
+ import { isDisabled } from './is-disabled/is-disabled.js';
6
+ import { getRangeProps } from './get-range-props/get-range-props.js';
3
7
 
4
8
  function getDayProps({
5
9
  date,
@@ -12,32 +16,17 @@ function getDayProps({
12
16
  disableOutsideEvents,
13
17
  range
14
18
  }) {
15
- const weekday = date.getDay();
16
- const weekend = weekday === 6 || weekday === 0;
17
- const outside = date.getMonth() !== month.getMonth();
19
+ const outside = isOutside(date, month);
18
20
  const selected = hasValue && isSameDate(date, value);
19
- const isAfterMax = maxDate instanceof Date && dayjs(maxDate).isBefore(date, "day");
20
- const isBeforeMin = minDate instanceof Date && dayjs(minDate).isAfter(date, "day");
21
- const shouldExclude = typeof excludeDate === "function" && excludeDate(date);
22
- const disabledOutside = disableOutsideEvents && outside;
23
- const disabled = isAfterMax || isBeforeMin || shouldExclude || disabledOutside;
24
- const hasRange = Array.isArray(range) && range.every((val) => val instanceof Date);
25
- const inclusiveRange = hasRange && [
26
- dayjs(range[0]).subtract(1, "day"),
27
- dayjs(range[1]).add(1, "day")
28
- ];
29
- const firstInRange = hasRange && isSameDate(date, range[0]);
30
- const lastInRange = hasRange && isSameDate(date, range[1]);
31
- const inRange = hasRange && dayjs(date).isAfter(inclusiveRange[0], "day") && dayjs(date).isBefore(inclusiveRange[1], "day");
32
- const selectedInRange = firstInRange || lastInRange;
21
+ const { inRange, lastInRange, firstInRange, selectedInRange } = getRangeProps(date, range);
33
22
  return {
23
+ disabled: isDisabled({ minDate, maxDate, excludeDate, disableOutsideEvents, date, outside }),
24
+ weekend: isWeekend(date),
34
25
  selectedInRange,
35
26
  selected,
36
- disabled,
37
27
  inRange,
38
28
  firstInRange,
39
29
  lastInRange,
40
- weekend,
41
30
  outside
42
31
  };
43
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-day-props.js","sources":["../../../../src/components/Month/get-day-props/get-day-props.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { isSameDate } from '../../../utils';\n\ninterface GetDayProps {\n /** Date associated with Day component */\n date: Date;\n\n /** Month that is currently displayed */\n month: Date;\n\n /** Does month have value prop? */\n hasValue: boolean;\n\n /** Min and max possible dates */\n maxDate: Date;\n minDate: Date;\n\n /** Currently selected date */\n value: Date;\n\n /** Function to determine if date should be excluded */\n excludeDate(date: Date): boolean;\n\n /** Should outside events be disabled */\n disableOutsideEvents: boolean;\n\n /** Selected date range */\n range: [Date, Date];\n}\n\nexport interface DayModifiers {\n /** Is date selected and is first or last in range? */\n selectedInRange: boolean;\n\n /** Is date equal to value? */\n selected: boolean;\n\n /** Based on minDate, maxDate, excludeDate and disableOutsideEvents props */\n disabled: boolean;\n\n /** Is date is range? */\n inRange: boolean;\n\n /** Is date first or last in given range? */\n firstInRange: boolean;\n lastInRange: boolean;\n\n /** Is date Saturday or Sunday? */\n weekend: boolean;\n\n /** Is date outside of given month? */\n outside: boolean;\n}\n\nexport function getDayProps({\n date,\n month,\n hasValue,\n minDate,\n maxDate,\n value,\n excludeDate,\n disableOutsideEvents,\n range,\n}: GetDayProps) {\n const weekday = date.getDay();\n const weekend = weekday === 6 || weekday === 0;\n const outside = date.getMonth() !== month.getMonth();\n const selected = hasValue && isSameDate(date, value);\n const isAfterMax = maxDate instanceof Date && dayjs(maxDate).isBefore(date, 'day');\n const isBeforeMin = minDate instanceof Date && dayjs(minDate).isAfter(date, 'day');\n const shouldExclude = typeof excludeDate === 'function' && excludeDate(date);\n const disabledOutside = disableOutsideEvents && outside;\n const disabled = isAfterMax || isBeforeMin || shouldExclude || disabledOutside;\n const hasRange = Array.isArray(range) && range.every((val) => val instanceof Date);\n const inclusiveRange = hasRange && [\n dayjs(range[0]).subtract(1, 'day'),\n dayjs(range[1]).add(1, 'day'),\n ];\n\n const firstInRange = hasRange && isSameDate(date, range[0]);\n const lastInRange = hasRange && isSameDate(date, range[1]);\n const inRange =\n hasRange &&\n dayjs(date).isAfter(inclusiveRange[0], 'day') &&\n dayjs(date).isBefore(inclusiveRange[1], 'day');\n\n const selectedInRange = firstInRange || lastInRange;\n\n return {\n selectedInRange,\n selected,\n disabled,\n inRange,\n firstInRange,\n lastInRange,\n weekend,\n outside,\n };\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,WAAW,CAAC;AAC5B,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,KAAK;AACP,CAAC,EAAE;AACH,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAChC,EAAE,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;AACjD,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;AACvD,EAAE,MAAM,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,EAAE,MAAM,UAAU,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrF,EAAE,MAAM,WAAW,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrF,EAAE,MAAM,aAAa,GAAG,OAAO,WAAW,KAAK,UAAU,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/E,EAAE,MAAM,eAAe,GAAG,oBAAoB,IAAI,OAAO,CAAC;AAC1D,EAAE,MAAM,QAAQ,GAAG,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,eAAe,CAAC;AACjF,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,YAAY,IAAI,CAAC,CAAC;AACrF,EAAE,MAAM,cAAc,GAAG,QAAQ,IAAI;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;AACtC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACjC,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,EAAE,MAAM,WAAW,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9H,EAAE,MAAM,eAAe,GAAG,YAAY,IAAI,WAAW,CAAC;AACtD,EAAE,OAAO;AACT,IAAI,eAAe;AACnB,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,OAAO;AACX,IAAI,OAAO;AACX,GAAG,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"get-day-props.js","sources":["../../../../src/components/Month/get-day-props/get-day-props.ts"],"sourcesContent":["import { isSameDate } from '../../../utils';\nimport { DayModifiers } from '../types';\nimport { isWeekend } from './is-weekend/is-weekend';\nimport { isOutside } from './is-outside/is-outside';\nimport { isDisabled } from './is-disabled/is-disabled';\nimport { getRangeProps } from './get-range-props/get-range-props';\n\ninterface GetDayProps {\n /** Date associated with Day component */\n date: Date;\n\n /** Month that is currently displayed */\n month: Date;\n\n /** Does month have value prop? */\n hasValue: boolean;\n\n /** Min and max possible dates */\n maxDate: Date;\n minDate: Date;\n\n /** Currently selected date */\n value: Date;\n\n /** Function to determine if date should be excluded */\n excludeDate(date: Date): boolean;\n\n /** Should outside events be disabled */\n disableOutsideEvents: boolean;\n\n /** Selected date range */\n range: [Date, Date];\n}\n\nexport function getDayProps({\n date,\n month,\n hasValue,\n minDate,\n maxDate,\n value,\n excludeDate,\n disableOutsideEvents,\n range,\n}: GetDayProps): DayModifiers {\n const outside = isOutside(date, month);\n const selected = hasValue && isSameDate(date, value);\n const { inRange, lastInRange, firstInRange, selectedInRange } = getRangeProps(date, range);\n\n return {\n disabled: isDisabled({ minDate, maxDate, excludeDate, disableOutsideEvents, date, outside }),\n weekend: isWeekend(date),\n selectedInRange,\n selected,\n inRange,\n firstInRange,\n lastInRange,\n outside,\n };\n}\n"],"names":[],"mappings":";;;;;;;AAKO,SAAS,WAAW,CAAC;AAC5B,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,KAAK;AACP,CAAC,EAAE;AACH,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzC,EAAE,MAAM,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7F,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAChG,IAAI,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;AAC5B,IAAI,eAAe;AACnB,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,OAAO;AACX,GAAG,CAAC;AACJ;;;;"}
@@ -0,0 +1,17 @@
1
+ import dayjs from 'dayjs';
2
+ import { isSameDate } from '../../../../utils/is-same-date/is-same-date.js';
3
+
4
+ function getRangeProps(date, range) {
5
+ const hasRange = Array.isArray(range) && range.every((val) => val instanceof Date);
6
+ const inclusiveRange = hasRange && [
7
+ dayjs(range[0]).subtract(1, "day"),
8
+ dayjs(range[1]).add(1, "day")
9
+ ];
10
+ const firstInRange = hasRange && isSameDate(date, range[0]);
11
+ const lastInRange = hasRange && isSameDate(date, range[1]);
12
+ const inRange = hasRange && dayjs(date).isAfter(inclusiveRange[0], "day") && dayjs(date).isBefore(inclusiveRange[1], "day");
13
+ return { firstInRange, lastInRange, inRange, selectedInRange: firstInRange || lastInRange };
14
+ }
15
+
16
+ export { getRangeProps };
17
+ //# sourceMappingURL=get-range-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-range-props.js","sources":["../../../../../src/components/Month/get-day-props/get-range-props/get-range-props.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { isSameDate } from '../../../../utils';\n\nexport function getRangeProps(date: Date, range: [Date, Date]) {\n const hasRange = Array.isArray(range) && range.every((val) => val instanceof Date);\n const inclusiveRange = hasRange && [\n dayjs(range[0]).subtract(1, 'day'),\n dayjs(range[1]).add(1, 'day'),\n ];\n\n const firstInRange = hasRange && isSameDate(date, range[0]);\n const lastInRange = hasRange && isSameDate(date, range[1]);\n const inRange =\n hasRange &&\n dayjs(date).isAfter(inclusiveRange[0], 'day') &&\n dayjs(date).isBefore(inclusiveRange[1], 'day');\n\n return { firstInRange, lastInRange, inRange, selectedInRange: firstInRange || lastInRange };\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3C,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,YAAY,IAAI,CAAC,CAAC;AACrF,EAAE,MAAM,cAAc,GAAG,QAAQ,IAAI;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;AACtC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACjC,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,EAAE,MAAM,WAAW,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9H,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAC9F;;;;"}
@@ -0,0 +1,19 @@
1
+ import dayjs from 'dayjs';
2
+
3
+ function isDisabled({
4
+ minDate,
5
+ maxDate,
6
+ excludeDate,
7
+ disableOutsideEvents,
8
+ date,
9
+ outside
10
+ }) {
11
+ const isAfterMax = maxDate instanceof Date && dayjs(maxDate).isBefore(date, "day");
12
+ const isBeforeMin = minDate instanceof Date && dayjs(minDate).isAfter(date, "day");
13
+ const shouldExclude = typeof excludeDate === "function" && excludeDate(date);
14
+ const disabledOutside = !!disableOutsideEvents && !!outside;
15
+ return isAfterMax || isBeforeMin || shouldExclude || disabledOutside;
16
+ }
17
+
18
+ export { isDisabled };
19
+ //# sourceMappingURL=is-disabled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-disabled.js","sources":["../../../../../src/components/Month/get-day-props/is-disabled/is-disabled.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\ninterface IsDisabled {\n date: Date;\n minDate?: Date;\n maxDate?: Date;\n excludeDate?(date: Date): boolean;\n disableOutsideEvents?: boolean;\n outside?: boolean;\n}\n\nexport function isDisabled({\n minDate,\n maxDate,\n excludeDate,\n disableOutsideEvents,\n date,\n outside,\n}: IsDisabled) {\n const isAfterMax = maxDate instanceof Date && dayjs(maxDate).isBefore(date, 'day');\n const isBeforeMin = minDate instanceof Date && dayjs(minDate).isAfter(date, 'day');\n const shouldExclude = typeof excludeDate === 'function' && excludeDate(date);\n const disabledOutside = !!disableOutsideEvents && !!outside;\n return isAfterMax || isBeforeMin || shouldExclude || disabledOutside;\n}\n"],"names":[],"mappings":";;AACO,SAAS,UAAU,CAAC;AAC3B,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,IAAI;AACN,EAAE,OAAO;AACT,CAAC,EAAE;AACH,EAAE,MAAM,UAAU,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrF,EAAE,MAAM,WAAW,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrF,EAAE,MAAM,aAAa,GAAG,OAAO,WAAW,KAAK,UAAU,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/E,EAAE,MAAM,eAAe,GAAG,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,OAAO,CAAC;AAC9D,EAAE,OAAO,UAAU,IAAI,WAAW,IAAI,aAAa,IAAI,eAAe,CAAC;AACvE;;;;"}
@@ -0,0 +1,9 @@
1
+ import 'dayjs';
2
+ import { isSameMonth } from '../../../../utils/is-same-month/is-same-month.js';
3
+
4
+ function isOutside(date, month) {
5
+ return !isSameMonth(date, month);
6
+ }
7
+
8
+ export { isOutside };
9
+ //# sourceMappingURL=is-outside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-outside.js","sources":["../../../../../src/components/Month/get-day-props/is-outside/is-outside.ts"],"sourcesContent":["import { isSameMonth } from '../../../../utils';\n\nexport function isOutside(date: Date, month: Date) {\n return !isSameMonth(date, month);\n}\n"],"names":[],"mappings":";;;AACO,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AACvC,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC;;;;"}
@@ -0,0 +1,7 @@
1
+ function isWeekend(date) {
2
+ const weekday = date.getDay();
3
+ return weekday === 6 || weekday === 0;
4
+ }
5
+
6
+ export { isWeekend };
7
+ //# sourceMappingURL=is-weekend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-weekend.js","sources":["../../../../../src/components/Month/get-day-props/is-weekend/is-weekend.ts"],"sourcesContent":["export function isWeekend(date: Date) {\n const weekday = date.getDay();\n return weekday === 6 || weekday === 0;\n}\n"],"names":[],"mappings":"AAAO,SAAS,SAAS,CAAC,IAAI,EAAE;AAChC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAChC,EAAE,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;AACxC;;;;"}
@@ -1,13 +1,8 @@
1
1
  import React, { forwardRef, useState } from 'react';
2
- import { useMantineTheme, Group } from '@mantine/core';
3
- import { useUncontrolled } from '@mantine/hooks';
2
+ import { useMantineTheme } from '@mantine/core';
4
3
  import dayjs from 'dayjs';
5
4
  import { isSameDate } from '../../utils/is-same-date/is-same-date.js';
6
- import { isSameMonth } from '../../utils/is-same-month/is-same-month.js';
7
- import { Month } from '../Month/Month.js';
8
- import { CalendarHeader } from '../Calendar/CalendarHeader/CalendarHeader.js';
9
- import { CalendarWrapper } from '../Calendar/CalendarWrapper/CalendarWrapper.js';
10
- import { getDisabledState } from '../Calendar/get-disabled-state/get-disabled-state.js';
5
+ import { CalendarBase } from '../CalendarBase/CalendarBase.js';
11
6
 
12
7
  var __defProp = Object.defineProperty;
13
8
  var __defProps = Object.defineProperties;
@@ -42,65 +37,25 @@ var __objRest = (source, exclude) => {
42
37
  };
43
38
  const RangeCalendar = forwardRef((_a, ref) => {
44
39
  var _b = _a, {
45
- classNames,
46
- styles,
47
- locale,
48
- nextMonthLabel,
49
- previousMonthLabel,
50
- initialMonth,
51
- month,
52
- onMonthChange,
53
40
  value,
54
41
  onChange,
55
- labelFormat = "MMMM YYYY",
56
- withSelect = false,
57
- yearsRange = { from: 2020, to: 2030 },
58
- dayClassName,
59
42
  dayStyle,
60
- disableOutsideEvents,
61
- minDate,
62
- maxDate,
63
- excludeDate,
64
- fullWidth = false,
65
- size = "sm",
66
43
  onMouseLeave,
67
- __staticSelector = "range-calendar",
68
- firstDayOfWeek = "monday",
44
+ __staticSelector = "RangeCalendar",
69
45
  allowSingleDateInRange = false,
70
46
  amountOfMonths = 1
71
47
  } = _b, others = __objRest(_b, [
72
- "classNames",
73
- "styles",
74
- "locale",
75
- "nextMonthLabel",
76
- "previousMonthLabel",
77
- "initialMonth",
78
- "month",
79
- "onMonthChange",
80
48
  "value",
81
49
  "onChange",
82
- "labelFormat",
83
- "withSelect",
84
- "yearsRange",
85
- "dayClassName",
86
50
  "dayStyle",
87
- "disableOutsideEvents",
88
- "minDate",
89
- "maxDate",
90
- "excludeDate",
91
- "fullWidth",
92
- "size",
93
51
  "onMouseLeave",
94
52
  "__staticSelector",
95
- "firstDayOfWeek",
96
53
  "allowSingleDateInRange",
97
54
  "amountOfMonths"
98
55
  ]);
99
56
  const theme = useMantineTheme();
100
57
  const [hoveredDay, setHoveredDay] = useState(null);
101
58
  const [pickedDate, setPickedDate] = useState(null);
102
- const hasMultipleMonths = amountOfMonths > 1;
103
- const finalLocale = locale || theme.datesLocale;
104
59
  const setRangeDate = (date) => {
105
60
  if (pickedDate instanceof Date) {
106
61
  if (isSameDate(date, pickedDate) && !allowSingleDateInRange) {
@@ -122,94 +77,36 @@ const RangeCalendar = forwardRef((_a, ref) => {
122
77
  typeof onMouseLeave === "function" && onMouseLeave(event);
123
78
  setHoveredDay(null);
124
79
  };
125
- const shouldHighlightDate = (date, modifiers, currentMonth) => {
126
- const isInCurrentMonth = hasMultipleMonths ? isSameMonth(date, currentMonth) : true;
127
- if (pickedDate instanceof Date && hoveredDay instanceof Date && isInCurrentMonth) {
80
+ const shouldHighlightDate = (date, modifiers) => {
81
+ if (pickedDate instanceof Date && hoveredDay instanceof Date) {
128
82
  const result = [hoveredDay, pickedDate];
129
83
  result.sort((a, b) => a.getTime() - b.getTime());
130
84
  return !modifiers.selected && dayjs(date).subtract(1, "day").isBefore(result[1]) && dayjs(date).add(1, "day").isAfter(result[0]);
131
85
  }
132
86
  return false;
133
87
  };
134
- const [_month, setMonth] = useUncontrolled({
135
- value: month,
136
- defaultValue: initialMonth,
137
- finalValue: new Date(),
138
- onChange: onMonthChange,
139
- rule: (val) => val instanceof Date
140
- });
141
- const disabledState = getDisabledState({
142
- month: _month,
143
- minDate,
144
- maxDate,
145
- amountOfMonths
146
- });
147
- const dayStyles = (date, modifiers, currentMonth) => {
88
+ const dayStyles = (date, modifiers) => {
148
89
  const initialStyles = typeof dayStyle === "function" ? dayStyle(date, modifiers) : null;
149
- const outsideStyles = modifiers.outside && hasMultipleMonths ? { display: "none" } : null;
150
- if (shouldHighlightDate(date, modifiers, currentMonth)) {
151
- return __spreadProps(__spreadValues(__spreadValues({}, initialStyles), outsideStyles), {
90
+ if (shouldHighlightDate(date, modifiers)) {
91
+ return __spreadProps(__spreadValues({}, initialStyles), {
152
92
  backgroundColor: theme.colorScheme === "dark" ? theme.fn.rgba(theme.colors[theme.primaryColor][9], 0.3) : theme.colors[theme.primaryColor][0],
153
93
  borderRadius: 0
154
94
  });
155
95
  }
156
- return __spreadValues(__spreadValues({}, initialStyles), outsideStyles);
96
+ return __spreadValues({}, initialStyles);
157
97
  };
158
- return /* @__PURE__ */ React.createElement(CalendarWrapper, __spreadValues({
159
- size,
160
- fullWidth,
161
- amountOfMonths,
98
+ return /* @__PURE__ */ React.createElement(CalendarBase, __spreadValues({
99
+ dayStyle: dayStyles,
162
100
  onMouseLeave: handleMouseLeave,
163
- ref
164
- }, others), /* @__PURE__ */ React.createElement(Group, {
165
- noWrap: true,
166
- style: { alignItems: "flex-start" }
167
- }, Array(amountOfMonths).fill(0).map((_, monthIndex) => {
168
- const isFirstMonth = monthIndex === 0;
169
- const isLastMonth = monthIndex === amountOfMonths - 1;
170
- const monthToRender = isFirstMonth ? _month : dayjs(_month).add(monthIndex, "month").toDate();
171
- const hiddenMonth = isFirstMonth ? "next" : isLastMonth ? "prev" : "both";
172
- return /* @__PURE__ */ React.createElement("div", {
173
- key: `month-${monthIndex}`
174
- }, /* @__PURE__ */ React.createElement(CalendarHeader, {
175
- size,
176
- nextMonthLabel,
177
- previousMonthLabel,
178
- previousMonthDisabled: disabledState.previousDisabled,
179
- nextMonthDisabled: disabledState.nextDisabled,
180
- onPreviousMonth: () => setMonth(dayjs(_month).subtract(1, "month").toDate()),
181
- onNextMonth: () => setMonth(dayjs(_month).add(1, "month").toDate()),
182
- classNames,
183
- styles,
184
- locale: finalLocale,
185
- withSelect,
186
- yearsRange,
187
- month: monthToRender,
188
- setMonth,
189
- labelFormat,
190
- hiddenMonth: hasMultipleMonths ? hiddenMonth : void 0,
191
- __staticSelector: isFirstMonth ? __staticSelector : `${__staticSelector}-month-${monthIndex}`
192
- }), /* @__PURE__ */ React.createElement(Month, {
193
- month: monthToRender,
194
- range: value,
195
- value: pickedDate,
196
- onChange: setRangeDate,
197
- dayClassName,
198
- dayStyle: (date, modifiers) => dayStyles(date, modifiers, monthToRender),
199
- disableOutsideDayStyle: hasMultipleMonths,
200
- disableOutsideEvents,
201
- minDate,
202
- maxDate,
203
- excludeDate,
204
- classNames,
205
- styles,
206
- fullWidth,
207
- size,
208
- onDayMouseEnter: (date) => setHoveredDay(date),
209
- firstDayOfWeek,
210
- __staticSelector: isFirstMonth ? __staticSelector : `${__staticSelector}-month-${monthIndex}`
211
- }));
212
- })));
101
+ onDayMouseEnter: (date) => setHoveredDay(date),
102
+ onChange: setRangeDate,
103
+ value: pickedDate,
104
+ range: value,
105
+ ref,
106
+ __staticSelector,
107
+ amountOfMonths,
108
+ hideOutsideDates: amountOfMonths > 1
109
+ }, others));
213
110
  });
214
111
  RangeCalendar.displayName = "@mantine/dates/RangeCalendar";
215
112