acdr-ui/dist/dev/mp-weixin/sheep/ui/su-number-box/su-number-box.js

146 lines
3.7 KiB
JavaScript
Raw Normal View History

2024-09-19 07:20:14 +08:00
"use strict";
const common_vendor = require("../../../common/vendor.js");
const _sfc_main = {
name: "UniNumberBox",
emits: ["change", "input", "update:modelValue", "blur", "focus"],
props: {
value: {
type: [Number, String],
default: 1
},
modelValue: {
type: [Number, String],
default: 1
},
min: {
type: Number,
default: 0
},
max: {
type: Number,
default: 100
},
step: {
type: Number,
default: 1
},
background: {
type: String,
default: "#f5f5f5"
},
color: {
type: String,
default: "#333"
},
disabled: {
type: Boolean,
default: false
},
activity: {
type: String,
default: "none"
}
},
data() {
return {
inputValue: 0
};
},
watch: {
value(val) {
this.inputValue = +val;
},
modelValue(val) {
this.inputValue = +val;
}
},
created() {
if (this.value === 1) {
this.inputValue = +this.modelValue;
}
if (this.modelValue === 1) {
this.inputValue = +this.value;
}
},
methods: {
_calcValue(type) {
if (this.disabled) {
return;
}
const scale = this._getDecimalScale();
let value = this.inputValue * scale;
const step = this.step * scale;
if (type === "minus") {
value -= step;
if (value < this.min * scale) {
return;
}
if (value > this.max * scale) {
value = this.max * scale;
}
}
if (type === "plus") {
value += step;
if (value > this.max * scale) {
return;
}
if (value < this.min * scale) {
value = this.min * scale;
}
}
this.inputValue = (value / scale).toFixed(String(scale).length - 1);
this.$emit("change", +this.inputValue);
this.$emit("input", +this.inputValue);
this.$emit("update:modelValue", +this.inputValue);
},
_getDecimalScale() {
let scale = 1;
if (~~this.step !== this.step) {
scale = Math.pow(10, String(this.step).split(".")[1].length);
}
return scale;
},
_onBlur(event) {
this.$emit("blur", event);
let value = event.detail.value;
if (!value) {
return;
}
value = +value;
if (value > this.max) {
value = this.max;
} else if (value < this.min) {
value = this.min;
}
const scale = this._getDecimalScale();
this.inputValue = value.toFixed(String(scale).length - 1);
this.$emit("change", +this.inputValue);
this.$emit("input", +this.inputValue);
},
_onFocus(event) {
this.$emit("focus", event);
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $data.inputValue <= $props.min || $props.disabled ? 1 : "",
b: $props.activity === "groupon" ? 1 : "",
c: $props.activity === "seckill" ? 1 : "",
d: common_vendor.o(($event) => $options._calcValue("minus")),
e: $props.disabled,
f: common_vendor.o((...args) => $options._onFocus && $options._onFocus(...args)),
g: common_vendor.o((...args) => $options._onBlur && $options._onBlur(...args)),
h: $props.color,
i: $data.inputValue,
j: common_vendor.o(($event) => $data.inputValue = $event.detail.value),
k: $data.inputValue >= $props.max || $props.disabled ? 1 : "",
l: $props.activity === "groupon" ? 1 : "",
m: $props.activity === "seckill" ? 1 : "",
n: common_vendor.o(($event) => $options._calcValue("plus"))
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-49a8083f"]]);
wx.createComponent(Component);
//# sourceMappingURL=su-number-box.js.map