@mui/x-date-pickers-pro 7.0.0-beta.5 → 7.0.0-beta.7

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 (37) hide show
  1. package/CHANGELOG.md +252 -50
  2. package/DateRangeCalendar/DateRangeCalendar.js +18 -53
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +3 -2
  4. package/MultiInputDateRangeField/MultiInputDateRangeField.js +4 -2
  5. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +4 -2
  6. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +4 -2
  7. package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.d.ts +8 -0
  8. package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +124 -0
  9. package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.d.ts +18 -0
  10. package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.js +1 -0
  11. package/PickersRangeCalendarHeader/index.d.ts +2 -0
  12. package/PickersRangeCalendarHeader/index.js +1 -0
  13. package/PickersRangeCalendarHeader/package.json +6 -0
  14. package/index.d.ts +1 -0
  15. package/index.js +2 -1
  16. package/internals/utils/releaseInfo.js +1 -1
  17. package/modern/DateRangeCalendar/DateRangeCalendar.js +39 -71
  18. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +4 -2
  19. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +4 -2
  20. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +4 -2
  21. package/modern/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +124 -0
  22. package/modern/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.js +1 -0
  23. package/modern/PickersRangeCalendarHeader/index.js +1 -0
  24. package/modern/index.js +2 -1
  25. package/modern/internals/utils/releaseInfo.js +1 -1
  26. package/node/DateRangeCalendar/DateRangeCalendar.js +38 -70
  27. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +4 -2
  28. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +4 -2
  29. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +4 -2
  30. package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +132 -0
  31. package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.js +5 -0
  32. package/node/PickersRangeCalendarHeader/index.js +12 -0
  33. package/node/index.js +13 -1
  34. package/node/internals/utils/releaseInfo.js +1 -1
  35. package/package.json +4 -4
  36. package/themeAugmentation/components.d.ts +3 -0
  37. package/themeAugmentation/props.d.ts +2 -0
@@ -11,8 +11,7 @@ import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
11
11
  import { styled, useThemeProps } from '@mui/material/styles';
12
12
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
13
13
  import { Watermark } from '@mui/x-license';
14
- import { PickersCalendarHeader } from '@mui/x-date-pickers/PickersCalendarHeader';
15
- import { applyDefaultDate, DayCalendar, useDefaultReduceAnimations, PickersArrowSwitcher, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, useNow, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, buildWarning, useControlledValueWithTimezone, useViews } from '@mui/x-date-pickers/internals';
14
+ import { applyDefaultDate, DayCalendar, useDefaultReduceAnimations, useCalendarState, useDefaultDates, useUtils, useNow, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, buildWarning, useControlledValueWithTimezone, useViews } from '@mui/x-date-pickers/internals';
16
15
  import { getReleaseInfo } from '../internals/utils/releaseInfo';
17
16
  import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from './dateRangeCalendarClasses';
18
17
  import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from '../internals/utils/date-utils';
@@ -22,6 +21,7 @@ import { rangeValueManager } from '../internals/utils/valueManagers';
22
21
  import { useDragRange } from './useDragRange';
23
22
  import { useRangePosition } from '../internals/hooks/useRangePosition';
24
23
  import { DAY_RANGE_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';
24
+ import { PickersRangeCalendarHeader } from '../PickersRangeCalendarHeader';
25
25
  import { jsx as _jsx } from "react/jsx-runtime";
26
26
  import { jsxs as _jsxs } from "react/jsx-runtime";
27
27
  const releaseInfo = getReleaseInfo();
@@ -44,12 +44,6 @@ const DateRangeCalendarMonthContainer = styled('div', {
44
44
  borderRight: `1px solid ${(theme.vars || theme).palette.divider}`
45
45
  }
46
46
  }));
47
- const DateRangeCalendarArrowSwitcher = styled(PickersArrowSwitcher)({
48
- padding: '12px 16px 4px 16px',
49
- display: 'flex',
50
- alignItems: 'center',
51
- justifyContent: 'space-between'
52
- });
53
47
  const weeksContainerHeight = (DAY_RANGE_SIZE + DAY_MARGIN * 2) * 6;
