UNPKG

@layui/layui-vue

Version:

a component library for Vue 3 base on layui-vue

71 lines (70 loc) 8.84 kB
import { defineComponent as ue, ref as y, computed as k, watch as I, openBlock as C, createElementBlock as oe, normalizeClass as ne, createElementVNode as m, createVNode as n, unref as i, withCtx as d, toDisplayString as f, createBlock as T, createCommentVNode as z, createTextVNode as se } from "vue"; import h from "../../dropdown/index.js"; import p from "../../icon/index.js"; import { useI18n as ie } from "../../language/index.js"; import S from "dayjs"; import { useBaseDatePicker as re } from "../hook/useBaseDatePicker.js"; import { useShortcutsRange as de } from "../hook/useShortcutsRange.js"; import { setHMS as E, setDateList as U } from "../util.js"; import M from "./common/DateContent.js"; import ve from "./common/DatePickerRender.js"; import me from "./common/Footer.js"; import $ from "./common/Month.js"; import ce from "./common/Shortcuts.js"; import q from "./common/Time.js"; import G from "./common/Year.js"; const ye = { class: "layui-laydate-range-main" }, fe = { class: "layui-laydate-main layui-laydate-main-date" }, pe = { class: "layui-laydate-header" }, he = { class: "laydate-set-ym" }, ke = { class: "layui-laydate-main layui-laydate-main-date" }, Pe = { class: "layui-laydate-header" }, ge = { class: "laydate-set-ym" }, Ae = ue({ __name: "DateRange", props: { modelValue: {}, size: {}, type: {}, disabled: { type: Boolean }, readonly: { type: Boolean }, allowClear: { type: Boolean }, simple: { type: Boolean }, range: { type: Boolean }, rangeSeparator: {}, prefixIcon: {}, suffixIcon: {}, timestamp: { type: Boolean }, yearPage: {}, name: {}, placeholder: {}, max: {}, min: {}, format: {}, inputFormat: {}, defaultValue: {}, defaultTime: {}, contentStyle: { type: [Boolean, null, String, Object, Array] }, contentClass: {}, disabledDate: {}, shortcuts: {}, static: { type: Boolean }, teleportProps: {} }, emits: ["pick"], setup(J, { emit: K }) { const c = J, Q = K, { t: r } = ie(), { defaultTimeValue: P, getDefaultValue: _ } = re(c), W = de(), o = y(), s = y(), l = y(_()), u = y(_().add(1, "month")), b = y(), V = y(), R = y(), O = y(), x = y(), X = y(), Y = y(), H = k(() => c.simple && c.type !== "datetime"), D = k(() => [r("datePicker.january"), r("datePicker.february"), r("datePicker.march"), r("datePicker.april"), r("datePicker.may"), r("datePicker.june"), r("datePicker.july"), r("datePicker.august"), r("datePicker.september"), r("datePicker.october"), r("datePicker.november"), r("datePicker.december")]); I(() => c.modelValue, () => { const [a, e] = c.modelValue; o.value = a, s.value = e; const t = _(), v = P.value[0] ? E(t, P.value[0]) : t, w = P.value[1] ? E(t.add(1, "month"), P.value[1]) : t.add(1, "month"); l.value = a || v, u.value = e || w; }, { immediate: !0 }), I(() => l.value, (a) => { const e = u.value.clone(); u.value = a.add(1, "month").set("hour", e.hour()).set("minute", e.minute()).set("second", e.second()); }, { immediate: !0 }); const Z = k(() => U(l.value.year(), l.value.month()) || []), ee = k(() => U(u.value.year(), u.value.month()) || []), j = k(() => (a) => { var v, w; const e = S(a.value), t = s.value || b.value; return { "layui-this": a.type === "current" && (((v = o.value) == null ? void 0 : v.startOf("day").valueOf()) === a.value || ((w = s.value) == null ? void 0 : w.startOf("day").valueOf()) === a.value), "laydate-range-hover": !!(a.type === "current" && (o.value && e.isSameOrAfter(o.value, "day") && e.isSameOrBefore(t, "day") || o.value && e.isSameOrBefore(o.value, "day") && e.isSameOrAfter(t, "day"))) }; }); function L(a) { const e = S(a), t = (o.value || l.value).clone().set("year", e.year()).set("month", e.month()).set("date", e.date()), v = (s.value || u.value).clone().set("year", e.year()).set("month", e.month()).set("date", e.date()); !o.value || o.value && s.value ? (o.value = t, s.value = void 0) : e.isSameOrBefore(o.value, "day") ? (s.value = o.value.clone().set("hour", u.value.hour()).set("minute", u.value.minute()).set("second", u.value.second()), o.value = t) : s.value = v, H.value && o.value && s.value && B(); } function N(a) { o.value && !s.value ? b.value = S(a) : b.value = null; } function g(a, e) { l.value = l.value[a](1, e); } function A(a, e, t) { const v = a[e](); l.value = l.value[e](v), t.hide(); } function F(a, e, t) { const v = a[e](); l.value = u.value[e](v).subtract(1, "month"), t.hide(); } function ae(a) { l.value = l.value.clone().set("hour", a.hour()).set("minute", a.minute()).set("second", a.second()), o.value && (o.value = o.value.set("hour", l.value.hour()).set("minute", l.value.minute()).set("second", l.value.second())); } function te(a) { u.value = u.value.clone().set("hour", a.hour()).set("minute", a.minute()).set("second", a.second()), s.value && (s.value = s.value.set("hour", u.value.hour()).set("minute", u.value.minute()).set("second", u.value.second())); } function le(a) { const e = W(a); l.value = e[0], u.value = e[1], o.value = e[0], s.value = e[1], c.simple && B(); } function B() { Q("pick", [o.value, s.value]); } return (a, e) => (C(), oe("div", { class: ne(["layui-laydate layui-laydate-range", `layui-laydate-range-${c.type}`]) }, [m("div", ye, [n(ce, { onChangeShortcut: le }), m("div", fe, [m("div", pe, [n(i(p), { type: "layui-icon-prev", onClick: e[0] || (e[0] = (t) => g("subtract", "year")) }), n(i(p), { type: "layui-icon-left", onClick: e[1] || (e[1] = (t) => g("subtract", "month")) }), m("div", he, [n(i(h), { ref_key: "yearLeftRef", ref: V }, { content: d(() => [n(G, { class: "layui-laydate", "model-value": l.value, "show-date": l.value, onPick: e[2] || (e[2] = (t) => A(t, "year", V.value)) }, null, 8, ["model-value", "show-date"])]), default: d(() => [m("span", null, f(l.value.year()) + " " + f(i(r)("datePicker.year")), 1)]), _: 1 }, 512), n(i(h), { ref_key: "monthLeftRef", ref: O }, { content: d(() => [n($, { class: "layui-laydate", "model-value": l.value, "show-date": l.value, onPick: e[3] || (e[3] = (t) => A(t, "month", O.value)) }, null, 8, ["model-value", "show-date"])]), default: d(() => [m("span", null, f(D.value[l.value.month()]), 1)]), _: 1 }, 512), c.type === "datetime" ? (C(), T(i(h), { key: 0, ref_key: "timeLeftRef", ref: X }, { content: d(() => [n(q, { class: "layui-laydate", "model-value": o.value || l.value, "show-date": o.value || l.value, onPick: ae }, null, 8, ["model-value", "show-date"])]), default: d(() => [m("span", null, f(l.value.format("HH:mm:ss")), 1)]), _: 1 }, 512)) : z("", !0)]), n(i(p), { type: "layui-icon-right", style: { visibility: "hidden" } }), n(i(p), { type: "layui-icon-next", style: { visibility: "hidden" } })]), n(M, { classes: j.value, "date-list": Z.value, "onUpdate:modelValue": L, onHoverCell: N }, null, 8, ["classes", "date-list"])]), m("div", ke, [m("div", Pe, [n(i(p), { type: "layui-icon-prev", style: { visibility: "hidden" } }), n(i(p), { type: "layui-icon-left", style: { visibility: "hidden" } }), m("div", ge, [n(i(h), { ref_key: "yearRightRef", ref: R }, { content: d(() => [n(G, { class: "layui-laydate", "model-value": u.value, "show-date": u.value, onPick: e[4] || (e[4] = (t) => F(t, "year", R.value)) }, null, 8, ["model-value", "show-date"])]), default: d(() => [m("span", null, f(u.value.year()) + " " + f(i(r)("datePicker.year")), 1)]), _: 1 }, 512), n(i(h), { ref_key: "monthRightRef", ref: x }, { content: d(() => [n($, { class: "layui-laydate", "model-value": u.value, "show-date": u.value, "date-type": "month", onPick: e[5] || (e[5] = (t) => F(t, "month", x.value)) }, null, 8, ["model-value", "show-date"])]), default: d(() => [m("span", null, f(D.value[u.value.month()]), 1)]), _: 1 }, 512), c.type === "datetime" ? (C(), T(i(h), { key: 0, ref_key: "timeRightRef", ref: Y }, { content: d(() => [n(q, { class: "layui-laydate", "model-value": s.value || u.value, "show-date": s.value || u.value, onPick: te }, null, 8, ["model-value", "show-date"])]), default: d(() => [m("span", null, f(u.value.format("HH:mm:ss")), 1)]), _: 1 }, 512)) : z("", !0)]), n(i(p), { type: "layui-icon-right", onClick: e[6] || (e[6] = (t) => g("add", "month")) }), n(i(p), { type: "layui-icon-next", onClick: e[7] || (e[7] = (t) => g("add", "year")) })]), n(M, { classes: j.value, "date-list": ee.value, "onUpdate:modelValue": L, onHoverCell: N }, null, 8, ["classes", "date-list"])])]), n(me, { "show-now": !1, "show-confirm": !H.value, onConfirm: B }, { default: d(() => [n(ve, { render: "footer", start: o.value, end: s.value }, { default: d(() => { var t, v; return [se(f((t = o.value) == null ? void 0 : t.format(c.inputFormat)) + " " + f(c.rangeSeparator) + " " + f((v = s.value) == null ? void 0 : v.format(c.inputFormat)), 1)]; }), _: 1 }, 8, ["start", "end"])]), _: 1 }, 8, ["show-confirm"])], 2)); } }); export { Ae as default };