Commit 45815504 authored by FuryBean's avatar FuryBean Committed by 杨奕

Popover: fix popover hiding unexpectedly due to accessibility events (#9294)

parent 6ce4b313
...@@ -77,9 +77,14 @@ export default { ...@@ -77,9 +77,14 @@ export default {
addClass(reference, 'el-popover__reference'); addClass(reference, 'el-popover__reference');
reference.setAttribute('aria-describedby', this.tooltipId); reference.setAttribute('aria-describedby', this.tooltipId);
reference.setAttribute('tabindex', 0); // tab序列 reference.setAttribute('tabindex', 0); // tab序列
popper.setAttribute('tabindex', 0);
this.trigger !== 'click' && on(reference, 'focus', this.handleFocus); if (this.trigger !== 'click') {
this.trigger !== 'click' && on(reference, 'blur', this.handleBlur); on(reference, 'focusin', this.handleFocus);
on(popper, 'focusin', this.handleFocus);
on(reference, 'focusout', this.handleBlur);
on(popper, 'focusout', this.handleBlur);
}
on(reference, 'keydown', this.handleKeydown); on(reference, 'keydown', this.handleKeydown);
on(reference, 'click', this.handleClick); on(reference, 'click', this.handleClick);
} }
...@@ -100,8 +105,8 @@ export default { ...@@ -100,8 +105,8 @@ export default {
for (let i = 0; i < len; i++) { for (let i = 0; i < len; i++) {
if (children[i].nodeName === 'INPUT' || if (children[i].nodeName === 'INPUT' ||
children[i].nodeName === 'TEXTAREA') { children[i].nodeName === 'TEXTAREA') {
on(children[i], 'focus', this.doShow); on(children[i], 'focusin', this.doShow);
on(children[i], 'blur', this.doClose); on(children[i], 'focusout', this.doClose);
found = true; found = true;
break; break;
} }
...@@ -110,8 +115,8 @@ export default { ...@@ -110,8 +115,8 @@ export default {
if (found) return; if (found) return;
if (reference.nodeName === 'INPUT' || if (reference.nodeName === 'INPUT' ||
reference.nodeName === 'TEXTAREA') { reference.nodeName === 'TEXTAREA') {
on(reference, 'focus', this.doShow); on(reference, 'focusin', this.doShow);
on(reference, 'blur', this.doClose); on(reference, 'focusout', this.doClose);
} else { } else {
on(reference, 'mousedown', this.doShow); on(reference, 'mousedown', this.doShow);
on(reference, 'mouseup', this.doClose); on(reference, 'mouseup', this.doClose);
...@@ -184,8 +189,8 @@ export default { ...@@ -184,8 +189,8 @@ export default {
off(reference, 'click', this.doToggle); off(reference, 'click', this.doToggle);
off(reference, 'mouseup', this.doClose); off(reference, 'mouseup', this.doClose);
off(reference, 'mousedown', this.doShow); off(reference, 'mousedown', this.doShow);
off(reference, 'focus', this.doShow); off(reference, 'focusin', this.doShow);
off(reference, 'blur', this.doClose); off(reference, 'focusout', this.doClose);
off(reference, 'mouseleave', this.handleMouseLeave); off(reference, 'mouseleave', this.handleMouseLeave);
off(reference, 'mouseenter', this.handleMouseEnter); off(reference, 'mouseenter', this.handleMouseEnter);
off(document, 'click', this.handleDocumentClick); off(document, 'click', this.handleDocumentClick);
......
...@@ -32,4 +32,8 @@ ...@@ -32,4 +32,8 @@
outline-width: 0; outline-width: 0;
} }
} }
&:focus:active, &:focus {
outline-width: 0;
}
} }
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