import { popsDOMUtils } from "../../utils/PopsDOMUtils"; import type { PopsPanelConfig } from "./types"; export const PopsPanelDefaultConfig = (): DeepRequired => { return { title: { text: "默认标题", position: "center", html: false, style: "", }, content: [ { id: "whitesev-panel-config-1", title: "菜单配置1", headerTitle: "菜单配置1", isDefault: true, attributes: { "data-test": "test", "data-test-2": "test2", }, views: [ { className: "forms-1", text: "区域设置", type: "container", views: [ { className: "panel-switch", text: "switch", type: "switch", disabled: false, description: "", getValue() { return true; }, callback(event, value) { console.log("按钮开启状态:", value); }, }, { className: "panel-slider", text: "slider", type: "slider", description: "", disabled: false, getToolTipContent(value) { return String(value); }, isShowHoverTip: true, step: 1, getValue() { return 50; }, callback(event, value) { console.log("滑块当前数值:", value); }, min: 1, max: 100, }, { className: "panel-button", text: "button", type: "button", description: "", disable: false, buttonIsRightIcon: false, buttonIcon: "view", buttonIconIsLoading: true, buttonType: "default", buttonText: "default按钮", callback(event) { console.log("点击按钮", event); }, }, { className: "panel-button", text: "button", type: "button", buttonIcon: "eleme", buttonIconIsLoading: true, buttonType: "warning", buttonText: "warning按钮", callback(event) { console.log("点击按钮", event); }, }, { className: "panel-button", text: "button", type: "button", buttonIcon: "chromeFilled", buttonIconIsLoading: true, buttonType: "danger", buttonText: "danger按钮", callback(event) { console.log("点击按钮", event); }, }, { className: "panel-button", text: "button", type: "button", buttonIcon: "upload", buttonIconIsLoading: false, buttonType: "info", buttonText: "info按钮", callback(event) { console.log("点击按钮", event); }, }, ], }, ], }, { id: "whitesev-panel-config-2", title: "菜单配置2", headerTitle: "菜单配置2", isDefault: false, attributes: { "data-value": "value", "data-value-2": "value2", }, views: [ { className: "panel-input", text: "input", type: "input", getValue() { return "50"; }, callback(event, value) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value); }, placeholder: "请输入内容", }, { className: "panel-input-number", text: "input-number", type: "input", inputType: "number", getValue() { return "50"; }, callback(event, value, valueAsNumber) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", valueAsNumber); if (valueAsNumber! > 60) { return { valid: false, message: "输入值不能大于60,当前:" + value, }; } }, placeholder: "请输入内容", }, { className: "panel-input-password", text: "input-password", type: "input", inputType: "password", placeholder: "请输入密码", getValue() { return "123456"; }, callback(event, value) { popsDOMUtils.preventEvent(event); console.log("密码输入框内容改变:", value); }, }, { className: "panel-input-file", text: "input-file", type: "input", inputType: "file", getValue() { return ""; }, callback(event, value) { popsDOMUtils.preventEvent(event); console.log("内容改变:", value); }, placeholder: "请输入密码", }, { className: "panel-input-date", text: "input-date", type: "input", inputType: "date", placeholder: "请输入内容", getValue() { const date = new Date(); let hour = date.getHours().toString(); let minutes = date.getMinutes().toString(); if (hour.length === 1) { hour = `0${hour}`; } if (minutes.length === 1) { minutes = `0${minutes}`; } return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; }, callback(event, value, valueAsNumber, valueAsDate) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value, valueAsNumber, valueAsDate); }, }, { className: "panel-input-datetime-local", text: "input-datetime-local", type: "input", inputType: "datetime-local", getValue() { const date = new Date(); let hour = date.getHours().toString(); let minutes = date.getMinutes().toString(); if (hour.length === 1) { hour = `0${hour}`; } if (minutes.length === 1) { minutes = `0${minutes}`; } return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}T${hour}:${minutes}`; }, callback(event, value, valueAsNumber, valueAsDate) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value, valueAsNumber, valueAsDate); }, placeholder: "请输入内容", }, { className: "panel-input-time", text: "input-time", type: "input", inputType: "time", getValue() { return "11:30"; }, callback(event, value, valueAsNumber, valueAsDate) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value, valueAsNumber, valueAsDate); }, placeholder: "请输入内容", }, { className: "panel-input-month", text: "input-month", type: "input", inputType: "month", getValue() { const date = new Date(); return `${date.getFullYear()}-${date.getMonth() + 1}`; }, callback(event, value, valueAsNumber, valueAsDate) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value, valueAsNumber, valueAsDate); }, placeholder: "请输入内容", }, { className: "panel-input-week", text: "input-week", type: "input", inputType: "week", getValue() { const date = new Date(); return `${date.getFullYear()}-W01`; }, callback(event, value, valueAsNumber, valueAsDate) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value, valueAsNumber, valueAsDate); }, placeholder: "请输入内容", }, { className: "panel-input-search", text: "input-search", type: "input", inputType: "search", getValue() { return "search test"; }, callback(event, value) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value); }, placeholder: "请输入内容", }, { className: "panel-input-color", text: "input-color", type: "input", inputType: "color", getValue() { return "#ff0000"; }, callback(event, value) { popsDOMUtils.preventEvent(event); console.log("输入框内容改变:", value); }, placeholder: "请输入内容", }, { className: "panel-input-email", text: "input-email", type: "input", inputType: "email", getValue() { return "test@gmail.com"; }, callback(event, value) { popsDOMUtils.preventEvent(event); const $input = event.target as HTMLInputElement; console.log("输入框内容改变:", value, $input.validity); }, placeholder: "请输入内容", }, { className: "panel-input-tel", text: "input-tel", type: "input", inputType: "tel", getValue() { return "11111111111"; }, callback(event, value) { popsDOMUtils.preventEvent(event); const $input = event.target as HTMLInputElement; console.log("输入框内容改变:", value, $input.validity); }, placeholder: "请输入内容", }, { className: "panel-input-url", text: "input-url", type: "input", inputType: "url", getValue() { return "https://github.com/"; }, callback(event, value) { popsDOMUtils.preventEvent(event); const $input = event.target as HTMLInputElement; console.log("输入框内容改变:", value, $input.validity); }, placeholder: "请输入内容", }, { className: "panel-textarea", text: "textarea", type: "textarea", getValue() { return "50"; }, callback(event, value) { popsDOMUtils.preventEvent(event); console.log("textarea输入框内容改变:", value); }, placeholder: "请输入内容", }, { type: "container", text: "", views: [ { className: "panel-select-disabled", text: "select-disabled", type: "select", disabled: true, getValue() { return "text"; }, callback(isSelectedInfo) { if (isSelectedInfo == null) return; console.log(`select当前选项:${isSelectedInfo.value},当前选项文本:${isSelectedInfo.text}`); }, data: [ { value: "all", text: "所有", disable() { return false; }, }, { value: "text", text: "文本", disable() { return false; }, }, { value: "html", text: "超文本", disable() { return false; }, }, ], }, { className: "panel-select-multiple-disabled", type: "select-multiple", text: "select-multiple-disabled", disabled: true, placeholder: "请至少选择一个选项", getValue() { return ["select-1", "select-2"]; }, callback(selectInfo) { console.log(`select值改变,多选信息`, selectInfo); }, clickCallBack(event, isSelectedInfo) { console.log("点击", event, isSelectedInfo); }, closeIconClickCallBack(event, data) { console.log("点击关闭图标的事件", data); }, data: [ { value: "select-1", text: "单选1", isHTML: false, }, { value: "select-2", text: "单选2", isHTML: false, }, { value: "select-3", text: "单选3", isHTML: false, }, { value: "select-4", text: "单选4", isHTML: false, }, ], }, { className: "panel-select-native", text: "select-native", type: "select", mode: "native", getValue() { return "all"; }, callback(isSelectedInfo) { if (isSelectedInfo == null) return; console.log(`select当前选项:${isSelectedInfo.value},当前选项文本:${isSelectedInfo.text}`); }, data: [ { value: "all", text: "所有", disable() { return false; }, }, { value: "text", text: "文本", disable() { return false; }, }, { value: "html", text: "超文本", disable() { return false; }, }, ], }, { className: "panel-select-dialog", text: "select-dialog", type: "select", mode: "dialog", getValue() { return window.localStorage.getItem("select-dialog-customInput") || ""; }, callback(isSelectedInfo) { if (isSelectedInfo == null) { console.warn(`select当前选项为空`); return; } if (isSelectedInfo.addCustomInput) { if (isSelectedInfo.value === "") { // 空值,不存储 if (isSelectedInfo.customInputStoreKey) { console.log(`select删除自定义输入的值`); window.localStorage.removeItem(isSelectedInfo.customInputStoreKey); } } else { console.log( `select当前自定义输入框内容:${isSelectedInfo.value},当前选项显示文本:${isSelectedInfo.text}` ); if (isSelectedInfo.customInputStoreKey) { window.localStorage.setItem(isSelectedInfo.customInputStoreKey!, isSelectedInfo.value); } } } else { console.log(`select当前选项:${isSelectedInfo.value},当前选项显示文本:${isSelectedInfo.text}`); } }, data: [ { value: "all", text: "所有", disable() { return false; }, }, { value: "text", text: "文本", disable(value, selectInfo) { if (selectInfo?.value === "all") return true; return false; }, }, { value: "html", text: "超文本", disable(value, selectInfo) { if (selectInfo?.value === "all") return true; return false; }, }, { value: "own", text: "自定义", disable(value, selectInfo) { if (selectInfo?.value === "all") return true; return false; }, }, { value: window.localStorage.getItem("select-dialog-customInput") || "", text: window.localStorage.getItem("select-dialog-customInput") || "", addCustomInput: true, customInputStoreKey: "select-dialog-customInput", onValid(dataOption) { if (dataOption.value === "123") { console.error("非规范值"); return { valid: false, message: "非规范值", }; } return { valid: true, }; }, }, ], }, { className: "panel-select-horizontal", text: "select-horizontal", type: "select", mode: "horizontal", getValue() { return "text"; }, callback(isSelectedInfo) { if (isSelectedInfo == null) return; console.log(`select当前选项:${isSelectedInfo.value},当前选项文本:${isSelectedInfo.text}`); }, data: [ { value: "all", text: "所有", disable() { return false; }, }, { value: "text", text: "文本", disable() { return false; }, }, { value: "html", text: "超文本", disable() { return false; }, }, { value: "own", text: "自定义", disable() { return true; }, }, ], }, { className: "panel-select-multiple", type: "select-multiple", text: "select-multiple", placeholder: "请至少选择一个选项", getValue() { return ["select-1", "select-2"]; }, callback(selectInfo) { console.log(`select值改变,多选信息`, selectInfo); }, clickCallBack(event, isSelectedInfo) { console.log("点击", event, isSelectedInfo); }, closeIconClickCallBack(event, data) { console.log("点击关闭图标的事件", data); }, data: [ { value: "select-1", text: "单选1", isHTML: false, disable(value, allSelectedInfo) { return allSelectedInfo.findIndex((it) => ["select-5"].includes(it.value)) !== -1; }, }, { value: "select-2", text: "单选2", isHTML: false, disable(value, allSelectedInfo) { return allSelectedInfo.findIndex((it) => ["select-5"].includes(it.value)) !== -1; }, }, { value: "select-3", text: "单选3", isHTML: false, disable(value, allSelectedInfo) { return allSelectedInfo.findIndex((it) => ["select-2", "select-5"].includes(it.value)) !== -1; }, }, { value: "select-4", text: "单选4", isHTML: false, disable(value, allSelectedInfo) { return allSelectedInfo.findIndex((it) => ["select-3", "select-5"].includes(it.value)) !== -1; }, }, { value: "select-5", text(value, allSelectedInfo) { return allSelectedInfo.findIndex((it) => ["select-4"].includes(it.value)) !== -1 ? "单选5-禁用" : "单选5"; }, isHTML: false, disable(value, allSelectedInfo) { return allSelectedInfo.findIndex((it) => ["select-4"].includes(it.value)) !== -1; }, }, ], }, ], }, { type: "container", text: "deep菜单", views: [ { type: "deepMenu", className: "panel-deepMenu", text: "deepMenu", description: "二级菜单", rightText: "自定义配置", arrowRightIcon: true, afterAddToUListCallBack(viewConfig, container) { console.log(viewConfig, container); }, clickCallBack(event, viewConfig) { console.log("进入子配置", event, viewConfig); }, views: [ { className: "forms-1", text: "区域设置", type: "container", views: [ { className: "panel-switch", text: "switch", type: "switch", getValue() { return true; }, callback(event, value) { console.log("按钮开启状态:", value); }, }, { className: "panel-slider", text: "slider", type: "slider", getValue() { return 50; }, callback(event, value) { console.log("滑块当前数值:", value); }, min: 1, max: 100, }, { className: "panel-button", text: "button", type: "button", buttonIcon: "eleme", buttonIconIsLoading: true, buttonType: "warning", buttonText: "warning按钮", callback(event) { console.log("点击按钮", event); }, }, { className: "panel-button", text: "button", type: "button", buttonIcon: "chromeFilled", buttonIconIsLoading: true, buttonType: "danger", buttonText: "danger按钮", callback(event) { console.log("点击按钮", event); }, }, { className: "panel-button", text: "button", type: "button", buttonIcon: "upload", buttonIconIsLoading: false, buttonType: "info", buttonText: "info按钮", callback(event) { console.log("点击按钮", event); }, }, ], }, ], }, { type: "deepMenu", className: "panel-deepMenu2", //@ts-ignore text: "deepMenu2", description: "二级菜单", rightText: "自定义配置", arrowRightIcon: true, afterAddToUListCallBack(viewConfig, container) { console.log(viewConfig, container); }, clickCallBack(event, viewConfig) { console.log("进入子配置", event, viewConfig); }, views: [], }, ], }, { type: "container", isFold: true, text: "折叠菜单", afterAddToUListCallBack(viewConfig, container) { console.log(viewConfig, container); }, views: [ { className: "panel-switch", text: "switch", type: "switch", getValue() { return true; }, callback(event, value) { console.log("按钮开启状态:", value); }, }, ], }, ], }, { id: "whitesev-panel-bottom-config-1", title: /*html*/ ` npm pops version `, isBottom: true, disableAsideItemHoverCSS: true, attributes: { "data-value": "value", "data-value-2": "value2", }, views: [], clickFirstCallback: function () { return false; }, }, { id: "whitesev-panel-bottom-config-2", title: "版本:xxx.xx.xx", isBottom: true, attributes: { "data-value": "value", "data-value-2": "value2", }, views: [], clickFirstCallback: function () { return false; }, }, ], bottomContentConfig: [], btn: { close: { enable: true, callback(event) { event.close(); }, }, }, mask: { enable: false, clickEvent: { toClose: false, toHide: false, }, clickCallBack: null, }, useShadowRoot: true, class: "", mobileClassName: "pops-panel-is-mobile", isMobile: false, only: false, width: window.innerWidth < 550 ? "88vw" : "700px", height: window.innerHeight < 450 ? "70vh" : "500px", position: "center", animation: "pops-anim-fadein-zoom", useDeepMenuSwtichAnimation: true, zIndex: 10000, drag: false, dragLimit: true, dragExtraDistance: 3, dragMoveCallBack() {}, dragEndCallBack() {}, forbiddenScroll: false, style: null, lightStyle: null, darkStyle: null, stopKeyDownEventPropagation: true, listenEscapeKeyUpToExitDeepMenu: true, emitter: null, }; };