uv-ui
Version:
基于vue3的移动端组件库
134 lines (133 loc) • 3.94 kB
JavaScript
import { computed as d, inject as P, ref as g, watch as B, openBlock as p, createBlock as h, unref as s, mergeProps as F, withCtx as $, createElementVNode as a, toDisplayString as f, renderSlot as E, createElementBlock as H, Fragment as L, renderList as T } from "vue";
import U from "../popup/index.js";
import A from "./picker-column.js";
import { getColumnsType as D, formatCascadeColumns as q } from "./utils.js";
import "./picker.vue_vue_type_style_index_0_lang.js";
const z = { class: "uv-picker" }, G = { class: "uv-picker-title" }, I = { class: "uv-picker-title-center" }, J = { class: "uv-picker-content" }, K = /* @__PURE__ */ a("div", { class: "uv-picker-content-wrapper" }, null, -1), M = {
name: "UvPicker"
}, Z = /* @__PURE__ */ Object.assign(M, {
props: {
modelValue: {
type: [String, Number],
default: ""
},
title: {
type: String
},
leftName: {
type: String,
default: "\u53D6\u6D88"
},
rightName: {
type: String,
default: "\u786E\u5B9A"
},
list: {
type: Array,
default: () => []
},
keyName: {
type: [String, Number],
default: "value"
},
labelName: {
type: [String, Number],
default: "label"
},
childrenName: {
type: String,
default: "children"
}
},
emits: ["update:modelValue", "change", "column-change", "cancle", "confim"],
setup(n, { expose: y, emit: u }) {
const r = n, k = d(() => {
const e = String(r.modelValue);
return /[\\/:\-\s]/.test(e) ? e.split(/[\\/:\-\s]/) : e.split(",");
}), v = d(
() => D(r.list, r.childrenName)
), N = d(() => {
const { list: e, labelName: t, keyName: i, childrenName: c } = r;
switch (v.value) {
case "multiple":
return e;
case "cascade":
return q(e, {
label: t,
value: i,
children: c
}, l);
default:
return [e];
}
}), { props: b, validateBlurOrChange: V } = P("form-item", {}), l = g([]);
B(() => r.modelValue, (e) => {
l.value = e.split(",");
}, {
immediate: !0
});
const o = g(!1), S = () => {
o.value = !0;
}, C = () => {
o.value = !1;
};
function _() {
u("cancle"), o.value = !1;
}
function j(e, t) {
l.value[t] = e, l.value.join(","), u("change", l.value.join(",")), u("column-change", {
value: e,
index: t
});
}
function w(e, t) {
l.value[t] = e;
}
function O() {
u("confim", l.value.join(",")), u("update:modelValue", l.value.join(",")), b && V("blur"), o.value = !1;
}
return y({
open: S,
close: C
}), (e, t) => (p(), h(s(U), F({
modelValue: o.value,
"onUpdate:modelValue": t[0] || (t[0] = (i) => o.value = i),
position: "bottom"
}, e.$attrs), {
default: $(() => [
a("div", z, [
a("div", G, [
a("div", {
class: "uv-picker-title-left",
onClick: _
}, f(n.leftName), 1),
E(e.$slots, "title", {}, () => [
a("div", I, f(n.title), 1)
]),
a("div", {
class: "uv-picker-title-right",
onClick: O
}, f(n.rightName), 1)
]),
a("div", J, [
K,
(p(!0), H(L, null, T(s(N), (i, c) => (p(), h(A, {
key: c,
list: i,
"key-name": n.keyName,
"label-name": n.labelName,
value: s(k)[c],
"columns-type": s(v),
onChange: (m) => j(m, c),
onFirstOpen: (m) => w(m, c)
}, null, 8, ["list", "key-name", "label-name", "value", "columns-type", "onChange", "onFirstOpen"]))), 128))
])
])
]),
_: 3
}, 16, ["modelValue"]));
}
});
export {
Z as default
};