@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
146 lines (145 loc) • 3.89 kB
JavaScript
import { reactive as T, ref 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 = x(u[0])) {
const e = Array.from(u), r = e.length, o = T(
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