瀏覽代碼

support focus and blur for select

Dreamacro 8 年之前
父節點
當前提交
b1860f5274
共有 2 個文件被更改,包括 29 次插入1 次删除
  1. 7 1
      packages/select/src/select.vue
  2. 22 0
      test/unit/specs/select.spec.js

+ 7 - 1
packages/select/src/select.vue

@@ -51,6 +51,7 @@
       :readonly="!filterable || multiple"
       :validate-event="false"
       @focus="handleFocus"
+      @blur="handleBlur"
       @click="handleIconClick"
       @mousedown.native="handleMouseDown"
       @keyup.native="debouncedOnInputChange"
@@ -426,8 +427,13 @@
         });
       },
 
-      handleFocus() {
+      handleFocus(event) {
         this.visible = true;
+        this.$emit('focus', event);
+      },
+
+      handleBlur(event) {
+        this.$emit('blur', event);
       },
 
       handleIconClick(event) {

+ 22 - 0
test/unit/specs/select.spec.js

@@ -607,4 +607,26 @@ describe('Select', () => {
       }, 250);
     });
   });
+
+  it('event:focus & blur', done => {
+    vm = createVue({
+      template: `
+        <el-select ref="select"></el-select>
+      `
+    }, true);
+
+    const spyFocus = sinon.spy();
+    const spyBlur = sinon.spy();
+
+    vm.$refs.select.$on('focus', spyFocus);
+    vm.$refs.select.$on('blur', spyBlur);
+    vm.$el.querySelector('input').focus();
+    vm.$el.querySelector('input').blur();
+
+    vm.$nextTick(_ => {
+      expect(spyFocus.calledOnce).to.be.true;
+      expect(spyBlur.calledOnce).to.be.true;
+      done();
+    });
+  });
 });