UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

92 lines (91 loc) 3.17 kB
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 };