54
48
  const warnInvalidCurrentMonthCalendarPosition = buildWarning(['The `currentMonthCalendarPosition` prop must be an integer between `1` and the amount of calendars rendered.', 'For example if you have 2 calendars rendered, it should be equal to either 1 or 2.']);
55
49
  const DayCalendarForRange = styled(DayCalendar)(({
@@ -192,7 +186,6 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
192
186
  autoFocus
193
187
  });
194
188
  const utils = useUtils();
195
- const localeText = useLocaleText();
196
189
  const now = useNow(timezone);
197
190
  const {
198
191
  rangePosition,
@@ -290,15 +283,12 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
290
283
  shouldDisableDate: wrappedShouldDisableDate,
291
284
  timezone
292
285
  });
293
-
294
- // When disabled, limit the view to the selected date
295
- const minDateWithDisabled = disabled && value[0] || minDate;
296
- const maxDateWithDisabled = disabled && value[1] || maxDate;
297
- const CalendarHeader = (_slots$calendarHeader = slots == null ? void 0 : slots.calendarHeader) != null ? _slots$calendarHeader : PickersCalendarHeader;
286
+ const CalendarHeader = (_slots$calendarHeader = slots == null ? void 0 : slots.calendarHeader) != null ? _slots$calendarHeader : PickersRangeCalendarHeader;
298
287
  const calendarHeaderProps = useSlotProps({
299
288
  elementType: CalendarHeader,
300
289
  externalSlotProps: slotProps == null ? void 0 : slotProps.calendarHeader,
301
290
  additionalProps: {
291
+ calendars,
302
292
  views: ['day'],
303
293
  view: 'day',
304
294
  currentMonth: calendarState.currentMonth,
@@ -306,15 +296,15 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
306
296
  newMonth,
307
297
  direction
308
298
  }),
309
- minDate: minDateWithDisabled,
310
- maxDate: maxDateWithDisabled,
299
+ minDate,
300
+ maxDate,
311
301
  disabled,
312
302
  disablePast,
313
303
  disableFuture,
314
304
  reduceAnimations,
305
+ timezone,
315
306
  slots,
316
- slotProps,
317
- timezone
307
+ slotProps
318
308
  },
319
309
  ownerState: props
320
310
  });
@@ -344,22 +334,6 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
344
334
  }
345
335
  }, [rangePosition, value]); // eslint-disable-line
346
336
 
