172 lines
5.6 KiB
JavaScript
172 lines
5.6 KiB
JavaScript
"use strict";
|
||
const common_vendor = require("../../../../common/vendor.js");
|
||
const _sfc_main = {
|
||
name: "u-toast",
|
||
mixins: [common_vendor.mpMixin, common_vendor.mixin],
|
||
data() {
|
||
return {
|
||
isShow: false,
|
||
timer: null,
|
||
// 定时器
|
||
config: {
|
||
message: "",
|
||
// 显示文本
|
||
type: "",
|
||
// 主题类型,primary,success,error,warning,black
|
||
duration: 2e3,
|
||
// 显示的时间,毫秒
|
||
icon: true,
|
||
// 显示的图标
|
||
position: "center",
|
||
// toast出现的位置
|
||
complete: null,
|
||
// 执行完后的回调函数
|
||
overlay: true,
|
||
// 是否防止触摸穿透
|
||
loading: false
|
||
// 是否加载中状态
|
||
},
|
||
tmpConfig: {}
|
||
// 将用户配置和内置配置合并后的临时配置变量
|
||
};
|
||
},
|
||
computed: {
|
||
iconName() {
|
||
if (!this.tmpConfig.icon || this.tmpConfig.icon == "none") {
|
||
return "";
|
||
}
|
||
if (this.tmpConfig.icon === true) {
|
||
if (["error", "warning", "success", "primary"].includes(this.tmpConfig.type)) {
|
||
return common_vendor.type2icon(this.tmpConfig.type);
|
||
} else {
|
||
return "";
|
||
}
|
||
} else {
|
||
return this.tmpConfig.icon;
|
||
}
|
||
},
|
||
overlayStyle() {
|
||
const style = {
|
||
justifyContent: "center",
|
||
alignItems: "center",
|
||
display: "flex"
|
||
};
|
||
style.backgroundColor = "rgba(0, 0, 0, 0)";
|
||
return style;
|
||
},
|
||
iconStyle() {
|
||
const style = {};
|
||
style.marginRight = "4px";
|
||
return style;
|
||
},
|
||
loadingIconColor() {
|
||
let colorTmp = "rgb(255, 255, 255)";
|
||
if (["error", "warning", "success", "primary"].includes(this.tmpConfig.type)) {
|
||
colorTmp = common_vendor.hexToRgb(common_vendor.color[this.tmpConfig.type]);
|
||
}
|
||
return colorTmp;
|
||
},
|
||
// 内容盒子的样式
|
||
contentStyle() {
|
||
const windowHeight = common_vendor.getWindowInfo().windowHeight, style = {};
|
||
let value = 0;
|
||
if (this.tmpConfig.position === "top") {
|
||
value = -windowHeight * 0.25;
|
||
} else if (this.tmpConfig.position === "bottom") {
|
||
value = windowHeight * 0.25;
|
||
}
|
||
style.transform = `translateY(${value}px)`;
|
||
return style;
|
||
}
|
||
},
|
||
created() {
|
||
["primary", "success", "error", "warning", "default", "loading"].map((item) => {
|
||
this[item] = (message) => this.show({
|
||
type: item,
|
||
message
|
||
});
|
||
});
|
||
},
|
||
methods: {
|
||
// 显示toast组件,由父组件通过this.$refs.xxx.show(options)形式调用
|
||
show(options) {
|
||
this.tmpConfig = common_vendor.deepMerge(this.config, options);
|
||
this.clearTimer();
|
||
this.isShow = true;
|
||
if (this.tmpConfig.duration !== -1) {
|
||
this.timer = setTimeout(() => {
|
||
this.clearTimer();
|
||
typeof this.tmpConfig.complete === "function" && this.tmpConfig.complete();
|
||
}, this.tmpConfig.duration);
|
||
}
|
||
},
|
||
// 隐藏toast组件,由父组件通过this.$refs.xxx.hide()形式调用
|
||
hide() {
|
||
this.clearTimer();
|
||
},
|
||
clearTimer() {
|
||
this.isShow = false;
|
||
clearTimeout(this.timer);
|
||
this.timer = null;
|
||
}
|
||
},
|
||
beforeUnmount() {
|
||
this.clearTimer();
|
||
}
|
||
};
|
||
if (!Array) {
|
||
const _easycom_u_loading_icon2 = common_vendor.resolveComponent("u-loading-icon");
|
||
const _easycom_u_icon2 = common_vendor.resolveComponent("u-icon");
|
||
const _easycom_u_gap2 = common_vendor.resolveComponent("u-gap");
|
||
const _easycom_u_overlay2 = common_vendor.resolveComponent("u-overlay");
|
||
(_easycom_u_loading_icon2 + _easycom_u_icon2 + _easycom_u_gap2 + _easycom_u_overlay2)();
|
||
}
|
||
const _easycom_u_loading_icon = () => "../u-loading-icon/u-loading-icon.js";
|
||
const _easycom_u_icon = () => "../u-icon/u-icon.js";
|
||
const _easycom_u_gap = () => "../u-gap/u-gap.js";
|
||
const _easycom_u_overlay = () => "../u-overlay/u-overlay.js";
|
||
if (!Math) {
|
||
(_easycom_u_loading_icon + _easycom_u_icon + _easycom_u_gap + _easycom_u_overlay)();
|
||
}
|
||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||
return common_vendor.e({
|
||
a: $data.tmpConfig.type === "loading"
|
||
}, $data.tmpConfig.type === "loading" ? {
|
||
b: common_vendor.p({
|
||
mode: "circle",
|
||
color: "rgb(255, 255, 255)",
|
||
inactiveColor: "rgb(120, 120, 120)",
|
||
size: "25"
|
||
})
|
||
} : $data.tmpConfig.type !== "defalut" && $options.iconName ? {
|
||
d: common_vendor.p({
|
||
name: $options.iconName,
|
||
size: "17",
|
||
color: $data.tmpConfig.type,
|
||
customStyle: $options.iconStyle
|
||
})
|
||
} : {}, {
|
||
c: $data.tmpConfig.type !== "defalut" && $options.iconName,
|
||
e: $data.tmpConfig.type === "loading" || $data.tmpConfig.loading
|
||
}, $data.tmpConfig.type === "loading" || $data.tmpConfig.loading ? {
|
||
f: common_vendor.p({
|
||
height: "12",
|
||
bgColor: "transparent"
|
||
})
|
||
} : {}, {
|
||
g: common_vendor.t($data.tmpConfig.message),
|
||
h: common_vendor.n("u-toast__content__text--" + $data.tmpConfig.type),
|
||
i: common_vendor.s($options.contentStyle),
|
||
j: common_vendor.n("u-type-" + $data.tmpConfig.type),
|
||
k: common_vendor.n($data.tmpConfig.type === "loading" || $data.tmpConfig.loading ? "u-toast__content--loading" : ""),
|
||
l: common_vendor.p({
|
||
show: $data.isShow,
|
||
zIndex: $data.tmpConfig.overlay ? 10070 : -1,
|
||
["custom-style"]: $options.overlayStyle
|
||
})
|
||
});
|
||
}
|
||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2232870a"]]);
|
||
wx.createComponent(Component);
|
||
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/node-modules/uview-plus/components/u-toast/u-toast.js.map
|