import { CSSProperties, VNode } from 'vue'; import { ScrollbarProps } from '../scrollbar'; import { ButtonProps } from '../button'; import { MountElement } from '../utils'; import { DialogApi } from './useDialog'; export type ContentType = string | VNode | (() => VNode); export type FooterType = boolean | (() => VNode); export type DialogCallback = () => unknown | Promise; export interface DialogDraggableOptions { bounds?: 'none' | 'window'; } export interface Props { width?: string | number; height?: string | number; title?: ContentType; titleClass?: string; titleStyle?: CSSProperties; content?: ContentType; contentClass?: string; contentStyle?: CSSProperties; bodyClass?: string; bodyStyle?: CSSProperties; scrollbarProps?: ScrollbarProps; cancelText?: string; cancelProps?: ButtonProps; okText?: string; okType?: 'primary' | 'danger'; okProps?: ButtonProps; footer?: FooterType; closable?: boolean; closeIcon?: VNode | (() => VNode); closeFocusable?: boolean; renderBeforeOpen?: boolean; destroyOnClose?: boolean; switchFullscreen?: boolean; centered?: boolean; top?: string | number; transformOrigin?: 'mouse' | 'center'; confirmLoading?: boolean; blockScroll?: boolean; keyboard?: boolean; mask?: boolean; maskClosable?: boolean; maskClass?: string; maskStyle?: CSSProperties; zIndex?: number; wrapClass?: string; wrapStyle?: CSSProperties; containerClass?: string; containerStyle?: CSSProperties; focusTriggerAfterClose?: boolean; autoFocusButton?: 'ok' | 'cancel'; draggable?: boolean | DialogDraggableOptions; afterClose?: () => void; onEsc?: (e: KeyboardEvent) => void; onMaskClick?: (e: MouseEvent) => void; open?: boolean; to?: string | MountElement; } export interface DialogSlots { title?: () => VNode[]; default?: () => VNode[]; footer?: () => VNode[]; closeIcon?: () => VNode[]; } export interface DialogOptions { width?: string | number; height?: string | number; title?: ContentType; titleClass?: string; titleStyle?: CSSProperties; content?: ContentType; contentClass?: string; contentStyle?: CSSProperties; bodyClass?: string; bodyStyle?: CSSProperties; scrollbarProps?: ScrollbarProps; cancelText?: string; cancelProps?: ButtonProps; okText?: string; okType?: 'primary' | 'danger'; okProps?: ButtonProps; footer?: FooterType; closable?: boolean; closeIcon?: VNode | (() => VNode); closeFocusable?: boolean; destroyOnClose?: boolean; switchFullscreen?: boolean; centered?: boolean; top?: string | number; transformOrigin?: 'mouse' | 'center'; blockScroll?: boolean; keyboard?: boolean; mask?: boolean; maskClosable?: boolean; maskClass?: string; maskStyle?: CSSProperties; zIndex?: number; wrapClass?: string; wrapStyle?: CSSProperties; containerClass?: string; containerStyle?: CSSProperties; focusTriggerAfterClose?: boolean; autoFocusButton?: 'ok' | 'cancel'; draggable?: boolean | DialogDraggableOptions; afterClose?: () => void; onEsc?: (e: KeyboardEvent) => void; onMaskClick?: (e: MouseEvent) => void; onOk?: DialogCallback; onCancel?: DialogCallback; } export interface DialogUpdate extends DialogOptions { loading?: boolean; } export interface DialogReactive extends DialogOptions { readonly key: string; destroy: () => void; update: (options: DialogUpdate) => void; show: () => void; } declare const _default: __VLS_WithTemplateSlots any; change: (open: boolean, key: string) => any; "update:open": (value: boolean) => any; ok: (e?: MouseEvent | undefined) => any; ready: (api: DialogApi) => any; }, string, import('vue').PublicProps, Readonly & Readonly<{ onCancel?: ((e?: Event | undefined) => any) | undefined; onChange?: ((open: boolean, key: string) => any) | undefined; "onUpdate:open"?: ((value: boolean) => any) | undefined; onOk?: ((e?: MouseEvent | undefined) => any) | undefined; onReady?: ((api: DialogApi) => any) | undefined; }>, { footer: FooterType; title: ContentType; mask: boolean; top: string | number; width: string | number; height: string | number; closable: boolean; afterClose: () => void; to: string | MountElement; zIndex: number; transformOrigin: "mouse" | "center"; content: ContentType; open: boolean; contentClass: string; contentStyle: CSSProperties; keyboard: boolean; scrollbarProps: ScrollbarProps; bodyStyle: CSSProperties; draggable: boolean | DialogDraggableOptions; titleStyle: CSSProperties; titleClass: string; bodyClass: string; cancelText: string; cancelProps: ButtonProps; okText: string; okType: "primary" | "danger"; okProps: ButtonProps; closeIcon: VNode | (() => VNode); closeFocusable: boolean; renderBeforeOpen: boolean; destroyOnClose: boolean; switchFullscreen: boolean; centered: boolean; confirmLoading: boolean; blockScroll: boolean; maskClosable: boolean; maskClass: string; maskStyle: CSSProperties; wrapClass: string; wrapStyle: CSSProperties; containerClass: string; containerStyle: CSSProperties; focusTriggerAfterClose: boolean; autoFocusButton: "ok" | "cancel"; onEsc: (e: KeyboardEvent) => void; onMaskClick: (e: MouseEvent) => void; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, { dialogWrapRef: HTMLDivElement; }, any>, Readonly & DialogSlots>; export default _default; type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; };