From cd028c2428a790c14dc54afaad806ec95243015e Mon Sep 17 00:00:00 2001 From: sallerli1 Date: Wed, 12 Jun 2024 21:08:41 +0800 Subject: [PATCH] fix(comp:select): selector input value should be emptied after blur --- packages/components/select/src/Select.tsx | 7 +++++-- packages/components/selector/src/contents/Input.tsx | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/components/select/src/Select.tsx b/packages/components/select/src/Select.tsx index 74c10e11a..cf12aac9c 100644 --- a/packages/components/select/src/Select.tsx +++ b/packages/components/select/src/Select.tsx @@ -115,8 +115,11 @@ export default defineComponent({ callEmit(props.onFocus, evt) } const onBlur = (evt: FocusEvent) => { - if (props.allowInput && inputValue.value) { - changeSelected(inputValue.value) + if (inputValue.value) { + if (props.allowInput) { + changeSelected(inputValue.value) + } + clearInput() } diff --git a/packages/components/selector/src/contents/Input.tsx b/packages/components/selector/src/contents/Input.tsx index d4ea6c624..2416113ce 100644 --- a/packages/components/selector/src/contents/Input.tsx +++ b/packages/components/selector/src/contents/Input.tsx @@ -25,11 +25,12 @@ export default defineComponent({ handleEnterDown, } = inject(selectorToken)! + const innerInputValue = computed(() => (props.allowInput || mergedSearchable.value ? inputValue.value : '')) const inputReadonly = computed( () => props.readonly || !mergedFocused.value || !(props.allowInput || mergedSearchable.value), ) const innerStyle = computed(() => { - return { opacity: inputReadonly.value ? 0 : undefined } + return { opacity: inputReadonly.value && !innerInputValue.value ? 0 : undefined } }) return () => { @@ -45,7 +46,7 @@ export default defineComponent({ autofocus={autofocus} disabled={disabled} readonly={inputReadonly.value} - value={inputValue.value} + value={innerInputValue.value} onCompositionstart={handleCompositionStart} onCompositionend={handleCompositionEnd} onKeydown={handleEnterDown}