Browse Source

DatePicker: fix tab key

qingwei.li 8 năm trước cách đây
mục cha
commit
8a8c28fc4f

+ 6 - 6
packages/date-picker/src/picker.vue

@@ -32,7 +32,7 @@
 <script>
 import Vue from 'vue';
 import Clickoutside from 'element-ui/src/utils/clickoutside';
-import { merge, formatDate, parseDate, getWeekNumber } from './util';
+import { formatDate, parseDate, getWeekNumber } from './util';
 import Popper from 'element-ui/src/utils/vue-popper';
 import emitter from 'element-ui/src/mixins/emitter';
 
@@ -312,7 +312,6 @@ export default {
     },
 
     handleBlur() {
-      this.pickerVisible = false;
       this.$emit('blur', this);
       this.dispatch('form-item', 'el.form.blur');
     },
@@ -323,7 +322,10 @@ export default {
       let selectionEnd = event.target.selectionEnd;
       let length = event.target.value.length;
 
-      if (keyCode === 27) {
+      // tab
+      if (keyCode === 9) {
+        this.pickerVisible = false;
+      } else if (keyCode === 27) {
         this.pickerVisible = this.picker.visible = false;
       // left
       } else if (keyCode === 37) {
@@ -414,9 +416,7 @@ export default {
     showPicker() {
       if (!this.picker) {
         this.panel.defaultValue = this.value;
-        this.picker = new Vue(merge({
-          el: document.createElement('div')
-        }, this.panel));
+        this.picker = new Vue(this.panel).$mount(document.createElement('div'));
         this.popperElm = this.picker.$el;
         this.picker.width = this.$refs.reference.getBoundingClientRect().width;
         this.picker.showTime = this.type === 'datetime' || this.type === 'datetimerange';

+ 0 - 16
packages/date-picker/src/util/index.js

@@ -8,22 +8,6 @@ const newArray = function(start, end) {
   return result;
 };
 
-export const merge = function(target) {
-  for (var i = 1, j = arguments.length; i < j; i++) {
-    var source = arguments[i];
-    for (var prop in source) {
-      if (source.hasOwnProperty(prop)) {
-        var value = source[prop];
-        if (value !== undefined) {
-          target[prop] = value;
-        }
-      }
-    }
-  }
-
-  return target;
-};
-
 export const toDate = function(date) {
   date = new Date(date);
   if (isNaN(date.getTime())) return null;