Skip to content
This repository was archived by the owner on Sep 28, 2022. It is now read-only.

Commit 1e5cb55

Browse files
bchen1029CarterLi
authored andcommitted
Select: fix keydown event when composition (ElemeFE#21336)
1 parent baaff29 commit 1e5cb55

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

packages/input/src/input.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,15 +349,18 @@
349349
this.focused = true;
350350
this.$emit('focus', event);
351351
},
352-
handleCompositionStart() {
352+
handleCompositionStart(event) {
353+
this.$emit('compositionstart', event);
353354
this.isComposing = true;
354355
},
355356
handleCompositionUpdate(event) {
357+
this.$emit('compositionupdate', event);
356358
const text = event.target.value;
357359
const lastCharacter = text[text.length - 1] || '';
358360
this.isComposing = !isKorean(lastCharacter);
359361
},
360362
handleCompositionEnd(event) {
363+
this.$emit('compositionend', event);
361364
if (this.isComposing) {
362365
this.isComposing = false;
363366
this.handleInput(event);

packages/select/src/select.vue

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
@blur="softFocus = false"
5555
@keyup="managePlaceholder"
5656
@keydown="resetInputState"
57-
@keydown.down.prevent="navigateOptions('next')"
58-
@keydown.up.prevent="navigateOptions('prev')"
57+
@keydown.down.prevent="handleNavigate('next')"
58+
@keydown.up.prevent="handleNavigate('prev')"
5959
@keydown.enter.prevent="selectOption"
6060
@keydown.esc.stop.prevent="visible = false"
6161
@keydown.delete="deletePrevTag"
@@ -86,11 +86,14 @@
8686
@focus="handleFocus"
8787
@blur="handleBlur"
8888
@input="debouncedOnInputChange"
89-
@keydown.native.down.stop.prevent="navigateOptions('next')"
90-
@keydown.native.up.stop.prevent="navigateOptions('prev')"
89+
@keydown.native.down.stop.prevent="handleNavigate('next')"
90+
@keydown.native.up.stop.prevent="handleNavigate('prev')"
9191
@keydown.native.enter.prevent="selectOption"
9292
@keydown.native.esc.stop.prevent="visible = false"
9393
@keydown.native.tab="visible = false"
94+
@compositionstart="handleComposition"
95+
@compositionupdate="handleComposition"
96+
@compositionend="handleComposition"
9497
@mouseenter.native="inputHovering = true"
9598
@mouseleave.native="inputHovering = false">
9699
<template slot="prefix" v-if="$slots.prefix">
@@ -454,6 +457,11 @@
454457
},
455458
456459
methods: {
460+
handleNavigate(direction) {
461+
if (this.isOnComposition) return;
462+
463+
this.navigateOptions(direction);
464+
},
457465
handleComposition(event) {
458466
const text = event.target.value;
459467
if (event.type === 'compositionend') {

0 commit comments

Comments
 (0)