Skip to content

Commit

Permalink
Remove field ownerState
Browse files Browse the repository at this point in the history
  • Loading branch information
flaviendelangle committed Jan 22, 2025
1 parent ed58d9a commit bd4ffba
Show file tree
Hide file tree
Showing 28 changed files with 51 additions and 122 deletions.
2 changes: 1 addition & 1 deletion docs/data/date-pickers/calendar-systems/AdapterHijri.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const cacheRtl = createCache({

function ButtonDateTimeField(props) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();
const parsedFormat = useParsedFormat();
Expand Down
2 changes: 1 addition & 1 deletion docs/data/date-pickers/calendar-systems/AdapterHijri.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const cacheRtl = createCache({

function ButtonDateTimeField(props: DateTimePickerFieldProps) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();
const parsedFormat = useParsedFormat();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ const BrowserTextField = React.forwardRef((props, ref) => {
const BrowserMultiInputDateRangeField = React.forwardRef((props, ref) => {
const manager = useDateRangeManager();
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { slotProps, ownerState, ...otherForwardedProps } = forwardedProps;
const { slotProps, ...otherForwardedProps } = forwardedProps;

const startTextFieldProps = useSlotProps({
elementType: 'input',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ const BrowserMultiInputDateRangeField = React.forwardRef(
(props: BrowserMultiInputDateRangeFieldProps, ref: React.Ref<HTMLDivElement>) => {
const manager = useDateRangeManager();
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { slotProps, ownerState, ...otherForwardedProps } = forwardedProps;
const { slotProps, ...otherForwardedProps } = forwardedProps;

const startTextFieldProps = useSlotProps({
elementType: 'input',
Expand Down
2 changes: 1 addition & 1 deletion docs/data/date-pickers/custom-field/JoyV6Field.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const CalendarIcon = createSvgIcon(
const joyTheme = extendJoyTheme();

const JoyDateField = React.forwardRef(
(props: DatePickerFieldProps<false>, ref: React.Ref<HTMLDivElement>) => {
(props: DatePickerFieldProps, ref: React.Ref<HTMLDivElement>) => {
const fieldResponse = useDateField<false, typeof props>(props);

const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ const JoyMultiInputDateRangeField = React.forwardRef((props, ref) => {
enableAccessibleFieldDOMStructure: false,
});
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { slotProps, ownerState, ...otherForwardedProps } = forwardedProps;
const { slotProps, ...otherForwardedProps } = forwardedProps;

const startTextFieldProps = useSlotProps({
elementType: 'input',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ const JoyField = React.forwardRef(

interface JoyMultiInputDateRangeFieldProps
extends Omit<
DateRangePickerFieldProps<false>,
DateRangePickerFieldProps,
'unstableFieldRef' | 'clearable' | 'onClear'
>,
MultiInputFieldRefs {
Expand All @@ -116,7 +116,7 @@ const JoyMultiInputDateRangeField = React.forwardRef(
enableAccessibleFieldDOMStructure: false,
});
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { slotProps, ownerState, ...otherForwardedProps } = forwardedProps;
const { slotProps, ...otherForwardedProps } = forwardedProps;

const startTextFieldProps = useSlotProps({
elementType: 'input',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ const DateRangeIcon = createSvgIcon(
const joyTheme = extendJoyTheme();

type JoySingleInputDateRangeFieldComponent = ((
props: DateRangePickerFieldProps<false> & React.RefAttributes<HTMLDivElement>,
props: DateRangePickerFieldProps & React.RefAttributes<HTMLDivElement>,
) => React.JSX.Element) & { fieldType?: FieldType };

const JoySingleInputDateRangeField = React.forwardRef(
(props: DateRangePickerFieldProps<false>, ref: React.Ref<HTMLDivElement>) => {
(props: DateRangePickerFieldProps, ref: React.Ref<HTMLDivElement>) => {
const fieldResponse = useSingleInputDateRangeField<false, typeof props>(props);

const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ import { useValidation, validateDate } from '@mui/x-date-pickers/validation';
function AutocompleteField(props) {
const { forwardedProps, internalProps } = useSplitFieldProps(props, 'date');
const { timezone, value, setValue } = usePickerContext();
const { ownerState, focused, options = [], ...other } = forwardedProps;

const { focused, options = [], ...other } = forwardedProps;
const pickerContext = usePickerContext();

const { hasValidationError, getValidationErrorForNewValue } = useValidation({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ interface AutocompleteFieldProps extends DatePickerFieldProps {
function AutocompleteField(props: AutocompleteFieldProps) {
const { forwardedProps, internalProps } = useSplitFieldProps(props, 'date');
const { timezone, value, setValue } = usePickerContext();
const { ownerState, focused, options = [], ...other } = forwardedProps;

const { focused, options = [], ...other } = forwardedProps;
const pickerContext = usePickerContext();

const { hasValidationError, getValidationErrorForNewValue } = useValidation({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {

function ButtonDateField(props) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();
const parsedFormat = useParsedFormat();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {

function ButtonDateField(props: DatePickerFieldProps) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();
const parsedFormat = useParsedFormat();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {

function ButtonDateRangeField(props) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();
const parsedFormat = useParsedFormat();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {

function ButtonDateRangeField(props: DateRangePickerFieldProps) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();
const parsedFormat = useParsedFormat();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1542,7 +1542,7 @@ If you were using them, you need to replace them with the following code:
- > {}
+interface CustomDateRangeFieldProps
+ extends Omit<
+ DateRangePickerFieldProps<true>,
+ DateRangePickerFieldProps,
+ 'unstableFieldRef' | 'clearable' | 'onClear'
+ >,
+ MultiInputFieldRefs {}
Expand Down Expand Up @@ -1574,7 +1574,7 @@ If you were using them, you need to replace them with the following code:
- > {}
+interface JoyMultiInputDateRangeFieldProps
+ extends Omit<
+ DateTimeRangePickerFieldProps<false>,
+ DateTimeRangePickerFieldProps,
+ 'unstableFieldRef' | 'clearable' | 'onClear'
+ >,
+ MultiInputFieldRefs {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { useValidation, validateDate } from '@mui/x-date-pickers/validation';

function ButtonDateField(props: DatePickerFieldProps) {
const { internalProps, forwardedProps } = useSplitFieldProps(props, 'date');
const { ownerState, focused, ...other } = forwardedProps;
const { focused, ...other } = forwardedProps;

const pickerContext = usePickerContext();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
MobileDateRangePickerSlots,
MobileDateRangePickerSlotProps,
} from '../MobileDateRangePicker';
import { DateRangeValidationError } from '../models';
import { ValidateDateRangeProps } from '../validation';

export interface DateRangePickerSlots
Expand Down Expand Up @@ -49,10 +48,5 @@ export interface DateRangePickerProps<TEnableAccessibleFieldDOMStructure extends
/**
* Props the field can receive when used inside a date range picker (<DateRangePicker />, <DesktopDateRangePicker /> or <MobileDateRangePicker /> component).
*/
export type DateRangePickerFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> =
ValidateDateRangeProps &
BaseSingleInputFieldProps<
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
DateRangeValidationError
>;
export type DateRangePickerFieldProps = ValidateDateRangeProps &
BaseSingleInputFieldProps<PickerRangeValue>;
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,5 @@ export interface DateTimeRangePickerProps<TEnableAccessibleFieldDOMStructure ext
/**
* Props the field can receive when used inside a date time range picker (<DateTimeRangePicker />, <DesktopDateTimeRangePicker /> or <MobileDateTimeRangePicker /> component).
*/
export type DateTimeRangePickerFieldProps<
TEnableAccessibleFieldDOMStructure extends boolean = true,
> = ValidateDateTimeRangeProps &
BaseSingleInputFieldProps<
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
DateTimeRangeValidationError
>;
export type DateTimeRangePickerFieldProps = ValidateDateTimeRangeProps &
BaseSingleInputFieldProps<PickerRangeValue>;
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ import {
UseDesktopRangePickerParams,
UseDesktopRangePickerProps,
} from './useDesktopRangePicker.types';
import {
RangePickerPropsForFieldSlot,
useEnrichedRangePickerField,
} from '../useEnrichedRangePickerField';
import { useEnrichedRangePickerField } from '../useEnrichedRangePickerField';
import { getReleaseInfo } from '../../utils/releaseInfo';
import { useRangePosition } from '../useRangePosition';
import { PickerRangePositionContext } from '../../../hooks/usePickerRangePositionContext';
Expand Down Expand Up @@ -115,11 +112,7 @@ export const useDesktopRangePicker = <

const Field = slots.field;

const fieldProps: RangePickerPropsForFieldSlot<
boolean,
TEnableAccessibleFieldDOMStructure,
InferError<TExternalProps>
> = useSlotProps({
const { ownerState: fieldOwnerState, ...fieldProps } = useSlotProps({
elementType: Field,
externalSlotProps: slotProps?.field,
additionalProps: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,9 @@ export interface RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure ex
>;
}

export type RangePickerPropsForFieldSlot<
TIsSingleInput extends boolean,
TEnableAccessibleFieldDOMStructure extends boolean,
TError,
> =
| (TIsSingleInput extends true
? BaseSingleInputFieldProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TError>
: never)
| (TIsSingleInput extends false
? BaseMultiInputFieldProps<TEnableAccessibleFieldDOMStructure, TError>
: never);
export type RangePickerPropsForFieldSlot<TIsSingleInput extends boolean> =
| (TIsSingleInput extends true ? BaseSingleInputFieldProps<PickerRangeValue> : never)
| (TIsSingleInput extends false ? BaseMultiInputFieldProps : never);

export interface UseEnrichedRangePickerFieldPropsParams<
TIsSingleInput extends boolean,
Expand All @@ -104,11 +96,7 @@ export interface UseEnrichedRangePickerFieldPropsParams<
localeText: PickersInputLocaleText | undefined;
pickerSlotProps: RangePickerFieldSlotProps<TEnableAccessibleFieldDOMStructure> | undefined;
pickerSlots: RangePickerFieldSlots | undefined;
fieldProps: RangePickerPropsForFieldSlot<
TIsSingleInput,
TEnableAccessibleFieldDOMStructure,
TError
>;
fieldProps: RangePickerPropsForFieldSlot<TIsSingleInput>;
anchorRef?: React.Ref<HTMLElement>;
currentView?: TView | null;
initialView?: TView;
Expand Down Expand Up @@ -145,8 +133,6 @@ const useMultiInputFieldSlotProps = <
TEnableAccessibleFieldDOMStructure,
TError
>) => {
type ReturnType = BaseMultiInputFieldProps<TEnableAccessibleFieldDOMStructure, TError>;

const translations = usePickerTranslations();
const handleStartFieldRef = useForkRef(fieldProps.unstableStartFieldRef, startFieldRef);
const handleEndFieldRef = useForkRef(fieldProps.unstableEndFieldRef, endFieldRef);
Expand Down Expand Up @@ -210,14 +196,14 @@ const useMultiInputFieldSlotProps = <
}
};

const slots: ReturnType['slots'] = {
const slots: BaseMultiInputFieldProps['slots'] = {
textField: pickerSlots?.textField,
root: pickerSlots?.fieldRoot,
separator: pickerSlots?.fieldSeparator,
...fieldProps.slots,
};

const slotProps: ReturnType['slotProps'] & {
const slotProps: BaseMultiInputFieldProps['slotProps'] & {
separator?: any;
} = {
...fieldProps.slotProps,
Expand Down Expand Up @@ -279,7 +265,7 @@ const useMultiInputFieldSlotProps = <
/* TODO: remove this when a clearable behavior for multiple input range fields is implemented */
const { clearable, onClear, ...restFieldProps } = fieldProps as any;

const enrichedFieldProps: ReturnType = {
const enrichedFieldProps: BaseMultiInputFieldProps = {
...restFieldProps,
unstableStartFieldRef: handleStartFieldRef,
unstableEndFieldRef: handleEndFieldRef,
Expand Down Expand Up @@ -316,12 +302,6 @@ const useSingleInputFieldSlotProps = <
TEnableAccessibleFieldDOMStructure,
TError
>) => {
type ReturnType = BaseSingleInputFieldProps<
PickerRangeValue,
TEnableAccessibleFieldDOMStructure,
TError
>;

const handleFieldRef = useForkRef(fieldProps.unstableFieldRef, singleInputFieldRef);

React.useEffect(() => {
Expand Down Expand Up @@ -375,7 +355,7 @@ const useSingleInputFieldSlotProps = <
}
};

const enrichedFieldProps: ReturnType = {
const enrichedFieldProps: BaseSingleInputFieldProps<PickerRangeValue> = {
...fieldProps,
unstableFieldRef: handleFieldRef,
onKeyDown: onSpaceOrEnter(openPicker, fieldProps.onKeyDown),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@ import {
UseMobileRangePickerParams,
UseMobileRangePickerProps,
} from './useMobileRangePicker.types';
import {
RangePickerPropsForFieldSlot,
useEnrichedRangePickerField,
} from '../useEnrichedRangePickerField';
import { useEnrichedRangePickerField } from '../useEnrichedRangePickerField';
import { getReleaseInfo } from '../../utils/releaseInfo';
import { useRangePosition } from '../useRangePosition';
import { PickerRangePositionContext } from '../../../hooks/usePickerRangePositionContext';
Expand Down Expand Up @@ -92,11 +89,7 @@ export const useMobileRangePicker = <
providerProps.contextValue.triggerStatus = 'hidden';

const Field = slots.field;
const fieldProps: RangePickerPropsForFieldSlot<
boolean,
TEnableAccessibleFieldDOMStructure,
InferError<TExternalProps>
> = useSlotProps({
const { ownerState: fieldOwnerState, ...fieldProps } = useSlotProps({
elementType: Field,
externalSlotProps: innerSlotProps?.field,
additionalProps: {
Expand Down
9 changes: 2 additions & 7 deletions packages/x-date-pickers-pro/src/internals/models/fields.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,8 @@ import type {
* Props the multi input field can receive when used inside a picker.
* Only contains what the MUI components are passing to the field, not what users can pass using the `props.slotProps.field`.
*/
export interface BaseMultiInputFieldProps<
TEnableAccessibleFieldDOMStructure extends boolean,
TError,
> extends Pick<
UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TError>,
'readOnly' | 'autoFocus'
>,
export interface BaseMultiInputFieldProps
extends Pick<UseFieldInternalProps<PickerRangeValue, boolean, unknown>, 'readOnly' | 'autoFocus'>,
MultiInputFieldRefs {
slots?: {
root?: React.ElementType;
Expand Down
5 changes: 1 addition & 4 deletions packages/x-date-pickers/src/DatePicker/DatePicker.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
MobileDatePickerSlots,
MobileDatePickerSlotProps,
} from '../MobileDatePicker';
import { DateValidationError } from '../models';
import { ValidateDateProps } from '../validation/validateDate';

export interface DatePickerSlots extends DesktopDatePickerSlots, MobileDatePickerSlots {}
Expand Down Expand Up @@ -52,6 +51,4 @@ export interface DatePickerProps<TEnableAccessibleFieldDOMStructure extends bool
/**
* Props the field can receive when used inside a date picker (<DatePicker />, <DesktopDatePicker /> or <MobileDatePicker /> component).
*/
export type DatePickerFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> =
ValidateDateProps &
BaseSingleInputFieldProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>;
export type DatePickerFieldProps = ValidateDateProps & BaseSingleInputFieldProps<PickerValue>;
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import {
MobileDateTimePickerSlots,
MobileDateTimePickerSlotProps,
} from '../MobileDateTimePicker';
import { DateTimeValidationError } from '../models';
import { ValidateDateTimeProps } from '../validation';
import { ExportedYearCalendarProps } from '../YearCalendar/YearCalendar.types';

Expand Down Expand Up @@ -59,4 +58,4 @@ export interface DateTimePickerProps<TEnableAccessibleFieldDOMStructure extends
* Props the field can receive when used inside a date time picker (<DateTimePicker />, <DesktopDateTimePicker /> or <MobileDateTimePicker /> component).
*/
export type DateTimePickerFieldProps = ValidateDateTimeProps &
BaseSingleInputFieldProps<PickerValue, false, DateTimeValidationError>;
BaseSingleInputFieldProps<PickerValue>;
Loading

0 comments on commit bd4ffba

Please sign in to comment.