347
- const selectNextMonth = React.useCallback(() => {
348
- changeMonth(utils.addMonths(calendarState.currentMonth, 1));
349
- }, [changeMonth, calendarState.currentMonth, utils]);
350
- const selectPreviousMonth = React.useCallback(() => {
351
- changeMonth(utils.addMonths(calendarState.currentMonth, -1));
352
- }, [changeMonth, calendarState.currentMonth, utils]);
353
- const isNextMonthDisabled = useNextMonthDisabled(calendarState.currentMonth, {
354
- disableFuture,
355
- maxDate,
356
- timezone
357
- });
358
- const isPreviousMonthDisabled = usePreviousMonthDisabled(calendarState.currentMonth, {
359
- disablePast,
360
- minDate,
361
- timezone
362
- });
363
337
  const baseDateValidationProps = {
364
338
  disablePast,
365
339
  disableFuture,
@@ -467,23 +441,14 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
467
441
  children: [/*#__PURE__*/_jsx(Watermark, {
468
442
  packageName: "x-date-pickers-pro",
469
443
  releaseInfo: releaseInfo
470
- }), calendarMonths.map((month, index) => {
471
- var _calendarHeaderProps$;
444
+ }), calendarMonths.map(monthIndex => {
445
+ const month = visibleMonths[monthIndex];
472
446
  return /*#__PURE__*/_jsxs(DateRangeCalendarMonthContainer, {
473
447
  className: classes.monthContainer,
474
- children: [calendars === 1 ? /*#__PURE__*/_jsx(CalendarHeader, _extends({}, calendarHeaderProps)) : /*#__PURE__*/_jsx(DateRangeCalendarArrowSwitcher, {
475
- onGoToPrevious: selectPreviousMonth,
476
- onGoToNext: selectNextMonth,
477
- isPreviousHidden: index !== 0,
478
- isPreviousDisabled: isPreviousMonthDisabled,
479
- previousLabel: localeText.previousMonth,
480
- isNextHidden: index !== calendars - 1,
481
- isNextDisabled: isNextMonthDisabled,
482
- nextLabel: localeText.nextMonth,
483
- slots: slots,
484
- slotProps: slotProps,
485
- children: utils.formatByString(visibleMonths[month], (_calendarHeaderProps$ = calendarHeaderProps.format) != null ? _calendarHeaderProps$ : `${utils.formats.month} ${utils.formats.year}`)
486
- }), /*#__PURE__*/_jsx(DayCalendarForRange, _extends({
448
+ children: [/*#__PURE__*/_jsx(CalendarHeader, _extends({}, calendarHeaderProps, {
449
+ month: month,
450
+ monthIndex: monthIndex
451
+ })), /*#__PURE__*/_jsx(DayCalendarForRange, _extends({
487
452
  className: classes.dayCalendar
488
453
  }, calendarState, baseDateValidationProps, commonViewProps, {
489
454
  onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
@@ -491,7 +456,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
491
456
  reduceAnimations: reduceAnimations,
492
457
  selectedDays: value,
493
458
  onSelectedDaysChange: handleSelectedDayChange,
494
- currentMonth: visibleMonths[month],
459
+ currentMonth: month,
495
460
  TransitionProps: CalendarTransitionProps,
496
461
  shouldDisableDate: wrappedShouldDisableDate,
497
462
  showDaysOutsideCurrentMonth: calendars === 1 && showDaysOutsideCurrentMonth,
@@ -500,12 +465,12 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
500
465
  renderLoading: renderLoading,
501
466
  slots: slotsForDayCalendar,
502
467
  slotProps: slotPropsForDayCalendar,
503
- autoFocus: visibleMonths[month] === focusedMonth,
468
+ autoFocus: month === focusedMonth,
504
469
  fixedWeekNumber: fixedWeekNumber,
505
470
  displayWeekNumber: displayWeekNumber,
506
471
  timezone: timezone
507
- }), index)]
508
- }, month);
472
+ }))]
473
+ }, monthIndex);
509
474
  })]
510
475
  }));
511
476
  });
@@ -3,13 +3,14 @@ import { SxProps } from '@mui/system';
3
3
  import { SlotComponentProps } from '@mui/base/utils';
4
4
  import { Theme } from '@mui/material/styles';
5
5
  import { PickerValidDate, TimezoneProps } from '@mui/x-date-pickers/models';
6
- import { PickersCalendarHeader, PickersCalendarHeaderProps, PickersCalendarHeaderSlots, PickersCalendarHeaderSlotProps } from '@mui/x-date-pickers/PickersCalendarHeader';
6
+ import { PickersCalendarHeader, PickersCalendarHeaderSlots, PickersCalendarHeaderSlotProps } from '@mui/x-date-pickers/PickersCalendarHeader';
7
7
  import { BaseDateValidationProps, DefaultizedProps, ExportedDayCalendarProps, DayCalendarSlots, DayCalendarSlotProps, PickersArrowSwitcherSlots, PickersArrowSwitcherSlotProps, DayCalendarProps, ExportedUseViewsOptions } from '@mui/x-date-pickers/internals';
8
8
  import { DayRangeValidationProps } from '../internals/models';
9
9
  import { DateRange } from '../models';
10
10
  import { DateRangeCalendarClasses } from './dateRangeCalendarClasses';
11
11
  import { DateRangePickerDay, DateRangePickerDayProps } from '../DateRangePickerDay';
12
12
  import { UseRangePositionProps } from '../internals/hooks/useRangePosition';
13
+ import { PickersRangeCalendarHeaderProps } from '../PickersRangeCalendarHeader';
13
14
  export type DateRangePosition = 'start' | 'end';
