uv-ui
Version:
基于vue3的移动端组件库
95 lines (94 loc) • 3.02 kB
JavaScript
import { ref as l, computed as F, openBlock as _, createBlock as H, unref as y, mergeProps as P } from "vue";
import w from "../picker/index.js";
import { getCurrentTime as S, getOptions as a, getMonthEndDay as j } from "./utils.js";
const $ = {
name: "UvDatetimePicker"
}, b = /* @__PURE__ */ Object.assign($, {
props: {
modelValue: {
type: String,
default: ""
},
minDate: {
type: Date,
default: () => new Date(new Date().getFullYear() - 10, 0, 1)
},
maxDate: {
type: Date,
default: () => new Date(new Date().getFullYear() + 10, 11, 31)
},
mode: {
type: String,
default: "date"
},
formatter: {
type: Function,
default: (d, u) => u
},
filter: {
type: Function
},
dateConnector: {
type: String,
default: "-"
},
timeConnector: {
type: String,
default: ":"
}
},
emits: ["update:modelValue", "cancle", "confim", "change"],
setup(d, { expose: u, emit: o }) {
const e = d, m = l(null), D = () => m.value.open(), x = () => m.value.close(), C = () => o("cancle"), M = (t) => o("change", t), V = (t) => {
if (e.mode === "time")
o("update:modelValue", t.replace(/,/g, e.timeConnector));
else if (e.mode === "date" || e.mode === "year-month")
o("update:modelValue", t.replace(/,/g, e.dateConnector));
else if (e.mode === "datetime") {
const n = t.split(","), c = n.slice(0, 3).join(e.dateConnector), O = n.slice(3).join(e.timeConnector);
o("update:modelValue", `${c} ${O}`);
} else
o("update:modelValue", t);
o("confim", t);
}, r = l(e.modelValue || S(e.mode)), f = l(r.value.slice(0, 4)), p = l(r.value[1]), Y = (t) => {
(e.mode === "date" || e.mode === "datetime") && (t.index === 0 ? f.value = t.value : t.index === 1 && (p.value = t.value));
}, s = () => {
const t = e.minDate.getFullYear(), n = e.maxDate.getFullYear();
return a(
t,
n,
"year",
e.formatter,
e.filter
);
}, i = () => a(
1,
12,
"month",
e.formatter,
e.filter
), g = () => {
const n = j(f.value, p.value);
return a(1, n, "day", e.formatter, e.filter);
}, h = () => a(0, 23, "hours", e.formatter, e.filter), v = () => a(0, 59, "minutes", e.formatter, e.filter), k = F(() => e.mode === "date" ? [s(), i(), g()] : e.mode === "year-month" ? [s(), i()] : e.mode === "time" ? [h(), v()] : e.mode === "datetime" ? [s(), i(), g(), h(), v()] : []);
return u({
open: D,
close: x
}), (t, n) => (_(), H(y(w), P({
ref_key: "uvPickerRef",
ref: m,
title: "\u65E5\u671F\u9009\u62E9",
list: y(k)
}, t.$attrs, {
modelValue: r.value,
"onUpdate:modelValue": n[0] || (n[0] = (c) => r.value = c),
onConfim: V,
onCancle: C,
onChange: M,
onColumnChange: Y
}), null, 16, ["list", "modelValue"]));
}
});
export {
b as default
};