Commit 8a4b7ba6 authored by reverland's avatar reverland Committed by 杨奕

Popover: add show/hide event

parent 03732111
......@@ -225,3 +225,8 @@ Of course, you can nest other operations. It's more light-weight than using a di
| — | text content of 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 文本 |
| reference | 触发 Popover 显示的 HTML 元素 |
### Events
| 事件名称 | 说明 | 回调参数 |
|---------|--------|---------|
| show | 显示时触发 | — |
| hide | 隐藏时触发 | — |
......@@ -44,6 +44,12 @@ export default {
}
},
watch: {
showPopper(newVal, oldVal) {
newVal ? this.$emit('show') : this.$emit('hide');
}
},
mounted() {
let reference = this.reference || this.$refs.reference;
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', () => {
vm = createTest(Popover, {
reference: document.createElement('div'),
......
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