import Vue, { VNodeDirective, PluginObject } from 'vue'; /** Options used in Loading service */ export interface LoadingServiceOptions { /** The DOM node Loading needs to cover. Accepts a DOM object or a string. If it's a string, it will be passed to `document.querySelector` to get the corresponding DOM node */ target?: HTMLElement | string; /** Whether to make the mask append to the body element */ body?: boolean; /** Whether to show the loading mask in fullscreen */ fullscreen?: boolean; /** Whether to disable scrolling on body */ lock?: boolean; /** Loading text that displays under the spinner */ text?: string; /** Class name of the custom spinner */ spinner?: string; /** Background color of the mask */ background?: string; /** Custom class name for Loading */ customClass?: string; } /** Loading Component */ export declare class ElLoadingComponent extends Vue { /** Close the Loading instance */ close(): void; } /** Loading directive definition */ export interface ElLoadingDirective extends VNodeDirective { name: 'loading'; value: boolean; modifiers: { body: boolean; fullscreen: boolean; }; } /** Show animation while loading data */ export interface ElLoading { /** Install Loading directive into Vue */ install(vue: typeof Vue): void; /** If you do not have a specific DOM node to attach the Loading directive, or if you simply prefer not to use Loading as a directive, you can call this service with some configs to open a Loading instance. */ service(options: LoadingServiceOptions): ElLoadingComponent; directive: PluginObject; } declare module 'vue/types/vue' { interface Vue { /** If you do not have a specific DOM node to attach the Loading directive, or if you simply prefer not to use Loading as a directive, you can call this service with some configs to open a Loading instance. */ $loading(options: LoadingServiceOptions): ElLoadingComponent; } }