@mui/x-date-pickers-pro 6.0.0-alpha.10 → 6.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +113 -0
- package/DateRangeCalendar/DateRangeCalendar.d.ts +1 -1
- package/DateRangeCalendar/DateRangeCalendar.js +198 -107
- package/DateRangeCalendar/DateRangeCalendar.types.d.ts +21 -10
- package/DateRangeCalendar/dateRangeCalendarClasses.d.ts +3 -1
- package/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
- package/DateRangeCalendar/useDragRange.d.ts +32 -0
- package/DateRangeCalendar/useDragRange.js +238 -0
- package/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/DateRangePicker/DateRangePickerInput.d.ts +3 -3
- package/DateRangePicker/DateRangePickerInput.js +16 -16
- package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -2
- package/DateRangePicker/DateRangePickerToolbar.js +6 -6
- package/DateRangePicker/DateRangePickerView.d.ts +3 -3
- package/DateRangePicker/DateRangePickerView.js +16 -16
- package/DateRangePicker/DateRangePickerViewDesktop.d.ts +2 -2
- package/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
- package/DateRangePicker/date-range-manager.d.ts +12 -5
- package/DateRangePicker/date-range-manager.js +16 -7
- package/DateRangePicker/dateRangePickerInputClasses.d.ts +1 -1
- package/DateRangePicker/dateRangePickerToolbarClasses.d.ts +1 -1
- package/DateRangePicker/dateRangePickerViewDesktopClasses.d.ts +1 -1
- package/DateRangePickerDay/DateRangePickerDay.d.ts +7 -3
- package/DateRangePickerDay/DateRangePickerDay.js +24 -24
- package/DateRangePickerDay/dateRangePickerDayClasses.d.ts +3 -3
- package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +1 -1
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
- package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.d.ts +1 -1
- package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +6 -1
- package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.types.d.ts +1 -1
- package/MobileDateRangePicker/MobileDateRangePicker.d.ts +1 -1
- package/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
- package/MobileNextDateRangePicker/MobileNextDateRangePicker.d.ts +1 -1
- package/MobileNextDateRangePicker/MobileNextDateRangePicker.js +6 -1
- package/MobileNextDateRangePicker/MobileNextDateRangePicker.types.d.ts +1 -1
- package/MultiInputDateRangeField/MultiInputDateRangeField.d.ts +1 -1
- package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +4 -3
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.d.ts +1 -1
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +5 -4
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.d.ts +1 -1
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +5 -4
- package/NextDateRangePicker/NextDateRangePicker.d.ts +1 -1
- package/NextDateRangePicker/NextDateRangePicker.js +5 -0
- package/NextDateRangePicker/shared.d.ts +1 -1
- package/SingleInputDateRangeField/SingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateRangeField/SingleInputDateRangeField.interfaces.d.ts +2 -2
- package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +3 -3
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
- package/StaticDateRangePicker/StaticDateRangePicker.d.ts +1 -1
- package/StaticDateRangePicker/StaticDateRangePicker.js +5 -5
- package/StaticNextDateRangePicker/StaticNextDateRangePicker.d.ts +1 -1
- package/StaticNextDateRangePicker/StaticNextDateRangePicker.js +8 -3
- package/StaticNextDateRangePicker/StaticNextDateRangePicker.types.d.ts +5 -4
- package/index.js +1 -1
- package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +15 -7
- package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +7 -8
- package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +15 -7
- package/internal/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -8
- package/internal/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +1 -1
- package/internal/hooks/useRangePickerInputProps.d.ts +4 -4
- package/internal/hooks/useRangePickerInputProps.js +11 -11
- package/internal/hooks/useStaticRangePicker/index.d.ts +2 -0
- package/internal/hooks/useStaticRangePicker/index.js +1 -0
- package/internal/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +10 -0
- package/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +65 -0
- package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +29 -0
- package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +1 -0
- package/internal/hooks/validation/useDateRangeValidation.d.ts +2 -3
- package/internal/hooks/validation/useDateRangeValidation.js +0 -1
- package/internal/hooks/validation/useDateTimeRangeValidation.d.ts +2 -3
- package/internal/hooks/validation/useDateTimeRangeValidation.js +0 -1
- package/internal/hooks/validation/useTimeRangeValidation.d.ts +2 -3
- package/internal/hooks/validation/useTimeRangeValidation.js +0 -1
- package/internal/models/dateRange.d.ts +2 -3
- package/internal/models/dateTimeRange.d.ts +2 -3
- package/internal/models/range.d.ts +7 -6
- package/internal/models/timeRange.d.ts +2 -3
- package/internal/utils/releaseInfo.js +1 -1
- package/internal/utils/valueManagers.d.ts +2 -3
- package/internal/utils/valueManagers.js +1 -2
- package/internal/utils/{views.d.ts → viewRenderers.d.ts} +1 -1
- package/{modern/internal/utils/views.js → internal/utils/viewRenderers.js} +10 -6
- package/legacy/DateRangeCalendar/DateRangeCalendar.js +159 -67
- package/legacy/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
- package/legacy/DateRangeCalendar/useDragRange.js +247 -0
- package/legacy/DateRangePicker/DateRangePickerInput.js +16 -16
- package/legacy/DateRangePicker/DateRangePickerToolbar.js +7 -7
- package/legacy/DateRangePicker/DateRangePickerView.js +16 -16
- package/legacy/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
- package/legacy/DateRangePicker/date-range-manager.js +17 -7
- package/legacy/DateRangePickerDay/DateRangePickerDay.js +23 -23
- package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +6 -6
- package/legacy/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +6 -1
- package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +6 -6
- package/legacy/MobileNextDateRangePicker/MobileNextDateRangePicker.js +6 -1
- package/legacy/NextDateRangePicker/NextDateRangePicker.js +5 -0
- package/legacy/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
- package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +6 -6
- package/legacy/StaticNextDateRangePicker/StaticNextDateRangePicker.js +9 -4
- package/legacy/index.js +1 -1
- package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +16 -8
- package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +16 -8
- package/legacy/internal/hooks/useRangePickerInputProps.js +11 -11
- package/legacy/internal/hooks/useStaticRangePicker/index.js +1 -0
- package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +68 -0
- package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +1 -0
- package/legacy/internal/hooks/validation/useDateRangeValidation.js +0 -3
- package/legacy/internal/hooks/validation/useDateTimeRangeValidation.js +0 -3
- package/legacy/internal/hooks/validation/useTimeRangeValidation.js +0 -3
- package/legacy/internal/utils/releaseInfo.js +1 -1
- package/legacy/internal/utils/valueManagers.js +1 -2
- package/legacy/internal/utils/{views.js → viewRenderers.js} +10 -6
- package/modern/DateRangeCalendar/DateRangeCalendar.js +197 -106
- package/modern/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
- package/modern/DateRangeCalendar/useDragRange.js +237 -0
- package/modern/DateRangePicker/DateRangePickerInput.js +16 -16
- package/modern/DateRangePicker/DateRangePickerToolbar.js +6 -6
- package/modern/DateRangePicker/DateRangePickerView.js +16 -16
- package/modern/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
- package/modern/DateRangePicker/date-range-manager.js +16 -7
- package/modern/DateRangePickerDay/DateRangePickerDay.js +24 -24
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
- package/modern/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +6 -1
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
- package/modern/MobileNextDateRangePicker/MobileNextDateRangePicker.js +6 -1
- package/modern/NextDateRangePicker/NextDateRangePicker.js +5 -0
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
- package/modern/StaticDateRangePicker/StaticDateRangePicker.js +5 -5
- package/modern/StaticNextDateRangePicker/StaticNextDateRangePicker.js +8 -3
- package/modern/index.js +1 -1
- package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +15 -7
- package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +15 -7
- package/modern/internal/hooks/useRangePickerInputProps.js +11 -11
- package/modern/internal/hooks/useStaticRangePicker/index.js +1 -0
- package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +65 -0
- package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +1 -0
- package/modern/internal/hooks/validation/useDateRangeValidation.js +0 -1
- package/modern/internal/hooks/validation/useDateTimeRangeValidation.js +0 -1
- package/modern/internal/hooks/validation/useTimeRangeValidation.js +0 -1
- package/modern/internal/utils/releaseInfo.js +1 -1
- package/modern/internal/utils/valueManagers.js +1 -2
- package/{internal/utils/views.js → modern/internal/utils/viewRenderers.js} +10 -6
- package/node/DateRangeCalendar/DateRangeCalendar.js +195 -104
- package/node/DateRangeCalendar/dateRangeCalendarClasses.js +1 -1
- package/node/DateRangeCalendar/useDragRange.js +247 -0
- package/node/DateRangePicker/DateRangePickerInput.js +16 -16
- package/node/DateRangePicker/DateRangePickerToolbar.js +6 -6
- package/node/DateRangePicker/DateRangePickerView.js +16 -16
- package/node/DateRangePicker/DateRangePickerViewDesktop.js +3 -3
- package/node/DateRangePicker/date-range-manager.js +16 -7
- package/node/DateRangePickerDay/DateRangePickerDay.js +23 -23
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +5 -5
- package/node/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +7 -2
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +5 -5
- package/node/MobileNextDateRangePicker/MobileNextDateRangePicker.js +7 -2
- package/node/NextDateRangePicker/NextDateRangePicker.js +5 -0
- package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +1 -2
- package/node/StaticDateRangePicker/StaticDateRangePicker.js +5 -5
- package/node/StaticNextDateRangePicker/StaticNextDateRangePicker.js +9 -4
- package/node/index.js +1 -1
- package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +15 -7
- package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +15 -7
- package/node/internal/hooks/useRangePickerInputProps.js +11 -11
- package/node/internal/hooks/useStaticRangePicker/index.js +12 -0
- package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +75 -0
- package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.js +5 -0
- package/node/internal/hooks/validation/useDateRangeValidation.js +1 -3
- package/node/internal/hooks/validation/useDateTimeRangeValidation.js +1 -3
- package/node/internal/hooks/validation/useTimeRangeValidation.js +1 -3
- package/node/internal/utils/releaseInfo.js +1 -1
- package/node/internal/utils/valueManagers.js +4 -5
- package/node/internal/utils/{views.js → viewRenderers.js} +10 -6
- package/package.json +3 -3
- package/SingleInputDateRangeField/SingleInputDateRangeField.utils.d.ts +0 -6
- package/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -24
- package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -26
- package/modern/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -24
- package/node/SingleInputDateRangeField/SingleInputDateRangeField.utils.js +0 -33
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,119 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 6.0.0-alpha.11
|
|
7
|
+
|
|
8
|
+
_Dec 8, 2022_
|
|
9
|
+
|
|
10
|
+
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- 🚀 Add dragging support for the new Date Range Picker (`NextDateRangePicker`) (#6763) @LukasTy
|
|
13
|
+
- ⚡️ Improve performance of the `day` view (#7066) @flaviendelangle
|
|
14
|
+
- ✨ Fix lazy-loading feature not working in `DataGridPremium` (#7124) @m4theushw
|
|
15
|
+
- 🐞 Bugfixes
|
|
16
|
+
|
|
17
|
+
### `@mui/x-data-grid@v6.0.0-alpha.11` / `@mui/x-data-grid-pro@v6.0.0-alpha.11` / `@mui/x-data-grid-premium@v6.0.0-alpha.11`
|
|
18
|
+
|
|
19
|
+
#### Breaking changes
|
|
20
|
+
|
|
21
|
+
- The `filterPanelOperators` translation key was renamed to `filterPanelOperator` (#7062) @MBilalShafi
|
|
22
|
+
- The `components.Header` slot was removed. Use `components.Toolbar` slot instead (#6999) @cherniavskii
|
|
23
|
+
|
|
24
|
+
#### Changes
|
|
25
|
+
|
|
26
|
+
- [DataGrid] Fix rows not rendering properly after height change (#6892) @MBilalShafi
|
|
27
|
+
- [DataGrid] Remove `Header` slot (#6999) @cherniavskii
|
|
28
|
+
- [DataGrid] Rename `filterPanelOperators` -> `filterPanelOperator` (#7062) @MBilalShafi
|
|
29
|
+
- [DataGridPremium] Add support for lazy-loading (#7124) @m4theushw
|
|
30
|
+
- [DataGridPremium] Pass `groupId` to aggregation function (#7003) @m4theushw
|
|
31
|
+
|
|
32
|
+
### `@mui/x-date-pickers@v6.0.0-alpha.11` / `@mui/x-date-pickers-pro@v6.0.0-alpha.11`
|
|
33
|
+
|
|
34
|
+
#### Breaking changes
|
|
35
|
+
|
|
36
|
+
- Remove the callback version of the `action` prop on the `actionBar` slot (#7038) @flaviendelangle
|
|
37
|
+
|
|
38
|
+
The `action` prop of the `actionBar` slot is no longer supporting a callback.
|
|
39
|
+
Instead, you can pass a callback at the slot level:
|
|
40
|
+
|
|
41
|
+
```diff
|
|
42
|
+
<DatePicker
|
|
43
|
+
componentsProps={{
|
|
44
|
+
- actionBar: {
|
|
45
|
+
- actions: (variant) => (variant === 'desktop' ? [] : ['clear']),
|
|
46
|
+
- },
|
|
47
|
+
+ actionBar: ({ wrapperVariant }) => ({
|
|
48
|
+
+ actions: wrapperVariant === 'desktop' ? [] : ['clear'],
|
|
49
|
+
+ }),
|
|
50
|
+
}}
|
|
51
|
+
/>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- The `selectedDays` prop has been removed from the `Day` component (#7066) @flaviendelangle
|
|
55
|
+
If you need to access it, you can control the value and pass it to the slot using `componentsProps`:
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
function CustomDay({ selectedDay, ...other }) {
|
|
59
|
+
// do something with 'selectedDay'
|
|
60
|
+
return <PickersDay {...other} />;
|
|
61
|
+
}
|
|
62
|
+
function App() {
|
|
63
|
+
const [value, setValue] = React.useState(null);
|
|
64
|
+
return (
|
|
65
|
+
<DatePicker
|
|
66
|
+
value={value}
|
|
67
|
+
onChange={(newValue) => setValue(newValue)}
|
|
68
|
+
components={{ Day: CustomDay }}
|
|
69
|
+
componentsProps={{
|
|
70
|
+
day: { selectedDay: value },
|
|
71
|
+
}}
|
|
72
|
+
/>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- The `currentlySelectingRangeEnd` / `setCurrentlySelectingRangeEnd` props on the Date Range Picker toolbar have been renamed to `rangePosition` / `onRangePositionChange` (#6989) @flaviendelangle
|
|
78
|
+
|
|
79
|
+
```diff
|
|
80
|
+
const CustomToolbarComponent = props => (
|
|
81
|
+
<div>
|
|
82
|
+
- <button onChange={() => props.setCurrentlySelectingRangeEnd('end')}>Edit end date</button>
|
|
83
|
+
+ <button onClick={() => props.onRangePositionChange('end')}>Edit end date</button>
|
|
84
|
+
- <div>Is editing end date: {props.currentlySelectingRangeEnd === 'end'}</div>
|
|
85
|
+
+ <div>Is editing end date: {props.rangePosition === 'end'}</div>
|
|
86
|
+
</div>
|
|
87
|
+
)
|
|
88
|
+
<DateRangePicker
|
|
89
|
+
components={{
|
|
90
|
+
Toolbar: CustomToolbarComponent
|
|
91
|
+
}}
|
|
92
|
+
/>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Changes
|
|
96
|
+
|
|
97
|
+
- [DateRangePicker] Add dragging support to edit range (#6763) @LukasTy
|
|
98
|
+
- [pickers] Fix lost props on Date Range Pickers (#7092) @flaviendelangle
|
|
99
|
+
- [pickers] Fix toolbar on the new range pickers (#6989) @flaviendelangle
|
|
100
|
+
- [pickers] Improve performance of `DayCalendar` (#7066) @flaviendelangle
|
|
101
|
+
- [pickers] Initialize date without time when selecting year or month (#7120) @LukasTy
|
|
102
|
+
- [pickers] Remove the callback version of the `action` prop in the `actionBar` component slot (#7038) @flaviendelangle
|
|
103
|
+
|
|
104
|
+
### Docs
|
|
105
|
+
|
|
106
|
+
- [docs] Add `GridCell` change in migration guide (#7087) @MBilalShafi
|
|
107
|
+
- [docs] Fix API page ad space regression (#7051) @oliviertassinari
|
|
108
|
+
- [docs] Update localization doc to use existing locale (#7102) @LukasTy
|
|
109
|
+
|
|
110
|
+
### Core
|
|
111
|
+
|
|
112
|
+
- [core] Add codemod to move l10n translation (#7027) @alexfauquette
|
|
113
|
+
- [core] Add notes to remove the legacy pickers internals (#7133) @flaviendelangle
|
|
114
|
+
- [core] Remove `internals-fields` imports (#7119) @flaviendelangle
|
|
115
|
+
- [core] Remove unused code (#7094) @flaviendelangle
|
|
116
|
+
- [core] Sync `ApiPage.js` with monorepo (#7073) @oliviertassinari
|
|
117
|
+
- [test] Fix karma-mocha assertion error messages (#7054) @cherniavskii
|
|
118
|
+
|
|
6
119
|
## 6.0.0-alpha.10
|
|
7
120
|
|
|
8
121
|
_Dec 1, 2022_
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DateRangeCalendarProps } from './DateRangeCalendar.types';
|
|
3
|
-
|
|
3
|
+
type DateRangeCalendarComponent = (<TDate>(props: DateRangeCalendarProps<TDate> & React.RefAttributes<HTMLDivElement>) => JSX.Element) & {
|
|
4
4
|
propTypes?: any;
|
|
5
5
|
};
|
|
6
6
|
declare const DateRangeCalendar: DateRangeCalendarComponent;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["value", "defaultValue", "onChange", "className", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "defaultCalendarMonth", "
|
|
3
|
+
const _excluded = ["value", "defaultValue", "onChange", "className", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "defaultCalendarMonth", "rangePosition", "onRangePositionChange", "calendars", "components", "componentsProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber"],
|
|
4
|
+
_excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import PropTypes from 'prop-types';
|
|
6
7
|
import clsx from 'clsx';
|
|
@@ -12,11 +13,12 @@ import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
|
12
13
|
import { Watermark } from '@mui/x-license-pro';
|
|
13
14
|
import { applyDefaultDate, DAY_MARGIN, DayCalendar, defaultReduceAnimations, PickersArrowSwitcher, PickersCalendarHeader, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, WrapperVariantContext } from '@mui/x-date-pickers/internals';
|
|
14
15
|
import { getReleaseInfo } from '../internal/utils/releaseInfo';
|
|
15
|
-
import { getDateRangeCalendarUtilityClass } from './dateRangeCalendarClasses';
|
|
16
|
+
import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from './dateRangeCalendarClasses';
|
|
16
17
|
import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from '../internal/utils/date-utils';
|
|
17
18
|
import { calculateRangeChange, calculateRangePreview } from '../DateRangePicker/date-range-manager';
|
|
18
|
-
import { DateRangePickerDay } from '../DateRangePickerDay';
|
|
19
|
+
import { DateRangePickerDay, dateRangePickerDayClasses as dayClasses } from '../DateRangePickerDay';
|
|
19
20
|
import { rangeValueManager } from '../internal/utils/valueManagers';
|
|
21
|
+
import { useDragRange } from './useDragRange';
|
|
20
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
24
|
const releaseInfo = getReleaseInfo();
|
|
@@ -47,12 +49,30 @@ const DateRangeCalendarArrowSwitcher = styled(PickersArrowSwitcher)({
|
|
|
47
49
|
});
|
|
48
50
|
const DAY_RANGE_SIZE = 40;
|
|
49
51
|
const weeksContainerHeight = (DAY_RANGE_SIZE + DAY_MARGIN * 2) * 6;
|
|
50
|
-
const DayCalendarForRange = styled(DayCalendar)({
|
|
52
|
+
const DayCalendarForRange = styled(DayCalendar)(({
|
|
53
|
+
theme
|
|
54
|
+
}) => ({
|
|
51
55
|
minWidth: 312,
|
|
52
|
-
minHeight: weeksContainerHeight
|
|
53
|
-
}
|
|
56
|
+
minHeight: weeksContainerHeight,
|
|
57
|
+
[`&.${dateRangeCalendarClasses.dayDragging}`]: {
|
|
58
|
+
[`& .${dayClasses.day}`]: {
|
|
59
|
+
cursor: 'grabbing'
|
|
60
|
+
},
|
|
61
|
+
[`& .${dayClasses.root}:not(.${dayClasses.rangeIntervalDayHighlightStart}):not(.${dayClasses.rangeIntervalDayHighlightEnd}) .${dayClasses.day}:not(.${dayClasses.notSelectedDate})`]: {
|
|
62
|
+
// we can't override `PickersDay` background color here, because it's styles take precedence
|
|
63
|
+
opacity: 0.6
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
[`&:not(.${dateRangeCalendarClasses.dayDragging}) .${dayClasses.dayOutsideRangeInterval}`]: {
|
|
67
|
+
'@media (pointer: fine)': {
|
|
68
|
+
'&:hover': {
|
|
69
|
+
border: `1px solid ${(theme.vars || theme).palette.grey[500]}`
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}));
|
|
54
74
|
function useDateRangeCalendarDefaultizedProps(props, name) {
|
|
55
|
-
var _themeProps$renderLoa, _themeProps$reduceAni, _props$loading, _props$disablePast, _props$disableFuture, _themeProps$calendars;
|
|
75
|
+
var _themeProps$renderLoa, _themeProps$reduceAni, _props$loading, _props$disablePast, _props$disableFuture, _themeProps$calendars, _themeProps$disableDr;
|
|
56
76
|
const utils = useUtils();
|
|
57
77
|
const defaultDates = useDefaultDates();
|
|
58
78
|
const themeProps = useThemeProps({
|
|
@@ -69,16 +89,19 @@ function useDateRangeCalendarDefaultizedProps(props, name) {
|
|
|
69
89
|
disableFuture: (_props$disableFuture = props.disableFuture) != null ? _props$disableFuture : false,
|
|
70
90
|
minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),
|
|
71
91
|
maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate),
|
|
72
|
-
calendars: (_themeProps$calendars = themeProps.calendars) != null ? _themeProps$calendars : 2
|
|
92
|
+
calendars: (_themeProps$calendars = themeProps.calendars) != null ? _themeProps$calendars : 2,
|
|
93
|
+
disableDragEditing: (_themeProps$disableDr = themeProps.disableDragEditing) != null ? _themeProps$disableDr : false
|
|
73
94
|
});
|
|
74
95
|
}
|
|
75
96
|
const useUtilityClasses = ownerState => {
|
|
76
97
|
const {
|
|
77
|
-
classes
|
|
98
|
+
classes,
|
|
99
|
+
isDragging
|
|
78
100
|
} = ownerState;
|
|
79
101
|
const slots = {
|
|
80
102
|
root: ['root'],
|
|
81
|
-
monthContainer: ['monthContainer']
|
|
103
|
+
monthContainer: ['monthContainer'],
|
|
104
|
+
dayCalendar: [isDragging && 'dayDragging']
|
|
82
105
|
};
|
|
83
106
|
return composeClasses(slots, getDateRangeCalendarUtilityClass, classes);
|
|
84
107
|
};
|
|
@@ -86,8 +109,6 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
86
109
|
const utils = useUtils();
|
|
87
110
|
const localeText = useLocaleText();
|
|
88
111
|
const props = useDateRangeCalendarDefaultizedProps(inProps, 'MuiDateRangeCalendar');
|
|
89
|
-
const ownerState = props;
|
|
90
|
-
const classes = useUtilityClasses(ownerState);
|
|
91
112
|
const isMobile = React.useContext(WrapperVariantContext) === 'mobile';
|
|
92
113
|
const {
|
|
93
114
|
value: valueProp,
|
|
@@ -102,8 +123,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
102
123
|
reduceAnimations,
|
|
103
124
|
onMonthChange,
|
|
104
125
|
defaultCalendarMonth,
|
|
105
|
-
|
|
106
|
-
|
|
126
|
+
rangePosition: rangePositionProps,
|
|
127
|
+
onRangePositionChange,
|
|
107
128
|
calendars,
|
|
108
129
|
components,
|
|
109
130
|
componentsProps,
|
|
@@ -116,7 +137,9 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
116
137
|
dayOfWeekFormatter,
|
|
117
138
|
disableAutoMonthSwitching,
|
|
118
139
|
autoFocus,
|
|
119
|
-
fixedWeekNumber
|
|
140
|
+
fixedWeekNumber,
|
|
141
|
+
disableDragEditing,
|
|
142
|
+
displayWeekNumber
|
|
120
143
|
} = props,
|
|
121
144
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
122
145
|
const [value, setValue] = useControlled({
|
|
@@ -125,13 +148,78 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
125
148
|
name: 'DateRangeCalendar',
|
|
126
149
|
state: 'value'
|
|
127
150
|
});
|
|
128
|
-
const [
|
|
129
|
-
controlled:
|
|
151
|
+
const [rangePosition, setRangePosition] = useControlled({
|
|
152
|
+
controlled: rangePositionProps,
|
|
130
153
|
default: 'start',
|
|
131
154
|
name: 'DateRangeCalendar',
|
|
132
|
-
state: '
|
|
155
|
+
state: 'rangePosition'
|
|
156
|
+
});
|
|
157
|
+
const handleDatePositionChange = useEventCallback(position => {
|
|
158
|
+
if (rangePosition !== position) {
|
|
159
|
+
setRangePosition(position);
|
|
160
|
+
}
|
|
133
161
|
});
|
|
134
|
-
const
|
|
162
|
+
const handleSelectedDayChange = useEventCallback((newDate, selectionState, allowRangeFlip = false) => {
|
|
163
|
+
const {
|
|
164
|
+
nextSelection,
|
|
165
|
+
newRange
|
|
166
|
+
} = calculateRangeChange({
|
|
167
|
+
newDate,
|
|
168
|
+
utils,
|
|
169
|
+
range: value,
|
|
170
|
+
rangePosition,
|
|
171
|
+
allowRangeFlip
|
|
172
|
+
});
|
|
173
|
+
setRangePosition(nextSelection);
|
|
174
|
+
onRangePositionChange == null ? void 0 : onRangePositionChange(nextSelection);
|
|
175
|
+
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(utils, newRange);
|
|
176
|
+
setValue(newRange);
|
|
177
|
+
onChange == null ? void 0 : onChange(newRange, isFullRangeSelected ? 'finish' : 'partial');
|
|
178
|
+
});
|
|
179
|
+
const handleDrop = useEventCallback(newDate => {
|
|
180
|
+
handleSelectedDayChange(newDate, undefined, true);
|
|
181
|
+
});
|
|
182
|
+
const shouldDisableDragEditing = disableDragEditing || disabled || readOnly;
|
|
183
|
+
|
|
184
|
+
// Range going for the start of the start day to the end of the end day.
|
|
185
|
+
// This makes sure that `isWithinRange` works with any time in the start and end day.
|
|
186
|
+
const valueDayRange = React.useMemo(() => [value[0] == null || !utils.isValid(value[0]) ? value[0] : utils.startOfDay(value[0]), value[1] == null || !utils.isValid(value[1]) ? value[1] : utils.endOfDay(value[1])], [value, utils]);
|
|
187
|
+
const _useDragRange = useDragRange({
|
|
188
|
+
disableDragEditing: shouldDisableDragEditing,
|
|
189
|
+
onDrop: handleDrop,
|
|
190
|
+
onDatePositionChange: handleDatePositionChange,
|
|
191
|
+
utils,
|
|
192
|
+
dateRange: valueDayRange
|
|
193
|
+
}),
|
|
194
|
+
{
|
|
195
|
+
isDragging,
|
|
196
|
+
rangeDragDay,
|
|
197
|
+
draggingDatePosition
|
|
198
|
+
} = _useDragRange,
|
|
199
|
+
dragEventHandlers = _objectWithoutPropertiesLoose(_useDragRange, _excluded2);
|
|
200
|
+
const ownerState = _extends({}, props, {
|
|
201
|
+
isDragging
|
|
202
|
+
});
|
|
203
|
+
const classes = useUtilityClasses(ownerState);
|
|
204
|
+
const draggingRange = React.useMemo(() => {
|
|
205
|
+
if (!valueDayRange[0] || !valueDayRange[1] || !rangeDragDay) {
|
|
206
|
+
return [null, null];
|
|
207
|
+
}
|
|
208
|
+
const newRange = calculateRangeChange({
|
|
209
|
+
utils,
|
|
210
|
+
range: valueDayRange,
|
|
211
|
+
newDate: rangeDragDay,
|
|
212
|
+
rangePosition,
|
|
213
|
+
allowRangeFlip: true
|
|
214
|
+
}).newRange;
|
|
215
|
+
return newRange[0] !== null && newRange[1] !== null ? [utils.startOfDay(newRange[0]), utils.endOfDay(newRange[1])] : newRange;
|
|
216
|
+
}, [rangePosition, rangeDragDay, utils, valueDayRange]);
|
|
217
|
+
const wrappedShouldDisableDate = React.useMemo(() => {
|
|
218
|
+
if (!shouldDisableDate) {
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
return dayToTest => shouldDisableDate(dayToTest, draggingDatePosition || rangePosition);
|
|
222
|
+
}, [shouldDisableDate, rangePosition, draggingDatePosition]);
|
|
135
223
|
const {
|
|
136
224
|
calendarState,
|
|
137
225
|
changeFocusedDay,
|
|
@@ -153,14 +241,14 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
153
241
|
const prevValue = React.useRef(null);
|
|
154
242
|
React.useEffect(() => {
|
|
155
243
|
var _prevValue$current, _prevValue$current2;
|
|
156
|
-
const date =
|
|
244
|
+
const date = rangePosition === 'start' ? value[0] : value[1];
|
|
157
245
|
if (!date || !utils.isValid(date)) {
|
|
158
246
|
return;
|
|
159
247
|
}
|
|
160
|
-
const prevDate =
|
|
248
|
+
const prevDate = rangePosition === 'start' ? (_prevValue$current = prevValue.current) == null ? void 0 : _prevValue$current[0] : (_prevValue$current2 = prevValue.current) == null ? void 0 : _prevValue$current2[1];
|
|
161
249
|
prevValue.current = value;
|
|
162
250
|
|
|
163
|
-
// The current date did not change, this call comes either from a `
|
|
251
|
+
// The current date did not change, this call comes either from a `rangePosition` change or a change in the other date.
|
|
164
252
|
// In both cases, we don't want to change the visible month(s).
|
|
165
253
|
if (disableAutoMonthSwitching && prevDate && utils.isEqual(prevDate, date)) {
|
|
166
254
|
return;
|
|
@@ -169,29 +257,13 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
169
257
|
const currentMonthNumber = utils.getMonth(calendarState.currentMonth);
|
|
170
258
|
const requestedMonthNumber = utils.getMonth(date);
|
|
171
259
|
if (!utils.isSameYear(calendarState.currentMonth, date) || requestedMonthNumber < currentMonthNumber || requestedMonthNumber > currentMonthNumber + displayingMonthRange) {
|
|
172
|
-
const newMonth =
|
|
260
|
+
const newMonth = rangePosition === 'start' ? date :
|
|
173
261
|
// If need to focus end, scroll to the state when "end" is displaying in the last calendar
|
|
174
262
|
utils.addMonths(date, -displayingMonthRange);
|
|
175
263
|
changeMonth(newMonth);
|
|
176
264
|
}
|
|
177
|
-
}, [
|
|
265
|
+
}, [rangePosition, value]); // eslint-disable-line
|
|
178
266
|
|
|
179
|
-
const handleSelectedDayChange = useEventCallback(newDate => {
|
|
180
|
-
const {
|
|
181
|
-
nextSelection,
|
|
182
|
-
newRange
|
|
183
|
-
} = calculateRangeChange({
|
|
184
|
-
newDate,
|
|
185
|
-
utils,
|
|
186
|
-
range: value,
|
|
187
|
-
currentlySelectingRangeEnd: currentDatePosition
|
|
188
|
-
});
|
|
189
|
-
setCurrentDatePosition(nextSelection);
|
|
190
|
-
onCurrentDatePositionChange == null ? void 0 : onCurrentDatePositionChange(nextSelection);
|
|
191
|
-
const isFullRangeSelected = currentDatePosition === 'end' && isRangeValid(utils, newRange);
|
|
192
|
-
setValue(newRange);
|
|
193
|
-
onChange == null ? void 0 : onChange(newRange, isFullRangeSelected ? 'finish' : 'partial');
|
|
194
|
-
});
|
|
195
267
|
const selectNextMonth = React.useCallback(() => {
|
|
196
268
|
changeMonth(utils.getNextMonth(calendarState.currentMonth));
|
|
197
269
|
}, [changeMonth, calendarState.currentMonth, utils]);
|
|
@@ -225,23 +297,19 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
225
297
|
const CalendarTransitionProps = React.useMemo(() => ({
|
|
226
298
|
onMouseLeave: () => setRangePreviewDay(null)
|
|
227
299
|
}), []);
|
|
228
|
-
|
|
229
|
-
// Range going for the start of the start day to the end of the end day.
|
|
230
|
-
// This makes sure that `isWithinRange` works with any time in the start and end day.
|
|
231
|
-
const valueDayRange = React.useMemo(() => [value[0] == null || !utils.isValid(value[0]) ? value[0] : utils.startOfDay(value[0]), value[1] == null || !utils.isValid(value[1]) ? value[1] : utils.endOfDay(value[1])], [value, utils]);
|
|
232
300
|
const previewingRange = calculateRangePreview({
|
|
233
301
|
utils,
|
|
234
302
|
range: valueDayRange,
|
|
235
303
|
newDate: rangePreviewDay,
|
|
236
|
-
|
|
304
|
+
rangePosition
|
|
237
305
|
});
|
|
238
|
-
const
|
|
306
|
+
const handleDayMouseEnter = useEventCallback((event, newPreviewRequest) => {
|
|
239
307
|
if (!isWithinRange(utils, newPreviewRequest, valueDayRange)) {
|
|
240
308
|
setRangePreviewDay(newPreviewRequest);
|
|
241
309
|
} else {
|
|
242
310
|
setRangePreviewDay(null);
|
|
243
311
|
}
|
|
244
|
-
};
|
|
312
|
+
});
|
|
245
313
|
const componentsForDayCalendar = _extends({
|
|
246
314
|
Day: DateRangePickerDay
|
|
247
315
|
}, components);
|
|
@@ -251,17 +319,37 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
251
319
|
const {
|
|
252
320
|
day
|
|
253
321
|
} = dayOwnerState;
|
|
322
|
+
const isSelectedStartDate = isStartOfRange(utils, day, valueDayRange);
|
|
323
|
+
const isSelectedEndDate = isEndOfRange(utils, day, valueDayRange);
|
|
324
|
+
const shouldInitDragging = !shouldDisableDragEditing && valueDayRange[0] && valueDayRange[1];
|
|
325
|
+
const isElementDraggable = shouldInitDragging && (isSelectedStartDate || isSelectedEndDate);
|
|
326
|
+
let datePosition;
|
|
327
|
+
if (isSelectedStartDate) {
|
|
328
|
+
datePosition = 'start';
|
|
329
|
+
} else if (isSelectedEndDate) {
|
|
330
|
+
datePosition = 'end';
|
|
331
|
+
}
|
|
332
|
+
const isStartOfHighlighting = isDragging ? isStartOfRange(utils, day, draggingRange) : isSelectedStartDate;
|
|
333
|
+
const isEndOfHighlighting = isDragging ? isEndOfRange(utils, day, draggingRange) : isSelectedEndDate;
|
|
254
334
|
return _extends({
|
|
255
335
|
isPreviewing: isMobile ? false : isWithinRange(utils, day, previewingRange),
|
|
256
336
|
isStartOfPreviewing: isMobile ? false : isStartOfRange(utils, day, previewingRange),
|
|
257
337
|
isEndOfPreviewing: isMobile ? false : isEndOfRange(utils, day, previewingRange),
|
|
258
|
-
isHighlighting: isWithinRange(utils, day, valueDayRange),
|
|
259
|
-
isStartOfHighlighting
|
|
260
|
-
isEndOfHighlighting: isEndOfRange(utils, day,
|
|
261
|
-
onMouseEnter:
|
|
338
|
+
isHighlighting: isWithinRange(utils, day, isDragging ? draggingRange : valueDayRange),
|
|
339
|
+
isStartOfHighlighting,
|
|
340
|
+
isEndOfHighlighting: isDragging ? isEndOfRange(utils, day, draggingRange) : isSelectedEndDate,
|
|
341
|
+
onMouseEnter: handleDayMouseEnter,
|
|
342
|
+
// apply selected styling to the dragging start or end day
|
|
343
|
+
isVisuallySelected: dayOwnerState.selected || isDragging && (isStartOfHighlighting || isEndOfHighlighting),
|
|
344
|
+
'data-position': datePosition
|
|
345
|
+
}, dragEventHandlers, {
|
|
346
|
+
draggable: isElementDraggable ? true : undefined
|
|
262
347
|
}, (_resolveComponentProp = resolveComponentProps(componentsProps == null ? void 0 : componentsProps.day, dayOwnerState)) != null ? _resolveComponentProp : {});
|
|
263
348
|
}
|
|
264
349
|
});
|
|
350
|
+
const visibleMonths = React.useMemo(() => Array.from({
|
|
351
|
+
length: calendars
|
|
352
|
+
}).map((_, index) => utils.setMonth(calendarState.currentMonth, utils.getMonth(calendarState.currentMonth) + index)), [utils, calendarState.currentMonth, calendars]);
|
|
265
353
|
return /*#__PURE__*/_jsxs(DateRangeCalendarRoot, _extends({
|
|
266
354
|
ref: ref,
|
|
267
355
|
className: clsx(className, classes.root),
|
|
@@ -270,60 +358,58 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
270
358
|
children: [/*#__PURE__*/_jsx(Watermark, {
|
|
271
359
|
packageName: "x-date-pickers-pro",
|
|
272
360
|
releaseInfo: releaseInfo
|
|
273
|
-
}),
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
}, index);
|
|
326
|
-
})]
|
|
361
|
+
}), visibleMonths.map((month, index) => /*#__PURE__*/_jsxs(DateRangeCalendarMonthContainer, {
|
|
362
|
+
className: classes.monthContainer,
|
|
363
|
+
children: [calendars === 1 ? /*#__PURE__*/_jsx(PickersCalendarHeader, {
|
|
364
|
+
views: ['day'],
|
|
365
|
+
openView: 'day',
|
|
366
|
+
currentMonth: calendarState.currentMonth,
|
|
367
|
+
onMonthChange: (newMonth, direction) => handleChangeMonth({
|
|
368
|
+
newMonth,
|
|
369
|
+
direction
|
|
370
|
+
}),
|
|
371
|
+
minDate: minDateWithDisabled,
|
|
372
|
+
maxDate: maxDateWithDisabled,
|
|
373
|
+
disabled: disabled,
|
|
374
|
+
disablePast: disablePast,
|
|
375
|
+
disableFuture: disableFuture,
|
|
376
|
+
reduceAnimations: reduceAnimations,
|
|
377
|
+
components: components,
|
|
378
|
+
componentsProps: componentsProps
|
|
379
|
+
}) : /*#__PURE__*/_jsx(DateRangeCalendarArrowSwitcher, {
|
|
380
|
+
onGoToPrevious: selectPreviousMonth,
|
|
381
|
+
onGoToNext: selectNextMonth,
|
|
382
|
+
isPreviousHidden: index !== 0,
|
|
383
|
+
isPreviousDisabled: isPreviousMonthDisabled,
|
|
384
|
+
previousLabel: localeText.previousMonth,
|
|
385
|
+
isNextHidden: index !== calendars - 1,
|
|
386
|
+
isNextDisabled: isNextMonthDisabled,
|
|
387
|
+
nextLabel: localeText.nextMonth,
|
|
388
|
+
components: components,
|
|
389
|
+
componentsProps: componentsProps,
|
|
390
|
+
children: utils.format(month, 'monthAndYear')
|
|
391
|
+
}), /*#__PURE__*/_jsx(DayCalendarForRange, _extends({
|
|
392
|
+
className: classes.dayCalendar
|
|
393
|
+
}, calendarState, baseDateValidationProps, commonViewProps, {
|
|
394
|
+
onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
|
|
395
|
+
onFocusedDayChange: changeFocusedDay,
|
|
396
|
+
reduceAnimations: reduceAnimations,
|
|
397
|
+
selectedDays: value,
|
|
398
|
+
onSelectedDaysChange: handleSelectedDayChange,
|
|
399
|
+
currentMonth: month,
|
|
400
|
+
TransitionProps: CalendarTransitionProps,
|
|
401
|
+
shouldDisableDate: wrappedShouldDisableDate,
|
|
402
|
+
showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth,
|
|
403
|
+
dayOfWeekFormatter: dayOfWeekFormatter,
|
|
404
|
+
loading: loading,
|
|
405
|
+
renderLoading: renderLoading,
|
|
406
|
+
components: componentsForDayCalendar,
|
|
407
|
+
componentsProps: componentsPropsForDayCalendar,
|
|
408
|
+
autoFocus: autoFocus,
|
|
409
|
+
fixedWeekNumber: fixedWeekNumber,
|
|
410
|
+
displayWeekNumber: displayWeekNumber
|
|
411
|
+
}), index)]
|
|
412
|
+
}, month.toString()))]
|
|
327
413
|
}));
|
|
328
414
|
});
|
|
329
415
|
process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
@@ -349,7 +435,6 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
|
349
435
|
* @default {}
|
|
350
436
|
*/
|
|
351
437
|
componentsProps: PropTypes.object,
|
|
352
|
-
currentDatePosition: PropTypes.oneOf(['end', 'start']),
|
|
353
438
|
/**
|
|
354
439
|
* Formats the day of week displayed in the calendar header.
|
|
355
440
|
* @param {string} day The day of week provided by the adapter's method `getWeekdays`.
|
|
@@ -376,6 +461,11 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
|
376
461
|
* @default false
|
|
377
462
|
*/
|
|
378
463
|
disabled: PropTypes.bool,
|
|
464
|
+
/**
|
|
465
|
+
* If `true`, editing dates by dragging is disabled.
|
|
466
|
+
* @default false
|
|
467
|
+
*/
|
|
468
|
+
disableDragEditing: PropTypes.bool,
|
|
379
469
|
/**
|
|
380
470
|
* If `true` disable values before the current date for date components, time for time components and both for date time components.
|
|
381
471
|
* @default false
|
|
@@ -422,7 +512,6 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
|
422
512
|
* @param {PickerSelectionState | undefined} selectionState Indicates if the date range selection is complete.
|
|
423
513
|
*/
|
|
424
514
|
onChange: PropTypes.func,
|
|
425
|
-
onCurrentDatePositionChange: PropTypes.func,
|
|
426
515
|
/**
|
|
427
516
|
* Callback firing on month change @DateIOType.
|
|
428
517
|
* @template TDate
|
|
@@ -430,6 +519,8 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
|
430
519
|
* @returns {void|Promise} -
|
|
431
520
|
*/
|
|
432
521
|
onMonthChange: PropTypes.func,
|
|
522
|
+
onRangePositionChange: PropTypes.func,
|
|
523
|
+
rangePosition: PropTypes.oneOf(['end', 'start']),
|
|
433
524
|
/**
|
|
434
525
|
* Make picker read only.
|
|
435
526
|
* @default false
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SxProps } from '@mui/system';
|
|
3
|
+
import { SlotComponentProps } from '@mui/base';
|
|
3
4
|
import { Theme } from '@mui/material/styles';
|
|
4
|
-
import { BaseDateValidationProps, DefaultizedProps, ExportedDayCalendarProps, DayCalendarSlotsComponent, DayCalendarSlotsComponentsProps, PickersArrowSwitcherSlotsComponent, PickersArrowSwitcherSlotsComponentsProps, PickerSelectionState, PickersCalendarHeaderSlotsComponent, PickersCalendarHeaderSlotsComponentsProps } from '@mui/x-date-pickers/internals';
|
|
5
|
-
import { DateRange, DayRangeValidationProps } from '../internal/models';
|
|
5
|
+
import { BaseDateValidationProps, DefaultizedProps, ExportedDayCalendarProps, DayCalendarSlotsComponent, DayCalendarSlotsComponentsProps, PickersArrowSwitcherSlotsComponent, PickersArrowSwitcherSlotsComponentsProps, PickerSelectionState, PickersCalendarHeaderSlotsComponent, PickersCalendarHeaderSlotsComponentsProps, DayCalendarProps } from '@mui/x-date-pickers/internals';
|
|
6
|
+
import { DateRange, RangePositionProps, DayRangeValidationProps } from '../internal/models';
|
|
6
7
|
import { DateRangeCalendarClasses } from './dateRangeCalendarClasses';
|
|
7
|
-
import { DateRangePickerDayProps } from '../DateRangePickerDay';
|
|
8
|
-
export
|
|
8
|
+
import { DateRangePickerDay, DateRangePickerDayProps } from '../DateRangePickerDay';
|
|
9
|
+
export type DateRangePosition = 'start' | 'end';
|
|
9
10
|
export interface DateRangeCalendarSlotsComponent<TDate> extends PickersArrowSwitcherSlotsComponent, Omit<DayCalendarSlotsComponent<TDate>, 'Day'>, PickersCalendarHeaderSlotsComponent {
|
|
10
11
|
/**
|
|
11
12
|
* Custom component for day in range pickers.
|
|
@@ -14,9 +15,13 @@ export interface DateRangeCalendarSlotsComponent<TDate> extends PickersArrowSwit
|
|
|
14
15
|
*/
|
|
15
16
|
Day?: React.ElementType<DateRangePickerDayProps<TDate>>;
|
|
16
17
|
}
|
|
17
|
-
export interface DateRangeCalendarSlotsComponentsProps<TDate> extends PickersArrowSwitcherSlotsComponentsProps, Omit<DayCalendarSlotsComponentsProps<TDate>, '
|
|
18
|
+
export interface DateRangeCalendarSlotsComponentsProps<TDate> extends PickersArrowSwitcherSlotsComponentsProps, Omit<DayCalendarSlotsComponentsProps<TDate>, 'day'>, PickersCalendarHeaderSlotsComponentsProps<TDate> {
|
|
19
|
+
day?: SlotComponentProps<typeof DateRangePickerDay, {}, DayCalendarProps<TDate> & {
|
|
20
|
+
day: TDate;
|
|
21
|
+
selected: boolean;
|
|
22
|
+
}>;
|
|
18
23
|
}
|
|
19
|
-
export interface DateRangeCalendarProps<TDate> extends ExportedDayCalendarProps<TDate>, BaseDateValidationProps<TDate>, DayRangeValidationProps<TDate> {
|
|
24
|
+
export interface DateRangeCalendarProps<TDate> extends ExportedDayCalendarProps<TDate>, BaseDateValidationProps<TDate>, DayRangeValidationProps<TDate>, Partial<RangePositionProps> {
|
|
20
25
|
/**
|
|
21
26
|
* The selected value.
|
|
22
27
|
* Used when the component is controlled.
|
|
@@ -82,13 +87,19 @@ export interface DateRangeCalendarProps<TDate> extends ExportedDayCalendarProps<
|
|
|
82
87
|
* @returns {void|Promise} -
|
|
83
88
|
*/
|
|
84
89
|
onMonthChange?: (month: TDate) => void | Promise<void>;
|
|
85
|
-
currentDatePosition?: DateRangePosition;
|
|
86
|
-
onCurrentDatePositionChange?: (newPosition: DateRangePosition) => void;
|
|
87
90
|
/**
|
|
88
91
|
* The number of calendars to render.
|
|
89
92
|
* @default 2
|
|
90
93
|
*/
|
|
91
94
|
calendars?: 1 | 2 | 3;
|
|
95
|
+
/**
|
|
96
|
+
* If `true`, editing dates by dragging is disabled.
|
|
97
|
+
* @default false
|
|
98
|
+
*/
|
|
99
|
+
disableDragEditing?: boolean;
|
|
100
|
+
}
|
|
101
|
+
export interface DateRangeCalendarOwnerState<TDate> extends DateRangeCalendarProps<TDate> {
|
|
102
|
+
isDragging: boolean;
|
|
92
103
|
}
|
|
93
|
-
export
|
|
94
|
-
export
|
|
104
|
+
export type DateRangeCalendarDefaultizedProps<TDate> = DefaultizedProps<DateRangeCalendarProps<TDate>, 'reduceAnimations' | 'calendars' | 'disableDragEditing' | keyof BaseDateValidationProps<TDate>>;
|
|
105
|
+
export type ExportedDateRangeCalendarProps<TDate> = Omit<DateRangeCalendarProps<TDate>, 'defaultValue' | 'value' | 'onChange' | 'changeView' | 'slideDirection' | 'currentMonth' | 'className' | 'classes' | 'components' | 'componentsProps' | 'rangePosition' | 'onRangePositionChange'>;
|