123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- import type { Component, Ref } from 'vue';
- import type { ModalApi } from './modal-api';
- export interface ModalProps {
- /**
- * 是否要挂载到内容区域
- * @default false
- */
- appendToMain?: boolean;
- /**
- * 是否显示边框
- * @default false
- */
- bordered?: boolean;
- /**
- * 取消按钮文字
- */
- cancelText?: string;
- /**
- * 是否居中
- * @default false
- */
- centered?: boolean;
- class?: string;
- /**
- * 是否显示右上角的关闭按钮
- * @default true
- */
- closable?: boolean;
- /**
- * 点击弹窗遮罩是否关闭弹窗
- * @default true
- */
- closeOnClickModal?: boolean;
- /**
- * 按下 ESC 键是否关闭弹窗
- * @default true
- */
- closeOnPressEscape?: boolean;
- /**
- * 禁用确认按钮
- */
- confirmDisabled?: boolean;
- /**
- * 确定按钮 loading
- * @default false
- */
- confirmLoading?: boolean;
- /**
- * 确定按钮文字
- */
- confirmText?: string;
- contentClass?: string;
- /**
- * 弹窗描述
- */
- description?: string;
- /**
- * 是否可拖拽
- * @default false
- */
- draggable?: boolean;
- /**
- * 是否显示底部
- * @default true
- */
- footer?: boolean;
- footerClass?: string;
- /**
- * 是否全屏
- * @default false
- */
- fullscreen?: boolean;
- /**
- * 是否显示全屏按钮
- * @default true
- */
- fullscreenButton?: boolean;
- /**
- * 是否显示顶栏
- * @default true
- */
- header?: boolean;
- headerClass?: string;
- /**
- * 弹窗是否显示
- * @default false
- */
- loading?: boolean;
- /**
- * 是否显示遮罩
- * @default true
- */
- modal?: boolean;
- /**
- * 是否自动聚焦
- */
- openAutoFocus?: boolean;
- /**
- * 弹窗遮罩模糊效果
- */
- overlayBlur?: number;
- /**
- * 是否显示取消按钮
- * @default true
- */
- showCancelButton?: boolean;
- /**
- * 是否显示确认按钮
- * @default true
- */
- showConfirmButton?: boolean;
- /**
- * 弹窗标题
- */
- title?: string;
- /**
- * 弹窗标题提示
- */
- titleTooltip?: string;
- /**
- * 弹窗层级
- */
- zIndex?: number;
- }
- export interface ModalState extends ModalProps {
- /** 弹窗打开状态 */
- isOpen?: boolean;
- /**
- * 共享数据
- */
- sharedData?: Record<string, any>;
- }
- export type ExtendedModalApi = ModalApi & {
- useStore: <T = NoInfer<ModalState>>(
- selector?: (state: NoInfer<ModalState>) => T,
- ) => Readonly<Ref<T>>;
- };
- export interface ModalApiOptions extends ModalState {
- /**
- * 独立的弹窗组件
- */
- connectedComponent?: Component;
- /**
- * 在关闭时销毁弹窗。仅在使用 connectedComponent 时有效
- */
- destroyOnClose?: boolean;
- /**
- * 关闭前的回调,返回 false 可以阻止关闭
- * @returns
- */
- onBeforeClose?: () => void;
- /**
- * 点击取消按钮的回调
- */
- onCancel?: () => void;
- /**
- * 弹窗关闭动画结束的回调
- * @returns
- */
- onClosed?: () => void;
- /**
- * 点击确定按钮的回调
- */
- onConfirm?: () => void;
- /**
- * 弹窗状态变化回调
- * @param isOpen
- * @returns
- */
- onOpenChange?: (isOpen: boolean) => void;
- /**
- * 弹窗打开动画结束的回调
- * @returns
- */
- onOpened?: () => void;
- }
|