UNPKG

qmsg

Version:

一款优雅的页面消息提示插件,兼容性良好,无任何依赖。

193 lines (185 loc) 5.26 kB
import { CompatibleProcessing } from "./CompatibleProcessing"; import { QmsgDefaultConfig } from "./QmsgDefaultConfig"; import { QmsgIcon } from "./QmsgIcon"; import { QmsgInstStorage } from "./QmsgInstStorage"; import { QmsgUtils } from "./QmsgUtils"; import { QmsgInstHandler } from "./QmsgInstHandler"; import { QmsgEvent } from "./QmsgEvent"; import type { QmsgMsg } from "./QmsgInst"; import type { QmsgConfig } from "./QmsgConfig"; import { version } from "./../package.json"; /** 实例配置(可选) */ export type QmsgConfigPartial = Partial<QmsgConfig>; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type type QmsgConfigContent = string | boolean | number | symbol | Function | bigint | null | undefined; /* 执行兼容 */ CompatibleProcessing(); class Qmsg { /** 数据 */ $data: { /** 版本号 */ version: string; /** 数据 */ config: typeof QmsgDefaultConfig; /** 图标svg */ icon: typeof QmsgIcon; /** 每个Qmsg实例 */ instanceStorage: typeof QmsgInstStorage; }; /** * 事件工具类 */ $eventUtils: typeof QmsgEvent; /** * 实例化 * @param config 配置 */ constructor(config?: QmsgConfigPartial) { this.$data = { version: version, config: QmsgDefaultConfig, icon: QmsgIcon, instanceStorage: QmsgInstStorage, }; this.$eventUtils = QmsgEvent; this.$eventUtils.visibilitychange.addEvent(); this.config(config); } /** * 修改默认配置 * @param config 配置 */ config(config?: QmsgConfigPartial) { if (config == null) return; if (typeof config !== "object") return; // @ts-ignore QmsgDefaultConfig.INS_DEFAULT = null; // @ts-ignore QmsgDefaultConfig.INS_DEFAULT = config; } /** * 信息Toast * @param content 内容 */ info(content: QmsgConfigContent): QmsgMsg; /** * 信息Toast * @param config 配置 */ info(config: QmsgConfigPartial): QmsgMsg; /** * 信息Toast * @param content 内容 * @param config 配置 */ info(content: QmsgConfigContent, config: QmsgConfigPartial): QmsgMsg; info(content: any, config?: QmsgConfigPartial): QmsgMsg { const params = QmsgUtils.mergeArgs(content, config); params.type = "info"; return QmsgInstHandler.call(this, params); } /** * 警告Toast * @param content 内容 */ warning(content: QmsgConfigContent): QmsgMsg; /** * 警告Toast * @param config 配置 */ warning(config: QmsgConfigPartial): QmsgMsg; /** * 警告Toast * @param content 内容 * @param config 配置 */ warning(content: QmsgConfigContent, config: QmsgConfigPartial): QmsgMsg; warning(content: any, config?: QmsgConfigPartial): QmsgMsg { const params = QmsgUtils.mergeArgs(content, config); params.type = "warning"; return QmsgInstHandler.call(this, params); } /** * 成功Toast * @param content 内容 */ success(content: QmsgConfigContent): QmsgMsg; /** * 成功Toast * @param config 配置 */ success(config: QmsgConfigPartial): QmsgMsg; /** * 成功Toast * @param content 内容 * @param config 配置 */ success(content: QmsgConfigContent, config: QmsgConfigPartial): QmsgMsg; success(content: any, config?: QmsgConfigPartial) { const params = QmsgUtils.mergeArgs(content, config); params.type = "success"; return QmsgInstHandler.call(this, params); } /** * 失败Toast * @param content 内容 */ error(content: QmsgConfigContent): QmsgMsg; /** * 失败Toast * @param config 配置 */ error(config: QmsgConfigPartial): QmsgMsg; /** * 失败Toast * @param content 内容 * @param config 配置 */ error(content: QmsgConfigContent, config: QmsgConfigPartial): QmsgMsg; error(content: any, config?: QmsgConfigPartial) { const params = QmsgUtils.mergeArgs(content, config); params.type = "error"; return QmsgInstHandler.call(this, params); } /** * 加载中Toast * @param content 内容 */ loading(content: QmsgConfigContent): QmsgMsg; /** * 加载中Toast * @param config 配置 */ loading(config: QmsgConfigPartial): QmsgMsg; /** * 加载中Toast * @param content 内容 * @param config 配置 * @returns */ loading(content: QmsgConfigContent, config: QmsgConfigPartial): QmsgMsg; loading(content: any, config?: QmsgConfigPartial): QmsgMsg { const params = QmsgUtils.mergeArgs(content, config); params.type = "loading"; params.autoClose = false; return QmsgInstHandler.call(this, params); } /** * 根据uuid删除Qmsg实例和元素 * @param uuid 唯一值 */ remove(uuid: string) { QmsgInstStorage.remove(uuid); } /** * 关闭当前Qmsg创建的所有的实例 */ closeAll() { for (let index = QmsgInstStorage.insInfoList.length - 1; index >= 0; index--) { const item = QmsgInstStorage.insInfoList[index]; item && item.instance && item.instance.close(); } } } const qmsg = new Qmsg(); export { qmsg as Qmsg };