Skip to content

Commit 00bb86c

Browse files
feat(Popup): 添加实例方法 getPopper 获取 popper 实例 (#751)
* feat(Popup): 添加实例方法 `` 获取 popper 实例 * refactor: 修正换行符 * docs: 生成vue2 react 文档 * fix(api.json): 修正 event_output 字段的内容为 Instance * docs(Popup): 更新 getPopper 返回类型为 Instance * fix(api.json): 更新 event_output 字段类型为 "HTMLElement | null" 和 "Instance | null" * docs(Popup): 更新 getOverlay 和 getPopper 返回类型为 `HTMLElement | null` 和 `Instance | null` --------- Co-authored-by: liweijie <[email protected]>
1 parent b604a33 commit 00bb86c

File tree

13 files changed

+205
-41
lines changed

13 files changed

+205
-41
lines changed

db/TDesign.db

0 Bytes
Binary file not shown.

packages/products/tdesign-react/packages/components/popup/popup.en-US.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
:: BASE_DOC ::
22

33
## API
4+
45
### Popup Props
56

67
name | type | default | description | required
78
-- | -- | -- | -- | --
89
attach | String / Function | 'body' | Typescript:`AttachNode`[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
910
children | TNode | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
10-
closeBtn | TNode | - | Typescript:`boolean \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
1111
content | TNode | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
1212
delay | Number / Array | - | delay to show or hide popover。Typescript:`number \| Array<number>` | N
1313
destroyOnClose | Boolean | false | \- | N
@@ -20,10 +20,21 @@ overlayStyle | Boolean / Object / Function | - | Typescript:`Styles \| ((trigg
2020
placement | String | top | Typescript:`PopupPlacement` `type PopupPlacement = 'top'\|'left'\|'right'\|'bottom'\|'top-left'\|'top-right'\|'bottom-left'\|'bottom-right'\|'left-top'\|'left-bottom'\|'right-top'\|'right-bottom'`[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/popup/type.ts) | N
2121
popperOptions | Object | - | popper initial options,details refer to https://popper.js.org/docs | N
2222
showArrow | Boolean | false | \- | N
23-
trigger | String | hover | optionshover/click/focus/mousedown/context-menu | N
23+
trigger | String | hover | options: hover/click/focus/mousedown/context-menu | N
2424
triggerElement | TNode | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
2525
visible | Boolean | - | Typescript:`boolean` | N
26+
defaultVisible | Boolean | - | uncontrolled property。Typescript:`boolean` | N
2627
zIndex | Number | - | \- | N
28+
onOverlayClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`<br/>trigger on popup content click | N
2729
onScroll | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
2830
onScrollToBottom | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
2931
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' \| 'trigger-element-close' \| 'context-menu' \| 'keydown-esc'`<br/> | N
32+
33+
### PopupInstanceFunctions 组件实例方法
34+
35+
name | params | return | description
36+
-- | -- | -- | --
37+
getOverlay | \- | `HTMLElement \| null` | used to get overly html element
38+
getOverlayState | \- | `{ hover: boolean }` | get mouseover state of overlay
39+
getPopper | \- | `Instance \| null` | get the popup component popper instance。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/popup/type.ts)。<br/>`import { Instance } from '@popperjs/core'`<br/>
40+
update | \- | \- | used to update overlay content

packages/products/tdesign-react/packages/components/popup/popup.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
:: BASE_DOC ::
22

33
## API
4+
45
### Popup Props
56

6-
名称 | 类型 | 默认值 | 说明 | 必传
7+
名称 | 类型 | 默认值 | 描述 | 必传
78
-- | -- | -- | -- | --
8-
attach | String / Function | 'body' | 制定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body。TS 类型:`AttachNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
9+
attach | String / Function | 'body' | 指定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body。TS 类型:`AttachNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
910
children | TNode | - | 触发元素,同 triggerElement。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
10-
closeBtn | TNode | - | 是否展示关闭按钮,值为 `true` 显示默认关闭按钮;值为 `false` 则不显示关闭按钮;也可以自定义关闭按钮。TS 类型:`boolean \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
1111
content | TNode | - | 浮层里面的内容。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
1212
delay | Number / Array | - | 延时显示或隐藏浮层,[延迟显示的时间,延迟隐藏的时间],单位:毫秒。如果只有一个时间,则表示显示和隐藏的延迟时间相同。示例 `'300'` 或者 `[200, 200]`。默认为:[250, 150]。TS 类型:`number \| Array<number>` | N
1313
destroyOnClose | Boolean | false | 是否在关闭浮层时销毁浮层 | N
@@ -23,7 +23,18 @@ showArrow | Boolean | false | 是否显示浮层箭头 | N
2323
trigger | String | hover | 触发浮层出现的方式。可选项:hover/click/focus/mousedown/context-menu | N
2424
triggerElement | TNode | - | 触发元素。值类型为字符串表示元素选择器。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N
2525
visible | Boolean | - | 是否显示浮层。TS 类型:`boolean` | N
26+
defaultVisible | Boolean | - | 是否显示浮层。非受控属性。TS 类型:`boolean` | N
2627
zIndex | Number | - | 组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500 | N
28+
onOverlayClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`<br/>内容面板点击时触发 | N
2729
onScroll | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉选项滚动事件 | N
2830
onScrollToBottom | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉滚动触底事件,常用于滚动到底执行具体业务逻辑 | N
2931
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' \| 'trigger-element-close' \| 'context-menu' \| 'keydown-esc'`<br/> | N
32+
33+
### PopupInstanceFunctions 组件实例方法
34+
35+
名称 | 参数 | 返回值 | 描述
36+
-- | -- | -- | --
37+
getOverlay | \- | `HTMLElement \| null` | 获取浮层元素
38+
getOverlayState | \- | `{ hover: boolean }` | 获取浮层悬浮状态
39+
getPopper | \- | `Instance \| null` | 获取当前组件 popper 实例。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/popup/type.ts)。<br/>`import { Instance } from '@popperjs/core'`<br/>
40+
update | \- | \- | 更新浮层内容

packages/products/tdesign-react/packages/components/popup/type.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,20 @@
44
* 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC
55
* */
66

7+
import { Instance } from '@popperjs/core';
78
import { TNode, ClassName, Styles, AttachNode } from '../common';
89
import { MouseEvent, KeyboardEvent, FocusEvent, WheelEvent } from 'react';
910

1011
export interface TdPopupProps {
1112
/**
12-
* 制定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body
13+
* 指定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body
1314
* @default 'body'
1415
*/
1516
attach?: AttachNode;
1617
/**
1718
* 触发元素,同 triggerElement
1819
*/
1920
children?: TNode;
20-
/**
21-
* 是否展示关闭按钮,值为 `true` 显示默认关闭按钮;值为 `false` 则不显示关闭按钮;也可以自定义关闭按钮
22-
*/
23-
closeBtn?: TNode;
2421
/**
2522
* 浮层里面的内容
2623
*/
@@ -94,6 +91,10 @@ export interface TdPopupProps {
9491
* 组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500
9592
*/
9693
zIndex?: number;
94+
/**
95+
* 内容面板点击时触发
96+
*/
97+
onOverlayClick?: (context: { e: MouseEvent<HTMLDivElement> }) => void;
9798
/**
9899
* 下拉选项滚动事件
99100
*/
@@ -108,6 +109,26 @@ export interface TdPopupProps {
108109
onVisibleChange?: (visible: boolean, context: PopupVisibleChangeContext) => void;
109110
}
110111

112+
/** 组件实例方法 */
113+
export interface PopupInstanceFunctions {
114+
/**
115+
* 获取浮层元素
116+
*/
117+
getOverlay?: () => HTMLElement | null;
118+
/**
119+
* 获取浮层悬浮状态
120+
*/
121+
getOverlayState?: () => { hover: boolean };
122+
/**
123+
* 获取当前组件 popper 实例
124+
*/
125+
getPopper?: () => Instance | null;
126+
/**
127+
* 更新浮层内容
128+
*/
129+
update?: () => void;
130+
}
131+
111132
export type PopupPlacement =
112133
| 'top'
113134
| 'left'

packages/products/tdesign-vue-next/packages/components/popup/popup.en-US.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
:: BASE_DOC ::
22

33
## API
4+
45
### Popup Props
56

67
name | type | default | description | required
78
-- | -- | -- | -- | --
89
attach | String / Function | 'body' | Typescript:`AttachNode`[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
9-
closeBtn | Boolean / Slot / Function | - | Typescript:`boolean \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
1010
content | String / Slot / Function | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
1111
default | String / Slot / Function | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
1212
delay | Number / Array | - | delay to show or hide popover。Typescript:`number \| Array<number>` | N
@@ -20,10 +20,12 @@ overlayStyle | Boolean / Object / Function | - | Typescript:`Styles \| ((trigg
2020
placement | String | top | Typescript:`PopupPlacement` `type PopupPlacement = 'top'\|'left'\|'right'\|'bottom'\|'top-left'\|'top-right'\|'bottom-left'\|'bottom-right'\|'left-top'\|'left-bottom'\|'right-top'\|'right-bottom'`[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/popup/type.ts) | N
2121
popperOptions | Object | - | popper initial options,details refer to https://popper.js.org/docs | N
2222
showArrow | Boolean | false | \- | N
23-
trigger | String | hover | optionshover/click/focus/mousedown/context-menu | N
23+
trigger | String | hover | options: hover/click/focus/mousedown/context-menu | N
2424
triggerElement | String / Slot / Function | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
2525
visible | Boolean | - | `v-model` and `v-model:visible` is supported。Typescript:`boolean` | N
26+
defaultVisible | Boolean | - | uncontrolled property。Typescript:`boolean` | N
2627
zIndex | Number | - | \- | N
28+
onOverlayClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`<br/>trigger on popup content click | N
2729
onScroll | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
2830
onScrollToBottom | Function | | Typescript:`(context: { e: WheelEvent }) => void`<br/> | N
2931
onVisibleChange | Function | | Typescript:`(visible: boolean, context: PopupVisibleChangeContext) => void`<br/>[see more ts definition](https://github.com/Tencent/tdesign-vue-next/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' \| 'trigger-element-close' \| 'context-menu' \| 'keydown-esc'`<br/> | N
@@ -32,6 +34,16 @@ onVisibleChange | Function | | Typescript:`(visible: boolean, context: PopupV
3234

3335
name | params | description
3436
-- | -- | --
37+
overlay-click | `(context: { e: MouseEvent })` | trigger on popup content click
3538
scroll | `(context: { e: WheelEvent })` | \-
3639
scroll-to-bottom | `(context: { e: WheelEvent })` | \-
3740
visible-change | `(visible: boolean, context: PopupVisibleChangeContext)` | [see more ts definition](https://github.com/Tencent/tdesign-vue-next/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' \| 'trigger-element-close' \| 'context-menu' \| 'keydown-esc'`<br/>
41+
42+
### PopupInstanceFunctions 组件实例方法
43+
44+
name | params | return | description
45+
-- | -- | -- | --
46+
getOverlay | \- | `HTMLElement \| null` | used to get overly html element
47+
getOverlayState | \- | `{ hover: boolean }` | get mouseover state of overlay
48+
getPopper | \- | `Instance \| null` | get the popup component popper instance。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/popup/type.ts)。<br/>`import { Instance } from '@popperjs/core'`<br/>
49+
update | \- | \- | used to update overlay content

packages/products/tdesign-vue-next/packages/components/popup/popup.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
:: BASE_DOC ::
22

33
## API
4+
45
### Popup Props
56

6-
名称 | 类型 | 默认值 | 说明 | 必传
7+
名称 | 类型 | 默认值 | 描述 | 必传
78
-- | -- | -- | -- | --
8-
attach | String / Function | 'body' | 制定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body。TS 类型:`AttachNode`[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
9-
closeBtn | Boolean / Slot / Function | - | 是否展示关闭按钮,值为 `true` 显示默认关闭按钮;值为 `false` 则不显示关闭按钮;也可以自定义关闭按钮。TS 类型:`boolean \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
9+
attach | String / Function | 'body' | 指定挂载节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body。TS 类型:`AttachNode`[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
1010
content | String / Slot / Function | - | 浮层里面的内容。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
1111
default | String / Slot / Function | - | 触发元素,同 triggerElement。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
1212
delay | Number / Array | - | 延时显示或隐藏浮层,[延迟显示的时间,延迟隐藏的时间],单位:毫秒。如果只有一个时间,则表示显示和隐藏的延迟时间相同。示例 `'300'` 或者 `[200, 200]`。默认为:[250, 150]。TS 类型:`number \| Array<number>` | N
@@ -23,7 +23,9 @@ showArrow | Boolean | false | 是否显示浮层箭头 | N
2323
trigger | String | hover | 触发浮层出现的方式。可选项:hover/click/focus/mousedown/context-menu | N
2424
triggerElement | String / Slot / Function | - | 触发元素。值类型为字符串表示元素选择器。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N
2525
visible | Boolean | - | 是否显示浮层。支持语法糖 `v-model``v-model:visible`。TS 类型:`boolean` | N
26+
defaultVisible | Boolean | - | 是否显示浮层。非受控属性。TS 类型:`boolean` | N
2627
zIndex | Number | - | 组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500 | N
28+
onOverlayClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`<br/>内容面板点击时触发 | N
2729
onScroll | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉选项滚动事件 | N
2830
onScrollToBottom | Function | | TS 类型:`(context: { e: WheelEvent }) => void`<br/>下拉滚动触底事件,常用于滚动到底执行具体业务逻辑 | N
2931
onVisibleChange | Function | | TS 类型:`(visible: boolean, context: PopupVisibleChangeContext) => void`<br/>当浮层隐藏或显示时触发,`trigger=document` 表示点击非浮层元素触发;`trigger=context-menu` 表示右击触发。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/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' \| 'trigger-element-close' \| 'context-menu' \| 'keydown-esc'`<br/> | N
@@ -32,6 +34,16 @@ onVisibleChange | Function | | TS 类型:`(visible: boolean, context: PopupVi
3234

3335
名称 | 参数 | 描述
3436
-- | -- | --
37+
overlay-click | `(context: { e: MouseEvent })` | 内容面板点击时触发
3538
scroll | `(context: { e: WheelEvent })` | 下拉选项滚动事件
3639
scroll-to-bottom | `(context: { e: WheelEvent })` | 下拉滚动触底事件,常用于滚动到底执行具体业务逻辑
3740
visible-change | `(visible: boolean, context: PopupVisibleChangeContext)` | 当浮层隐藏或显示时触发,`trigger=document` 表示点击非浮层元素触发;`trigger=context-menu` 表示右击触发。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/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' \| 'trigger-element-close' \| 'context-menu' \| 'keydown-esc'`<br/>
41+
42+
### PopupInstanceFunctions 组件实例方法
43+
44+
名称 | 参数 | 返回值 | 描述
45+
-- | -- | -- | --
46+
getOverlay | \- | `HTMLElement \| null` | 获取浮层元素
47+
getOverlayState | \- | `{ hover: boolean }` | 获取浮层悬浮状态
48+
getPopper | \- | `Instance \| null` | 获取当前组件 popper 实例。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/popup/type.ts)。<br/>`import { Instance } from '@popperjs/core'`<br/>
49+
update | \- | \- | 更新浮层内容

0 commit comments

Comments
 (0)