mirror of https://github.com/ElemeFE/element
Popover: add show/hide event
parent
0373211131
commit
8a4b7ba6d7
|
@ -225,3 +225,8 @@ Of course, you can nest other operations. It's more light-weight than using a di
|
||||||
| — | text content of popover |
|
| — | text content of popover |
|
||||||
| reference | HTML element that triggers popover |
|
| reference | HTML element that triggers popover |
|
||||||
|
|
||||||
|
### Events
|
||||||
|
| Event Name | Description | 回调参数 |
|
||||||
|
|---------|--------|---------|
|
||||||
|
| show | triggers when popover shows | - |
|
||||||
|
| hide | triggers when popover hides | - |
|
||||||
|
|
|
@ -251,3 +251,9 @@ Popover 的属性与 Tooltip 很类似,它们都是基于`Vue-popper`开发的
|
||||||
|--- | ---|
|
|--- | ---|
|
||||||
| — | Popover 内嵌 HTML 文本 |
|
| — | Popover 内嵌 HTML 文本 |
|
||||||
| reference | 触发 Popover 显示的 HTML 元素 |
|
| reference | 触发 Popover 显示的 HTML 元素 |
|
||||||
|
|
||||||
|
### Events
|
||||||
|
| 事件名称 | 说明 | 回调参数 |
|
||||||
|
|---------|--------|---------|
|
||||||
|
| show | 显示时触发 | — |
|
||||||
|
| hide | 隐藏时触发 | — |
|
||||||
|
|
|
@ -44,6 +44,12 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
showPopper(newVal, oldVal) {
|
||||||
|
newVal ? this.$emit('show') : this.$emit('hide');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
let reference = this.reference || this.$refs.reference;
|
let reference = this.reference || this.$refs.reference;
|
||||||
const popper = this.popper || this.$refs.popper;
|
const popper = this.popper || this.$refs.popper;
|
||||||
|
|
|
@ -205,6 +205,59 @@ describe('Popover', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('event', (done) => {
|
||||||
|
const createVM = (trigger) => {
|
||||||
|
return createVue({
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<el-popover
|
||||||
|
ref="popover"
|
||||||
|
trigger="${trigger}"
|
||||||
|
@show="handleShow"
|
||||||
|
@hide="handleHide"
|
||||||
|
content="content">
|
||||||
|
<button slot="reference">trigger ${trigger}</button>
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleShow() {
|
||||||
|
this.trigger = true;
|
||||||
|
},
|
||||||
|
handleHide() {
|
||||||
|
this.trigger = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
trigger: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
};
|
||||||
|
|
||||||
|
it('show/hide', () => {
|
||||||
|
vm = createVM('click');
|
||||||
|
const compo = vm.$refs.popover;
|
||||||
|
|
||||||
|
vm.$el.querySelector('button').click();
|
||||||
|
expect(compo.showPopper).to.true;
|
||||||
|
expect(vm.trigger).to.false;
|
||||||
|
document.body.click();
|
||||||
|
expect(compo.showPopper).to.false;
|
||||||
|
setTimeout(_ => {
|
||||||
|
expect(vm.trigger).to.true;
|
||||||
|
document.body.click();
|
||||||
|
setTimeout(_ => {
|
||||||
|
expect(vm.trigger).to.false;
|
||||||
|
}, 50);
|
||||||
|
done();
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('destroy event', () => {
|
it('destroy event', () => {
|
||||||
vm = createTest(Popover, {
|
vm = createTest(Popover, {
|
||||||
reference: document.createElement('div'),
|
reference: document.createElement('div'),
|
||||||
|
|
Loading…
Reference in New Issue