From 1daf8814eeb00b09262c0a0dbc88a11ff0456ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=89=B3=E5=85=B5?= Date: Sun, 15 Mar 2026 18:31:26 +0800 Subject: [PATCH 1/3] fix: only submit input as tag on Enter when dropdown closed --- src/SelectInput/Input.tsx | 8 +++++++- tests/Tags.test.tsx | 32 +++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/SelectInput/Input.tsx b/src/SelectInput/Input.tsx index e69eace1..8c12606a 100644 --- a/src/SelectInput/Input.tsx +++ b/src/SelectInput/Input.tsx @@ -95,7 +95,13 @@ const Input = React.forwardRef((props, ref) => { const { value: nextVal } = event.currentTarget; // Handle Enter key submission - referencing Selector implementation - if (key === 'Enter' && mode === 'tags' && !compositionStatusRef.current && onSearchSubmit) { + if ( + key === 'Enter' && + mode === 'tags' && + !open && + !compositionStatusRef.current && + onSearchSubmit + ) { onSearchSubmit(nextVal); } diff --git a/tests/Tags.test.tsx b/tests/Tags.test.tsx index 99e3d295..30edde45 100644 --- a/tests/Tags.test.tsx +++ b/tests/Tags.test.tsx @@ -13,7 +13,14 @@ import openControlledTest from './shared/openControlledTest'; import removeSelectedTest from './shared/removeSelectedTest'; import maxTagRenderTest from './shared/maxTagRenderTest'; import throwOptionValue from './shared/throwOptionValue'; -import { injectRunAllTimers, findSelection, expectOpen, toggleOpen, keyDown } from './utils/common'; +import { + injectRunAllTimers, + findSelection, + expectOpen, + toggleOpen, + keyDown, + keyUp, +} from './utils/common'; import type { CustomTagProps } from '@/BaseSelect'; describe('Select.Tags', () => { @@ -140,6 +147,29 @@ describe('Select.Tags', () => { expectOpen(container, false); }); + it('should trigger onSelect once when pressing Enter to select option in tags mode (dropdown open)', () => { + const handleSelect = jest.fn(); + const { container } = render( +