Popover: fix popover issues with hover display (#13104)

* Fix issue with popover displaying on focus when configuration is for it to show on hover.
Fix issue with popover timer still running when button clicked and parent element no longer visible (e.g. keepalive component).

* Updated to pass tests

* Correct documentation for el-date-picker

* Changes as per ziyoung review
pull/13685/head
Gideon King 2018-12-05 19:23:10 +10:00 committed by hetech
parent 62cce0e98c
commit 911ca6872a
2 changed files with 17 additions and 2 deletions

View File

@ -373,6 +373,8 @@ Pay attention to capitalization
| `yyyy` | year | | 2017 |
| `M` | month | no leading 0 | 1 |
| `MM` | month | | 01 |
| `MMM` | month | | Jan |
| `MMMM` | month | | January |
| `W` | week | only for week picker's `format`; no leading 0 | 1 |
| `WW` | week | only for week picker's `format`| 01 |
| `d` | day | no leading 0 | 2 |

View File

@ -123,6 +123,14 @@ export default {
}
},
beforeDestroy() {
this.cleanup();
},
deactivated() {
this.cleanup();
},
methods: {
doToggle() {
this.showPopper = !this.showPopper;
@ -135,14 +143,14 @@ export default {
},
handleFocus() {
addClass(this.referenceElm, 'focusing');
if (this.trigger !== 'manual') this.showPopper = true;
if (this.trigger === 'click' || this.trigger === 'focus') this.showPopper = true;
},
handleClick() {
removeClass(this.referenceElm, 'focusing');
},
handleBlur() {
removeClass(this.referenceElm, 'focusing');
if (this.trigger !== 'manual') this.showPopper = false;
if (this.trigger === 'click' || this.trigger === 'focus') this.showPopper = false;
},
handleMouseEnter() {
clearTimeout(this._timer);
@ -186,6 +194,11 @@ export default {
handleAfterLeave() {
this.$emit('after-leave');
this.doDestroy();
},
cleanup() {
if (this.openDelay) {
clearTimeout(this._timer);
}
}
},