Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions docs/data/migration/migration-pickers-v7/migration-pickers-v7.md
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,9 @@ If the updated values do not fit your use case, you can [override them](/x/react
+const { rangePosition } = usePickerRangePositionContext();

-const { onRangePositionChange } = props;
+const { onRangePositionChange } = usePickerRangePositionContext();
-onRangePositionChange('start');
+const { setRangePosition } = usePickerRangePositionContext();
+setRangePosition('start');
```

### Slot: `toolbar`
Expand Down Expand Up @@ -777,7 +779,9 @@ If the updated values do not fit your use case, you can [override them](/x/react
+const { rangePosition } = usePickerRangePositionContext();

-const { onRangePositionChange } = props;
+const { onRangePositionChange } = usePickerRangePositionContext();
-onRangePositionChange('start');
+const { setRangePosition } = usePickerRangePositionContext();
+setRangePosition('start');
```

### Slot: `tabs`
Expand Down Expand Up @@ -807,7 +811,9 @@ If the updated values do not fit your use case, you can [override them](/x/react
+const { rangePosition } = usePickerRangePositionContext();

-const { onRangePositionChange } = props;
+const { onRangePositionChange } = usePickerRangePositionContext();
-onRangePositionChange('start');
+const { setRangePosition } = usePickerRangePositionContext();
+setRangePosition('start');
```

### Slot: `actionBar`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -243,15 +243,15 @@ const DateRangeCalendar = React.forwardRef(function DateRangeCalendar(
const now = useNow(timezone);
const id = useId();

const { rangePosition, onRangePositionChange } = useRangePosition({
const { rangePosition, setRangePosition } = useRangePosition({
rangePosition: rangePositionProp ?? rangePositionContext?.rangePosition,
defaultRangePosition: defaultRangePositionProp,
onRangePositionChange: onRangePositionChangeProp ?? rangePositionContext?.onRangePositionChange,
onRangePositionChange: onRangePositionChangeProp ?? rangePositionContext?.setRangePosition,
});

const handleDatePositionChange = useEventCallback((position: RangePosition) => {
if (rangePosition !== position) {
onRangePositionChange(position);
setRangePosition(position);
}
});

Expand All @@ -273,7 +273,7 @@ const DateRangeCalendar = React.forwardRef(function DateRangeCalendar(

const isNextSectionAvailable = availableRangePositions.includes(nextSelection);
if (isNextSectionAvailable) {
onRangePositionChange(nextSelection);
setRangePosition(nextSelection);
}

const isFullRangeSelected = rangePosition === 'end' && isRangeValid(utils, newRange);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ const DateRangePickerToolbar = React.forwardRef(function DateRangePickerToolbar(
const { value } = usePickerContext<PickerRangeValue>();
const translations = usePickerTranslations();
const ownerState = useToolbarOwnerState();
const { rangePosition, onRangePositionChange } = usePickerRangePositionContext();
const { rangePosition, setRangePosition } = usePickerRangePositionContext();
const classes = useUtilityClasses(classesProp);

// This can't be a default value when spreading because it breaks the API generation.
Expand All @@ -112,14 +112,14 @@ const DateRangePickerToolbar = React.forwardRef(function DateRangePickerToolbar(
variant={value[0] == null ? 'h6' : 'h5'}
value={formatDate(value[0], translations.start)}
selected={rangePosition === 'start'}
onClick={() => onRangePositionChange('start')}
onClick={() => setRangePosition('start')}
/>
<Typography variant="h5">&nbsp;{'–'}&nbsp;</Typography>
<PickersToolbarButton
variant={value[1] == null ? 'h6' : 'h5'}
value={formatDate(value[1], translations.end)}
selected={rangePosition === 'end'}
onClick={() => onRangePositionChange('end')}
onClick={() => setRangePosition('end')}
/>
</DateRangePickerToolbarContainer>
</DateRangePickerToolbarRoot>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(
const { ownerState } = usePickerPrivateContext();
const { view, setView } = usePickerContext();
const classes = useUtilityClasses(classesProp);
const { rangePosition, onRangePositionChange } = usePickerRangePositionContext();
const { rangePosition, setRangePosition } = usePickerRangePositionContext();

const value = React.useMemo(
() => (view == null ? null : viewToTab(view, rangePosition)),
Expand Down Expand Up @@ -152,9 +152,9 @@ const DateTimeRangePickerTabs = function DateTimeRangePickerTabs(

const handleRangePositionChange = useEventCallback((newTab: TabValue) => {
if (newTab.includes('start')) {
onRangePositionChange('start');
setRangePosition('start');
} else {
onRangePositionChange('end');
setRangePosition('end');
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function DateTimeRangePickerTimeWrapper<
const { viewRenderer, value, onChange, defaultValue, onViewChange, views, className, ...other } =
props;

const { rangePosition, onRangePositionChange } = usePickerRangePositionContext();
const { rangePosition, setRangePosition } = usePickerRangePositionContext();

if (!viewRenderer) {
return null;
Expand Down Expand Up @@ -79,7 +79,7 @@ function DateTimeRangePickerTimeWrapper<
// reset view to the first time view and swap range position after selecting the last time view (start or end position)
if (selectedView === timeViews[timeViews.length - 1] && onViewChange) {
onViewChange(views[0]);
onRangePositionChange(rangePosition === 'start' ? 'end' : 'start');
setRangePosition(rangePosition === 'start' ? 'end' : 'start');
}
onChange(newRange, isFullRangeSelected ? 'finish' : 'partial', selectedView);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ const DateTimeRangePickerToolbar = React.forwardRef(function DateTimeRangePicker
>();
const translations = usePickerTranslations();
const ownerState = useToolbarOwnerState();
const { rangePosition, onRangePositionChange } = usePickerRangePositionContext();
const { rangePosition, setRangePosition } = usePickerRangePositionContext();
const classes = useUtilityClasses(classesProp);

const commonToolbarProps = {
Expand All @@ -127,10 +127,10 @@ const DateTimeRangePickerToolbar = React.forwardRef(function DateTimeRangePicker
rangePosition,
allowRangeFlip: true,
});
onRangePositionChange(nextSelection);
setRangePosition(nextSelection);
setValue(newRange, { changeImportance: 'set' });
},
[setValue, onRangePositionChange, value, rangePosition, utils],
[setValue, setRangePosition, value, rangePosition, utils],
);

const startOverrides = React.useMemo(() => {
Expand All @@ -139,7 +139,7 @@ const DateTimeRangePickerToolbar = React.forwardRef(function DateTimeRangePicker
return;
}
if (rangePosition !== 'start') {
onRangePositionChange('start');
setRangePosition('start');
}
setView(newView);
};
Expand All @@ -151,15 +151,15 @@ const DateTimeRangePickerToolbar = React.forwardRef(function DateTimeRangePicker
setView: handleStartRangeViewChange,
view: rangePosition === 'start' ? view : null,
};
}, [value, wrappedSetValue, rangePosition, view, onRangePositionChange, setView]);
}, [value, wrappedSetValue, rangePosition, view, setRangePosition, setView]);

const endOverrides = React.useMemo(() => {
const handleEndRangeViewChange = (newView: DateOrTimeViewWithMeridiem) => {
if (newView === 'year' || newView === 'month') {
return;
}
if (rangePosition !== 'end') {
onRangePositionChange('end');
setRangePosition('end');
}
setView(newView);
};
Expand All @@ -171,7 +171,7 @@ const DateTimeRangePickerToolbar = React.forwardRef(function DateTimeRangePicker
setView: handleEndRangeViewChange,
view: rangePosition === 'end' ? view : null,
};
}, [value, wrappedSetValue, rangePosition, view, onRangePositionChange, setView]);
}, [value, wrappedSetValue, rangePosition, view, setRangePosition, setView]);

if (hidden) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ export type {
UseRangePickerSlots,
UseRangePickerSlotProps,
RangeOnlyPickerProps,
RangePickerAdditionalViewProps,
UseRangePickerProps,
UseRangePickerParams,
} from './useRangePicker';
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
ExportedPickersLayoutSlotProps,
} from '@mui/x-date-pickers/PickersLayout';
import { BaseRangeNonStaticPickerProps } from '../../models';
import { UseRangePositionProps, UseRangePositionResponse } from '../useRangePosition';
import { UseRangePositionProps } from '../useRangePosition';
import { RangePickerFieldSlots, RangePickerFieldSlotProps } from '../useEnrichedRangePickerField';

export interface UseRangePickerSlots
Expand All @@ -41,9 +41,6 @@ export interface UseRangePickerProps<
> extends RangeOnlyPickerProps,
BasePickerProps<PickerRangeValue, TView, TError, TExternalProps> {}

export interface RangePickerAdditionalViewProps
extends Pick<UseRangePositionResponse, 'rangePosition' | 'onRangePositionChange'> {}

export interface UseRangePickerParams<
TView extends DateOrTimeViewWithMeridiem,
TExternalProps extends UseRangePickerProps<TView, any, TExternalProps>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ const useMultiInputFieldSlotProps = <
disableOpenPicker,
onBlur,
rangePosition,
onRangePositionChange,
setRangePosition,
localeText: inLocaleText,
pickerSlotProps,
pickerSlots,
Expand Down Expand Up @@ -177,7 +177,7 @@ const useMultiInputFieldSlotProps = <

const openRangeStartSelection: React.UIEventHandler = (event) => {
event.stopPropagation();
onRangePositionChange('start');
setRangePosition('start');
if (!readOnly && !disableOpenPicker) {
event.preventDefault();
contextValue.setOpen(true);
Expand All @@ -186,7 +186,7 @@ const useMultiInputFieldSlotProps = <

const openRangeEndSelection: React.UIEventHandler = (event) => {
event.stopPropagation();
onRangePositionChange('end');
setRangePosition('end');
if (!readOnly && !disableOpenPicker) {
event.preventDefault();
contextValue.setOpen(true);
Expand All @@ -195,7 +195,7 @@ const useMultiInputFieldSlotProps = <

const handleFocusStart = () => {
if (contextValue.open) {
onRangePositionChange('start');
setRangePosition('start');
if (previousRangePosition.current !== 'start' && initialView) {
contextValue.setView?.(initialView);
}
Expand All @@ -204,7 +204,7 @@ const useMultiInputFieldSlotProps = <

const handleFocusEnd = () => {
if (contextValue.open) {
onRangePositionChange('end');
setRangePosition('end');
if (previousRangePosition.current !== 'end' && initialView) {
contextValue.setView?.(initialView);
}
Expand Down Expand Up @@ -308,7 +308,7 @@ const useSingleInputFieldSlotProps = <
label,
onBlur,
rangePosition,
onRangePositionChange,
setRangePosition,
singleInputFieldRef,
fieldProps,
currentView,
Expand Down Expand Up @@ -357,7 +357,7 @@ const useSingleInputFieldSlotProps = <
activeSectionIndex == null || activeSectionIndex < sections.length / 2 ? 'start' : 'end';

if (domRangePosition != null && domRangePosition !== rangePosition) {
onRangePositionChange(domRangePosition);
setRangePosition(domRangePosition);
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export interface UseRangePositionProps {

export interface UseRangePositionResponse {
rangePosition: RangePosition;
onRangePositionChange: (newPosition: RangePosition) => void;
setRangePosition: (newPosition: RangePosition) => void;
}

export const useRangePosition = (
Expand Down Expand Up @@ -58,5 +58,5 @@ export const useRangePosition = (
syncRangePositionWithSingleInputField(newRangePosition);
});

return { rangePosition, onRangePositionChange: handleRangePositionChange };
return { rangePosition, setRangePosition: handleRangePositionChange };
};