UNPKG

6.29 kBTypeScriptView Raw
1/// <reference types="react" />
2
3import * as React from 'react';
4import CommonProps from '../util';
5import { ButtonProps } from '../button';
6import { OverlayProps } from '../overlay';
7
8export type CloseMode = 'close' | 'mask' | 'esc';
9interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
10 title?: any;
11}
12
13export interface DialogProps extends Omit<HTMLAttributesWeak, 'content'>, CommonProps {
14 /**
15 * 是否显示
16 */
17 visible?: boolean;
18
19 /**
20 * 标题
21 */
22 title?: React.ReactNode;
23
24 /**
25 * 内容
26 */
27 children?: React.ReactNode;
28
29 /**
30 * 底部内容,设置为 false,则不进行显示
31 */
32 footer?: boolean | React.ReactNode;
33
34 /**
35 * 底部按钮的对齐方式
36 */
37 footerAlign?: 'left' | 'center' | 'right';
38
39 /**
40 * 指定确定按钮和取消按钮是否存在以及如何排列,<br><br>**可选值**:
41 * ['ok', 'cancel'](确认取消按钮同时存在,确认按钮在左)
42 * ['cancel', 'ok'](确认取消按钮同时存在,确认按钮在右)
43 * ['ok'](只存在确认按钮)
44 * ['cancel'](只存在取消按钮)
45 */
46 footerActions?: Array<string>;
47
48 /**
49 * 隐藏时是否保留子节点,不销毁
50 */
51 cache?: boolean;
52
53 /**
54 * 在点击确定按钮时触发的回调函数
55 */
56 onOk?: (event: React.MouseEvent) => void;
57
58 /**
59 * 在点击取消按钮时触发的回调函数
60 */
61 onCancel?: (event: React.MouseEvent) => void;
62
63 /**
64 * 应用于确定按钮的属性对象
65 */
66 okProps?: ButtonProps;
67
68 /**
69 * 应用于取消按钮的属性对象
70 */
71 cancelProps?: ButtonProps;
72
73 /**
74 * [废弃]同closeMode, 控制对话框关闭的方式,值可以为字符串或者布尔值,其中字符串是由以下值组成:
75 * **close** 表示点击关闭按钮可以关闭对话框
76 * **mask** 表示点击遮罩区域可以关闭对话框
77 * **esc** 表示按下 esc 键可以关闭对话框
78 * 如 'close' 或 'close,esc,mask'
79 * 如果设置为 true,则以上关闭方式全部生效
80 * 如果设置为 false,则以上关闭方式全部失效
81 */
82 closeable?: 'close' | 'mask' | 'esc' | boolean | 'close,mask' | 'close,esc' | 'mask,esc';
83 /**
84 * [推荐]控制对话框关闭的方式,值可以为字符串或者数组,其中字符串、数组均为以下值的枚举:
85 * **close** 表示点击关闭按钮可以关闭对话框
86 * **mask** 表示点击遮罩区域可以关闭对话框
87 * **esc** 表示按下 esc 键可以关闭对话框
88 * 如 'close' 或 ['close','esc','mask'], []
89 */
90 closeMode?: CloseMode[] | 'close' | 'mask' | 'esc';
91
92 /**
93 * 对话框关闭时触发的回调函数
94 */
95 onClose?: (trigger: string, event: React.MouseEvent) => void;
96
97 /**
98 * 对话框关闭后触发的回调函数, 如果有动画,则在动画结束后触发
99 */
100 afterClose?: () => void;
101
102 /**
103 * 是否显示遮罩
104 */
105 hasMask?: boolean;
106
107 /**
108 * 显示隐藏时动画的播放方式
109 */
110 animation?: any | boolean;
111
112 /**
113 * 对话框弹出时是否自动获得焦点
114 */
115 autoFocus?: boolean;
116
117 /**
118 * [v2废弃] 对话框对齐方式, 具体见Overlay文档
119 * @deprecated
120 */
121 align?: string | boolean;
122 /**
123 * [v2废弃] 当对话框高度超过浏览器视口高度时,是否显示所有内容而不是出现滚动条以保证对话框完整显示在浏览器视口内,该属性仅在对话框垂直水平居中时生效,即 align 被设置为 'cc cc' 时
124 * @deprecated
125 */
126 isFullScreen?: boolean;
127
128 /**
129 * [v2废弃] 是否在对话框重新渲染时及时更新对话框位置,一般用于对话框高度变化后依然能保证原来的对齐方式
130 * @deprecated
131 */
132 shouldUpdatePosition?: boolean;
133
134 /**
135 * [v2废弃] 对话框距离浏览器顶部和底部的最小间距,align 被设置为 'cc cc' 并且 isFullScreen 被设置为 true 时不生效
136 * @deprecated
137 */
138 minMargin?: number;
139 /**
140 * 透传到弹层组件的属性对象
141 */
142 overlayProps?: OverlayProps;
143
144 /**
145 * 自定义国际化文案对象
146 */
147 locale?: {
148 ok: string;
149 cancel: string;
150 };
151
152 /**
153 * 对话框的高度样式属性
154 */
155 height?: string | number;
156 popupContainer?: string | HTMLElement | ((target: HTMLElement) => HTMLElement);
157 /**
158 * 开启 v2 版本弹窗
159 */
160 v2?: boolean;
161 /**
162 * [v2] 定制关闭按钮 icon
163 */
164 closeIcon?: React.ReactNode;
165 /**
166 * [v2] 弹窗宽度 v2 生效
167 */
168 width?: string | number;
169 /**
170 * [v2] 弹窗上边距。默认 100,设置 centered=true 后默认 40
171 */
172 top?: number;
173 /**
174 * [v2] 弹窗下边距, 默认 40
175 */
176 bottom?: number;
177 /**
178 * [v2] 对话框高度超过浏览器视口高度时,对话框是否展示滚动条。关闭此功后对话框会随高度撑开页面
179 */
180 overflowScroll?: boolean;
181 /**
182 * [v2] 弹窗居中对齐
183 */
184 centered?: boolean;
185 /**
186 * [v2] 自定义渲染弹窗
187 */
188 dialogRender?: (modal: React.ReactNode) => React.ReactNode;
189 /**
190 * [v2] 最外包裹层 className
191 */
192 wrapperClassName?: string;
193}
194
195export interface QuickShowConfig extends DialogProps {
196 prefix?: string;
197 type?: 'alert' | 'confirm';
198 messageProps?: object;
199 content?: React.ReactNode;
200 onOk?: () => void;
201 onCancel?: () => void;
202 okProps?: object;
203 needWrapper?: boolean;
204}
205
206export interface QuickShowRet {
207 hide: () => void;
208}
209
210export default class Dialog extends React.Component<DialogProps, any> {
211 static show(config: QuickShowConfig): QuickShowRet;
212 static alert(config: QuickShowConfig): QuickShowRet;
213 static confirm(config: QuickShowConfig): QuickShowRet;
214 static success(config: QuickShowConfig): QuickShowRet;
215 static error(config: QuickShowConfig): QuickShowRet;
216 static warning(config: QuickShowConfig): QuickShowRet;
217 static notice(config: QuickShowConfig): QuickShowRet;
218 static help(config: QuickShowConfig): QuickShowRet;
219}