UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

72 lines (71 loc) 2.5 kB
import { ref as c, computed as y, watch as U, onMounted as C, onUnmounted as D, nextTick as o } from "vue"; import N from "../../../Toast/src/toast.mjs"; import { Utils as E } from "@vuux/utils"; const F = (e, t, l, a, r) => { const i = c(!1), f = c(!1), d = (u) => { e.focusSelect && u.currentTarget instanceof HTMLInputElement && u.currentTarget.select(), i.value = !0, r("focus"); }, T = () => { i.value = !1, r("blur", a.value); }, h = (u) => { let v = a.value ? Number(a.value) : NaN; if (!isNaN(v) && e.precision !== void 0) { const m = Math.pow(10, e.precision); v = Math.round(v * m) / m, a.value !== v && (N.open("小数位数必须小于或等于" + e.precision), o(() => { a.value = void 0; })), a.value = v; } !isNaN(v) && v > Number(e.max) ? (N.open("值必须小于或等于" + e.max), o(() => { a.value = void 0; })) : !isNaN(v) && v < Number(e.min) && (N.open("值必须大于或等于" + e.min), o(() => { a.value = void 0; })), r("input", a.value); }, w = y(() => { const { readonly: u, disabled: v } = e; return { "is-readonly": u, "is-disabled": v }; }), n = c(null), s = () => { n.value && (clearInterval(n.value), n.value = null); }, I = () => { e.disabled || e.readonly || l.value && (l.value.stepUp(), a.value = Number(l.value.value), n.value = setTimeout(() => { n.value = setInterval(() => { l.value && (l.value.stepUp(), a.value = Number(l.value.value), Number(l.value.value) >= Number(e.max) && s()); }, 80); }, 250)); }, x = () => { e.disabled || e.readonly || l.value && (l.value.stepDown(), a.value = Number(l.value.value), n.value = setTimeout(() => { n.value = setInterval(() => { l.value && (l.value.stepDown(), a.value = Number(l.value.value), Number(l.value.value) <= Number(e.min) && s()); }, 80); }, 250)); }, M = () => { e.clear && (a.value = void 0, r("clear")); }, b = (u) => { i.value || u.preventDefault(); }; return U( () => a.value, (u) => { e.clear && (f.value = E.isNoNull(u)); } ), C(() => { t.value && t.value.addEventListener("wheel", b, { passive: !1 }); }), D(() => { t.value && t.value.removeEventListener("wheel", b); }), { isFocus: i, isClear: f, classNames: w, onFocus: d, onBlur: T, onInput: h, onPlus: I, onMinus: x, handleClear: M, onClearTimer: s }; }; export { F as useInputNumber };