Skip to content

Commit b8684d6

Browse files
bchen1029cn3lfs
authored andcommitted
Select: fix keydown event when composition (ElemeFE#21336)
1 parent 1c81f10 commit b8684d6

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

packages/input/src/input.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,15 +337,18 @@
337337
this.focused = true;
338338
this.$emit('focus', event);
339339
},
340-
handleCompositionStart() {
340+
handleCompositionStart(event) {
341+
this.$emit('compositionstart', event);
341342
this.isComposing = true;
342343
},
343344
handleCompositionUpdate(event) {
345+
this.$emit('compositionupdate', event);
344346
const text = event.target.value;
345347
const lastCharacter = text[text.length - 1] || '';
346348
this.isComposing = !isKorean(lastCharacter);
347349
},
348350
handleCompositionEnd(event) {
351+
this.$emit('compositionend', event);
349352
if (this.isComposing) {
350353
this.isComposing = false;
351354
this.handleInput(event);

packages/select/src/select.vue

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252
@blur="softFocus = false"
5353
@keyup="managePlaceholder"
5454
@keydown="resetInputState"
55-
@keydown.down.prevent="navigateOptions('next')"
56-
@keydown.up.prevent="navigateOptions('prev')"
55+
@keydown.down.prevent="handleNavigate('next')"
56+
@keydown.up.prevent="handleNavigate('prev')"
5757
@keydown.enter.prevent="selectOption"
5858
@keydown.esc.stop.prevent="visible = false"
5959
@keydown.delete="deletePrevTag"
@@ -84,11 +84,14 @@
8484
@focus="handleFocus"
8585
@blur="handleBlur"
8686
@input="debouncedOnInputChange"
87-
@keydown.native.down.stop.prevent="navigateOptions('next')"
88-
@keydown.native.up.stop.prevent="navigateOptions('prev')"
87+
@keydown.native.down.stop.prevent="handleNavigate('next')"
88+
@keydown.native.up.stop.prevent="handleNavigate('prev')"
8989
@keydown.native.enter.prevent="selectOption"
9090
@keydown.native.esc.stop.prevent="visible = false"
9191
@keydown.native.tab="visible = false"
92+
@compositionstart="handleComposition"
93+
@compositionupdate="handleComposition"
94+
@compositionend="handleComposition"
9295
@mouseenter.native="inputHovering = true"
9396
@mouseleave.native="inputHovering = false">
9497
<template slot="prefix" v-if="$slots.prefix">
@@ -440,6 +443,11 @@
440443
},
441444
442445
methods: {
446+
handleNavigate(direction) {
447+
if (this.isOnComposition) return;
448+
449+
this.navigateOptions(direction);
450+
},
443451
handleComposition(event) {
444452
const text = event.target.value;
445453
if (event.type === 'compositionend') {

0 commit comments

Comments
 (0)