Popover & Tooltip: focus reference element on tab if it's focusable (#9990)

pull/9991/head
杨奕 2018-03-04 11:16:06 +08:00 committed by GitHub
parent 4867f59d6f
commit 657f9b9c3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 2 deletions

View File

@ -84,7 +84,13 @@ export default {
popper.setAttribute('tabindex', 0);
if (this.trigger !== 'click') {
on(reference, 'focusin', this.handleFocus);
on(reference, 'focusin', () => {
this.handleFocus();
const instance = reference.__vue__;
if (instance && instance.focus) {
instance.focus();
}
});
on(popper, 'focusin', this.handleFocus);
on(reference, 'focusout', this.handleBlur);
on(popper, 'focusout', this.handleBlur);

View File

@ -117,7 +117,18 @@ export default {
this.$el.setAttribute('tabindex', 0);
on(this.referenceElm, 'mouseenter', this.show);
on(this.referenceElm, 'mouseleave', this.hide);
on(this.referenceElm, 'focus', this.handleFocus);
on(this.referenceElm, 'focus', () => {
if (!this.$slots.default || !this.$slots.default.length) {
this.handleFocus();
return;
}
const instance = this.$slots.default[0].componentInstance;
if (instance && instance.focus) {
instance.focus();
} else {
this.handleFocus();
}
});
on(this.referenceElm, 'blur', this.handleBlur);
on(this.referenceElm, 'click', this.removeFocusing);
}