@mui/x-date-pickers-pro 9.0.0-beta.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/CHANGELOG.md +267 -1
  2. package/DateRangeCalendar/DateRangeCalendar.js +9 -21
  3. package/DateRangeCalendar/DateRangeCalendar.mjs +9 -21
  4. package/DateRangeCalendar/DateRangeCalendar.types.d.mts +3 -3
  5. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +3 -3
  6. package/DateRangePicker/DateRangePicker.d.mts +1 -1
  7. package/DateRangePicker/DateRangePicker.d.ts +1 -1
  8. package/DateRangePicker/DateRangePicker.js +1 -5
  9. package/DateRangePicker/DateRangePicker.mjs +1 -5
  10. package/DateRangePicker/DateRangePicker.types.d.mts +3 -3
  11. package/DateRangePicker/DateRangePicker.types.d.ts +3 -3
  12. package/DateRangePickerDay/DateRangePickerDay.d.mts +3 -3
  13. package/DateRangePickerDay/DateRangePickerDay.d.ts +3 -3
  14. package/DateRangePickerDay/DateRangePickerDay.js +416 -212
  15. package/DateRangePickerDay/DateRangePickerDay.mjs +418 -214
  16. package/DateRangePickerDay/DateRangePickerDay.types.d.mts +71 -23
  17. package/DateRangePickerDay/DateRangePickerDay.types.d.ts +71 -23
  18. package/DateRangePickerDay/dateRangePickerDayClasses.d.mts +35 -31
  19. package/DateRangePickerDay/dateRangePickerDayClasses.d.ts +35 -31
  20. package/DateRangePickerDay/dateRangePickerDayClasses.js +1 -1
  21. package/DateRangePickerDay/dateRangePickerDayClasses.mjs +1 -1
  22. package/DateTimeRangePicker/DateTimeRangePicker.d.mts +1 -1
  23. package/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -1
  24. package/DateTimeRangePicker/DateTimeRangePicker.js +1 -5
  25. package/DateTimeRangePicker/DateTimeRangePicker.mjs +1 -5
  26. package/DateTimeRangePicker/DateTimeRangePicker.types.d.mts +3 -3
  27. package/DateTimeRangePicker/DateTimeRangePicker.types.d.ts +3 -3
  28. package/DesktopDateRangePicker/DesktopDateRangePicker.d.mts +1 -1
  29. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +1 -1
  30. package/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -5
  31. package/DesktopDateRangePicker/DesktopDateRangePicker.mjs +1 -5
  32. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.mts +3 -3
  33. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +3 -3
  34. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.mts +1 -1
  35. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.d.ts +1 -1
  36. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +1 -5
  37. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.mjs +1 -5
  38. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.mts +3 -3
  39. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +3 -3
  40. package/DesktopTimeRangePicker/DesktopTimeRangePicker.d.mts +1 -1
  41. package/DesktopTimeRangePicker/DesktopTimeRangePicker.d.ts +1 -1
  42. package/DesktopTimeRangePicker/DesktopTimeRangePicker.js +0 -4
  43. package/DesktopTimeRangePicker/DesktopTimeRangePicker.mjs +0 -4
  44. package/DesktopTimeRangePicker/DesktopTimeRangePicker.types.d.mts +3 -3
  45. package/DesktopTimeRangePicker/DesktopTimeRangePicker.types.d.ts +3 -3
  46. package/MobileDateRangePicker/MobileDateRangePicker.d.mts +1 -1
  47. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +1 -1
  48. package/MobileDateRangePicker/MobileDateRangePicker.js +1 -5
  49. package/MobileDateRangePicker/MobileDateRangePicker.mjs +1 -5
  50. package/MobileDateRangePicker/MobileDateRangePicker.types.d.mts +3 -3
  51. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +3 -3
  52. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.mts +1 -1
  53. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.d.ts +1 -1
  54. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +1 -5
  55. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.mjs +1 -5
  56. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.mts +3 -3
  57. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +3 -3
  58. package/MobileTimeRangePicker/MobileTimeRangePicker.d.mts +1 -1
  59. package/MobileTimeRangePicker/MobileTimeRangePicker.d.ts +1 -1
  60. package/MobileTimeRangePicker/MobileTimeRangePicker.js +0 -4
  61. package/MobileTimeRangePicker/MobileTimeRangePicker.mjs +0 -4
  62. package/MobileTimeRangePicker/MobileTimeRangePicker.types.d.mts +3 -3
  63. package/MobileTimeRangePicker/MobileTimeRangePicker.types.d.ts +3 -3
  64. package/MultiInputDateRangeField/MultiInputDateRangeField.d.mts +2 -2
  65. package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +2 -2
  66. package/MultiInputDateRangeField/MultiInputDateRangeField.js +0 -4
  67. package/MultiInputDateRangeField/MultiInputDateRangeField.mjs +0 -4
  68. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.mts +2 -2
  69. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +2 -2
  70. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +0 -4
  71. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.mjs +0 -4
  72. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.mts +2 -2
  73. package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +2 -2
  74. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +0 -4
  75. package/MultiInputTimeRangeField/MultiInputTimeRangeField.mjs +0 -4
  76. package/SingleInputDateRangeField/SingleInputDateRangeField.d.mts +1 -1
  77. package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +1 -1
  78. package/SingleInputDateRangeField/SingleInputDateRangeField.js +22 -28
  79. package/SingleInputDateRangeField/SingleInputDateRangeField.mjs +22 -28
  80. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.mts +2 -2
  81. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +2 -2
  82. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.mts +1 -1
  83. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  84. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.d.mts +1 -1
  85. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.d.ts +1 -1
  86. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +22 -28
  87. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.mjs +22 -28
  88. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.mts +2 -2
  89. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.d.ts +2 -2
  90. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.mts +1 -1
  91. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  92. package/SingleInputTimeRangeField/SingleInputTimeRangeField.d.mts +1 -1
  93. package/SingleInputTimeRangeField/SingleInputTimeRangeField.d.ts +1 -1
  94. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +22 -28
  95. package/SingleInputTimeRangeField/SingleInputTimeRangeField.mjs +22 -28
  96. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.mts +2 -2
  97. package/SingleInputTimeRangeField/SingleInputTimeRangeField.types.d.ts +2 -2
  98. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.mts +1 -1
  99. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  100. package/StaticDateRangePicker/StaticDateRangePicker.js +1 -1
  101. package/StaticDateRangePicker/StaticDateRangePicker.mjs +1 -1
  102. package/TimeRangePicker/TimeRangePicker.d.mts +1 -1
  103. package/TimeRangePicker/TimeRangePicker.d.ts +1 -1
  104. package/TimeRangePicker/TimeRangePicker.js +0 -4
  105. package/TimeRangePicker/TimeRangePicker.mjs +0 -4
  106. package/TimeRangePicker/TimeRangePicker.types.d.mts +3 -3
  107. package/TimeRangePicker/TimeRangePicker.types.d.ts +3 -3
  108. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.mts +8 -9
  109. package/hooks/useMultiInputRangeField/useMultiInputRangeField.d.ts +8 -9
  110. package/hooks/useMultiInputRangeField/useMultiInputRangeField.js +4 -7
  111. package/hooks/useMultiInputRangeField/useMultiInputRangeField.mjs +4 -7
  112. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.mts +1 -1
  113. package/hooks/useMultiInputRangeField/useMultiInputRangeFieldSelectedSections.d.ts +1 -1
  114. package/hooks/useMultiInputRangeField/useTextFieldProps.d.mts +3 -3
  115. package/hooks/useMultiInputRangeField/useTextFieldProps.d.ts +3 -3
  116. package/hooks/useMultiInputRangeField/useTextFieldProps.js +1 -3
  117. package/hooks/useMultiInputRangeField/useTextFieldProps.mjs +1 -3
  118. package/index.d.mts +0 -1
  119. package/index.d.ts +0 -1
  120. package/index.js +1 -12
  121. package/index.mjs +1 -2
  122. package/internals/constants/dimensions.d.mts +1 -2
  123. package/internals/constants/dimensions.d.ts +1 -2
  124. package/internals/constants/dimensions.js +7 -2
  125. package/internals/constants/dimensions.mjs +2 -2
  126. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.d.mts +2 -2
  127. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +2 -2
  128. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -2
  129. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.mjs +2 -2
  130. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.mts +5 -5
  131. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +5 -5
  132. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.d.mts +2 -2
  133. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +2 -2
  134. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +2 -2
  135. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.mjs +2 -2
  136. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.mts +6 -6
  137. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +6 -6
  138. package/internals/models/fields.d.mts +1 -1
  139. package/internals/models/fields.d.ts +1 -1
  140. package/internals/models/managers.d.mts +1 -1
  141. package/internals/models/managers.d.ts +1 -1
  142. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.js +7 -6
  143. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.mjs +7 -6
  144. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.mts +4 -7
  145. package/internals/utils/createMultiInputRangeField/createMultiInputRangeField.types.d.ts +4 -7
  146. package/internals/utils/createMultiInputRangeField/useTextFieldProps.js +7 -5
  147. package/internals/utils/createMultiInputRangeField/useTextFieldProps.mjs +7 -5
  148. package/internals/utils/valueManagers.js +2 -6
  149. package/internals/utils/valueManagers.mjs +3 -7
  150. package/managers/useDateRangeManager.d.mts +4 -6
  151. package/managers/useDateRangeManager.d.ts +4 -6
  152. package/managers/useDateRangeManager.js +1 -3
  153. package/managers/useDateRangeManager.mjs +1 -3
  154. package/managers/useDateTimeRangeManager.d.mts +4 -6
  155. package/managers/useDateTimeRangeManager.d.ts +4 -6
  156. package/managers/useDateTimeRangeManager.js +1 -3
  157. package/managers/useDateTimeRangeManager.mjs +1 -3
  158. package/managers/useTimeRangeManager.d.mts +4 -6
  159. package/managers/useTimeRangeManager.d.ts +4 -6
  160. package/managers/useTimeRangeManager.js +1 -3
  161. package/managers/useTimeRangeManager.mjs +1 -3
  162. package/models/fields.d.mts +2 -2
  163. package/models/fields.d.ts +2 -2
  164. package/package.json +7 -21
  165. package/themeAugmentation/components.d.mts +0 -4
  166. package/themeAugmentation/components.d.ts +0 -4
  167. package/themeAugmentation/overrides.d.mts +0 -2
  168. package/themeAugmentation/overrides.d.ts +0 -2
  169. package/themeAugmentation/props.d.mts +12 -14
  170. package/themeAugmentation/props.d.ts +12 -14
  171. package/DateRangePickerDay2/DateRangePickerDay2.d.mts +0 -7
  172. package/DateRangePickerDay2/DateRangePickerDay2.d.ts +0 -7
  173. package/DateRangePickerDay2/DateRangePickerDay2.js +0 -605
  174. package/DateRangePickerDay2/DateRangePickerDay2.mjs +0 -598
  175. package/DateRangePickerDay2/DateRangePickerDay2.types.d.mts +0 -92
  176. package/DateRangePickerDay2/DateRangePickerDay2.types.d.ts +0 -92
  177. package/DateRangePickerDay2/DateRangePickerDay2.types.js +0 -5
  178. package/DateRangePickerDay2/DateRangePickerDay2.types.mjs +0 -1
  179. package/DateRangePickerDay2/dateRangePickerDay2Classes.d.mts +0 -29
  180. package/DateRangePickerDay2/dateRangePickerDay2Classes.d.ts +0 -29
  181. package/DateRangePickerDay2/dateRangePickerDay2Classes.js +0 -14
  182. package/DateRangePickerDay2/dateRangePickerDay2Classes.mjs +0 -6
  183. package/DateRangePickerDay2/index.d.mts +0 -4
  184. package/DateRangePickerDay2/index.d.ts +0 -4
  185. package/DateRangePickerDay2/index.js +0 -25
  186. package/DateRangePickerDay2/index.mjs +0 -2
