UNPKG

@customizer/modal-x

Version:

Modal-X = **This Vue Plugin provides a simple and flexible way to create modals for your web applications using a file-based approach. Easily define modal content in separate files, allowing for better organization and maintainability with minimal effort.

60 lines (47 loc) 1.4 kB
import { Component, Plugin } from "vue" import { FileNames } from "./FileNameEnums" interface ModalOptions { closeonEsc?: boolean, closeOnOverlayClick?: boolean, } const defaultOptions: ModalOptions = { closeonEsc: true, closeOnOverlayClick: true } type ModalCallback<T> = (response: T) => void interface Modal<T extends any, D extends any> { filename: string, data: D, cb: ModalCallback<T> } interface Spinner { id: string, modal: Component, group: string } interface FetchedModals { id: string, modal: Component } declare module '@customizer/modal-x' { /** * */ export function useModal<T extends any>(): ({ getModal: <T, D extends any>(filename: FileNames) => Modal<T, D>, modals: Modal[], spinners: Spinner[], setOptions: (options: ModalOptions = defaultOptions) => void, openModal: <T extends any , D extends any>(filename: FileNames, data?: D, cb?: ModalCallback<T>) => void closeModal: (data?: any) => void fetchedModals: FetchedModals[], getModal: (filename: FileNames) => Modal }); export function getModal(filename: FileNames): Modal export function openModal<T extends any , D extends any>(filename: FileNames, data?: D, cb?: ModalCallback<T>): void export function closeModal(data?: any): void export function setOptions(options: ModalOptions); export const ModalParent: Component const modal: Plugin export default modal }