14
15
  export interface DateRangeCalendarSlots<TDate extends PickerValidDate> extends PickersArrowSwitcherSlots, Omit<DayCalendarSlots<TDate>, 'day'>, PickersCalendarHeaderSlots {
15
16
  /**
@@ -17,7 +18,7 @@ export interface DateRangeCalendarSlots<TDate extends PickerValidDate> extends P
17
18
  * Check the [PickersCalendarHeader](https://mui.com/x/api/date-pickers/pickers-calendar-header/) component.
18
19
  * @default PickersCalendarHeader
19
20
  */
20
- calendarHeader?: React.ElementType<PickersCalendarHeaderProps<TDate>>;
21
+ calendarHeader?: React.ElementType<PickersRangeCalendarHeaderProps<TDate>>;
21
22
  /**
22
23
  * Custom component for day in range pickers.
23
24
  * Check the [DateRangePickersDay](https://mui.com/x/api/date-pickers/date-range-picker-day/) component.
@@ -31,7 +31,7 @@ const MultiInputDateRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((prop
31
31
  ref: ref,
32
32
  spacing: 2,
33
33
  direction: "row",
34
- alignItems: "baseline"
34
+ alignItems: "center"
35
35
  }, props))), {
36
36
  name: 'MuiMultiInputDateRangeField',
37
37
  slot: 'Root',
@@ -46,7 +46,9 @@ const MultiInputDateRangeFieldSeparator = styled(props => {
46
46
  name: 'MuiMultiInputDateRangeField',
47
47
  slot: 'Separator',
48
48
  overridesResolver: (props, styles) => styles.separator
49
- })({});
49
+ })({
50
+ lineHeight: '1.4375em' // 23px
51
+ });
50
52
  /**
51
53
  * Demos:
52
54
  *
@@ -31,7 +31,7 @@ const MultiInputDateTimeRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((
31
31
  ref: ref,
32
32
  spacing: 2,
33
33
  direction: "row",
34
- alignItems: "baseline"
34
+ alignItems: "center"
35
35
  }, props))), {
36
36
  name: 'MuiMultiInputDateTimeRangeField',
37
37
  slot: 'Root',
@@ -46,7 +46,9 @@ const MultiInputDateTimeRangeFieldSeparator = styled(props => {
46
46
  name: 'MuiMultiInputDateTimeRangeField',
47
47
  slot: 'Separator',
48
48
  overridesResolver: (props, styles) => styles.separator
49
- })({});
49
+ })({
50
+ lineHeight: '1.4375em' // 23px
51
+ });
50
52
  /**
51
53
  * Demos:
52
54
  *
@@ -31,7 +31,7 @@ const MultiInputTimeRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((prop
31
31
  ref: ref,
32
32
  spacing: 2,
33
33
  direction: "row",
34
- alignItems: "baseline"
34
+ alignItems: "center"
35
35
  }, props))), {
36
36
  name: 'MuiMultiInputTimeRangeField',
37
37
  slot: 'Root',
@@ -46,7 +46,9 @@ const MultiInputTimeRangeFieldSeparator = styled(props => {
46
46
  name: 'MuiMultiInputTimeRangeField',
47
47
  slot: 'Separator',
48
48
  overridesResolver: (props, styles) => styles.separator
49
- })({});
49
+ })({
50
+ lineHeight: '1.4375em' // 23px
51
+ });
50
52
  /**
51
53
  * Demos:
52
54
  *
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { PickerValidDate } from '@mui/x-date-pickers/models';
3
+ import { PickersRangeCalendarHeaderProps } from './PickersRangeCalendarHeader.types';
4
+ type PickersRangeCalendarHeaderComponent = (<TDate extends PickerValidDate>(props: PickersRangeCalendarHeaderProps<TDate> & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
5
+ propTypes?: any;
6
+ };
7
+ declare const PickersRangeCalendarHeader: PickersRangeCalendarHeaderComponent;
8
+ export { PickersRangeCalendarHeader };
@@ -0,0 +1,124 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["calendars", "month", "monthIndex"];
4
+ import * as React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { styled } from '@mui/material/styles';
7
+ import { PickersCalendarHeader } from '@mui/x-date-pickers/PickersCalendarHeader';
8
+ import { PickersArrowSwitcher, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils } from '@mui/x-date-pickers/internals';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ const PickersRangeCalendarHeaderContentMultipleCalendars = styled(PickersArrowSwitcher)({
11
+ padding: '12px 16px 4px 16px',
12
+ display: 'flex',
13
+ alignItems: 'center',
14
+ justifyContent: 'space-between'
15
+ });
16
+ const PickersRangeCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersRangeCalendarHeader(props, ref) {
17
+ const utils = useUtils();
18
+ const localeText = useLocaleText();
19
+ const {
20
+ calendars,
21
+ month,
22
+ monthIndex
23
+ } = props,
24
+ other = _objectWithoutPropertiesLoose(props, _excluded);
25
+ const {
26
+ format,
27
+ slots,
28
+ slotProps,
29
+ currentMonth,
30
+ onMonthChange,
31
+ disableFuture,
32
+ disablePast,
33
+ minDate,
34
+ maxDate,
35
+ timezone
36
+ } = props;
37
+ const isNextMonthDisabled = useNextMonthDisabled(currentMonth, {
38
+ disableFuture,
39
+ maxDate,
40
+ timezone
41
+ });
42
+ const isPreviousMonthDisabled = usePreviousMonthDisabled(currentMonth, {
43
+ disablePast,
44
+ minDate,
45
+ timezone
46
+ });
47
+ if (calendars === 1) {
48
+ return /*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {
49
+ ref: ref
50
+ }));
51
+ }
52
+ const selectNextMonth = () => onMonthChange(utils.addMonths(currentMonth, 1), 'left');
53
+ const selectPreviousMonth = () => onMonthChange(utils.addMonths(currentMonth, -1), 'right');
54
+ return /*#__PURE__*/_jsx(PickersRangeCalendarHeaderContentMultipleCalendars, {
55
+ ref: ref,
56
+ onGoToPrevious: selectPreviousMonth,
57
+ onGoToNext: selectNextMonth,
58
+ isPreviousHidden: monthIndex !== 0,
59
+ isPreviousDisabled: isPreviousMonthDisabled,
60
+ previousLabel: localeText.previousMonth,
61
+ isNextHidden: monthIndex !== calendars - 1,
62
+ isNextDisabled: isNextMonthDisabled,
63
+ nextLabel: localeText.nextMonth,
64
+ slots: slots,
65
+ slotProps: slotProps,
66
+ children: utils.formatByString(month, format != null ? format : `${utils.formats.month} ${utils.formats.year}`)
67
+ });
68
+ });
69
+ process.env.NODE_ENV !== "production" ? PickersRangeCalendarHeader.propTypes = {
70
+ // ----------------------------- Warning --------------------------------
71
+ // | These PropTypes are generated from the TypeScript type definitions |
72
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
73
+ // ----------------------------------------------------------------------
74
+ /**
75
+ * The number of calendars rendered.
76
+ */
77
+ calendars: PropTypes.oneOf([1, 2, 3]).isRequired,
78
+ /**
79
+ * Override or extend the styles applied to the component.
80
+ */
81
+ classes: PropTypes.object,
82
+ className: PropTypes.string,
83
+ currentMonth: PropTypes.object.isRequired,
84
+ disabled: PropTypes.bool,
85
+ disableFuture: PropTypes.bool,
86
+ disablePast: PropTypes.bool,
87
+ /**
88
+ * Format used to display the date.
89
+ * @default `${adapter.formats.month} ${adapter.formats.year}`
90
+ */
91
+ format: PropTypes.string,
92
+ labelId: PropTypes.string,
93
+ maxDate: PropTypes.object.isRequired,
94
+ minDate: PropTypes.object.isRequired,
95
+ /**
96
+ * Month used for this header.
97
+ */
98
+ month: PropTypes.object.isRequired,
99
+ /**
100
+ * Index of the month used for this header.
101
+ */
102
+ monthIndex: PropTypes.number.isRequired,
103
+ onMonthChange: PropTypes.func.isRequired,
104
+ onViewChange: PropTypes.func,
105
+ reduceAnimations: PropTypes.bool.isRequired,
106
+ /**
107
+ * The props used for each component slot.
108
+ * @default {}
109
+ */
110
+ slotProps: PropTypes.object,
111
+ /**
112
+ * Overridable component slots.
113
+ * @default {}
114
+ */
115
+ slots: PropTypes.object,
116
+ /**
117
+ * The system prop that allows defining system overrides as well as additional CSS styles.
118
+ */
119
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
120
+ timezone: PropTypes.string.isRequired,
121
+ view: PropTypes.oneOf(['day', 'month', 'year']).isRequired,
122
+ views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired).isRequired
123
+ } : void 0;
124
+ export { PickersRangeCalendarHeader };
@@ -0,0 +1,18 @@
1
+ import { PickerValidDate } from '@mui/x-date-pickers/models';
2
+ import { ExportedPickersCalendarHeaderProps, PickersCalendarHeaderProps } from '@mui/x-date-pickers/PickersCalendarHeader';
3
+ export interface PickersRangeCalendarHeaderProps<TDate extends PickerValidDate> extends PickersCalendarHeaderProps<TDate> {
4
+ /**
5
+ * The number of calendars rendered.
6
+ */
7
+ calendars: 1 | 2 | 3;
8
+ /**
9
+ * Month used for this header.
10
+ */
11
+ month: TDate;
12
+ /**
13
+ * Index of the month used for this header.
14
+ */
15
+ monthIndex: number;
16
+ }
17
+ export interface ExportedPickersRangeCalendarHeaderProps<TDate extends PickerValidDate> extends ExportedPickersCalendarHeaderProps<TDate> {
18
+ }
@@ -0,0 +1,2 @@
1
+ export { PickersRangeCalendarHeader } from './PickersRangeCalendarHeader';
2
+ export type { PickersRangeCalendarHeaderProps, ExportedPickersRangeCalendarHeaderProps, } from './PickersRangeCalendarHeader.types';
@@ -0,0 +1 @@
1
+ export { PickersRangeCalendarHeader } from './PickersRangeCalendarHeader';
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/PickersRangeCalendarHeader/index.js",
5
+ "types": "./index.d.ts"
6
+ }
package/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from './SingleInputDateRangeField';
14
14
  export * from './SingleInputTimeRangeField';
