@whitesev/pops
Version:
弹窗库
197 lines (183 loc) • 5.63 kB
text/typescript
import { popsDOMUtils } from "./utils/PopsDOMUtils";
import { PopsInstanceUtils } from "./utils/PopsInstanceUtils";
import { popsUtils } from "./utils/PopsUtils";
import { PopsCore } from "./Core";
import { PopsAlert } from "./components/alert";
import type { PopsAlertDetails } from "./components/alert/indexType";
import { PopsConfirm } from "./components/confirm";
import type { PopsConfirmDetails } from "./components/confirm/indexType";
import type { PopsPromptDetails } from "./components/prompt/indexType";
import { PopsPrompt } from "./components/prompt";
import type { PopsLoadingDetails } from "./components/loading/indexType";
import { PopsLoading } from "./components/loading";
import type { PopsIframeDetails } from "./components/iframe/indexType";
import { PopsIframe } from "./components/iframe";
import type { PopsToolTipDetails } from "./components/tooltip/indexType";
import { PopsDrawer } from "./components/drawer";
import type { PopsDrawerDetails } from "./components/drawer/indexType";
import type { PopsFolderDetails } from "./components/folder/indexType";
import { PopsFolder } from "./components/folder";
import type { PopsPanelDetails } from "./components/panel/indexType";
import { PopsPanel } from "./components/panel";
import { PopsRightClickMenu } from "./components/rightClickMenu";
import type { PopsRightClickMenuDetails } from "./components/rightClickMenu/indexType";
import type { PopsSearchSuggestionDetails } from "./components/searchSuggestion/indexType";
import { PopsSearchSuggestion } from "./components/searchSuggestion";
import { PopsMathFloatUtils } from "./utils/PopsMathUtils";
import { PanelHandleContentDetails } from "./components/panel/PanelHandleContentDetails";
import { GlobalConfig } from "./GlobalConfig";
import { PopsTooltip } from "./components/tooltip";
import { PopsCSS } from "./PopsCSS";
import { PopsIcon } from "./PopsIcon";
import { PopsLayer } from "./PopsLayer";
import { PopsAnimation } from "./PopsAnimation";
class Pops {
/** 配置 */
config = {
/** 版本号 */
version: "2025.6.18",
cssText: PopsCSS,
/** icon图标的svg代码 */
iconSVG: PopsIcon.$data,
/** 当前已配置的动画@keyframes名字映射(初始化时生成) */
animation: PopsAnimation.$data,
/** 存储已创建的元素 */
layer: PopsLayer,
/** 禁止滚动 */
forbiddenScroll: {
event(event: Event) {
return popsDOMUtils.preventEvent(event);
},
},
/** pops使用的工具类 */
Utils: popsUtils,
/** pops使用的DOM工具类 */
DOMUtils: popsDOMUtils,
/** pops创建的实例使用的工具类 */
InstanceUtils: PopsInstanceUtils,
/** pops处理float类型使用的工具类 */
MathFloatUtils: PopsMathFloatUtils,
/** pops.panel中用于处理各个类型的工具 */
panelHandleContentUtils: PanelHandleContentDetails,
};
init() {}
/**
* 释放原有的pops控制权
* @example
* let pops = window.pops.noConflict()
*/
noConflict() {
if (typeof (PopsCore.globalThis as any).pops === "object") {
popsUtils.delete(PopsCore.globalThis, "pops");
}
if (
typeof unsafeWindow === "object" &&
unsafeWindow != null &&
typeof (unsafeWindow as any).pops === "object"
) {
popsUtils.delete(unsafeWindow, "pops");
}
return new Pops();
}
/**
* 通过navigator.userAgent判断是否是手机访问
* @param userAgent
*/
isPhone(userAgent?: string) {
return popsUtils.isPhone(userAgent);
}
/**
* 为所有弹窗设置全局属性
*/
GlobalConfig = GlobalConfig;
/**
* 普通信息框
* @param details 配置
*/
alert = (details: PopsAlertDetails) => {
let dialog = PopsAlert.init(details);
return dialog;
};
/**
* 询问框
* @param details 配置
*/
confirm = (details: PopsConfirmDetails) => {
let dialog = PopsConfirm.init(details);
return dialog;
};
/**
* 输入框
* @param details 配置
*/
prompt = (details: PopsPromptDetails) => {
let dialog = PopsPrompt.init(details);
return dialog;
};
/**
* 加载层
* @param details 配置
*/
loading = (details: PopsLoadingDetails) => {
let popsLoading = PopsLoading.init(details);
return popsLoading;
};
/**
* iframe层
* @param details 配置
*/
iframe = (details: PopsIframeDetails) => {
let dialog = PopsIframe.init(details);
return dialog;
};
/**
* 提示框
* @param details 配置
*/
tooltip = (details: PopsToolTipDetails) => {
let popsTooltip = PopsTooltip.init(details);
return popsTooltip;
};
/**
* 抽屉
* @param details 配置
*/
drawer = (details: PopsDrawerDetails) => {
let dialog = PopsDrawer.init(details);
return dialog;
};
/**
* 文件夹
* @param details 配置
*/
folder = (details: PopsFolderDetails) => {
let dialog = PopsFolder.init(details);
return dialog;
};
/**
* 配置面板
* @param details 配置
*/
panel = (details: PopsPanelDetails) => {
let dialog = PopsPanel.init(details);
return dialog;
};
/**
* 右键菜单
* @param details 配置
*/
rightClickMenu = (details: PopsRightClickMenuDetails) => {
let popsRightClickMenu = PopsRightClickMenu.init(details);
return popsRightClickMenu;
};
/**
* 搜索建议
* @param details 配置
*/
searchSuggestion = <T = any>(details: PopsSearchSuggestionDetails<T>) => {
let popsSearchSuggestion = PopsSearchSuggestion.init(details);
return popsSearchSuggestion;
};
}
const pops = new Pops();
export { pops };