Commit 657f9b9c authored by 杨奕's avatar 杨奕 Committed by GitHub

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

parent 4867f59d
...@@ -84,7 +84,13 @@ export default { ...@@ -84,7 +84,13 @@ export default {
popper.setAttribute('tabindex', 0); popper.setAttribute('tabindex', 0);
if (this.trigger !== 'click') { 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(popper, 'focusin', this.handleFocus);
on(reference, 'focusout', this.handleBlur); on(reference, 'focusout', this.handleBlur);
on(popper, 'focusout', this.handleBlur); on(popper, 'focusout', this.handleBlur);
......
...@@ -117,7 +117,18 @@ export default { ...@@ -117,7 +117,18 @@ export default {
this.$el.setAttribute('tabindex', 0); this.$el.setAttribute('tabindex', 0);
on(this.referenceElm, 'mouseenter', this.show); on(this.referenceElm, 'mouseenter', this.show);
on(this.referenceElm, 'mouseleave', this.hide); 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, 'blur', this.handleBlur);
on(this.referenceElm, 'click', this.removeFocusing); on(this.referenceElm, 'click', this.removeFocusing);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment