From d6d2b92dcb55e1aafe023f3323947f6011d44b23 Mon Sep 17 00:00:00 2001 From: mertsincan Date: Wed, 17 Jun 2020 15:06:01 +0300 Subject: [PATCH] Fixed #337 - InputNumber prevents min key number --- src/components/inputnumber/InputNumber.vue | 41 +++++++++++----------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/components/inputnumber/InputNumber.vue b/src/components/inputnumber/InputNumber.vue index a5189a331c..ad7cbbb585 100755 --- a/src/components/inputnumber/InputNumber.vue +++ b/src/components/inputnumber/InputNumber.vue @@ -207,18 +207,10 @@ export default { this.spin(event, dir); }, - spin(event, dir) { + spin(event, dir, value) { let step = this.step * dir; - let currentValue = this.value || 0; - let newValue = currentValue + step; - - if (this.min !== null && newValue < this.min) { - newValue = this.min; - } - - if (this.max !== null && newValue > this.max) { - newValue = this.max; - } + let currentValue = this.parseValue(this.$refs.input.$el.value) || 0; + let newValue = this.validateValue(currentValue + step); this.updateInput(newValue, 'spin'); this.updateModel(event, newValue); @@ -492,16 +484,19 @@ export default { updateValue(event, valueStr, operation) { if (valueStr != null) { let newValue = this.parseValue(valueStr); - let valid = this.isWithinRange(newValue); - - if (valid) { - this.updateInput(newValue, operation); - this.updateModel(event, newValue); - } + this.updateInput(newValue, operation); } }, - isWithinRange(value) { - return value == null || ((this.min == null || value > this.min) && (this.max == null || value < this.max)); + validateValue(value) { + if (this.min != null && value < this.min) { + return this.min; + } + + if (this.max != null && value > this.max) { + return this.max; + } + + return value; }, updateInput(value, operation) { let currentLength = this.$refs.input.$el.value.length; @@ -545,6 +540,12 @@ export default { }, onInputBlur(event) { this.focused = false; + + let newValue = this.validateValue(this.parseValue(this.$refs.input.$el.value)); + this.$refs.input.$el.value = this.formatValue(newValue); + this.$refs.input.$el.setAttribute('aria-valuenow', newValue); + this.updateModel(event, newValue); + this.$emit('blur', event); }, clearTimer() { @@ -714,4 +715,4 @@ export default { .p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input { width: 100%; } - \ No newline at end of file +