From 92aef13a098d27f6f3f9333ffff827e3e7684d3f Mon Sep 17 00:00:00 2001 From: Nawazish Bidiwale <141501933+Nawaz-B-04@users.noreply.github.com> Date: Thu, 19 Mar 2026 01:22:24 +0530 Subject: [PATCH 1/3] Fix: required validation for multi-select ComboBox (#9788) (#9792) * Fix: required validation for multi-select ComboBox (#9788) * Fix: address PR feedback - move validation logic to hook and correct required handling * simplify approach --------- Co-authored-by: Devon Govett --- .../@react-aria/combobox/src/useComboBox.ts | 2 + .../combobox/src/useComboBoxState.ts | 7 ++- .../test/ComboBox.test.js | 56 +++++++++++++++++++ 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/packages/@react-aria/combobox/src/useComboBox.ts b/packages/@react-aria/combobox/src/useComboBox.ts index 5246611f875..2a7f8e83102 100644 --- a/packages/@react-aria/combobox/src/useComboBox.ts +++ b/packages/@react-aria/combobox/src/useComboBox.ts @@ -218,6 +218,8 @@ export function useComboBox(props: AriaCo let {isInvalid, validationErrors, validationDetails} = state.displayValidation; let {labelProps, inputProps, descriptionProps, errorMessageProps} = useTextField({ ...props, + // In multi-select mode, only set required if the selection is empty. + isRequired: props.selectionMode === 'multiple' ? props.isRequired && state.selectionManager.isEmpty : props.isRequired, onChange: state.setInputValue, onKeyDown: !isReadOnly ? chain(state.isOpen && collectionProps.onKeyDown, onKeyDown, props.onKeyDown) : props.onKeyDown, onBlur, diff --git a/packages/@react-stately/combobox/src/useComboBoxState.ts b/packages/@react-stately/combobox/src/useComboBoxState.ts index b09765212dd..9871666532c 100644 --- a/packages/@react-stately/combobox/src/useComboBoxState.ts +++ b/packages/@react-stately/combobox/src/useComboBoxState.ts @@ -481,10 +481,10 @@ export function useComboBoxState { expect(onChange).toHaveBeenLastCalledWith(['1']); }); + it('should support isRequired with multiple selection', async () => { + let {container, getByTestId} = render( +
+ + + +