UNPKG

@open-data-v/ui

Version:

OpenDataV UI基础包

96 lines (95 loc) 3.14 kB
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