@@ -2,210 +2,346 @@
2
2
 
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
- const _excluded = ["className", "classes", "isEndOfHighlighting", "isEndOfPreviewing", "isHighlighting", "isPreviewing", "isStartOfHighlighting", "isStartOfPreviewing", "isVisuallySelected", "sx", "draggable", "isFirstVisibleCell", "isLastVisibleCell", "day", "selected", "disabled", "today", "outsideCurrentMonth", "disableMargin", "disableHighlightToday", "showDaysOutsideCurrentMonth"];
5
+ const _excluded = ["autoFocus", "className", "classes", "isAnimating", "onClick", "onDaySelect", "onFocus", "onBlur", "onKeyDown", "onMouseDown", "onMouseEnter", "children", "isFirstVisibleCell", "isLastVisibleCell", "day", "selected", "disabled", "today", "outsideCurrentMonth", "disableHighlightToday", "showDaysOutsideCurrentMonth", "isEndOfHighlighting", "isEndOfPreviewing", "isHighlighting", "isPreviewing", "isStartOfHighlighting", "isStartOfPreviewing", "isVisuallySelected", "draggable", "isDayFillerCell"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
9
9
  import { useLicenseVerifier } from '@mui/x-license/internals';
10
- import { alpha, styled, useThemeProps } from '@mui/material/styles';
10
+ import { styled, useThemeProps } from '@mui/material/styles';
11
+ import ButtonBase from '@mui/material/ButtonBase';
12
+ import useForkRef from '@mui/utils/useForkRef';
11
13
  import composeClasses from '@mui/utils/composeClasses';
14
+ import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
12
15
  import { usePickerDayOwnerState } from '@mui/x-date-pickers/internals';
13
- import { PickersDay } from '@mui/x-date-pickers/PickersDay';
14
16
  import { usePickerAdapter } from '@mui/x-date-pickers/hooks';
15
- import { getDateRangePickerDayUtilityClass, dateRangePickerDayClasses } from "./dateRangePickerDayClasses.mjs";
17
+ import { dateRangePickerDayClasses, getDateRangePickerDayUtilityClass } from "./dateRangePickerDayClasses.mjs";
16
18
  import { jsx as _jsx } from "react/jsx-runtime";
17
- const useUtilityClasses = (classes, ownerState) => {
19
+ const useUtilityClasses = (ownerState, classes) => {
18
20
  const {
19
- // Properties shared with PickersDay
20
21
  isDaySelected,
22
+ disableHighlightToday,
23
+ isDayCurrent,
24
+ isDayDisabled,
21
25
  isDayOutsideMonth,
22
- // Range-specific properties (present in the Base UI implementation)
23
- isDaySelectionStart,
24
- isDaySelectionEnd,
25
- isDayInsideSelection,
26
+ isDayFillerCell,
26
27
  isDayPreviewStart,
27
28
  isDayPreviewEnd,
29
+ isDayInsidePreview,
28
30
  isDayPreviewed,
29
- // Range-specific properties (specific to the MUI implementation)
31
+ isDaySelectionStart,
32
+ isDaySelectionEnd,
33
+ isDayInsideSelection,
34
+ isDayStartOfWeek,
35
+ isDayEndOfWeek,
30
36
  isDayStartOfMonth,
31
37
  isDayEndOfMonth,
32
38
  isDayFirstVisibleCell,
33
39
  isDayLastVisibleCell,
34
- isDayFillerCell
40
+ isDayDraggable
35
41
  } = ownerState;
36
42
  const slots = {
37
- root: ['root', isDaySelected && 'rangeIntervalDayHighlight', isDaySelectionStart && 'rangeIntervalDayHighlightStart', isDaySelectionEnd && 'rangeIntervalDayHighlightEnd', isDayOutsideMonth && 'outsideCurrentMonth', isDayStartOfMonth && 'startOfMonth', isDayEndOfMonth && 'endOfMonth', isDayFirstVisibleCell && 'firstVisibleCell', isDayLastVisibleCell && 'lastVisibleCell', isDayFillerCell && 'hiddenDayFiller'],
38
- rangeIntervalPreview: ['rangeIntervalPreview', isDayPreviewed && 'rangeIntervalDayPreview', (isDayPreviewStart || isDayStartOfMonth) && 'rangeIntervalDayPreviewStart', (isDayPreviewEnd || isDayEndOfMonth) && 'rangeIntervalDayPreviewEnd'],
39
- day: ['day', !isDaySelected && 'notSelectedDate', !isDaySelected && 'dayOutsideRangeInterval', !isDayInsideSelection && 'dayInsideRangeInterval']
43
+ root: ['root', isDayDisabled && 'disabled', !disableHighlightToday && isDayCurrent && !isDaySelected && !isDayFillerCell && 'today', isDayOutsideMonth && 'dayOutsideMonth', isDayFillerCell && 'fillerCell', isDaySelected && 'selected', isDayPreviewStart && 'previewStart', isDayPreviewEnd && 'previewEnd', isDayInsidePreview && 'insidePreviewing', isDaySelectionStart && 'selectionStart', isDaySelectionEnd && 'selectionEnd', isDayInsideSelection && 'insideSelection', isDayEndOfWeek && 'endOfWeek', isDayStartOfWeek && 'startOfWeek', isDayPreviewed && 'previewed', isDayStartOfMonth && 'startOfMonth', isDayEndOfMonth && 'endOfMonth', isDayFirstVisibleCell && 'firstVisibleCell', isDayLastVisibleCell && 'lastVisibleCell', isDayDraggable && 'draggable']
40
44
  };
41
45
  return composeClasses(slots, getDateRangePickerDayUtilityClass, classes);
42
46
  };
43
- const endBorderStyle = {
44
- borderTopRightRadius: '50%',
45
- borderBottomRightRadius: '50%'
46
- };
47
- const startBorderStyle = {
48
- borderTopLeftRadius: '50%',
49
- borderBottomLeftRadius: '50%'
50
- };
51
- const elementOverrides = {
52
- root: ['rangeIntervalDayHighlight', 'rangeIntervalDayHighlightStart', 'rangeIntervalDayHighlightEnd', 'firstVisibleCell', 'lastVisibleCell', 'startOfMonth', 'endOfMonth', 'outsideCurrentMonth', 'hiddenDayFiller'],
53
- rangeIntervalPreview: ['rangeIntervalDayPreview', 'rangeIntervalDayPreviewStart', 'rangeIntervalDayPreviewEnd'],
54
- day: ['notSelectedDate', 'dayOutsideRangeInterval', 'dayInsideRangeInterval']
55
- };
56
- const DateRangePickerDayRoot = styled('div', {
47
+ const highlightStyles = theme => ({
48
+ content: '""' /* Creates an empty element */,
49
+ height: '100%',
50
+ backgroundColor: theme.alpha((theme.vars || theme).palette.primary.main, (theme.vars || theme).palette.action.focusOpacity),
51
+ boxSizing: 'border-box',
52
+ left: 'calc(var(--PickerDay-horizontalMargin) * (-1))',
53
+ right: 'calc(var(--PickerDay-horizontalMargin) * (-1))'
54
+ });
55
+ const previewStyles = theme => ({
56
+ content: '""' /* Creates an empty element */,
57
+ height: '100%',
58
+ border: `1.2px dashed ${(theme.vars || theme).palette.divider}`,
59
+ borderLeftColor: 'transparent',
60
+ borderRightColor: 'transparent',
61
+ boxSizing: 'border-box',
62
+ left: 'calc(-1 * var(--PickerDay-horizontalMargin))',
63
+ right: 'calc(-1 * var(--PickerDay-horizontalMargin))'
64
+ });
65
+ const selectedDayStyles = theme => ({
66
+ color: (theme.vars || theme).palette.primary.contrastText,
67
+ backgroundColor: (theme.vars || theme).palette.primary.main,
68
+ fontWeight: theme.typography.fontWeightMedium,
69
+ '&:focus, &:hover': {
70
+ willChange: 'background-color',
71
+ backgroundColor: (theme.vars || theme).palette.primary.dark
72
+ },
73
+ [`&.${dateRangePickerDayClasses.disabled}`]: {
74
+ opacity: 0.6
75
+ }
76
+ });
77
+ const insideSelectionStyle = () => ({
78
+ [`&.${dateRangePickerDayClasses.disabled}`]: {
79
+ opacity: 0.6
80
+ }
81
+ });
82
+ const DateRangePickerDayRoot = styled(ButtonBase, {
57
83
  name: 'MuiDateRangePickerDay',
58
84
  slot: 'Root',
59
- overridesResolver: (_, styles) => {
60
- const overrides = [styles.root];
61
- elementOverrides.root.forEach(key => {
62
- overrides.push({
63
- [`&.${dateRangePickerDayClasses[key]}`]: styles[key]
64
- });
65
- });
66
- return overrides;
85
+ overridesResolver: (props, styles) => {
86
+ const {
87
+ ownerState
88
+ } = props;
89
+ return [styles.root, !ownerState.disableHighlightToday && ownerState.isDayCurrent && styles.today, ownerState.isDayOutsideMonth && styles.dayOutsideMonth, ownerState.isDayFillerCell && styles.fillerCell, ownerState.isDaySelected && !ownerState.isDayInsideSelection && styles.selected, ownerState.isDayPreviewStart && styles.previewStart, ownerState.isDayPreviewEnd && styles.previewEnd, ownerState.isDayInsidePreview && styles.insidePreviewing, ownerState.isDayPreviewed && styles.previewed, ownerState.isDaySelectionStart && styles.selectionStart, ownerState.isDaySelectionEnd && styles.selectionEnd, ownerState.isDayInsideSelection && styles.insideSelection, ownerState.isDayDraggable && styles.draggable, ownerState.isDayStartOfWeek && styles.startOfWeek, ownerState.isDayEndOfWeek && styles.endOfWeek, ownerState.isDayStartOfMonth && styles.startOfMonth, ownerState.isDayEndOfMonth && styles.endOfMonth, ownerState.isDayFirstVisibleCell && styles.firstVisibleCell, ownerState.isDayLastVisibleCell && styles.lastVisibleCell];
67
90
  }
68
91
  })(({
69
92
  theme
70
- }) => ({
93
+ }) => _extends({
94
+ '--PickerDay-horizontalMargin': '2px',
95
+ '--PickerDay-size': '36px'
96
+ }, theme.typography.caption, {
97
+ lineHeight: 1,
98
+ display: 'flex',
99
+ width: 'var(--PickerDay-size)',
100
+ height: 'var(--PickerDay-size)',
101
+ borderRadius: 'calc(var(--PickerDay-size) / 2)',
102
+ padding: 0,
103
+ position: 'relative',
104
+ marginLeft: 'var(--PickerDay-horizontalMargin)',
105
+ marginRight: 'var(--PickerDay-horizontalMargin)',
106
+ // explicitly setting to `transparent` to avoid potentially getting impacted by change from the overridden component
107
+ backgroundColor: 'transparent',
108
+ transition: theme.transitions.create('background-color', {
109
+ duration: theme.transitions.duration.short
110
+ }),
111
+ color: (theme.vars || theme).palette.text.primary,
112
+ '@media (pointer: fine)': {
113
+ '&:hover': {
114
+ backgroundColor: theme.alpha((theme.vars || theme).palette.primary.main, (theme.vars || theme).palette.action.hoverOpacity)
115
+ }
116
+ },
117
+ '&:focus': {
118
+ backgroundColor: theme.alpha((theme.vars || theme).palette.primary.main, (theme.vars || theme).palette.action.focusOpacity)
119
+ },
120
+ zIndex: 1,
121
+ isolation: 'isolate',
122
+ '&::before, &::after': {
123
+ zIndex: -1,
124
+ position: 'absolute',
125
+ pointerEvents: 'none',
126
+ mixBlendMode: 'multiply'
127
+ },
71
128
  variants: [{
72
129
  props: {
73
- isDayFillerCell: false
130
+ isDayDisabled: true
74
131
  },
75
132
  style: {
76
- [`&:first-of-type .${dateRangePickerDayClasses.rangeIntervalDayPreview}`]: _extends({}, startBorderStyle, {
77
- borderLeftColor: (theme.vars || theme).palette.divider
78
- }),
79
- [`&:last-of-type .${dateRangePickerDayClasses.rangeIntervalDayPreview}`]: _extends({}, endBorderStyle, {
80
- borderRightColor: (theme.vars || theme).palette.divider
133
+ color: (theme.vars || theme).palette.text.disabled
134
+ }
135
+ }, {
136
+ props: {
137
+ isDayFillerCell: true
138
+ },
139
+ style: {
140
+ // visibility: 'hidden' does not work here as it hides the element from screen readers
141
+ // and results in unexpected relationships between week day and day columns.
142
+ opacity: 0,
143
+ pointerEvents: 'none'
144
+ }
145
+ }, {
146
+ props: {
147
+ isDayOutsideMonth: true
148
+ },
149
+ style: {
150
+ color: (theme.vars || theme).palette.text.secondary
151
+ }
152
+ }, {
153
+ props: {
154
+ isDayCurrent: true,
155
+ isDaySelected: false
156
+ },
157
+ style: {
158
+ outline: `1px solid ${(theme.vars || theme).palette.text.secondary}`,
159
+ outlineOffset: -1
160
+ }
161
+ }, {
162
+ props: {
163
+ isDayDraggable: true
164
+ },
165
+ style: {
166
+ cursor: 'grab',
167
+ touchAction: 'none'
168
+ }
169
+ }, {
170
+ props: {
171
+ isDayPreviewStart: true
172
+ },
173
+ style: {
174
+ '::after': _extends({}, previewStyles(theme), {
175
+ borderTopLeftRadius: 'inherit',
176
+ borderBottomLeftRadius: 'inherit',
177
+ borderLeftColor: (theme.vars || theme).palette.divider,
178
+ left: 0
179
+ })
180
+ }
181
+ }, {
182
+ props: {
183
+ isDayPreviewEnd: true
184
+ },
185
+ style: {
186
+ '::after': _extends({}, previewStyles(theme), {
187
+ borderTopRightRadius: 'inherit',
188
+ borderBottomRightRadius: 'inherit',
189
+ borderRightColor: (theme.vars || theme).palette.divider,
190
+ right: 0
81
191
  })
82
192
  }
83
193
  }, {
84
194
  props: {
85
- isDayFillerCell: false,
86
- isDaySelected: true
195
+ isDayInsidePreview: true
87
196
  },
88
197
  style: {
89
- borderRadius: 0,
90
- color: (theme.vars || theme).palette.primary.contrastText,
91
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity),
92
- '&:first-of-type': startBorderStyle,
93
- '&:last-of-type': endBorderStyle
198
+ '::after': _extends({}, previewStyles(theme))
94
199
  }
95
200
  }, {
96
- props: ({
97
- ownerState: {
98
- isDayFillerCell,
99
- isDaySelectionStart,
100
- isDayFirstVisibleCell
201
+ props: {
202
+ isDaySelectionStart: true
203
+ },
204
+ style: {
205
+ '::before': _extends({}, highlightStyles(theme), {
206
+ borderTopLeftRadius: 'inherit',
207
+ borderBottomLeftRadius: 'inherit',
208
+ left: 0
209
+ })
210
+ }
211
+ }, {
212
+ props: {
213
+ isDaySelectionEnd: true
214
+ },
215
+ style: {
216
+ '::before': _extends({}, highlightStyles(theme), {
217
+ borderTopRightRadius: 'inherit',
218
+ borderBottomRightRadius: 'inherit',
219
+ right: 0
220
+ }),
221
+ '::after': {
222
+ borderLeftColor: 'transparent'
101
223
  }
102
- }) => !isDayFillerCell && (isDaySelectionStart || isDayFirstVisibleCell),
103
- style: _extends({}, startBorderStyle, {
104
- paddingLeft: 0
105
- })
224
+ }
106
225
  }, {
107
- props: ({
108
- ownerState: {
109
- isDayFillerCell,
110
- isDaySelectionEnd,
111
- isDayLastVisibleCell
226
+ props: {
227
+ isDayInsideSelection: true
228
+ },
229
+ color: 'initial',
230
+ background: 'initial',
231
+ style: _extends({
232
+ '::before': _extends({}, highlightStyles(theme))
233
+ }, insideSelectionStyle())
234
+ }, {
235
+ props: {
236
+ isDaySelected: true,
237
+ isDayInsideSelection: false
238
+ },
239
+ style: _extends({}, selectedDayStyles(theme))
240
+ }, {
241
+ props: {
242
+ isDaySelectionStart: true,
243
+ isDaySelectionEnd: true
244
+ },
245
+ style: {
246
+ '::before': {
247
+ left: 0,
248
+ right: 0
112
249
  }
113
- }) => !isDayFillerCell && (isDaySelectionEnd || isDayLastVisibleCell),
114
- style: _extends({}, endBorderStyle, {
115
- paddingRight: 0
116
- })
117
- }]
118
- }));
119
- const DateRangePickerDayRangeIntervalPreview = styled('div', {
120
- name: 'MuiDateRangePickerDay',
121
- slot: 'RangeIntervalPreview',
122
- overridesResolver: (_, styles) => {
123
- const overrides = [styles.rangeIntervalPreview];
124
- elementOverrides.rangeIntervalPreview.forEach(key => {
125
- overrides.push({
126
- [`&.${dateRangePickerDayClasses[key]}`]: styles[key]
127
- });
128
- });
129
- return overrides;
130
- }
131
- })(({
132
- theme
133
- }) => ({
134
- // replace default day component margin with transparent border to avoid jumping on preview
135
- border: '2px solid transparent',
136
- variants: [{
250
+ }
251
+ }, {
137
252
  props: {
138
- isDayPreviewed: true,
139
- isDayFillerCell: false
253
+ isDaySelectionStart: true,
254
+ isDaySelectionEnd: true,
255
+ isDayPreviewEnd: false,
256
+ isDayPreviewStart: false
140
257
  },
141
258
  style: {
142
- borderRadius: 0,
143
- border: `2px dashed ${(theme.vars || theme).palette.divider}`,
144
- borderLeftColor: 'transparent',
145
- borderRightColor: 'transparent'
259
+ '::after': {
260
+ left: 0,
261
+ right: 0
262
+ }
146
263
  }
147
264
  }, {
148
- props: ({
149
- ownerState: {
150
- isDayPreviewed,
151
- isDayFillerCell,
152
- isDayPreviewStart,
153
- isDayFirstVisibleCell
265
+ props: {
266
+ isDayPreviewEnd: true,
267
+ isDayPreviewStart: true
268
+ },
269
+ style: {
270
+ '::after': {
271
+ left: 0,
272
+ right: 0
154
273
  }
155
- }) => isDayPreviewed && !isDayFillerCell && (isDayPreviewStart || isDayFirstVisibleCell),
156
- style: _extends({
157
- borderLeftColor: (theme.vars || theme).palette.divider
158
- }, startBorderStyle)
274
+ }
159
275
  }, {
160
- props: ({
161
- ownerState: {
162
- isDayPreviewed,
163
- isDayFillerCell,
164
- isDayPreviewEnd,
165
- isDayLastVisibleCell
276
+ props: {
277
+ isDayEndOfWeek: true
278
+ },
279
+ style: {
280
+ '::after': {
281
+ borderTopRightRadius: 'inherit',
282
+ borderBottomRightRadius: 'inherit',
283
+ borderRightColor: (theme.vars || theme).palette.divider,
284
+ right: 0
285
+ },
286
+ '::before': {
287
+ borderTopRightRadius: 'inherit',
288
+ borderBottomRightRadius: 'inherit',
289
+ right: 0
166
290
  }
167
- }) => isDayPreviewed && !isDayFillerCell && (isDayPreviewEnd || isDayLastVisibleCell),
168
- style: _extends({
169
- borderRightColor: (theme.vars || theme).palette.divider
170
- }, endBorderStyle)
171
- }]
172
- }));
173
- const DateRangePickerDayDay = styled(PickersDay, {
174
- name: 'MuiDateRangePickerDay',
175
- slot: 'Day',
176
- overridesResolver: (_, styles) => {
177
- const overrides = [styles.day];
178
- elementOverrides.day.forEach(key => {
179
- overrides.push({
180
- [`&.${dateRangePickerDayClasses[key]}`]: styles[key]
181
- });
182
- });
183
- return overrides;
184
- }
185
- })({
186
- // Required to overlap preview border
187
- transform: 'scale(1.1)',
188
- '& > *': {
189
- transform: 'scale(0.9)'
190
- },
191
- variants: [{
291
+ }
292
+ }, {
192
293
  props: {
193
- draggable: true
294
+ isDayStartOfWeek: true
194
295
  },
195
296
  style: {
196
- cursor: 'grab',
197
- touchAction: 'none'
297
+ '::after': {
298
+ borderTopLeftRadius: 'inherit',
299
+ borderBottomLeftRadius: 'inherit',
300
+ borderLeftColor: (theme.vars || theme).palette.divider,
301
+ left: 0
302
+ },
303
+ '::before': {
304
+ borderTopLeftRadius: 'inherit',
305
+ borderBottomLeftRadius: 'inherit',
306
+ left: 0
307
+ }
198
308
  }
199
309
  }]
200
- });
201
- const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePickerDay(inProps, ref) {
310
+ }));
311
+ const noop = () => {};
312
+ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePickerDay(inProps, forwardedRef) {
202
313
  const props = useThemeProps({
203
314
  props: inProps,
204
315
  name: 'MuiDateRangePickerDay'
205
316
  });
317
+ useLicenseVerifier({
318
+ releaseDate: "MTc3NTYwNjQwMDAwMA==",
319
+ version: "9.0.0",
320
+ name: 'x-date-pickers-pro'
321
+ });
322
+ const adapter = usePickerAdapter();
206
323
  const {
324
+ autoFocus = false,
207
325
  className,
208
326
  classes: classesProp,
327
+ isAnimating,
328
+ onClick,
329
+ onDaySelect,
330
+ onFocus = noop,
331
+ onBlur = noop,
332
+ onKeyDown = noop,
333
+ onMouseDown = noop,
334
+ onMouseEnter = noop,
335
+ children,
336
+ isFirstVisibleCell = false,
337
+ isLastVisibleCell = false,
338
+ day,
339
+ selected,
340
+ disabled,
341
+ today,
342
+ outsideCurrentMonth,
343
+ disableHighlightToday,
344
+ showDaysOutsideCurrentMonth,
209
345
  isEndOfHighlighting,
210
346
  isEndOfPreviewing,
211
347
  isHighlighting,
@@ -213,44 +349,25 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
213
349
  isStartOfHighlighting,
214
350
  isStartOfPreviewing,
215
351
  isVisuallySelected,
216
- sx,
217
352
  draggable,
218
- isFirstVisibleCell,
219
- isLastVisibleCell,
220
- day,
221
- selected,
222
- disabled,
223
- today,
224
- outsideCurrentMonth,
225
- disableMargin,
226
- disableHighlightToday,
227
- showDaysOutsideCurrentMonth
353
+ isDayFillerCell: isDayFillerCellProp
228
354
  } = props,
229
355
  other = _objectWithoutPropertiesLoose(props, _excluded);
230
- useLicenseVerifier({
231
- releaseDate: "MTc3NDU2OTYwMDAwMA==",
232
- version: "9.0.0-beta.0",
233
- name: 'x-date-pickers-pro'
234
- });
235
- const adapter = usePickerAdapter();
236
- const shouldRenderHighlight = isHighlighting && !outsideCurrentMonth;
237
- const shouldRenderPreview = isPreviewing && !outsideCurrentMonth;
238
- const pickersDayOwnerState = usePickerDayOwnerState({
356
+ const pickerDayOwnerState = usePickerDayOwnerState({
239
357
  day,
240
358
  selected,
241
359
  disabled,
242
360
  today,
243
361
  outsideCurrentMonth,
244
- disableMargin,
245
362
  disableHighlightToday,
246
363
  showDaysOutsideCurrentMonth
247
364
  });
248
- const ownerState = _extends({}, pickersDayOwnerState, {
365
+ const ownerState = _extends({}, pickerDayOwnerState, {
249
366
  // Properties that the Base UI implementation will have
250
367
  isDaySelectionStart: isStartOfHighlighting,
251
368
  isDaySelectionEnd: isEndOfHighlighting,
252
369
  isDayInsideSelection: isHighlighting && !isStartOfHighlighting && !isEndOfHighlighting,
253
- isDaySelected: isHighlighting,
370
+ isDaySelected: isVisuallySelected ?? (isHighlighting || Boolean(selected)),
254
371
  isDayPreviewed: isPreviewing,
255
372
  isDayPreviewStart: isStartOfPreviewing,
256
373
  isDayPreviewEnd: isEndOfPreviewing,
@@ -260,34 +377,70 @@ const DateRangePickerDayRaw = /*#__PURE__*/React.forwardRef(function DateRangePi
260
377
  isDayEndOfMonth: adapter.isSameDay(day, adapter.endOfMonth(day)),
261
378
  isDayFirstVisibleCell: isFirstVisibleCell,
262
379
  isDayLastVisibleCell: isLastVisibleCell,
263
- isDayFillerCell: outsideCurrentMonth && !showDaysOutsideCurrentMonth
380
+ isDayFillerCell: isDayFillerCellProp ?? (outsideCurrentMonth && !showDaysOutsideCurrentMonth),
381
+ isDayDraggable: Boolean(draggable)
264
382
  });
265
- const classes = useUtilityClasses(classesProp, ownerState);
266
- return /*#__PURE__*/_jsx(DateRangePickerDayRoot, {
267
- className: clsx(classes.root, className),
268
- ownerState: ownerState,
269
- sx: sx,
270
- children: /*#__PURE__*/_jsx(DateRangePickerDayRangeIntervalPreview, {
271
- className: classes.rangeIntervalPreview,
383
+ const classes = useUtilityClasses(ownerState, classesProp);
384
+ const ref = React.useRef(null);
385
+ const handleRef = useForkRef(ref, forwardedRef);
386
+
387
+ // Since this is rendered when a Popper is opened we can't use passive effects.
388
+ // Focusing in passive effects in Popper causes scroll jump.
389
+ useEnhancedEffect(() => {
390
+ if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {
391
+ // ref.current being null would be a bug in MUI
392
+ ref.current.focus();
393
+ }
394
+ }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]);
395
+
396
+ // For a day outside the current month, move the focus from mouseDown to mouseUp
397
+ // Goal: have the onClick ends before sliding to the new month
398
+ const handleMouseDown = event => {
399
+ onMouseDown(event);
400
+ if (outsideCurrentMonth) {
401
+ event.preventDefault();
402
+ }
403
+ };
404
+ const handleClick = event => {
405
+ event.defaultMuiPrevented = true;
406
+ if (!disabled) {
407
+ onDaySelect(day);
408
+ }
409
+ if (outsideCurrentMonth) {
410
+ event.currentTarget.focus();
411
+ }
412
+ if (onClick) {
413
+ onClick(event);
414
+ }
415
+ };
416
+ if (ownerState.isDayFillerCell) {
417
+ return /*#__PURE__*/_jsx(DateRangePickerDayRoot, {
418
+ ref: handleRef,
272
419
  ownerState: ownerState,
273
- children: /*#__PURE__*/_jsx(DateRangePickerDayDay, _extends({}, other, {
274
- ref: ref,
275
- day: day,
276
- selected: isVisuallySelected,
277
- disabled: disabled,
278
- today: today,
279
- outsideCurrentMonth: outsideCurrentMonth,
280
- disableMargin: true,
281
- disableHighlightToday: disableHighlightToday,
282
- showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth,
283
- className: classes.day,
284
- ownerState: ownerState,
285
- draggable: draggable,
286
- isFirstVisibleCell: isFirstVisibleCell,
287
- isLastVisibleCell: isLastVisibleCell
288
- }))
289
- })
290
- });
420
+ className: clsx(classes.root, className),
421
+ as: "div"
422
+ });
423
+ }
424
+ return /*#__PURE__*/_jsx(DateRangePickerDayRoot, _extends({
425
+ ref: handleRef,
426
+ centerRipple: true
427
+ // compat with DateRangePickerDay for tests
428
+ ,
429
+
430
+ disabled: disabled,
431
+ tabIndex: selected ? 0 : -1,
432
+ onKeyDown: event => onKeyDown(event, day),
433
+ onFocus: event => onFocus(event, day),
434
+ onBlur: event => onBlur(event, day),
435
+ onMouseEnter: event => onMouseEnter(event, day),
436
+ onClick: handleClick,
437
+ onMouseDown: handleMouseDown,
438
+ draggable: draggable
439
+ }, other, {
440
+ ownerState: ownerState,
441
+ className: clsx(classes.root, className),
442
+ children: children ?? adapter.format(day, 'dayOfMonth')
443
+ }));
291
444
  });
292
445
  if (process.env.NODE_ENV !== "production") DateRangePickerDayRaw.displayName = "DateRangePickerDayRaw";
293
446
  process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
@@ -321,20 +474,15 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
321
474
  */
322
475
  day: PropTypes.object.isRequired,
323
476
  /**
324
- * If `true`, renders as disabled.
477
+ * If `true`, the day is disabled.
325
478
  * @default false
326
479
  */
327
480
  disabled: PropTypes.bool,
328
481
  /**
329
- * If `true`, today's date is rendering without highlighting with circle.
482
+ * If `true`, today's day is not highlighted.
330
483
  * @default false
331
484
  */
332
485
  disableHighlightToday: PropTypes.bool,
333
- /**
334
- * If `true`, days are rendering without margin. Useful for displaying linked range of days.
335
- * @default false
336
- */
337
- disableMargin: PropTypes.bool,
338
486
  /**
339
487
  * If `true`, the ripple effect is disabled.
340
488
  *
@@ -367,56 +515,114 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
367
515
  * if needed.
368
516
  */
369
517
  focusVisibleClassName: PropTypes.string,
518
+ /**
519
+ * If `true`, the day is being animated.
520
+ * @default false
521
+ */
370
522
  isAnimating: PropTypes.bool,
523
+ /**
524
+ * If `true`, the day is a filler day (its content is hidden).
525
+ * @default false
526
+ */
527
+ isDayFillerCell: PropTypes.bool,
371
528
  /**
372
529
  * Set to `true` if the `day` is the end of a highlighted date range.
373
530
  */
374
- isEndOfHighlighting: PropTypes.bool.isRequired,
531
+ isEndOfHighlighting: PropTypes.bool,
375
532
  /**
376
533
  * Set to `true` if the `day` is the end of a previewing date range.
377
534
  */
378
- isEndOfPreviewing: PropTypes.bool.isRequired,
535
+ isEndOfPreviewing: PropTypes.bool,
379
536
  /**
380
- * If `true`, day is the first visible cell of the month.
381
- * Either the first day of the month or the first day of the week depending on `showDaysOutsideCurrentMonth`.
537
+ * If `true`, the day is the first visible cell of the month.
538
+ * @default false
382
539
  */
383
- isFirstVisibleCell: PropTypes.bool.isRequired,
540
+ isFirstVisibleCell: PropTypes.bool,
384
541
  /**
385
542
  * Set to `true` if the `day` is in a highlighted date range.
386
543
  */
387
- isHighlighting: PropTypes.bool.isRequired,
544
+ isHighlighting: PropTypes.bool,
388
545
  /**
389
- * If `true`, day is the last visible cell of the month.
390
- * Either the last day of the month or the last day of the week depending on `showDaysOutsideCurrentMonth`.
546
+ * If `true`, the day is the last visible cell of the month.
547
+ * @default false
391
548
  */
392
- isLastVisibleCell: PropTypes.bool.isRequired,
549
+ isLastVisibleCell: PropTypes.bool,
393
550
  /**
394
551
  * Set to `true` if the `day` is in a preview date range.
395
552
  */
396
- isPreviewing: PropTypes.bool.isRequired,
553
+ isPreviewing: PropTypes.bool,
397
554
  /**
398
555
  * Set to `true` if the `day` is the start of a highlighted date range.
399
556
  */
400
- isStartOfHighlighting: PropTypes.bool.isRequired,
557
+ isStartOfHighlighting: PropTypes.bool,
401
558
  /**
402
559
  * Set to `true` if the `day` is the start of a previewing date range.
403
560
  */
404
- isStartOfPreviewing: PropTypes.bool.isRequired,
561
+ isStartOfPreviewing: PropTypes.bool,
405
562
  /**
406
563
  * Indicates if the day should be visually selected.
407
564
  */
408
565
  isVisuallySelected: PropTypes.bool,
566
+ /**
567
+ * Whether the custom component is expected to render a native `<button>` element
568
+ * when passing a React component to the `component` or `slots` prop.
569
+ */
570
+ nativeButton: PropTypes.bool,
571
+ /**
572
+ * Callback fired when the component is blurred.
573
+ * @param {React.FocusEvent<HTMLButtonElement>} event The event object.
574
+ * @param {PickerValidDate} day The day.
575
+ * @default () => {}
576
+ */
577
+ onBlur: PropTypes.func,
578
+ /**
579
+ * Callback fired when the component is clicked.
580
+ * @param {MuiEvent<React.MouseEvent<HTMLButtonElement>>} event The event object.
581
+ * @default () => {}
582
+ */
583
+ onClick: PropTypes.func,
584
+ /**
585
+ * Callback fired when the day is selected.
586
+ * @param {PickerValidDate} day The day to select.
587
+ */
409
588
  onDaySelect: PropTypes.func.isRequired,
589
+ /**
590
+ * Callback fired when the component is focused.
591
+ * @param {React.FocusEvent<HTMLButtonElement>} event The event object.
592
+ * @param {PickerValidDate} day The day.
593
+ * @default () => {}
594
+ */
595
+ onFocus: PropTypes.func,
410
596
  /**
411
597
  * Callback fired when the component is focused with a keyboard.
412
598
  * We trigger a `onFocus` callback too.
413
599
  */
414
600
  onFocusVisible: PropTypes.func,
601
+ /**
602
+ * Callback fired when a key is pressed.
603
+ * @param {React.KeyboardEvent<HTMLButtonElement>} event The event object.
604
+ * @param {PickerValidDate} day The day.
605
+ * @default () => {}
606
+ */
607
+ onKeyDown: PropTypes.func,
608
+ /**
609
+ * Callback fired when the mouse button is pressed.
610
+ * @param {React.MouseEvent<HTMLButtonElement>} event The event object.
611
+ * @default () => {}
612
+ */
613
+ onMouseDown: PropTypes.func,
614
+ /**
615
+ * Callback fired when the mouse enters the component.
616
+ * @param {React.MouseEvent<HTMLButtonElement>} event The event object.
617
+ * @param {PickerValidDate} day The day.
618
+ * @default () => {}
619
+ */
415
620
  onMouseEnter: PropTypes.func,
416
621
  /**
417
- * If `true`, day is outside of month and will be hidden.
622
+ * If `true`, the day is outside the current month.
623
+ * @default false
418
624
  */
419
- outsideCurrentMonth: PropTypes.bool.isRequired,
625
+ outsideCurrentMonth: PropTypes.bool,
420
626
  /**
421
627
  * If `true`, renders as selected.
422
628
  * @default false
@@ -443,7 +649,7 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
443
649
  */
444
650
  tabIndex: PropTypes.number,
445
651
  /**
446
- * If `true`, renders as today date.
652
+ * If `true`, today's day is highlighted.
447
653
  * @default false
448
654
  */
449
655
  today: PropTypes.bool,
@@ -465,11 +671,9 @@ process.env.NODE_ENV !== "production" ? DateRangePickerDayRaw.propTypes = {
465
671
 
466
672
  /**
467
673
  * Demos:
468
- *
469
674
  * - [DateRangePicker](https://mui.com/x/react-date-pickers/date-range-picker/)
470
675
  *
471
676
  * API:
472
- *
473
677
  * - [DateRangePickerDay API](https://mui.com/x/api/date-pickers/date-range-picker-day/)
474
678
  */
475
679
  export const DateRangePickerDay = /*#__PURE__*/React.memo(DateRangePickerDayRaw);