From 2f0e1fbb69dcf5c66547ccf77c403ffcac618abe Mon Sep 17 00:00:00 2001 From: flavien Date: Thu, 30 Jan 2025 14:06:04 +0100 Subject: [PATCH] [pickers] Do not close the picker when doing keyboard editing --- .../hooks/useField/useFieldInternalPropsWithDefaults.ts | 1 + .../src/internals/hooks/usePicker/usePickerValue.ts | 3 ++- .../src/internals/hooks/usePicker/usePickerValue.types.ts | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) 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; }