15
15
  export * from './SingleInputDateTimeRangeField';
16
16
  export * from './DateRangeCalendar';
17
+ export * from './PickersRangeCalendarHeader';
17
18
  export * from './DateRangePicker';
18
19
  export * from './DesktopDateRangePicker';
19
20
  export * from './MobileDateRangePicker';
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v7.0.0-beta.5
2
+ * @mui/x-date-pickers-pro v7.0.0-beta.7
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -24,6 +24,7 @@ export * from './SingleInputDateTimeRangeField';
24
24
 
25
25
  // Calendars
26
26
  export * from './DateRangeCalendar';
27
+ export * from './PickersRangeCalendarHeader';
27
28
 
28
29
  // New pickers
29
30
  export * from './DateRangePicker';
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTcwOTM1NTYwMDAwMA==";
3
+ const releaseInfo = "MTcxMDM3MDgwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
@@ -11,8 +11,7 @@ import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
11
11
  import { styled, useThemeProps } from '@mui/material/styles';
12
12
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
13
13
  import { Watermark } from '@mui/x-license';
14
- import { PickersCalendarHeader } from '@mui/x-date-pickers/PickersCalendarHeader';
15
- import { applyDefaultDate, DayCalendar, useDefaultReduceAnimations, PickersArrowSwitcher, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, useNow, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, buildWarning, useControlledValueWithTimezone, useViews } from '@mui/x-date-pickers/internals';
14
+ import { applyDefaultDate, DayCalendar, useDefaultReduceAnimations, useCalendarState, useDefaultDates, useUtils, useNow, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, buildWarning, useControlledValueWithTimezone, useViews } from '@mui/x-date-pickers/internals';
16
15
  import { getReleaseInfo } from '../internals/utils/releaseInfo';
