@artmate/chat
Version:
**开箱即用的AI组件库(基于 Vue3 + ElementPlus)**
62 lines (61 loc) • 1.82 kB
JavaScript
import { defineComponent as h, useSlots as C, watch as N, withDirectives as p, createElementBlock as s, openBlock as a, normalizeClass as l, unref as t, createCommentVNode as d, createElementVNode as c, renderSlot as m, createTextVNode as k, toDisplayString as y, createVNode as B, vShow as u } from "vue";
import { ElButton as g } from "element-plus";
import { useNamespace as S } from "../hooks/useNamespace.js";
const z = /* @__PURE__ */ h({
__name: "header",
props: {
open: { type: Boolean, default: !1 },
title: { default: "" },
closable: { type: Boolean, default: !0 },
className: { default: "" }
},
emits: ["update:open", "onOpenChange"],
setup(f, { emit: b }) {
const v = f, n = b, o = S("sender-header"), r = C();
return N(
() => v.open,
(e) => {
n("onOpenChange", e);
}
), (e, i) => p((a(), s("div", {
class: l([t(o).b(), e.className])
}, [
e.closable !== !1 || e.title || t(r).title ? (a(), s("div", {
key: 0,
class: l(t(o).b("header"))
}, [
c("div", {
class: l(t(o).b("title"))
}, [
m(e.$slots, "title", {}, () => [
k(y(e.title), 1)
])
], 2),
c("div", {
class: l(t(o).b("close"))
}, [
p(B(t(g), {
icon: "Close",
link: "",
size: "large",
type: "info",
onClick: i[0] || (i[0] = (V) => n("update:open", !1))
}, null, 512), [
[u, e.closable]
])
], 2)
], 2)) : d("", !0),
t(r).default ? (a(), s("div", {
key: 1,
class: l(t(o).b("content"))
}, [
m(e.$slots, "default")
], 2)) : d("", !0)
], 2)), [
[u, e.open]
]);
}
});
export {
z as default
};