UNPKG

7.45 kBTypeScriptView Raw
1import { CreateElement, VNode } from 'vue'
2import { VXETableComponent } from './component'
3
4/**
5 * 弹窗
6 */
7export declare class Modal extends VXETableComponent {
8 /**
9 * 绑定值
10 */
11 value?: boolean;
12 /**
13 * 设置窗口唯一标识
14 */
15 id?: string;
16 /**
17 * 窗口类型
18 */
19 type?: 'alert' | 'confirm' | 'message';
20 /**
21 * 是否加载中
22 */
23 loading?: boolean;
24 /**
25 * 只对 type=alert | confirm | message 有效,消息状态
26 */
27 status?: string;
28 /**
29 * 自定义状态图标
30 */
31 iconStatus?: string;
32 /**
33 * 只对 type=message 有效,消息距离顶部的位置
34 */
35 top?: number | string;
36 /**
37 * 只对 type=modal 有效,窗口的默认位置
38 */
39 position?: 'center' | {
40 top?: number;
41 left?: number;
42 };
43 /**
44 * 窗口的标题
45 */
46 title?: string;
47 /**
48 * 只对 type=message 有效,自动关闭的延时
49 */
50 duration?: number | string;
51 message?: string | number;
52 /**
53 * 窗口的内容
54 */
55 content?: string | number;
56 /**
57 * 是否锁住页面,不允许窗口之外的任何操作
58 */
59 lockView?: boolean;
60 /**
61 * 是否锁住滚动条,不允许页面滚动
62 */
63 lockScroll?: boolean;
64 /**
65 * 是否显示遮罩层
66 */
67 mask?: boolean;
68 /**
69 * 是否允许点击遮罩层关闭窗口
70 */
71 maskClosable?: boolean;
72 /**
73 * 是否允许按 Esc 键关闭窗口
74 */
75 escClosable?: boolean;
76 /**
77 * 是否允许拖动调整窗口大小
78 */
79 resize?: boolean;
80 /**
81 * 是否显示头部
82 */
83 showHeader?: boolean;
84 /**
85 * 是否显示底部
86 */
87 showFooter?: boolean;
88 /**
89 * 只对 type=modal 有效,是否允许通过双击头部放大或还原窗口
90 */
91 dblclickZoom?: boolean;
92 /**
93 * 窗口的宽度
94 */
95 width?: number | string;
96 /**
97 * 窗口的高度
98 */
99 height?: number | string;
100 /**
101 * 窗口的最小宽度
102 */
103 minWidth?: number | string;
104 /**
105 * 窗口的最小高度
106 */
107 minHeight?: number | string;
108 /**
109 * 自定义堆叠顺序
110 */
111 zIndex?: number;
112 marginSize?: number | string;
113 /**
114 * 默认最大化显示
115 */
116 fullscreen?: boolean;
117 /**
118 * 记忆功能,会记住最后操作状态,再次打开窗口时还原窗口状态
119 */
120 remember?: boolean;
121 /**
122 * 在窗口关闭时销毁内容
123 */
124 destroyOnClose?: boolean;
125 /**
126 * 设置标题内容过长时显示为省略号
127 */
128 showTitleOverflow?: boolean;
129 /**
130 * 是否将弹框容器插入于 body 内
131 */
132 transfer?: boolean;
133 /**
134 * 是否启用 localStorage 本地保存,会将窗口拖动的状态保存到本地
135 */
136 storage?: boolean;
137 storageKey?: string;
138 animat?: boolean;
139 beforeHideMethod?(params: { type: string }): Promise<any>;
140
141 /**
142 * 手动打开窗口
143 */
144 open(): any;
145 /**
146 * 手动关闭窗口
147 */
148 close(): any;
149 /**
150 * 获取当前窗口元素
151 */
152 getBox(): HTMLElement;
153 /**
154 * 获取窗口位置
155 */
156 getPosition(): {
157 top?: number;
158 left?: number;
159 } | null;
160 /**
161 * 设置窗口位置
162 */
163 setPosition(top?: number, left?: number): Promise<any>;
164 /**
165 * 判断是否最大化显示
166 */
167 isMaximized(): boolean;
168 /**
169 * 切换窗口最大化/还原
170 */
171 zoom(): Promise<boolean>;
172 /**
173 * 如果窗口处于常规状态,则最大化窗口
174 */
175 maximize(): Promise<any>;
176 /**
177 * 如果窗口处于最大化状态,则还原窗口
178 */
179 revert(): Promise<any>;
180}
181
182/**
183 * 窗口类型
184 */
185export declare type ModalOptionTypes = 'alert' | 'confirm' | 'message'
186/**
187 * 窗口状态
188 */
189export declare type ModalOptionStatus = 'info' | 'success' | 'warning' | 'question' | 'error' | 'loading'
190
191/**
192 * 窗口事件类型
193 */
194
195/**
196 * 窗口事件类型
197 */
198export declare type ModalEventTypes = 'default' | 'mask' | 'close' | 'confirm' | 'cancel' | 'keydown' | 'exist'
199
200export interface ModalOptions {
201 id?: string;
202 type?: string;
203 loading?: boolean;
204 status?: ModalOptionStatus;
205 iconStatus?: string;
206 top?: number | string;
207 position?: 'center' | {
208 top?: number;
209 left?: number;
210 };
211 title?: string;
212 duration?: number | string;
213 message?: string | number;
214 content?: string | number;
215 lockView?: boolean;
216 lockScroll?: boolean;
217 mask?: boolean;
218 maskClosable?: boolean;
219 escClosable?: boolean;
220 resize?: boolean;
221 showHeader?: boolean;
222 showFooter?: boolean;
223 dblclickZoom?: boolean;
224 width?: number | string;
225 height?: number | string;
226 minWidth?: number | string;
227 minHeight?: number | string;
228 zIndex?: number;
229 marginSize?: number | string;
230 fullscreen?: boolean;
231 remember?: boolean;
232 destroyOnClose?: boolean;
233 showTitleOverflow?: boolean;
234 transfer?: boolean;
235 storage?: boolean;
236 storageKey?: string;
237 animat?: boolean;
238 size?: 'medium' | 'small' | 'mini';
239 beforeHideMethod?(params: { type: string }): Promise<any>;
240
241 slots?: {
242 default?(params: ModalDefaultSlotParams, h: CreateElement): VNode[] | string[];
243 header?(params: ModalHeaderSlotParams, h: CreateElement): VNode[] | string[];
244 title?(params: ModalTitleSlotParams, h: CreateElement): VNode[] | string[];
245 footer?(params: ModalFooterSlotParams, h: CreateElement): VNode[] | string[];
246 };
247
248 events?: {
249 inserted?(params: ModalEventParams): any;
250 show?(params: ModalEventParams): any;
251 hide?(params: ModalEventParams): any;
252 zoom?(params: ModalEventParams): any;
253 };
254}
255
256export interface ModalDefaultSlotParams {
257 $modal: Modal;
258}
259
260export interface ModalHeaderSlotParams extends ModalDefaultSlotParams {}
261export interface ModalTitleSlotParams extends ModalDefaultSlotParams {}
262export interface ModalFooterSlotParams extends ModalDefaultSlotParams {}
263
264export interface ModalEventParams {
265 $modal: Modal;
266 type: string;
267}
268
269/**
270 * 全局窗口控制器
271 */
272export interface ModalController {
273 /**
274 * 创建窗口
275 * @param options 参数
276 */
277 open (options: ModalOptions): Promise<string>;
278 /**
279 * 创建提示框
280 * @param content 消息内容
281 * @param title 标题
282 * @param options 参数
283 */
284 alert (content: string, title?: string, options?: ModalOptions): Promise<string>;
285 /**
286 * 创建提示框
287 * @param options 参数
288 */
289 alert (options: ModalOptions): Promise<string>;
290 /**
291 * 创建确认框
292 * @param content 消息内容
293 * @param title 标题
294 * @param options 参数
295 */
296 confirm (content: string, title?: string, options?: ModalOptions): Promise<string>;
297 /**
298 * 创建确认框
299 * @param options 参数
300 */
301 confirm (options: ModalOptions): Promise<string>;
302 /**
303 * 创建消息提示
304 * @param content 消息内容
305 * @param title 标题
306 * @param options 参数
307 */
308 message (content: string, options?: ModalOptions): Promise<string>;
309 /**
310 * 创建消息提示
311 * @param options 参数
312 */
313 message (options: ModalOptions): Promise<string>;
314 /**
315 * 获取动态的活动窗口
316 * @param id 窗口唯一标识
317 */
318 get (id: string): Modal;
319 /**
320 * 关闭动态的活动窗口,如果为空则关闭所有
321 * @param id 窗口唯一标识
322 */
323 close (id?: string): Promise<any>;
324}