17
16
  import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from './dateRangeCalendarClasses';
18
17
  import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from '../internals/utils/date-utils';
@@ -22,6 +21,7 @@ import { rangeValueManager } from '../internals/utils/valueManagers';
22
21
  import { useDragRange } from './useDragRange';
23
22
  import { useRangePosition } from '../internals/hooks/useRangePosition';
24
23
  import { DAY_RANGE_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';
24
+ import { PickersRangeCalendarHeader } from '../PickersRangeCalendarHeader';
25
25
  import { jsx as _jsx } from "react/jsx-runtime";
26
26
  import { jsxs as _jsxs } from "react/jsx-runtime";
27
27
  const releaseInfo = getReleaseInfo();
@@ -44,12 +44,6 @@ const DateRangeCalendarMonthContainer = styled('div', {
44
44
  borderRight: `1px solid ${(theme.vars || theme).palette.divider}`
45
45
  }
46
46
  }));
47
- const DateRangeCalendarArrowSwitcher = styled(PickersArrowSwitcher)({
48
- padding: '12px 16px 4px 16px',
49
- display: 'flex',
50
- alignItems: 'center',
51
- justifyContent: 'space-between'
52
- });
53
47
  const weeksContainerHeight = (DAY_RANGE_SIZE + DAY_MARGIN * 2) * 6;
