@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.
- package/CHANGELOG.md +252 -50
- package/DateRangeCalendar/DateRangeCalendar.js +18 -53
- package/DateRangeCalendar/DateRangeCalendar.types.d.ts +3 -2
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +4 -2
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +4 -2
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +4 -2
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.d.ts +8 -0
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +124 -0
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.d.ts +18 -0
- package/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.js +1 -0
- package/PickersRangeCalendarHeader/index.d.ts +2 -0
- package/PickersRangeCalendarHeader/index.js +1 -0
- package/PickersRangeCalendarHeader/package.json +6 -0
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/internals/utils/releaseInfo.js +1 -1
- package/modern/DateRangeCalendar/DateRangeCalendar.js +39 -71
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +4 -2
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +4 -2
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +4 -2
- package/modern/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +124 -0
- package/modern/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.js +1 -0
- package/modern/PickersRangeCalendarHeader/index.js +1 -0
- package/modern/index.js +2 -1
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/node/DateRangeCalendar/DateRangeCalendar.js +38 -70
- package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +4 -2
- package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +4 -2
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +4 -2
- package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.js +132 -0
- package/node/PickersRangeCalendarHeader/PickersRangeCalendarHeader.types.js +5 -0
- package/node/PickersRangeCalendarHeader/index.js +12 -0
- package/node/index.js +13 -1
- package/node/internals/utils/releaseInfo.js +1 -1
- package/package.json +4 -4
- package/themeAugmentation/components.d.ts +3 -0
- 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 {
|
|
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
|
|
310
|
-
maxDate
|
|
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(
|
|
471
|
-
|
|
444
|
+
}), calendarMonths.map(monthIndex => {
|
|
445
|
+
const month = visibleMonths[monthIndex];
|
|
472
446
|
return /*#__PURE__*/_jsxs(DateRangeCalendarMonthContainer, {
|
|
473
447
|
className: classes.monthContainer,
|
|
474
|
-
children: [
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
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:
|
|
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:
|
|
468
|
+
autoFocus: month === focusedMonth,
|
|
504
469
|
fixedWeekNumber: fixedWeekNumber,
|
|
505
470
|
displayWeekNumber: displayWeekNumber,
|
|
506
471
|
timezone: timezone
|
|
507
|
-
})
|
|
508
|
-
},
|
|
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,
|
|
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<
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PickersRangeCalendarHeader } from './PickersRangeCalendarHeader';
|
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.
|
|
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 = "
|
|
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 {
|
|
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
|
|
308
|
-
maxDate
|
|
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(
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
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: "
|
|
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
|
*
|