vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
72 lines (71 loc) • 2.5 kB
JavaScript
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
};