import { JSONObject } from "waft-json"; import { setTimeout, document} from "waft"; class ToastOptions { type: string; position: string; duration: i64; message: string; selector: string; } const defaultOptions: ToastOptions = { type: "info", message: "提示信息", position: "top", duration: 2000, selector: "#x-toast", }; function getCurrentOptions(options: JSONObject): ToastOptions { let resOptions: ToastOptions = { type: options.has("type") ? options.getString("type") : defaultOptions.type, message: options.has("message") ? options.getString("message") : defaultOptions.message, position: options.has("position") ? options.getString("position") : defaultOptions.position, duration: options.has("duration") ? options.getInteger("duration") : defaultOptions.duration, selector: options.has("selector") ? options.getString("selector") : defaultOptions.selector, }; return resOptions; } let currentOptions: ToastOptions = defaultOptions; function parseOptions(options: any): ToastOptions { return isString(options) ? { message: options } : options; } function Toast(toastOptions: ToastOptions | String) { const options = { ...currentOptions, ...parseOptions(toastOptions), } as ToastOptions; const toast = document.querySelector(options.selector as string); if (!toast) { console.log("未找到x-toast节点"); return; } if (options.duration != null && options.duration > 0) { const timer = setTimeout(() => {}, options.duration); } return toast; } const createMethod = (type: string) => (options: ToastOptions | String) => Toast({ ...parseOptions(options), }); Toast.success = createMethod("success"); Toast.fail = createMethod("fail"); export default Toast;