54
48
  const warnInvalidCurrentMonthCalendarPosition = buildWarning(['The `currentMonthCalendarPosition` prop must be an integer between `1` and the amount of calendars rendered.', 'For example if you have 2 calendars rendered, it should be equal to either 1 or 2.']);
55
49
  const DayCalendarForRange = styled(DayCalendar)(({
@@ -190,7 +184,6 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
190
184
  autoFocus
191
185
  });
192
186
  const utils = useUtils();
193
- const localeText = useLocaleText();
194
187
  const now = useNow(timezone);
195
188
  const {
196
189
  rangePosition,
@@ -288,15 +281,12 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
288
281
  shouldDisableDate: wrappedShouldDisableDate,
289
282
  timezone
290
283
  });
291
-
292
- // When disabled, limit the view to the selected date
293
- const minDateWithDisabled = disabled && value[0] || minDate;
294
- const maxDateWithDisabled = disabled && value[1] || maxDate;
295
- const CalendarHeader = slots?.calendarHeader ?? PickersCalendarHeader;
284
+ const CalendarHeader = slots?.calendarHeader ?? PickersRangeCalendarHeader;
296
285
  const calendarHeaderProps = useSlotProps({
297
286
  elementType: CalendarHeader,
298
287
  externalSlotProps: slotProps?.calendarHeader,
299
288
  additionalProps: {
289
+ calendars,
300
290
  views: ['day'],
301
291
  view: 'day',
302
292
  currentMonth: calendarState.currentMonth,
@@ -304,15 +294,15 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
304
294
  newMonth,
305
295
  direction
306
296
  }),
307
- minDate: minDateWithDisabled,
308
- maxDate: maxDateWithDisabled,
297
+ minDate,
298
+ maxDate,
309
299
  disabled,
310
300
  disablePast,
311
301
  disableFuture,
312
302
  reduceAnimations,
303
+ timezone,
313
304
  slots,
314
- slotProps,
315
- timezone
305
+ slotProps
316
306
  },
317
307
  ownerState: props
318
308
  });
@@ -341,22 +331,6 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
341
331
  }
342
332
  }, [rangePosition, value]); // eslint-disable-line
343
333
 
