diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useFieldInternalPropsWithDefaults.ts b/packages/x-date-pickers/src/internals/hooks/useField/useFieldInternalPropsWithDefaults.ts index 7ca3265b4c065..46f843bdcff9a 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useFieldInternalPropsWithDefaults.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useFieldInternalPropsWithDefaults.ts @@ -38,6 +38,7 @@ export function useFieldInternalPropsWithDefaults { return setValue?.(newValue, { validationError: ctx.validationError, + shouldClose: false, }); }, [setValue], diff --git a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts index a262ba53f9923..520adee39c8df 100644 --- a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts +++ b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts @@ -145,6 +145,7 @@ export const usePickerValue = < skipPublicationIfPristine = false, validationError, shortcut, + shouldClose = changeImportance === 'accept', } = options ?? {}; let shouldPublish: boolean; @@ -193,7 +194,7 @@ export const usePickerValue = < onAccept(newValue, getContext()); } - if (changeImportance === 'accept') { + if (shouldClose) { setOpen(false); } }); diff --git a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts index 57be4e7a531b3..723f36bec4f88 100644 --- a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts +++ b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts @@ -359,4 +359,9 @@ export interface SetValueActionOptions { * @default false */ skipPublicationIfPristine?: boolean; + /** + * Whether the picker should close. + * @default changeImportance === "accept" + */ + shouldClose?: boolean; }