@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
157 lines (156 loc) • 5.82 kB
JavaScript
import { defineComponent as _, computed as z, reactive as O, onMounted as W, nextTick as B, openBlock as t, createElementBlock as l, normalizeClass as i, unref as o, normalizeStyle as d, createVNode as y, Transition as f, withCtx as C, withModifiers as b, createCommentVNode as u, createBlock as k, Fragment as F, mergeProps as v, normalizeProps as L, toDisplayString as R } from "vue";
import "../icon/index.mjs";
import "../renderer/index.mjs";
import { useNameHelper as V, useProps as D, createIconProp as E, useZIndex as Z, useIcons as j } from "@vexip-ui/config";
import { isFunction as m } from "@vexip-ui/utils";
import { toastProps as q } from "./props.mjs";
import { effectiveTypes as w } from "./symbol.mjs";
import A from "../renderer/renderer.mjs";
import x from "../icon/icon.mjs";
const G = ["innerHTML"], oe = /* @__PURE__ */ _({
name: "Toast",
__name: "toast",
props: q,
setup(P, { expose: h }) {
const r = V("toast"), s = D("toast", P, {
bodyWidth: 100,
icon: E(),
iconProps: () => ({}),
position: "center",
transitionName: () => r.ns("ease"),
closable: !1,
maskClose: !1,
showMask: !1,
maskClass: null,
maskStyle: null,
renderer: {
default: null,
isFunc: !0,
static: !0
},
parseHtml: !1
}), M = Z(), c = j(), H = z(() => ({
success: c.value.success,
warning: c.value.warning,
error: c.value.error,
loading: c.value.loading
})), e = O({
visible: !1,
zIndex: 0,
type: null,
content: "",
icon: s.icon,
iconProps: s.iconProps,
position: s.position,
transition: s.transitionName,
closable: s.closable,
maskClose: s.maskClose,
showMask: s.showMask,
maskClass: s.maskClass,
maskStyle: s.maskStyle,
parseHtml: s.parseHtml,
textOnly: !1,
renderer: s.renderer,
onClose: null
}), S = new Promise((n) => {
W(() => {
B(n);
});
});
h({ state: e, openToast: I, closeToast: p, handleReset: g });
async function I(n) {
if (await S, e.zIndex = M(), e.type = n.type ?? null, e.content = n.content ?? "", e.icon = n.icon ?? s.icon, e.iconProps = n.iconProps ?? s.iconProps, e.position = n.position ?? s.position, e.transition = n.transitionName ?? s.transitionName, e.closable = n.closable ?? s.closable, e.maskClose = n.maskClose ?? s.maskClose, e.showMask = n.showMask ?? s.showMask, e.maskClass = n.maskClass ?? s.maskClass, e.maskStyle = n.maskStyle ?? s.maskStyle, e.parseHtml = n.parseHtml ?? s.parseHtml, e.renderer = m(n.renderer) ? n.renderer : s.renderer, e.onClose = n.onClose || null, e.textOnly = !e.icon && !(e.type && w.includes(e.type)), m(e.renderer)) {
const a = e.renderer;
e.renderer = () => a(n), e.textOnly = !1;
}
e.visible = !0;
}
function p() {
e.visible = !1, m(e.onClose) && e.onClose();
}
function g() {
e.visible || (e.type = null, e.content = "", e.icon = s.icon, e.iconProps = s.iconProps, e.position = s.position, e.transition = s.transitionName, e.closable = s.closable, e.maskClose = s.maskClose, e.showMask = s.showMask, e.maskClass = s.maskClass, e.maskStyle = s.maskStyle, e.parseHtml = s.parseHtml, e.textOnly = !1, e.renderer = s.renderer, e.onClose = null);
}
function N() {
e.visible && e.closable && p();
}
function T() {
e.visible && e.maskClose && p();
}
return (n, a) => (t(), l("div", {
class: i({
[o(r).b()]: !0,
[o(r).bs("vars")]: !0,
[o(r).bm("text-only")]: e.textOnly
}),
role: "alert",
style: d({
zIndex: e.zIndex
}),
"aria-atomic": "true",
"aria-live": "assertive"
}, [
y(f, {
name: o(r).ns("fade")
}, {
default: C(() => [
e.showMask && e.visible ? (t(), l("div", {
key: 0,
class: i([o(r).be("mask"), e.maskClass]),
style: d(e.maskStyle),
onClick: T,
onWheel: a[0] || (a[0] = b(() => {
}, ["stop", "prevent"]))
}, null, 38)) : u("", !0)
]),
_: 1
}, 8, ["name"]),
y(f, {
name: e.transition
}, {
default: C(() => [
e.visible ? (t(), l("div", {
key: 0,
class: i({
[o(r).be("wrapper")]: !0,
[o(r).bem("wrapper", e.position)]: e.position !== "center",
[o(r).bem("wrapper", "closable")]: e.closable
}),
onClick: N,
onWheel: a[1] || (a[1] = b(() => {
}, ["stop", "prevent"]))
}, [
o(m)(e.renderer) ? (t(), k(o(A), {
key: 0,
renderer: e.renderer
}, null, 8, ["renderer"])) : (t(), l(F, { key: 1 }, [
e.icon || e.type && o(w).includes(e.type) ? (t(), l("div", {
key: 0,
class: i(o(r).be("icon"))
}, [
e.icon ? (t(), k(o(x), v({
key: 0,
icon: e.icon,
scale: 1.8
}, e.iconProps), null, 16, ["icon"])) : (t(), k(o(x), L(v({ key: 1 }, { ...H.value[e.type], scale: 1.8, ...e.iconProps })), null, 16))
], 2)) : u("", !0),
e.parseHtml ? (t(), l("div", {
key: 1,
class: i(o(r).be("content")),
innerHTML: e.content
}, null, 10, G)) : (t(), l("div", {
key: 2,
class: i(o(r).be("content"))
}, R(e.content), 3))
], 64))
], 34)) : u("", !0)
]),
_: 1
}, 8, ["name"])
], 6));
}
});
export {
oe as default
};
//# sourceMappingURL=toast.vue2.mjs.map