Skip to content

Commit cab9d43

Browse files
authored
feat(Popup): add onOverlayClick prop to handle overlay click events (#3927)
1 parent 4713100 commit cab9d43

File tree

4 files changed

+10
-1
lines changed

4 files changed

+10
-1
lines changed

packages/components/popup/Popup.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ const Popup = forwardRef<PopupRef, PopupProps>((originalProps, ref) => {
214214
className={classNames(`${classPrefix}-popup`, overlayClassName)}
215215
{...attributes.popper}
216216
{...getPopupProps()}
217+
onClick={(e) => props.onOverlayClick?.({ e })}
217218
>
218219
<div
219220
ref={contentRef}

packages/components/popup/popup.en-US.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Currently, this can be solved by `Fragment` or other `HTML` elements
3838
```
3939

4040
## API
41+
4142
### Popup Props
4243

4344
name | type | default | description | required
@@ -61,6 +62,7 @@ triggerElement | TNode | - | Typescript:`string \| TNode`。[see more ts defin
6162
visible | Boolean | - | Typescript:`boolean` | N
6263
defaultVisible | Boolean | - | uncontrolled property。Typescript:`boolean` | N
6364
zIndex | Number | - | \- | N
65+
onOverlayClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`<br/>trigger on popup content click | N
6466
onScroll | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
6567
onScrollToBottom | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
6668
onVisibleChange | Function | | Typescript:`(visible: boolean, context: PopupVisibleChangeContext) => void`<br/>[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/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

packages/components/popup/popup.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ https://popper.js.org/docs/v2/constructors/#types
3838
```
3939

4040
## API
41+
4142
### Popup Props
4243

43-
名称 | 类型 | 默认值 | 说明 | 必传
44+
名称 | 类型 | 默认值 | 描述 | 必传
4445
-- | -- | -- | -- | --
4546
attach | String / Function | 'body' | 制定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body。TS 类型:`AttachNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
4647
children | TNode | - | 触发元素,同 triggerElement。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
@@ -61,6 +62,7 @@ triggerElement | TNode | - | 触发元素。值类型为字符串表示元素选
6162
visible | Boolean | - | 是否显示浮层。TS 类型:`boolean` | N
6263
defaultVisible | Boolean | - | 是否显示浮层。非受控属性。TS 类型:`boolean` | N
6364
zIndex | Number | - | 组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500 | N
65+
onOverlayClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`<br/>内容面板点击时触发 | N
6466
onScroll | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉选项滚动事件 | N
6567
onScrollToBottom | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉滚动触底事件,常用于滚动到底执行具体业务逻辑 | N
6668
onVisibleChange | Function | | TS 类型:`(visible: boolean, context: PopupVisibleChangeContext) => void`<br/>当浮层隐藏或显示时触发,`trigger=document` 表示点击非浮层元素触发;`trigger=context-menu` 表示右击触发。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/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

packages/components/popup/type.ts

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

0 commit comments

Comments
 (0)