UNPKG

@extclp/vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

146 lines (145 loc) 3.89 kB
import { ref as T, reactive as x, computed as b } from "vue"; import { getLast as U, toNumber as E } from "@vexip-ui/utils"; import { DisabledType as c } from "./symbol.mjs"; const y = Array.from({ length: 10 }, (u, s) => s); function D(u, s) { return u === `Digit${s}` || u === `Numpad${s}` || u === `${s}`; } function _(u) { const s = u.code || u.key; let e = null, r = !1; switch (s) { case "Tab": { r = !0, e = u.shiftKey ? "prev" : "next"; break; } case "ArrowRight": { r = !0, e = "next"; break; } case "Delete": case "ArrowLeft": { r = !0, e = "prev"; break; } case "ArrowUp": { r = !0, e = "up"; break; } case "ArrowDown": { r = !0, e = "down"; break; } case "Space": case " ": case "Enter": case "NumpadEnter": { r = !0, e = "ok"; break; } case "Escape": { r = !0, e = "esc"; break; } } if (r) u.preventDefault(), u.stopPropagation(); else { const o = y.findIndex((f) => D(s, f)); ~o && (e = o, u.preventDefault(), u.stopPropagation()); } return e; } function w(u, s = T(u[0])) { const e = Array.from(u), r = e.length, o = x( e.reduce((i, n) => (i[n] = !1, i), {}) ); function f(i) { s.value = i.find((n) => o[n]) ?? s.value; } function m(i, n = !1) { i || (s.value = null); const t = n ? Array.from(e).reverse() : e, a = t.findIndex((l) => l === i); ~a ? f(t.slice(a, r).concat(t.slice(0, a))) : f(t); } function d(i, n = !0) { s.value || (s.value = (i === "next" ? U(e) : e[0]) ?? null); for (let t = 0; t < r; ++t) if (s.value === e[t]) { const a = i === "prev" ? Array.from(e).reverse() : e, l = (i === "prev" ? r - t : t + 1) % r, A = n ? a.slice(l, r).concat(a.slice(0, l)) : l ? a.slice(l, r) : []; f(A); break; } } return { currentColumn: s, enabled: o, resetColumn: m, enterColumn: d }; } const v = [0, 0, 0], p = [23, 59, 59]; function M(u, s) { const e = b(() => u.value ? u.value.split(":").map(E) : v), r = b(() => s.value ? s.value.split(":").map(E) : p), o = b(() => { const n = e.value, t = r.value; for (let a = 0; a < 3; ++a) { if (n[a] < t[a]) return !1; if (n[a] > t[a]) return !0; } return !1; }), f = { hour: m, minute: (n, t) => d(n, t) !== c.FALSE, second: (n, t, a) => i(n, t, a) !== c.FALSE }; function m(n) { const t = e.value[0] || v[0], a = r.value[0] || p[0]; return o.value ? n > a && n < t : n < t || n > a; } function d(n, t) { if (m(n)) return c.UPSTREAM; if (e.value[0] === r.value[0] && n === e.value[0]) { const a = e.value[1] || v[1], l = r.value[1] || p[1]; if (o.value ? t > l && t < a : t < a || t > l) return c.TRUE; } if (n === e.value[0]) { const a = e.value[1] || v[1]; if (t < a) return c.AT_MIN_TRUE; } if (n === r.value[0]) { const a = r.value[1] || p[1]; if (t > a) return c.AT_MAX_TRUE; } return c.FALSE; } function i(n, t, a) { if (d(n, t) !== c.FALSE) return c.UPSTREAM; if (e.value[0] === r.value[0] && n === e.value[0] && e.value[1] === r.value[1] && t === e.value[1]) { const l = e.value[2] || v[2], A = r.value[2] || p[2]; if (o.value ? a > A && a < l : a < l || a > A) return c.TRUE; } if (n === e.value[0] && t === e.value[1]) { const l = e.value[2] || v[2]; if (a < l) return c.AT_MIN_TRUE; } if (n === r.value[0] && t === r.value[1]) { const l = r.value[2] || p[2]; if (a > l) return c.AT_MAX_TRUE; } return c.FALSE; } return { minUnits: e, maxUnits: r, reversed: o, isTimeDisabled: f }; } export { _ as handleKeyEnter, w as useColumn, M as useTimeBound }; //# sourceMappingURL=helper.mjs.map