wacky6.AriesMBP 7 anni fa
parent
commit
c7d3de95b0
2 ha cambiato i file con 23 aggiunte e 6 eliminazioni
  1. 5 3
      packages/input/src/input.vue
  2. 18 3
      test/unit/specs/message-box.spec.js

+ 5 - 3
packages/input/src/input.vue

@@ -77,7 +77,6 @@
 </template>
 <script>
   import emitter from 'element-ui/src/mixins/emitter';
-  import Focus from 'element-ui/src/mixins/focus';
   import Migrating from 'element-ui/src/mixins/migrating';
   import calcTextareaHeight from './calcTextareaHeight';
   import merge from 'element-ui/src/utils/merge';
@@ -87,7 +86,7 @@
 
     componentName: 'ElInput',
 
-    mixins: [emitter, Focus('input'), Migrating],
+    mixins: [emitter, Migrating],
 
     inject: {
       elForm: {
@@ -183,6 +182,9 @@
     },
 
     methods: {
+      focus() {
+        (this.$refs.input || this.$refs.textarea).focus();
+      },
       getMigratingConfig() {
         return {
           props: {
@@ -201,7 +203,7 @@
         }
       },
       inputSelect() {
-        this.$refs.input.select();
+        (this.$refs.input || this.$refs.textarea).select();
       },
       resizeTextarea() {
         if (this.$isServer) return;

+ 18 - 3
test/unit/specs/message-box.spec.js

@@ -99,15 +99,30 @@ describe('MessageBox', () => {
       inputErrorMessage: 'validation failed'
     });
     setTimeout(() => {
-      expect(document.querySelector('.el-message-box__input')).to.exist;
       const messageBox = document.querySelector('.el-message-box__wrapper').__vue__.$parent;
+      expect(messageBox.$el.querySelector('.el-message-box__input')).to.exist;
+      const haveFocus = messageBox.$el.querySelector('input').isSameNode(document.activeElement);
+      expect(haveFocus).to.true;
       messageBox.inputValue = 'no';
       setTimeout(() => {
-        expect(document.querySelector('.el-message-box__errormsg')
+        expect(messageBox.$el.querySelector('.el-message-box__errormsg')
           .textContent).to.equal('validation failed');
         done();
       }, 100);
-    }, 200);
+    }, 700);
+  });
+
+  it('prompt: focus on textarea', done => {
+    MessageBox.prompt('这是一段内容', {
+      inputType: 'textarea',
+      title: '标题名称'
+    });
+    setTimeout(() => {
+      const messageBox = document.querySelector('.el-message-box__wrapper').__vue__.$parent;
+      const haveFocus = messageBox.$el.querySelector('textarea').isSameNode(document.activeElement);
+      expect(haveFocus).to.true;
+      done();
+    }, 700);
   });
 
   describe('custom validator', () => {