2026-03-31 16:44:41 +08:00

76 lines
2.4 KiB
JavaScript

"use strict";
var common_vendor = require("../../../../common/vendor.js");
var uni_modules_wotDesignUni_components_common_util = require("../common/util.js");
const messageDefaultOptionKey = "__MESSAGE_OPTION__";
const None = Symbol("None");
const defaultOptions = {
title: "",
showCancelButton: false,
show: false,
closeOnClickModal: true,
msg: "",
type: "alert",
inputType: "text",
inputValue: "",
showErr: false,
zIndex: 99,
lazyRender: true,
inputError: ""
};
function useMessage(selector = "") {
const messageOptionKey = selector ? messageDefaultOptionKey + selector : messageDefaultOptionKey;
const messageOption = common_vendor.inject(messageOptionKey, common_vendor.ref(None));
if (messageOption.value === None) {
messageOption.value = defaultOptions;
common_vendor.provide(messageOptionKey, messageOption);
}
const createMethod = (type) => {
return (options) => {
const messageOptions = uni_modules_wotDesignUni_components_common_util.deepMerge({ type }, typeof options === "string" ? { title: options } : options);
if (messageOptions.type === "confirm" || messageOptions.type === "prompt") {
messageOptions.showCancelButton = true;
} else {
messageOptions.showCancelButton = false;
}
return show(messageOptions);
};
};
const show = (option) => {
return new Promise((resolve, reject) => {
const options = uni_modules_wotDesignUni_components_common_util.deepMerge(defaultOptions, typeof option === "string" ? { title: option } : option);
messageOption.value = uni_modules_wotDesignUni_components_common_util.deepMerge(options, {
show: true,
success: (res) => {
close();
resolve(res);
},
fail: (res) => {
close();
reject(res);
}
});
});
};
const alert = createMethod("alert");
const confirm = createMethod("confirm");
const prompt = createMethod("prompt");
const close = () => {
if (messageOption.value !== None) {
messageOption.value.show = false;
}
};
return {
show,
alert,
confirm,
prompt,
close
};
}
const getMessageDefaultOptionKey = (selector) => {
return selector ? `${messageDefaultOptionKey}${selector}` : messageDefaultOptionKey;
};
exports.defaultOptions = defaultOptions;
exports.getMessageDefaultOptionKey = getMessageDefaultOptionKey;
exports.useMessage = useMessage;