vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
92 lines (91 loc) • 3.17 kB
JavaScript
import { defineComponent as D, useTemplateRef as z, createElementBlock as l, openBlock as a, normalizeClass as u, unref as e, createElementVNode as c, createVNode as p, toDisplayString as v, createBlock as y, createCommentVNode as r, withModifiers as T, Transition as C, withCtx as B, Fragment as g, renderList as V, withDirectives as F, vShow as L } from "vue";
import { useCascader as M } from "./hook/useCascader.mjs";
import { Icon as m } from "@vuux/icons";
const O = { class: "cascader-icon" }, R = {
key: 0,
class: "cascader-panel"
}, $ = {
key: 0,
class: "is-empty"
}, j = {
key: 0,
class: "cascader-item"
}, q = ["onClick"], P = /* @__PURE__ */ D({
name: "Cascader",
__name: "index",
props: {
data: { default: null },
modelValue: { default: "" },
decollator: { default: "/" },
placeholder: { default: "请选择" },
last: { type: Boolean },
disabled: { type: Boolean },
fields: { default: () => ({
label: "label",
value: "value",
children: "children"
}) },
clear: { type: Boolean }
},
emits: ["update:modelValue", "change", "clear"],
setup(w, { emit: E }) {
const s = w, I = E, h = z("cascaderEl"), { openState: f, treeData: b, classNames: N, displayValue: o, handleOpen: _, handleSelectBar: S, handleClear: x } = M(s, h, I);
return (A, k) => (a(), l("div", {
ref_key: "cascaderEl",
ref: h,
class: u(e(N))
}, [
c("div", {
class: "cascader-value",
onClick: k[0] || (k[0] = //@ts-ignore
(...t) => e(_) && e(_)(...t))
}, [
c("p", null, v(e(o) ? e(o) : s.placeholder), 1),
c("div", O, [
e(o) ? (a(), y(e(m), {
key: 0,
name: "Icon9176904",
size: 13,
class: "is-close",
onClick: T(e(x), ["stop"])
}, null, 8, ["onClick"])) : r("", !0),
p(e(m), {
name: "Icon6657361",
class: u(["is-arrow", { "is-active": e(f) }])
}, null, 8, ["class"])
])
]),
p(C, { name: "slide-up" }, {
default: B(() => [
e(f) ? (a(), l("div", R, [
!s.data || s.data.length == 0 ? (a(), l("div", $, "暂无数据")) : r("", !0),
(a(!0), l(g, null, V(e(b), (t, d) => (a(), y(C, {
key: d,
name: "slide-up"
}, {
default: B(() => [
t.data.length ? (a(), l("div", j, [
(a(!0), l(g, null, V(t.data, (n, i) => (a(), l("div", {
key: d + i,
class: u(["item", [{ "is-active": t.selectIndex === i }]]),
onClick: (G) => e(S)(n, i, d, "click")
}, [
c("span", null, v(n.label), 1),
F(p(e(m), { name: "Icon6657361" }, null, 512), [
[L, n.children && n.children.length]
])
], 10, q))), 128))
])) : r("", !0)
]),
_: 2
}, 1024))), 128))
])) : r("", !0)
]),
_: 1
})
], 2));
}
});
export {
P as default
};