1 | /// <reference types="react" />
|
2 |
|
3 | import * as React from 'react';
|
4 | import CommonProps from '../util';
|
5 |
|
6 | export interface PopupProps extends React.HTMLAttributes<HTMLElement>, CommonProps {
|
7 | /**
|
8 | * 弹层内容
|
9 | */
|
10 | children?: React.ReactNode;
|
11 | autoFit?: boolean;
|
12 |
|
13 | /**
|
14 | * 弹层当前是否显示
|
15 | */
|
16 | visible?: boolean;
|
17 |
|
18 | /**
|
19 | * 弹层请求关闭时触发事件的回调函数
|
20 | */
|
21 | onRequestClose?: (type: string, e: React.MouseEvent) => void;
|
22 |
|
23 | /**
|
24 | * 弹层定位的参照元素
|
25 | */
|
26 | target?: any;
|
27 |
|
28 | /**
|
29 | * 弹层相对于参照元素的定位, 详见开发指南的[定位部分](#定位)
|
30 | */
|
31 | align?: string | boolean;
|
32 |
|
33 | /**
|
34 | * 弹层相对于参照元素定位的微调
|
35 | */
|
36 | offset?: Array<any>;
|
37 |
|
38 | /**
|
39 | * 渲染组件的容器,如果是函数需要返回 ref,如果是字符串则是该 DOM 的 id,也可以直接传入 DOM 节点
|
40 | */
|
41 | container?: any;
|
42 |
|
43 | /**
|
44 | * 是否显示遮罩
|
45 | */
|
46 | hasMask?: boolean;
|
47 |
|
48 | /**
|
49 | * 是否支持 esc 按键关闭弹层
|
50 | */
|
51 | canCloseByEsc?: boolean;
|
52 |
|
53 | /**
|
54 | * 点击弹层外的区域是否关闭弹层,不显示遮罩时生效
|
55 | */
|
56 | canCloseByOutSideClick?: boolean;
|
57 |
|
58 | /**
|
59 | * 点击遮罩区域是否关闭弹层,显示遮罩时生效
|
60 | */
|
61 | canCloseByMask?: boolean;
|
62 |
|
63 | /**
|
64 | * 弹层打开前触发事件的回调函数
|
65 | */
|
66 | beforeOpen?: () => void;
|
67 |
|
68 | /**
|
69 | * 弹层打开时触发事件的回调函数
|
70 | */
|
71 | onOpen?: () => void;
|
72 |
|
73 | /**
|
74 | * 弹层打开后触发事件的回调函数, 如果有动画,则在动画结束后触发
|
75 | */
|
76 | afterOpen?: () => void;
|
77 |
|
78 | /**
|
79 | * 弹层关闭前触发事件的回调函数
|
80 | */
|
81 | beforeClose?: () => void;
|
82 |
|
83 | /**
|
84 | * 弹层关闭时触发事件的回调函数
|
85 | */
|
86 | onClose?: () => void;
|
87 |
|
88 | /**
|
89 | * 弹层关闭后触发事件的回调函数, 如果有动画,则在动画结束后触发
|
90 | */
|
91 | afterClose?: () => void;
|
92 |
|
93 | /**
|
94 | * 弹层定位完成前触发的事件
|
95 | */
|
96 | beforePosition?: () => void;
|
97 |
|
98 | /**
|
99 | * 弹层定位完成时触发的事件
|
100 | */
|
101 | onPosition?: (config: {}, node: {}) => void;
|
102 |
|
103 | /**
|
104 | * 是否在每次弹层重新渲染后强制更新定位信息,一般用于弹层内容区域大小发生变化时,仍需保持原来的定位方式
|
105 | */
|
106 | shouldUpdatePosition?: boolean;
|
107 |
|
108 | /**
|
109 | * 弹层打开时是否让其中的元素自动获取焦点
|
110 | */
|
111 | autoFocus?: boolean;
|
112 |
|
113 | /**
|
114 | * 当弹层由于页面滚动等情况不在可视区域时,是否自动调整定位以出现在可视区域
|
115 | */
|
116 | needAdjust?: boolean;
|
117 |
|
118 | /**
|
119 | * 是否禁用页面滚动
|
120 | */
|
121 | disableScroll?: boolean;
|
122 |
|
123 | /**
|
124 | * 隐藏时是否保留子节点
|
125 | */
|
126 | cache?: boolean;
|
127 |
|
128 | /**
|
129 | * 安全节点,当点击 document 的时候,如果包含该节点则不会关闭弹层,如果是函数需要返回 ref,如果是字符串则是该 DOM 的 id,也可以直接传入 DOM 节点,或者以上值组成的数组
|
130 | */
|
131 | safeNode?: any;
|
132 |
|
133 | /**
|
134 | * 弹层的根节点的样式类
|
135 | */
|
136 | wrapperClassName?: string;
|
137 |
|
138 | /**
|
139 | * 弹层的根节点的内联样式
|
140 | */
|
141 | wrapperStyle?: React.CSSProperties;
|
142 |
|
143 | /**
|
144 | * 配置动画的播放方式,支持 { in: 'enter-class', out: 'leave-class' } 的对象参数,如果设置为 false,则不播放动画。 请参考 Animate 组件的文档获取可用的动画名
|
145 | */
|
146 | animation?: any | boolean;
|
147 |
|
148 | /**
|
149 | * 触发弹层显示或隐藏的元素
|
150 | */
|
151 | trigger?: React.ReactElement<any>;
|
152 |
|
153 | /**
|
154 | * 触发弹层显示或隐藏的操作类型,可以是 'click','hover','focus',或者它们组成的数组,如 ['hover', 'focus']
|
155 | */
|
156 | triggerType?: string | Array<any>;
|
157 |
|
158 | /**
|
159 | * 当 triggerType 为 click 时才生效,可自定义触发弹层显示的键盘码
|
160 | */
|
161 | triggerClickKeycode?: number | Array<any>;
|
162 |
|
163 | /**
|
164 | * 弹层默认是否显示
|
165 | */
|
166 | defaultVisible?: boolean;
|
167 |
|
168 | /**
|
169 | * 弹层显示或隐藏时触发的回调函数, v2 版本第二个参数是 event
|
170 | */
|
171 | onVisibleChange?: (visible: boolean, type: string | object, e?: {}) => void;
|
172 |
|
173 | /**
|
174 | * 设置此属性,弹层无法显示或隐藏
|
175 | */
|
176 | disabled?: boolean;
|
177 |
|
178 | /**
|
179 | * 弹层显示或隐藏的延时时间(以毫秒为单位),在 triggerType 被设置为 hover 时生效
|
180 | */
|
181 | delay?: number;
|
182 |
|
183 | /**
|
184 | * trigger 是否可以关闭弹层
|
185 | */
|
186 | canCloseByTrigger?: boolean;
|
187 |
|
188 | /**
|
189 | * 是否跟随trigger滚动
|
190 | */
|
191 | followTrigger?: boolean;
|
192 |
|
193 | /**
|
194 | * 开启 v2 版本
|
195 | */
|
196 | v2?: boolean;
|
197 |
|
198 | /**
|
199 | * [v2可用]
|
200 | * 快捷位置
|
201 | */
|
202 | placement?: string;
|
203 | }
|
204 |
|
205 | export class Popup extends React.Component<PopupProps, any> {}
|
206 | export interface OverlayProps extends React.HTMLAttributes<HTMLElement>, CommonProps {
|
207 | /**
|
208 | * 弹层内容
|
209 | */
|
210 | children?: any;
|
211 |
|
212 | /**
|
213 | * 是否显示弹层
|
214 | */
|
215 | visible?: boolean;
|
216 |
|
217 | /**
|
218 | * 弹层请求关闭时触发事件的回调函数, v2 版本第一个参数是 event
|
219 | */
|
220 | onRequestClose?: (type: string | object, e: React.MouseEvent) => void;
|
221 |
|
222 | /**
|
223 | * 弹层定位的参照元素
|
224 | */
|
225 | target?: any;
|
226 |
|
227 | /**
|
228 | * 弹层相对于参照元素的定位, 详见开发指南的[定位部分](#定位)
|
229 | */
|
230 | align?: string | boolean;
|
231 |
|
232 | /**
|
233 | * 弹层相对于参照元素定位的微调
|
234 | */
|
235 | offset?: Array<any>;
|
236 |
|
237 | /**
|
238 | * 渲染组件的容器,如果是函数需要返回 ref,如果是字符串则是该 DOM 的 id,也可以直接传入 DOM 节点
|
239 | */
|
240 | container?: any;
|
241 |
|
242 | /**
|
243 | * 是否显示遮罩
|
244 | */
|
245 | hasMask?: boolean;
|
246 |
|
247 | /**
|
248 | * 是否支持 esc 按键关闭弹层
|
249 | */
|
250 | canCloseByEsc?: boolean;
|
251 |
|
252 | /**
|
253 | * 点击弹层外的区域是否关闭弹层,不显示遮罩时生效
|
254 | */
|
255 | canCloseByOutSideClick?: boolean;
|
256 |
|
257 | /**
|
258 | * 点击遮罩区域是否关闭弹层,显示遮罩时生效
|
259 | */
|
260 | canCloseByMask?: boolean;
|
261 |
|
262 | /**
|
263 | * 弹层打开前触发事件的回调函数
|
264 | */
|
265 | beforeOpen?: () => void;
|
266 |
|
267 | /**
|
268 | * 弹层打开时触发事件的回调函数
|
269 | */
|
270 | onOpen?: () => void;
|
271 |
|
272 | /**
|
273 | * 弹层打开后触发事件的回调函数, 如果有动画,则在动画结束后触发
|
274 | */
|
275 | afterOpen?: () => void;
|
276 |
|
277 | /**
|
278 | * 弹层关闭前触发事件的回调函数
|
279 | */
|
280 | beforeClose?: () => void;
|
281 |
|
282 | /**
|
283 | * 弹层关闭时触发事件的回调函数
|
284 | */
|
285 | onClose?: () => void;
|
286 |
|
287 | /**
|
288 | * 弹层关闭后触发事件的回调函数, 如果有动画,则在动画结束后触发
|
289 | */
|
290 | afterClose?: () => void;
|
291 |
|
292 | /**
|
293 | * 弹层定位完成前触发的事件
|
294 | */
|
295 | beforePosition?: () => void;
|
296 |
|
297 | /**
|
298 | * 弹层定位完成时触发的事件
|
299 | */
|
300 | onPosition?: (config: {}, node: {}) => void;
|
301 |
|
302 | /**
|
303 | * 是否在每次弹层重新渲染后强制更新定位信息,一般用于弹层内容区域大小发生变化时,仍需保持原来的定位方式
|
304 | */
|
305 | shouldUpdatePosition?: boolean;
|
306 |
|
307 | /**
|
308 | * 弹层打开时是否让其中的元素自动获取焦点
|
309 | */
|
310 | autoFocus?: boolean;
|
311 |
|
312 | /**
|
313 | * 当弹层由于页面滚动等情况不在可视区域时,是否自动调整定位以出现在可视区域
|
314 | * @depreacted in v2
|
315 | */
|
316 | needAdjust?: boolean;
|
317 |
|
318 | /**
|
319 | * 浮窗被遮挡时是否自动调整位置
|
320 | */
|
321 | autoAdjust?: boolean;
|
322 |
|
323 | /**
|
324 | * 是否禁用页面滚动
|
325 | */
|
326 | disableScroll?: boolean;
|
327 |
|
328 | /**
|
329 | * 隐藏时是否保留子节点
|
330 | */
|
331 | cache?: boolean;
|
332 |
|
333 | /**
|
334 | * 安全节点,当点击 document 的时候,如果包含该节点则不会关闭弹层,如果是函数需要返回 ref,如果是字符串则是该 DOM 的 id,也可以直接传入 DOM 节点,或者以上值组成的数组
|
335 | */
|
336 | safeNode?: any;
|
337 |
|
338 | /**
|
339 | * 弹层的根节点的样式类
|
340 | */
|
341 | wrapperClassName?: string;
|
342 |
|
343 | /**
|
344 | * 弹层的根节点的内联样式
|
345 | */
|
346 | wrapperStyle?: React.CSSProperties;
|
347 | /**
|
348 | * 配置动画的播放方式,支持 { in: 'enter-class', out: 'leave-class' } 的对象参数,如果设置为 false,则不播放动画。 请参考 Animate 组件的文档获取可用的动画名
|
349 | */
|
350 | animation?: { in: string; out: string;} | boolean;
|
351 | /**
|
352 | * 开启 v2 版本
|
353 | */
|
354 | v2?: boolean;
|
355 | /**
|
356 | * 是否在捕获阶段监听,适配 react 17 事件模型变更
|
357 | */
|
358 | useCapture?: boolean;
|
359 | }
|
360 |
|
361 | export default class Overlay extends React.Component<OverlayProps, any> {
|
362 | static Popup: typeof Popup;
|
363 | }
|