Tree: fix keydown event in Tree (#12008)

pull/12010/head
Jikkai Xiao 2018-07-16 17:09:38 +08:00 committed by GitHub
parent 55c97e588c
commit 4167809446
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 3 deletions

View File

@ -289,15 +289,15 @@
this.treeItems[0] && this.treeItems[0].setAttribute('tabindex', 0);
},
handelKeydown(ev) {
handleKeydown(ev) {
const currentItem = ev.target;
if (currentItem.className.indexOf('el-tree-node') === -1) return;
ev.preventDefault();
const keyCode = ev.keyCode;
this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]');
const currentIndex = this.treeItemArray.indexOf(currentItem);
let nextIndex;
if ([38, 40].indexOf(keyCode) > -1) { // updown
ev.preventDefault();
if (keyCode === 38) { // up
nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;
} else {
@ -306,10 +306,12 @@
this.treeItemArray[nextIndex].focus(); //
}
if ([37, 39].indexOf(keyCode) > -1) { // leftright
ev.preventDefault();
currentItem.click(); //
}
const hasInput = currentItem.querySelector('[type="checkbox"]');
if ([13, 32].indexOf(keyCode) > -1 && hasInput) { // space entercheckbox
ev.preventDefault();
hasInput.click();
}
}
@ -476,7 +478,7 @@
mounted() {
this.initTabIndex();
this.$el.addEventListener('keydown', this.handelKeydown);
this.$el.addEventListener('keydown', this.handleKeydown);
},
updated() {