diff --git a/packages/mixins/popup/index.js b/packages/mixins/popup/index.js index afce5a964..525f0d40c 100644 --- a/packages/mixins/popup/index.js +++ b/packages/mixins/popup/index.js @@ -48,8 +48,10 @@ export default { watch: { value(val) { + const type = val ? 'open' : 'close'; this.inited = this.inited || this.value; - this[val ? 'open' : 'close'](); + this[type](); + this.$emit(type); }, getContainer() { diff --git a/packages/popup/en-US.md b/packages/popup/en-US.md index af1ab874f..631303bc1 100644 --- a/packages/popup/en-US.md +++ b/packages/popup/en-US.md @@ -54,4 +54,6 @@ Use `position` prop to set popup display position | Event | Description | Arguments | |------|------|------| +| open | Triggered when open Popup | - | +| close | Triggered when close Popup | - | | click-overlay | Triggered when click overlay | - | diff --git a/packages/popup/test/index.spec.js b/packages/popup/test/index.spec.js index 793b8a991..be18b3b6f 100644 --- a/packages/popup/test/index.spec.js +++ b/packages/popup/test/index.spec.js @@ -141,3 +141,11 @@ test('close on click modal', () => { modal.click(); expect(wrapper.vm.value).toBeFalsy(); }); + +test('oepn & close event', () => { + wrapper = mount(Popup); + wrapper.vm.value = true; + expect(wrapper.emitted('open')).toBeTruthy(); + wrapper.vm.value = false; + expect(wrapper.emitted('close')).toBeTruthy(); +}); diff --git a/packages/popup/zh-CN.md b/packages/popup/zh-CN.md index 96be4b379..7942ed273 100644 --- a/packages/popup/zh-CN.md +++ b/packages/popup/zh-CN.md @@ -54,4 +54,6 @@ export default { | 事件名 | 说明 | 参数 | |------|------|------| +| open | 打开弹出层时触发 | - | +| close | 关闭弹出层时触发 | - | | click-overlay | 点击蒙层时触发 | - |