mirror of https://github.com/ElemeFE/element
				
				
				
			input: fix focus
							parent
							
								
									2884984097
								
							
						
					
					
						commit
						c7d3de95b0
					
				| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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', () => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue