diff --git a/src/share-sheet/README.md b/src/share-sheet/README.md index b265e5f53..ec78dec72 100644 --- a/src/share-sheet/README.md +++ b/src/share-sheet/README.md @@ -137,6 +137,7 @@ export default { | --- | --- | --- | | select | Triggered when click option | _option: Option, index: number_ | | cancel | Triggered when click cancel button | - | +| click-overlay `v2.9.1` | Triggered when click overlay | - | ### Slots diff --git a/src/share-sheet/README.zh-CN.md b/src/share-sheet/README.zh-CN.md index 74fd1b7cc..2b14c5b8f 100644 --- a/src/share-sheet/README.zh-CN.md +++ b/src/share-sheet/README.zh-CN.md @@ -181,10 +181,11 @@ export default { ### Events -| 事件名 | 说明 | 回调参数 | -| ------ | ------------------ | ------------------------------- | +| 事件名 | 说明 | 回调参数 | +| --- | --- | --- | | select | 点击分享选项时触发 | _option: Option, index: number_ | -| cancel | 点击取消按钮时触发 | - | +| cancel | 点击取消按钮时触发 | - | +| click-overlay `v2.9.1` | 点击遮罩层时触发 | - | ### Slots diff --git a/src/share-sheet/index.js b/src/share-sheet/index.js index 83ef08fc5..9dde4c5c4 100644 --- a/src/share-sheet/index.js +++ b/src/share-sheet/index.js @@ -122,6 +122,10 @@ export default createComponent({ ); } }, + + onClickOverlay() { + this.$emit('click-overlay'); + }, }, render() { @@ -140,6 +144,7 @@ export default createComponent({ closeOnClickOverlay={this.closeOnClickOverlay} safeAreaInsetBottom={this.safeAreaInsetBottom} onInput={this.toggle} + onClick-overlay={this.onClickOverlay} > {this.genHeader()} {this.genRows()} diff --git a/src/share-sheet/test/index.spec.js b/src/share-sheet/test/index.spec.js index 20b061dd3..7089c702e 100644 --- a/src/share-sheet/test/index.spec.js +++ b/src/share-sheet/test/index.spec.js @@ -1,5 +1,5 @@ import ShareSheet from '..'; -import { mount } from '../../../test'; +import { mount, trigger, later } from '../../../test'; test('cancel-text prop', () => { const wrapper = mount(ShareSheet, { @@ -70,3 +70,19 @@ test('title & description slot', () => { expect(wrapper).toMatchSnapshot(); }); + +test('click-overlay event', async () => { + const root = document.createElement('div'); + const wrapper = mount(ShareSheet, { + propsData: { + value: true, + getContainer: () => root, + }, + }); + + await later(); + + const overlay = root.querySelector('.van-overlay'); + trigger(overlay, 'click'); + expect(wrapper.emitted('click-overlay')).toBeTruthy(); +});