mirror of https://github.com/ElemeFE/element
Popover & Tooltip: focus reference element on tab if it's focusable (#9990)
parent
4867f59d6f
commit
657f9b9c3a
|
@ -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 {
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue