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

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 (90) hide show
  1. package/CHANGELOG.md +186 -5
  2. package/DateRangeCalendar/DateRangeCalendar.js +30 -13
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +3 -2
  4. package/DateRangeCalendar/index.d.ts +1 -0
  5. package/DateRangePicker/DateRangePicker.js +17 -1
  6. package/DateRangePicker/DateRangePickerToolbar.d.ts +3 -2
  7. package/DateRangePicker/DateRangePickerToolbar.js +1 -0
  8. package/DesktopDateRangePicker/DesktopDateRangePicker.js +17 -1
  9. package/MobileDateRangePicker/MobileDateRangePicker.js +17 -1
  10. package/MultiInputDateRangeField/MultiInputDateRangeField.js +3 -3
  11. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +3 -3
  12. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +3 -3
  13. package/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
  14. package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
  15. package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
  16. package/StaticDateRangePicker/StaticDateRangePicker.js +16 -0
  17. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +1 -1
  18. package/dateRangeViewRenderers/dateRangeViewRenderers.js +2 -0
  19. package/index.js +1 -1
  20. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +10 -6
  21. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +6 -5
  22. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +42 -14
  23. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +6 -5
  24. package/internal/hooks/useRangePosition.d.ts +24 -0
  25. package/internal/hooks/useRangePosition.js +20 -0
  26. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +7 -3
  27. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +4 -3
  28. package/internal/models/range.d.ts +0 -4
  29. package/internal/utils/releaseInfo.js +1 -1
  30. package/legacy/DateRangeCalendar/DateRangeCalendar.js +29 -16
  31. package/legacy/DateRangePicker/DateRangePicker.js +17 -1
  32. package/legacy/DateRangePicker/DateRangePickerToolbar.js +1 -0
  33. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +17 -1
  34. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +17 -1
  35. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +3 -3
  36. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +3 -3
  37. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +3 -3
  38. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
  39. package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
  40. package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
  41. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +16 -0
  42. package/legacy/dateRangeViewRenderers/dateRangeViewRenderers.js +2 -0
  43. package/legacy/index.js +1 -1
  44. package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +9 -10
  45. package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +41 -18
  46. package/legacy/internal/hooks/useRangePosition.js +24 -0
  47. package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +6 -7
  48. package/legacy/internal/utils/releaseInfo.js +1 -1
  49. package/modern/DateRangeCalendar/DateRangeCalendar.js +30 -13
  50. package/modern/DateRangePicker/DateRangePicker.js +17 -1
  51. package/modern/DateRangePicker/DateRangePickerToolbar.js +1 -0
  52. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +17 -1
  53. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +17 -1
  54. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +3 -3
  55. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +3 -3
  56. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +3 -3
  57. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
  58. package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
  59. package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
  60. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +16 -0
  61. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +2 -0
  62. package/modern/index.js +1 -1
  63. package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +10 -6
  64. package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +41 -13
  65. package/modern/internal/hooks/useRangePosition.js +18 -0
  66. package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +7 -3
  67. package/modern/internal/utils/releaseInfo.js +1 -1
  68. package/node/DateRangeCalendar/DateRangeCalendar.js +30 -13
  69. package/node/DateRangePicker/DateRangePicker.js +17 -1
  70. package/node/DateRangePicker/DateRangePickerToolbar.js +1 -0
  71. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +17 -1
  72. package/node/MobileDateRangePicker/MobileDateRangePicker.js +17 -1
  73. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +3 -3
  74. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +3 -3
  75. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +3 -3
  76. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +1 -1
  77. package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +1 -1
  78. package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +1 -1
  79. package/node/StaticDateRangePicker/StaticDateRangePicker.js +16 -0
  80. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +2 -0
  81. package/node/index.js +1 -1
  82. package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +10 -6
  83. package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +40 -12
  84. package/node/internal/hooks/useRangePosition.js +26 -0
  85. package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +7 -3
  86. package/node/internal/utils/releaseInfo.js +1 -1
  87. package/package.json +3 -4
  88. package/themeAugmentation/components.d.ts +20 -0
  89. package/themeAugmentation/overrides.d.ts +9 -2
  90. package/themeAugmentation/props.d.ts +14 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,124 @@
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-beta.2
7
+
8
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
9
+
10
+ - 🚀 Support week day formats in the field components
11
+ - 🌍 Add Hungarian (hu-HU) and Urdu (ur-PK) locales
12
+ - 🌍 Improve French (fr-FR) and Italian (it-IT) locales
13
+ - ✨ New codemods for migrating to v6
14
+ - 📚 Documentation improvements
15
+ - 🐞 Bug fixes
16
+
17
+ ### `@mui/x-data-grid@v6.0.0-beta.2` / `@mui/x-data-grid-pro@v6.0.0-beta.2` / `@mui/x-data-grid-premium@v6.0.0-beta.2`
18
+
19
+ #### Changes
20
+
21
+ - [DataGrid] Handle non-numeric values returned by `getRowHeight` prop (#7703) @cherniavskii
22
+ - [DataGrid] Merge row styles with `componentsProps.row.style` (#7641) @marktoman
23
+ - [l10n] Add Hungarian (hu-HU) locale (#7776) @noherczeg
24
+ - [l10n] Add Urdu (ur-PK) locale (#6866) @MBilalShafi
25
+ - [l10n] Improve French (fr-FR) locale (#7777) @Vivek-Prajapatii
26
+ - [l10n] Improve Italian (it-IT) locale (#7761) @simonecervini
27
+
28
+ ### `@mui/x-date-pickers@v6.0.0-beta.2` / `@mui/x-date-pickers-pro@v6.0.0-beta.2`
29
+
30
+ #### Changes
31
+
32
+ - [fields] Support week day formats (#7392) @flaviendelangle
33
+ - [pickers] Allow to initialize and control the `rangePosition` on all range components (#7764) @flaviendelangle
34
+ - [pickers] Fix theme augmentation (#7800) @LukasTy
35
+ - [pickers] Hide scrollbars in the date calendar container (#7766) @Vivek-Prajapatii
36
+ - [pickers] Remove the dependency on `rifm` (#7785) @alexfauquette
37
+
38
+ ### `@mui/x-codemod@v6.0.0-beta.2`
39
+
40
+ #### Changes
41
+
42
+ - [codemod] Add pickers `rename-default-toolbar-title-localeText` codemod (#7752) @LukasTy
43
+ - [codemod] Add pickers `rename-inputFormat-prop` codemod (#7736) @LukasTy
44
+
45
+ ### Docs
46
+
47
+ - [docs] Fix a typo in data grid layout page (#7113) @sfbaker7
48
+ - [docs] Fix require context path to avoid duplicate key creation (#7781) @LukasTy
49
+ - [docs] Polish pickers migration docs (#7737) @LukasTy
50
+ - [docs] Rename `next` translation docs and remove duplicates with `-next` (#7729) @LukasTy
51
+
52
+ ### Core
53
+
54
+ - [core] Fix l10n data file (#7804) @flaviendelangle
55
+ - [core] Fix Next.js warning (#7754) @oliviertassinari
56
+ - [core] Remove unused demos (#7758) @flaviendelangle
57
+
58
+ ## 6.0.0-beta.1
59
+
60
+ _Jan 27, 2023_
61
+
62
+ We'd like to offer a big thanks to the 17 contributors who made this release possible. Here are some highlights ✨:
63
+
64
+ - 🚀 New shortcuts component for the date pickers (#7154) @alexfauquette
65
+ - 🌍 Add Belarusian (be-BY), Czech (cs-CZ) and Russian (ru-RU) locales
66
+ - 🌍 Improve Spanish (es-ES), Japanese (ja-JP), Slovak (sk-SK), and Vietnamese (vi-VN) locales
67
+ - ✨ New codemods for migrating to v6
68
+ - 📚 Documentation improvements
69
+ - 🐞 Bug fixes
70
+
71
+ ### `@mui/x-data-grid@v6.0.0-beta.1` / `@mui/x-data-grid-pro@v6.0.0-beta.1` / `@mui/x-data-grid-premium@v6.0.0-beta.1`
72
+
73
+ #### Changes
74
+
75
+ - [DataGrid] Add `title` attribute to cells (#7682) @thupi
76
+ - [DataGrid] Fix `autoHeight` not working properly inside of a flex container (#7701) @cherniavskii
77
+ - [DataGrid] Fix grid state not being updated after print preview is closed (#7642) @cherniavskii
78
+ - [DataGrid] Fix non-hideable columns visibility toggling (#7637) @cherniavskii
79
+ - [DataGrid] Fix scrolling on resize for data grids inside shadow root (#7298) @akiradev
80
+ - [l10n] Add Slovak (sk-SK) translation for aggregation functions (#7702) @msidlo
81
+ - [l10n] Add missing core locales for `MuiTablePagination` (#7717) @MBilalShafi
82
+ - [l10n] Improve Spanish (es-ES) and Vietnamese (vi-VN) locale (#7634) @WiXSL and @SpacerZ
83
+ - [l10n] Add Belarusian (be-BY) locale (#7646) @volhalink
84
+
85
+ ### `@mui/x-date-pickers@v6.0.0-beta.1` / `@mui/x-date-pickers-pro@v6.0.0-beta.1`
86
+
87
+ #### Changes
88
+
89
+ - [pickers] Fix `aria-labelledby` assignment to dialog (#7608) @LukasTy
90
+ - [pickers] Support `UTC` with `dayjs` (#7610) @flaviendelangle
91
+ - [pickers] Update focus when opening a UI view (#7620) @alexfauquette
92
+ - [DateRangePickers] Add shortcuts component (#7154) @alexfauquette
93
+ - [l10n] Add Czech (cs-CZ) locale (#7645) @OndrejHj04
94
+ - [l10n] Add Russian (ru-RU) locale (#7706) @rstmzh
95
+ - [l10n] Improve Japanese (ja-JP) locale (#7624) @makoto14
96
+
97
+ ### `@mui/x-codemod@v6.0.0-beta.1`
98
+
99
+ #### Changes
100
+
101
+ - [codemod] Add pickers `replace-toolbar-props-by-slot` codemod (#7687) @alexfauquette
102
+ - [codemod] Add `GridColumnMenuItemProps` to `column-menu-components-rename` codemod (#7710) @MBilalShafi
103
+ - [codemod] Add `headerHeight` prop update to `row-selection-props-rename` codemod (#7711) @MBilalShafi
104
+ - [codemod] Add pickers codemod for `components` to `slots` renaming (#7533) @alexfauquette
105
+ - [codemod] Add pickers `migrate-to-components-componentsProps` and `replace-arrows-button-slot` codemods (#7698) @alexfauquette
106
+ - [codemod] Add data grid codemod renaming `rowsPerPageOptions` prop to `pageSizeOptions` (#7603) @MBilalShafi
107
+ - [codemod] Add pickers `rename-should-disable-time` codemod (#7709) @alexfauquette
108
+ - [codemod] Add data grid `row-selection-props-rename` codemod (#7485) @MBilalShafi
109
+ - [codemod] Add data grid `rename-selectors-and-events` codemod (#7699) @MBilalShafi
110
+ - [codemod] Add pickers `replace-tabs-props` codemod (#7639) @alexfauquette
111
+
112
+ ### Docs
113
+
114
+ - [docs] Add info callout about available component `slots` (#7714) @Vivek-Prajapatii
115
+ - [docs] Add recipe for pinning grouped column (#7712) @MBilalShafi
116
+ - [docs] Fix 404 links to picker API page @oliviertassinari
117
+ - [docs] Update `DemoContainer` `components` prop using a codemod (#7574) @alexfauquette
118
+
119
+ ### Core
120
+
121
+ - [core] Fix `innerslotProps` typo (#7697) @LukasTy
122
+ - [core] Upgrade monorepo (#7676) @cherniavskii
123
+
6
124
  ## 6.0.0-beta.0
7
125
 
8
126
  _Jan 19, 2023_
@@ -342,7 +460,7 @@ We'd like to offer a big thanks to the 9 contributors who made this release poss
342
460
  ```diff
343
461
  <DateTimePicker
344
462
  - shouldDisableTime={(timeValue, view) => view === 'hours' && timeValue < 12}
345
- + shouldDisableTime={(time, view) => view === 'hours' && value.hour() < 12}
463
+ + shouldDisableTime={(value, view) => view === 'hours' && value.hour() < 12}
346
464
  />
347
465
  ```
348
466
 
@@ -1302,8 +1420,7 @@ We'd like to offer a big thanks to the 9 contributors who made this release poss
1302
1420
  - The toolbar related translation keys have been renamed to better fit their usage:
1303
1421
 
1304
1422
  ```diff
1305
- // Same on all other pickers
1306
- <DatePicker
1423
+ <LocalizationProvider
1307
1424
  localeText={{
1308
1425
  - datePickerDefaultToolbarTitle: 'Date Picker',
1309
1426
  + datePickerToolbarTitle: 'Date Picker',
@@ -1426,7 +1543,7 @@ We'd like to offer a big thanks to the 8 contributors who made this release poss
1426
1543
  // TimePicker, MobileTimePicker, DateRangePicker and MobileDateRangePicker.
1427
1544
  <DatePicker
1428
1545
  - DialogProps={{ backgroundColor: 'red' }}
1429
- + componentsProps={{ dialog: { backgroundColor: 'red }}}
1546
+ + componentsProps={{ dialog: { backgroundColor: 'red' }}}
1430
1547
  />
1431
1548
  ```
1432
1549
 
@@ -1437,7 +1554,7 @@ We'd like to offer a big thanks to the 8 contributors who made this release poss
1437
1554
  // TimePicker, DesktopTimePicker, DateRangePicker and DesktopDateRangePicker.
1438
1555
  <DatePicker
1439
1556
  - PaperProps={{ backgroundColor: 'red' }}
1440
- + componentsProps={{ desktopPaper: { backgroundColor: 'red }}}
1557
+ + componentsProps={{ desktopPaper: { backgroundColor: 'red' }}}
1441
1558
  />
1442
1559
  ```
1443
1560
 
@@ -1956,6 +2073,70 @@ You can find more information about the new api, including how to set those tran
1956
2073
  - [test] Skip tests for column pinning and dynamic row height (#5997) @m4theushw
1957
2074
  - [website] Improve security header @oliviertassinari
1958
2075
 
2076
+ ## 5.17.22
2077
+
2078
+ _Feb 2, 2023_
2079
+
2080
+ We'd like to offer a big thanks to the 4 contributors who made this release possible. Here are some highlights ✨:
2081
+
2082
+ - 🌍 Add Urdu (ur-PK) locale
2083
+ - 🌍 Improve French (fr-FR) and Italian (it-IT) locales
2084
+ - 🐞 Bugfixes
2085
+
2086
+ ### `@mui/x-data-grid@v5.17.22` / `@mui/x-data-grid-pro@v5.17.22` / `@mui/x-data-grid-premium@v5.17.22`
2087
+
2088
+ #### Changes
2089
+
2090
+ - [DataGrid] Fix an error when deleting pinned row using the buttons in the `actions` column (#7767) @cherniavskii
2091
+ - [DataGrid] Fix print preview regression in Chrome browser (#7405) @cherniavskii
2092
+ - [l10n] Add Urdu (ur-PK) locale (#7778) @MBilalShafi
2093
+ - [l10n] Improve French (fr-FR) locale (#7795) @Vivek-Prajapatii
2094
+
2095
+ ### `@mui/x-date-pickers@v5.0.17` / `@mui/x-date-pickers-pro@v5.0.17`
2096
+
2097
+ #### Changes
2098
+
2099
+ - [TimePicker] Add missing `themeAugmentation` entry (#7732) @LukasTy
2100
+ - [l10n] Improve Italian (it-IT) locale (#7761) @simonecervini
2101
+
2102
+ ## 5.17.21
2103
+
2104
+ _Jan 27, 2023_
2105
+
2106
+ We'd like to offer a big thanks to the 13 contributors who made this release possible. Here are some highlights ✨:
2107
+
2108
+ - 🌍 Add Belarusian (be-BY), Czech (cs-CZ), and Russian (ru-RU) locales
2109
+ - 🌍 Improve Slovak (sk-SK), Japanese (ja-JP), Vietnamese (vi-VN), and Spanish (es-ES) locales
2110
+ - 🐞 Bugfixes
2111
+
2112
+ ### `@mui/x-data-grid@v5.17.21` / `@mui/x-data-grid-pro@v5.17.21` / `@mui/x-data-grid-premium@v5.17.21`
2113
+
2114
+ #### Changes
2115
+
2116
+ - [DataGrid] Add `title` attribute to cells (#7695) @thupi
2117
+ - [DataGrid] Fix grid state not being updated after print preview is closed (#7680) @cherniavskii
2118
+ - [DataGrid] Fix non-hideable columns visibility toggling (#7716) @cherniavskii
2119
+ - [DataGrid] Fix scrolling on resize for data grids inside shadow root (#7722) @cherniavskii
2120
+ - [DataGridPremium] Create aggregation footer row with `isAutoGenerated: true` (#7681) @m4theushw
2121
+ - [l10n] Add Belarusian (be-BY) locale (#7718) @volhalink
2122
+ - [l10n] Add Slovak (sk-SK) translation for aggregation functions (#7690) @msidlo
2123
+ - [l10n] Add missing core locales for `MuiTablePagination` (#7719) @MBilalShafi
2124
+ - [l10n] Improve Japanese (ja-JP) locale (#7627) @makoto14
2125
+ - [l10n] Improve Vietnamese (vi-VN) locale (#7601) @SpacerZ
2126
+
2127
+ ### `@mui/x-date-pickers@v5.0.16` / `@mui/x-date-pickers-pro@v5.0.16`
2128
+
2129
+ #### Changes
2130
+
2131
+ - [pickers] Add missing components to `themeAugmentation` (#7677) @LukasTy
2132
+ - [l10n] Add Czech (cs-CZ) locale (#7666) @OndrejHj04
2133
+ - [l10n] Add Russian (ru-RU) locale (#7708) @rstmzh
2134
+ - [l10n] Improve Spanish (es-ES) locale (#7614) @WiXSL
2135
+
2136
+ ### Docs
2137
+
2138
+ - [docs] Add info callout about available component `slots` (#7723) @Vivek-Prajapatii
2139
+
1959
2140
  ## 5.17.20
1960
2141
 
1961
2142
  _Jan 19, 2023_
@@ -1,6 +1,6 @@
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", "rangePosition", "onRangePositionChange", "calendars", "components", "componentsProps", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber"],
3
+ const _excluded = ["value", "defaultValue", "onChange", "className", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "defaultCalendarMonth", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "components", "componentsProps", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber"],
4
4
  _excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
@@ -20,6 +20,7 @@ import { calculateRangeChange, calculateRangePreview } from '../internal/utils/d
20
20
  import { DateRangePickerDay, dateRangePickerDayClasses as dayClasses } from '../DateRangePickerDay';
21
21
  import { rangeValueManager } from '../internal/utils/valueManagers';
22
22
  import { useDragRange } from './useDragRange';
23
+ import { useRangePosition } from '../internal/hooks/useRangePosition';
23
24
  import { jsx as _jsx } from "react/jsx-runtime";
24
25
  import { jsxs as _jsxs } from "react/jsx-runtime";
25
26
  const releaseInfo = getReleaseInfo();
@@ -127,13 +128,14 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
127
128
  reduceAnimations,
128
129
  onMonthChange,
129
130
  defaultCalendarMonth,
130
- rangePosition: rangePositionProps,
131
- onRangePositionChange,
131
+ rangePosition: rangePositionProp,
132
+ defaultRangePosition: inDefaultRangePosition,
133
+ onRangePositionChange: inOnRangePositionChange,
132
134
  calendars,
133
135
  components,
134
136
  componentsProps,
135
137
  slots: innerSlots,
136
- slotProps: innerslotProps,
138
+ slotProps: innerSlotProps,
137
139
  loading,
138
140
  renderLoading,
139
141
  disableHighlightToday,
@@ -149,22 +151,24 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
149
151
  } = props,
150
152
  other = _objectWithoutPropertiesLoose(props, _excluded);
151
153
  const slots = innerSlots != null ? innerSlots : uncapitalizeObjectKeys(components);
152
- const slotProps = innerslotProps != null ? innerslotProps : componentsProps;
154
+ const slotProps = innerSlotProps != null ? innerSlotProps : componentsProps;
153
155
  const [value, setValue] = useControlled({
154
156
  controlled: valueProp,
155
157
  default: defaultValue != null ? defaultValue : rangeValueManager.emptyValue,
156
158
  name: 'DateRangeCalendar',
157
159
  state: 'value'
158
160
  });
159
- const [rangePosition, setRangePosition] = useControlled({
160
- controlled: rangePositionProps,
161
- default: 'start',
162
- name: 'DateRangeCalendar',
163
- state: 'rangePosition'
161
+ const {
162
+ rangePosition,
163
+ onRangePositionChange
164
+ } = useRangePosition({
165
+ rangePosition: rangePositionProp,
166
+ defaultRangePosition: inDefaultRangePosition,
167
+ onRangePositionChange: inOnRangePositionChange
164
168
  });
165
169
  const handleDatePositionChange = useEventCallback(position => {
166
170
  if (rangePosition !== position) {
167
- setRangePosition(position);
171
+ onRangePositionChange(position);
168
172
  }
169
173
  });
170
174
  const handleSelectedDayChange = useEventCallback((newDate, selectionState, allowRangeFlip = false) => {
@@ -178,8 +182,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
178
182
  rangePosition,
179
183
  allowRangeFlip
180
184
  });
181
- setRangePosition(nextSelection);
182
- onRangePositionChange == null ? void 0 : onRangePositionChange(nextSelection);
185
+ onRangePositionChange(nextSelection);
183
186
  const isFullRangeSelected = rangePosition === 'end' && isRangeValid(utils, newRange);
184
187
  setValue(newRange);
185
188
  onChange == null ? void 0 : onChange(newRange, isFullRangeSelected ? 'finish' : 'partial');
@@ -482,6 +485,12 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
482
485
  * Default calendar month displayed when `value={[null, null]}`.
483
486
  */
484
487
  defaultCalendarMonth: PropTypes.any,
488
+ /**
489
+ * The initial position in the edited date range.
490
+ * Used when the component is not controlled.
491
+ * @default 'start'
492
+ */
493
+ defaultRangePosition: PropTypes.oneOf(['end', 'start']),
485
494
  /**
486
495
  * The default selected value.
487
496
  * Used when the component is not controlled.
@@ -555,7 +564,15 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
555
564
  * @returns {void|Promise} -
556
565
  */
557
566
  onMonthChange: PropTypes.func,
567
+ /**
568
+ * Callback fired when the range position changes.
569
+ * @param {RangePosition} rangePosition The new range position.
570
+ */
558
571
  onRangePositionChange: PropTypes.func,
572
+ /**
573
+ * The position in the currently edited date range.
574
+ * Used when the component position is controlled.
575
+ */
559
576
  rangePosition: PropTypes.oneOf(['end', 'start']),
560
577
  /**
561
578
  * Make picker read only.
@@ -3,9 +3,10 @@ import { SxProps } from '@mui/system';
3
3
  import { SlotComponentProps } from '@mui/base';
4
4
  import { Theme } from '@mui/material/styles';
5
5
  import { BaseDateValidationProps, DefaultizedProps, ExportedDayCalendarProps, DayCalendarSlotsComponent, DayCalendarSlotsComponentsProps, PickersArrowSwitcherSlotsComponent, PickersArrowSwitcherSlotsComponentsProps, PickerSelectionState, PickersCalendarHeaderSlotsComponent, PickersCalendarHeaderSlotsComponentsProps, DayCalendarProps, ExportedUseViewsOptions, UncapitalizeObjectKeys } from '@mui/x-date-pickers/internals';
6
- import { DateRange, RangePositionProps, DayRangeValidationProps } from '../internal/models';
6
+ import { DateRange, DayRangeValidationProps } from '../internal/models';
7
7
  import { DateRangeCalendarClasses } from './dateRangeCalendarClasses';
8
8
  import { DateRangePickerDay, DateRangePickerDayProps } from '../DateRangePickerDay';
9
+ import { UseRangePositionProps } from '../internal/hooks/useRangePosition';
9
10
  export type DateRangePosition = 'start' | 'end';
10
11
  export interface DateRangeCalendarSlotsComponent<TDate> extends PickersArrowSwitcherSlotsComponent, Omit<DayCalendarSlotsComponent<TDate>, 'Day'>, PickersCalendarHeaderSlotsComponent {
11
12
  /**
@@ -64,7 +65,7 @@ export interface ExportedDateRangeCalendarProps<TDate> extends ExportedDayCalend
64
65
  */
65
66
  disableDragEditing?: boolean;
66
67
  }
67
- export interface DateRangeCalendarProps<TDate> extends ExportedDateRangeCalendarProps<TDate>, Partial<RangePositionProps> {
68
+ export interface DateRangeCalendarProps<TDate> extends ExportedDateRangeCalendarProps<TDate>, UseRangePositionProps {
68
69
  /**
69
70
  * The selected value.
70
71
  * Used when the component is controlled.
@@ -1,3 +1,4 @@
1
1
  export { DateRangeCalendar } from './DateRangeCalendar';
2
2
  export type { DateRangeCalendarProps, DateRangeCalendarSlotsComponent, DateRangeCalendarSlotsComponentsProps, ExportedDateRangeCalendarProps, } from './DateRangeCalendar.types';
3
3
  export { getDateRangeCalendarUtilityClass, dateRangeCalendarClasses, } from './dateRangeCalendarClasses';
4
+ export type { DateRangeCalendarClassKey, DateRangeCalendarClasses, } from './dateRangeCalendarClasses';
@@ -80,6 +80,12 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
80
80
  * Default calendar month displayed when `value={[null, null]}`.
81
81
  */
82
82
  defaultCalendarMonth: PropTypes.any,
83
+ /**
84
+ * The initial position in the edited date range.
85
+ * Used when the component is not controlled.
86
+ * @default 'start'
87
+ */
88
+ defaultRangePosition: PropTypes.oneOf(['end', 'start']),
83
89
  /**
84
90
  * The default value.
85
91
  * Used when the component is not controlled.
@@ -199,6 +205,11 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
199
205
  * Use in controlled mode (see open).
200
206
  */
201
207
  onOpen: PropTypes.func,
208
+ /**
209
+ * Callback fired when the range position changes.
210
+ * @param {RangePosition} rangePosition The new range position.
211
+ */
212
+ onRangePositionChange: PropTypes.func,
202
213
  /**
203
214
  * Callback fired when the selected sections change.
204
215
  * @param {FieldSelectedSections} newValue The new selected sections.
@@ -209,6 +220,11 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
209
220
  * @default false
210
221
  */
211
222
  open: PropTypes.bool,
223
+ /**
224
+ * The position in the currently edited date range.
225
+ * Used when the component position is controlled.
226
+ */
227
+ rangePosition: PropTypes.oneOf(['end', 'start']),
212
228
  readOnly: PropTypes.bool,
213
229
  /**
214
230
  * Disable heavy animations.
@@ -230,7 +246,7 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
230
246
  * 4. If `null` is provided, no section will be selected
231
247
  * If not provided, the selected sections will be handled internally.
232
248
  */
233
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
249
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
234
250
  endIndex: PropTypes.number.isRequired,
235
251
  startIndex: PropTypes.number.isRequired
236
252
  })]),
@@ -1,8 +1,9 @@
1
1
  import * as React from 'react';
2
2
  import { BaseToolbarProps, ExportedBaseToolbarProps } from '@mui/x-date-pickers/internals';
3
- import { DateRange, RangePositionProps } from '../internal/models';
3
+ import { DateRange } from '../internal/models';
4
+ import { UseRangePositionResponse } from '../internal/hooks/useRangePosition';
4
5
  import { DateRangePickerToolbarClasses } from './dateRangePickerToolbarClasses';
5
- export interface DateRangePickerToolbarProps<TDate> extends Omit<BaseToolbarProps<DateRange<TDate>, 'day'>, 'views' | 'view' | 'onViewChange' | 'onChange' | 'isLandscape'>, RangePositionProps {
6
+ export interface DateRangePickerToolbarProps<TDate> extends Omit<BaseToolbarProps<DateRange<TDate>, 'day'>, 'views' | 'view' | 'onViewChange' | 'onChange' | 'isLandscape'>, UseRangePositionResponse {
6
7
  classes?: Partial<DateRangePickerToolbarClasses>;
7
8
  }
8
9
  export interface ExportedDateRangePickerToolbarProps extends ExportedBaseToolbarProps {
@@ -101,6 +101,7 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
101
101
  onRangePositionChange: PropTypes.func.isRequired,
102
102
  rangePosition: PropTypes.oneOf(['end', 'start']).isRequired,
103
103
  readOnly: PropTypes.bool,
104
+ titleId: PropTypes.string,
104
105
  /**
105
106
  * Toolbar date format.
106
107
  */
@@ -94,6 +94,12 @@ DesktopDateRangePicker.propTypes = {
94
94
  * Default calendar month displayed when `value={[null, null]}`.
95
95
  */
96
96
  defaultCalendarMonth: PropTypes.any,
97
+ /**
98
+ * The initial position in the edited date range.
99
+ * Used when the component is not controlled.
100
+ * @default 'start'
101
+ */
102
+ defaultRangePosition: PropTypes.oneOf(['end', 'start']),
97
103
  /**
98
104
  * The default value.
99
105
  * Used when the component is not controlled.
@@ -207,6 +213,11 @@ DesktopDateRangePicker.propTypes = {
207
213
  * Use in controlled mode (see open).
208
214
  */
209
215
  onOpen: PropTypes.func,
216
+ /**
217
+ * Callback fired when the range position changes.
218
+ * @param {RangePosition} rangePosition The new range position.
219
+ */
220
+ onRangePositionChange: PropTypes.func,
210
221
  /**
211
222
  * Callback fired when the selected sections change.
212
223
  * @param {FieldSelectedSections} newValue The new selected sections.
@@ -217,6 +228,11 @@ DesktopDateRangePicker.propTypes = {
217
228
  * @default false
218
229
  */
219
230
  open: PropTypes.bool,
231
+ /**
232
+ * The position in the currently edited date range.
233
+ * Used when the component position is controlled.
234
+ */
235
+ rangePosition: PropTypes.oneOf(['end', 'start']),
220
236
  readOnly: PropTypes.bool,
221
237
  /**
222
238
  * Disable heavy animations.
@@ -238,7 +254,7 @@ DesktopDateRangePicker.propTypes = {
238
254
  * 4. If `null` is provided, no section will be selected
239
255
  * If not provided, the selected sections will be handled internally.
240
256
  */
241
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
257
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
242
258
  endIndex: PropTypes.number.isRequired,
243
259
  startIndex: PropTypes.number.isRequired
244
260
  })]),
@@ -97,6 +97,12 @@ MobileDateRangePicker.propTypes = {
97
97
  * Default calendar month displayed when `value={[null, null]}`.
98
98
  */
99
99
  defaultCalendarMonth: PropTypes.any,
100
+ /**
101
+ * The initial position in the edited date range.
102
+ * Used when the component is not controlled.
103
+ * @default 'start'
104
+ */
105
+ defaultRangePosition: PropTypes.oneOf(['end', 'start']),
100
106
  /**
101
107
  * The default value.
102
108
  * Used when the component is not controlled.
@@ -210,6 +216,11 @@ MobileDateRangePicker.propTypes = {
210
216
  * Use in controlled mode (see open).
211
217
  */
212
218
  onOpen: PropTypes.func,
219
+ /**
220
+ * Callback fired when the range position changes.
221
+ * @param {RangePosition} rangePosition The new range position.
222
+ */
223
+ onRangePositionChange: PropTypes.func,
213
224
  /**
214
225
  * Callback fired when the selected sections change.
215
226
  * @param {FieldSelectedSections} newValue The new selected sections.
@@ -220,6 +231,11 @@ MobileDateRangePicker.propTypes = {
220
231
  * @default false
221
232
  */
222
233
  open: PropTypes.bool,
234
+ /**
235
+ * The position in the currently edited date range.
236
+ * Used when the component position is controlled.
237
+ */
238
+ rangePosition: PropTypes.oneOf(['end', 'start']),
223
239
  readOnly: PropTypes.bool,
224
240
  /**
225
241
  * Disable heavy animations.
@@ -241,7 +257,7 @@ MobileDateRangePicker.propTypes = {
241
257
  * 4. If `null` is provided, no section will be selected
242
258
  * If not provided, the selected sections will be handled internally.
243
259
  */
244
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
260
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
245
261
  endIndex: PropTypes.number.isRequired,
246
262
  startIndex: PropTypes.number.isRequired
247
263
  })]),
@@ -42,7 +42,7 @@ const MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
42
42
  });
43
43
  const {
44
44
  slots: innerSlots,
45
- slotProps: innerslotProps,
45
+ slotProps: innerSlotProps,
46
46
  components,
47
47
  componentsProps,
48
48
  value,
@@ -63,7 +63,7 @@ const MultiInputDateRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
63
63
  } = themeProps,
64
64
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
65
65
  const slots = innerSlots != null ? innerSlots : uncapitalizeObjectKeys(components);
66
- const slotProps = innerslotProps != null ? innerslotProps : componentsProps;
66
+ const slotProps = innerSlotProps != null ? innerSlotProps : componentsProps;
67
67
  const ownerState = themeProps;
68
68
  const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : MultiInputDateRangeFieldRoot;
69
69
  const rootProps = useSlotProps({
@@ -249,7 +249,7 @@ process.env.NODE_ENV !== "production" ? MultiInputDateRangeField.propTypes = {
249
249
  * 4. If `null` is provided, no section will be selected
250
250
  * If not provided, the selected sections will be handled internally.
251
251
  */
252
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
252
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
253
253
  endIndex: PropTypes.number.isRequired,
254
254
  startIndex: PropTypes.number.isRequired
255
255
  })]),
@@ -42,7 +42,7 @@ const MultiInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function Mult
42
42
  });
43
43
  const {
44
44
  slots: innerSlots,
45
- slotProps: innerslotProps,
45
+ slotProps: innerSlotProps,
46
46
  components,
47
47
  componentsProps,
48
48
  value,
@@ -69,7 +69,7 @@ const MultiInputDateTimeRangeField = /*#__PURE__*/React.forwardRef(function Mult
69
69
  } = themeProps,
70
70
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
71
71
  const slots = innerSlots != null ? innerSlots : uncapitalizeObjectKeys(components);
72
- const slotProps = innerslotProps != null ? innerslotProps : componentsProps;
72
+ const slotProps = innerSlotProps != null ? innerSlotProps : componentsProps;
73
73
  const ownerState = themeProps;
74
74
  const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : MultiInputDateTimeRangeFieldRoot;
75
75
  const rootProps = useSlotProps({
@@ -291,7 +291,7 @@ process.env.NODE_ENV !== "production" ? MultiInputDateTimeRangeField.propTypes =
291
291
  * 4. If `null` is provided, no section will be selected
292
292
  * If not provided, the selected sections will be handled internally.
293
293
  */
294
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
294
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
295
295
  endIndex: PropTypes.number.isRequired,
296
296
  startIndex: PropTypes.number.isRequired
297
297
  })]),
@@ -42,7 +42,7 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
42
42
  });
43
43
  const {
44
44
  slots: innerSlots,
45
- slotProps: innerslotProps,
45
+ slotProps: innerSlotProps,
46
46
  components,
47
47
  componentsProps,
48
48
  value,
@@ -64,7 +64,7 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
64
64
  } = themeProps,
65
65
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
66
66
  const slots = innerSlots != null ? innerSlots : uncapitalizeObjectKeys(components);
67
- const slotProps = innerslotProps != null ? innerslotProps : componentsProps;
67
+ const slotProps = innerSlotProps != null ? innerSlotProps : componentsProps;
68
68
  const ownerState = themeProps;
69
69
  const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : MultiInputTimeRangeFieldRoot;
70
70
  const rootProps = useSlotProps({
@@ -265,7 +265,7 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
265
265
  * 4. If `null` is provided, no section will be selected
266
266
  * If not provided, the selected sections will be handled internally.
267
267
  */
268
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
268
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
269
269
  endIndex: PropTypes.number.isRequired,
270
270
  startIndex: PropTypes.number.isRequired
271
271
  })]),
@@ -218,7 +218,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
218
218
  * 4. If `null` is provided, no section will be selected
219
219
  * If not provided, the selected sections will be handled internally.
220
220
  */
221
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
221
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
222
222
  endIndex: PropTypes.number.isRequired,
223
223
  startIndex: PropTypes.number.isRequired
224
224
  })]),
@@ -250,7 +250,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateTimeRangeField.propTypes
250
250
  * 4. If `null` is provided, no section will be selected
251
251
  * If not provided, the selected sections will be handled internally.
252
252
  */
253
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
253
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
254
254
  endIndex: PropTypes.number.isRequired,
255
255
  startIndex: PropTypes.number.isRequired
256
256
  })]),
@@ -235,7 +235,7 @@ process.env.NODE_ENV !== "production" ? SingleInputTimeRangeField.propTypes = {
235
235
  * 4. If `null` is provided, no section will be selected
236
236
  * If not provided, the selected sections will be handled internally.
237
237
  */
238
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
238
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
239
239
  endIndex: PropTypes.number.isRequired,
240
240
  startIndex: PropTypes.number.isRequired
241
241
  })]),