From 6ae261d840dc2f067226f89327b1002a59bbe781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=BD=E5=A4=9A=E5=A4=A7=E7=B1=B3?= Date: Mon, 11 Oct 2021 15:15:51 +0800 Subject: [PATCH 1/3] Form: validate method reject error info (#21374) --- packages/form/src/form.vue | 4 ++-- test/unit/specs/form.spec.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/form/src/form.vue b/packages/form/src/form.vue index 59ed4dfa1..486438708 100644 --- a/packages/form/src/form.vue +++ b/packages/form/src/form.vue @@ -116,8 +116,8 @@ // if no callback, return promise if (typeof callback !== 'function' && window.Promise) { promise = new window.Promise((resolve, reject) => { - callback = function(valid) { - valid ? resolve(valid) : reject(valid); + callback = function(valid, invalidFields) { + valid ? resolve(valid) : reject(invalidFields); }; }); } diff --git a/test/unit/specs/form.spec.js b/test/unit/specs/form.spec.js index c3f6edd0b..f8eab3c89 100644 --- a/test/unit/specs/form.spec.js +++ b/test/unit/specs/form.spec.js @@ -921,8 +921,8 @@ describe('Form', () => { }; } }, true); - vm.$refs.form.validate().catch(validFailed => { - expect(validFailed).to.false; + vm.$refs.form.validate().catch(invalidFields => { + expect(invalidFields.name[0].message).to.be.equal('长度至少为5'); done(); }); }); From 5e037ceaa6ee7bf46d728623366990770a7a1abd Mon Sep 17 00:00:00 2001 From: bchen1029 <39672197+bchen1029@users.noreply.github.com> Date: Tue, 12 Oct 2021 11:28:51 +0800 Subject: [PATCH 2/3] Select: fix keydown event when composition (#21336) --- packages/input/src/input.vue | 5 ++++- packages/select/src/select.vue | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/input/src/input.vue b/packages/input/src/input.vue index 1a66d6a96..26321f1cf 100644 --- a/packages/input/src/input.vue +++ b/packages/input/src/input.vue @@ -337,15 +337,18 @@ this.focused = true; this.$emit('focus', event); }, - handleCompositionStart() { + handleCompositionStart(event) { + this.$emit('compositionstart', event); this.isComposing = true; }, handleCompositionUpdate(event) { + this.$emit('compositionupdate', event); const text = event.target.value; const lastCharacter = text[text.length - 1] || ''; this.isComposing = !isKorean(lastCharacter); }, handleCompositionEnd(event) { + this.$emit('compositionend', event); if (this.isComposing) { this.isComposing = false; this.handleInput(event); diff --git a/packages/select/src/select.vue b/packages/select/src/select.vue index 82d439a98..031337510 100644 --- a/packages/select/src/select.vue +++ b/packages/select/src/select.vue @@ -52,8 +52,8 @@ @blur="softFocus = false" @keyup="managePlaceholder" @keydown="resetInputState" - @keydown.down.prevent="navigateOptions('next')" - @keydown.up.prevent="navigateOptions('prev')" + @keydown.down.prevent="handleNavigate('next')" + @keydown.up.prevent="handleNavigate('prev')" @keydown.enter.prevent="selectOption" @keydown.esc.stop.prevent="visible = false" @keydown.delete="deletePrevTag" @@ -84,11 +84,14 @@ @focus="handleFocus" @blur="handleBlur" @input="debouncedOnInputChange" - @keydown.native.down.stop.prevent="navigateOptions('next')" - @keydown.native.up.stop.prevent="navigateOptions('prev')" + @keydown.native.down.stop.prevent="handleNavigate('next')" + @keydown.native.up.stop.prevent="handleNavigate('prev')" @keydown.native.enter.prevent="selectOption" @keydown.native.esc.stop.prevent="visible = false" @keydown.native.tab="visible = false" + @compositionstart="handleComposition" + @compositionupdate="handleComposition" + @compositionend="handleComposition" @mouseenter.native="inputHovering = true" @mouseleave.native="inputHovering = false">