epic-designer
Version:
基于vue3的设计器,可视化开发页面表单
58 lines (57 loc) • 1.84 kB
JavaScript
import { defineComponent as m, ref as r, watch as v, provide as y, createElementBlock as A, openBlock as x, normalizeClass as E, renderSlot as g } from "vue";
import { COLLAPSE_CONTEXT_KEY as h } from "./collapseContext.js";
const C = /* @__PURE__ */ m({
__name: "collapse",
props: {
accordion: { type: Boolean, default: !1 },
bordered: { type: Boolean, default: !0 },
customClass: { default: "" },
defaultExpandAll: { type: Boolean, default: !1 },
modelValue: { default: () => [] }
},
emits: ["change", "update:modelValue"],
setup(d, { emit: s }) {
const l = d, u = s, a = r(
Array.isArray(l.modelValue) ? l.modelValue : l.modelValue ? [l.modelValue] : []
);
v(
() => l.modelValue,
(e) => {
a.value = Array.isArray(e) ? e : e ? [e] : [];
},
{ deep: !0 }
);
const n = (e) => {
if (l.accordion)
a.value = a.value[0] === e ? [] : [e];
else {
const c = a.value.indexOf(e);
c === -1 ? a.value.push(e) : a.value.splice(c, 1);
}
const o = l.accordion ? a.value[0] || "" : [...a.value];
u("update:modelValue", o), u("change", o);
}, i = (e) => a.value.includes(e), t = r([]), p = (e) => {
t.value.includes(e) || t.value.push(e);
}, f = (e) => {
const o = t.value.indexOf(e);
o !== -1 && t.value.splice(o, 1);
};
return y(h, {
accordion: l.accordion,
activeKeys: a,
bordered: l.bordered,
defaultExpandAll: l.defaultExpandAll,
isPanelActive: i,
registerPanel: p,
togglePanel: n,
unregisterPanel: f
}), (e, o) => (x(), A("div", {
class: E(["ep-collapse", `ep-collapse--${d.accordion ? "accordion" : "default"}`])
}, [
g(e.$slots, "default", {}, void 0, !0)
], 2));
}
});
export {
C as default
};