344
- const selectNextMonth = React.useCallback(() => {
345
- changeMonth(utils.addMonths(calendarState.currentMonth, 1));
346
- }, [changeMonth, calendarState.currentMonth, utils]);
347
- const selectPreviousMonth = React.useCallback(() => {
348
- changeMonth(utils.addMonths(calendarState.currentMonth, -1));
349
- }, [changeMonth, calendarState.currentMonth, utils]);
350
- const isNextMonthDisabled = useNextMonthDisabled(calendarState.currentMonth, {
351
- disableFuture,
352
- maxDate,
353
- timezone
354
- });
355
- const isPreviousMonthDisabled = usePreviousMonthDisabled(calendarState.currentMonth, {
356
- disablePast,
357
- minDate,
358
- timezone
359
- });
360
334
  const baseDateValidationProps = {
361
335
  disablePast,
362
336
  disableFuture,
@@ -462,43 +436,37 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
462
436
  children: [/*#__PURE__*/_jsx(Watermark, {
463
437
  packageName: "x-date-pickers-pro",
464
438
  releaseInfo: releaseInfo
465
- }), calendarMonths.map((month, index) => /*#__PURE__*/_jsxs(DateRangeCalendarMonthContainer, {
466
- className: classes.monthContainer,
467
- children: [calendars === 1 ? /*#__PURE__*/_jsx(CalendarHeader, _extends({}, calendarHeaderProps)) : /*#__PURE__*/_jsx(DateRangeCalendarArrowSwitcher, {
468
- onGoToPrevious: selectPreviousMonth,
469
- onGoToNext: selectNextMonth,
470
- isPreviousHidden: index !== 0,
471
- isPreviousDisabled: isPreviousMonthDisabled,
472
- previousLabel: localeText.previousMonth,
473
- isNextHidden: index !== calendars - 1,
474
- isNextDisabled: isNextMonthDisabled,
475
- nextLabel: localeText.nextMonth,
476
- slots: slots,
477
- slotProps: slotProps,
478
- children: utils.formatByString(visibleMonths[month], calendarHeaderProps.format ?? `${utils.formats.month} ${utils.formats.year}`)
479
- }), /*#__PURE__*/_jsx(DayCalendarForRange, _extends({
480
- className: classes.dayCalendar
481
- }, calendarState, baseDateValidationProps, commonViewProps, {
482
- onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
483
- onFocusedDayChange: changeFocusedDay,
484
- reduceAnimations: reduceAnimations,
485
- selectedDays: value,
486
- onSelectedDaysChange: handleSelectedDayChange,
487
- currentMonth: visibleMonths[month],
488
- TransitionProps: CalendarTransitionProps,
489
- shouldDisableDate: wrappedShouldDisableDate,
490
- showDaysOutsideCurrentMonth: calendars === 1 && showDaysOutsideCurrentMonth,
491
- dayOfWeekFormatter: dayOfWeekFormatter,
492
- loading: loading,
493
- renderLoading: renderLoading,
494
- slots: slotsForDayCalendar,
495
- slotProps: slotPropsForDayCalendar,
496
- autoFocus: visibleMonths[month] === focusedMonth,
497
- fixedWeekNumber: fixedWeekNumber,
498
- displayWeekNumber: displayWeekNumber,
499
- timezone: timezone
500
- }), index)]
501
- }, month))]
439
+ }), calendarMonths.map(monthIndex => {
440
+ const month = visibleMonths[monthIndex];
441
+ return /*#__PURE__*/_jsxs(DateRangeCalendarMonthContainer, {
442
+ className: classes.monthContainer,
443
+ children: [/*#__PURE__*/_jsx(CalendarHeader, _extends({}, calendarHeaderProps, {
444
+ month: month,
445
+ monthIndex: monthIndex
446
+ })), /*#__PURE__*/_jsx(DayCalendarForRange, _extends({
447
+ className: classes.dayCalendar
448
+ }, calendarState, baseDateValidationProps, commonViewProps, {
449
+ onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
450
+ onFocusedDayChange: changeFocusedDay,
451
+ reduceAnimations: reduceAnimations,
452
+ selectedDays: value,
453
+ onSelectedDaysChange: handleSelectedDayChange,
454
+ currentMonth: month,
455
+ TransitionProps: CalendarTransitionProps,
456
+ shouldDisableDate: wrappedShouldDisableDate,
457
+ showDaysOutsideCurrentMonth: calendars === 1 && showDaysOutsideCurrentMonth,
458
+ dayOfWeekFormatter: dayOfWeekFormatter,
459
+ loading: loading,
460
+ renderLoading: renderLoading,
461
+ slots: slotsForDayCalendar,
462
+ slotProps: slotPropsForDayCalendar,
463
+ autoFocus: month === focusedMonth,
464
+ fixedWeekNumber: fixedWeekNumber,
465
+ displayWeekNumber: displayWeekNumber,
466
+ timezone: timezone
467
+ }))]
468
+ }, monthIndex);
469
+ })]
502
470
  }));
503
471
  });
504
472
  process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
@@ -31,7 +31,7 @@ const MultiInputDateRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((prop
31
31
  ref: ref,
32
32
  spacing: 2,
33
33
  direction: "row",
34
- alignItems: "baseline"
34
+ alignItems: "center"
35
35
  }, props))), {
36
36
  name: 'MuiMultiInputDateRangeField',
37
37
  slot: 'Root',
@@ -43,7 +43,9 @@ const MultiInputDateRangeFieldSeparator = styled(props => /*#__PURE__*/_jsx(Typo
43
43
  name: 'MuiMultiInputDateRangeField',
44
44
  slot: 'Separator',
45
45
  overridesResolver: (props, styles) => styles.separator
46
- })({});
46
+ })({
47
+ lineHeight: '1.4375em' // 23px
48
+ });
47
49
  /**
48
50
  * Demos:
49
51
  *