Skip to content

Commit 9c00d8a

Browse files
authored
feat(popup): add onOverlayClick event (#3752)
1 parent 820ec18 commit 9c00d8a

File tree

5 files changed

+13
-0
lines changed

5 files changed

+13
-0
lines changed

src/popup/popup.en-US.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ triggerElement | String / Slot / Function | - | Typescript:`string \| TNode`
2525
visible | Boolean | - | `v-model` is supported。Typescript:`boolean` | N
2626
defaultVisible | Boolean | - | uncontrolled property。Typescript:`boolean` | N
2727
zIndex | Number | - | \- | N
28+
onOverlayClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`<br/>trigger on popup content click | N
2829
onScroll | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
2930
onScrollToBottom | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
3031
onVisibleChange | Function | | Typescript:`(visible: boolean, context: PopupVisibleChangeContext) => void`<br/>[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/popup/type.ts)。<br/>`interface PopupVisibleChangeContext { e?: PopupTriggerEvent; trigger?: PopupTriggerSource }`<br/><br/>`type PopupTriggerEvent = MouseEvent \| FocusEvent \| KeyboardEvent`<br/><br/>`type PopupTriggerSource = 'document' \| 'trigger-element-click' \| 'trigger-element-hover' \| 'trigger-element-blur' \| 'trigger-element-focus' \| 'trigger-element-mousedown' \| 'context-menu' \| 'keydown-esc'`<br/> | N
@@ -33,6 +34,7 @@ onVisibleChange | Function | | Typescript:`(visible: boolean, context: PopupV
3334

3435
name | params | description
3536
-- | -- | --
37+
overlay-click | `(context: { e: MouseEvent })` | trigger on popup content click
3638
scroll | `(context: { e: WheelEvent })` | \-
3739
scroll-to-bottom | `(context: { e: WheelEvent })` | \-
3840
visible-change | `(visible: boolean, context: PopupVisibleChangeContext)` | [see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/popup/type.ts)。<br/>`interface PopupVisibleChangeContext { e?: PopupTriggerEvent; trigger?: PopupTriggerSource }`<br/><br/>`type PopupTriggerEvent = MouseEvent \| FocusEvent \| KeyboardEvent`<br/><br/>`type PopupTriggerSource = 'document' \| 'trigger-element-click' \| 'trigger-element-hover' \| 'trigger-element-blur' \| 'trigger-element-focus' \| 'trigger-element-mousedown' \| 'context-menu' \| 'keydown-esc'`<br/>

src/popup/popup.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ triggerElement | String / Slot / Function | - | 触发元素。值类型为字
3535
visible | Boolean | - | 是否显示浮层。支持语法糖 `v-model`。TS 类型:`boolean` | N
3636
defaultVisible | Boolean | - | 是否显示浮层。非受控属性。TS 类型:`boolean` | N
3737
zIndex | Number | - | 组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500 | N
38+
onOverlayClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`<br/>内容面板点击时触发 | N
3839
onScroll | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉选项滚动事件 | N
3940
onScrollToBottom | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉滚动触底事件,常用于滚动到底执行具体业务逻辑 | N
4041
onVisibleChange | Function | | TS 类型:`(visible: boolean, context: PopupVisibleChangeContext) => void`<br/>当浮层隐藏或显示时触发,`trigger=document` 表示点击非浮层元素触发;`trigger=context-menu` 表示右击触发。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/popup/type.ts)。<br/>`interface PopupVisibleChangeContext { e?: PopupTriggerEvent; trigger?: PopupTriggerSource }`<br/><br/>`type PopupTriggerEvent = MouseEvent \| FocusEvent \| KeyboardEvent`<br/><br/>`type PopupTriggerSource = 'document' \| 'trigger-element-click' \| 'trigger-element-hover' \| 'trigger-element-blur' \| 'trigger-element-focus' \| 'trigger-element-mousedown' \| 'context-menu' \| 'keydown-esc'`<br/> | N
@@ -43,6 +44,7 @@ onVisibleChange | Function | | TS 类型:`(visible: boolean, context: PopupVi
4344

4445
名称 | 参数 | 描述
4546
-- | -- | --
47+
overlay-click | `(context: { e: MouseEvent })` | 内容面板点击时触发
4648
scroll | `(context: { e: WheelEvent })` | 下拉选项滚动事件
4749
scroll-to-bottom | `(context: { e: WheelEvent })` | 下拉滚动触底事件,常用于滚动到底执行具体业务逻辑
4850
visible-change | `(visible: boolean, context: PopupVisibleChangeContext)` | 当浮层隐藏或显示时触发,`trigger=document` 表示点击非浮层元素触发;`trigger=context-menu` 表示右击触发。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/popup/type.ts)。<br/>`interface PopupVisibleChangeContext { e?: PopupTriggerEvent; trigger?: PopupTriggerSource }`<br/><br/>`type PopupTriggerEvent = MouseEvent \| FocusEvent \| KeyboardEvent`<br/><br/>`type PopupTriggerSource = 'document' \| 'trigger-element-click' \| 'trigger-element-hover' \| 'trigger-element-blur' \| 'trigger-element-focus' \| 'trigger-element-mousedown' \| 'context-menu' \| 'keydown-esc'`<br/>

src/popup/popup.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,9 @@ export default mixins(classPrefixMixins, getAttachConfigMixins('popup')).extend(
437437
mousedown: () => {
438438
this.contentClicked = true;
439439
},
440+
click: (e: MouseEvent) => {
441+
emitEvent(this, 'overlay-click', { e });
442+
},
440443
...(hasTrigger.hover && {
441444
mouseenter: this.onMouseEnter,
442445
mouseleave: this.onMouseLeave,

src/popup/props.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ export default {
8181
zIndex: {
8282
type: Number,
8383
},
84+
/** 内容面板点击时触发 */
85+
onOverlayClick: Function as PropType<TdPopupProps['onOverlayClick']>,
8486
/** 下拉选项滚动事件 */
8587
onScroll: Function as PropType<TdPopupProps['onScroll']>,
8688
/** 下拉滚动触底事件,常用于滚动到底执行具体业务逻辑 */

src/popup/type.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ export interface TdPopupProps {
8989
* 组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500
9090
*/
9191
zIndex?: number;
92+
/**
93+
* 内容面板点击时触发
94+
*/
95+
onOverlayClick?: (context: { e: MouseEvent }) => void;
9296
/**
9397
* 下拉选项滚动事件
9498
*/

0 commit comments

Comments
 (0)