@open-data-v/ui
Version:
OpenDataV UI基础包
96 lines (95 loc) • 3.14 kB
JavaScript
import { defineComponent as C, inject as y, watch as O, onMounted as B, openBlock as k, createElementBlock as I, normalizeClass as i, createElementVNode as t, renderSlot as V, createVNode as p, unref as c } from "vue";
import x from "../Icon/Add.esm.js";
import z from "../Icon/Subtract.esm.js";
const E = { class: "o-input-number-input" }, S = ["value", "disabled", "readOnly", "placeholder"], $ = { class: "number-control" }, F = { class: "suffix" }, M = /* @__PURE__ */ C({
__name: "InputNumber",
props: {
value: { default: 0 },
max: {},
min: {},
step: { default: 1 },
disabled: { type: Boolean },
placeholder: {},
readOnly: { type: Boolean, default: !1 },
size: {},
clearable: { type: Boolean, default: !1 }
},
emits: ["update:value", "updateValue", "focus", "blur", "change"],
setup(f, { emit: b }) {
const n = f, l = b, v = (e) => {
n.disabled || l("focus", e);
}, h = (e) => {
const { value: a } = e.target;
n.max && !isNaN(n.max) && parseInt(a) > n.max && o(n.max), n.min && !isNaN(n.min) && parseInt(a) < n.min && o(n.min), l("blur", e);
}, N = (e) => {
const { value: a } = e.target;
o(parseInt(a));
}, r = (e) => {
const a = n.value || 0;
if (!isNaN(a) && !n.disabled) {
let s = 0;
e > 0 ? n.max && !isNaN(n.max) && a + n.step > n.max ? s = n.max : s = a + n.step : n.min && !isNaN(n.min) && a - n.step < n.min ? s = n.min : s = a - n.step;
const d = n.step + "";
if (d.indexOf(".") !== -1) {
const g = d.substring(d.indexOf(".") + 1).length;
s = Number(s.toFixed(g));
}
o(s);
}
}, m = y("OControlChange", ""), u = (e, a) => {
m && m(e, a);
}, o = (e) => {
l("change", e), l("update:value", e), l("updateValue", e), u(e);
};
return O(
() => n.value,
(e) => {
u(e, "mounted");
}
), B(() => {
u(n.value, "mounted");
}), (e, a) => (k(), I("div", {
class: i({ disabled: e.disabled, "o-input-number": !0 })
}, [
t("div", E, [
t("input", {
type: "text",
value: e.value,
class: i({
disabled: e.disabled,
"o-input-control": !0,
[e.size || ""]: e.size
}),
disabled: e.disabled,
readOnly: e.readOnly,
placeholder: e.placeholder,
onkeyup: "this.value=this.value.replace(/[^0-9\\.]/g,'')",
onFocus: v,
onBlur: h,
onInput: N
}, null, 42, S)
]),
t("div", $, [
t("a", F, [
V(e.$slots, "suffix")
]),
t("a", {
class: i(["icon-minus", { disabled: e.min && e.value <= e.min }]),
onClick: a[0] || (a[0] = (s) => r(-1))
}, [
p(c(z))
], 2),
t("a", {
class: i(["icon-plus", { disabled: e.max && e.value >= e.max }]),
onClick: a[1] || (a[1] = (s) => r(1))
}, [
p(c(x))
], 2)
])
], 2));
}
});
export {
M as default
};
//# sourceMappingURL=InputNumber.vue.esm.js.map