Skip to content

Commit 2696f0a

Browse files
committed
Fix Reverse Fill issue
1 parent 0835b91 commit 2696f0a

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

docs/.vuepress/components/PlayGround.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ export default {
150150
suffix: '',
151151
precision: 2,
152152
nullValue: '',
153-
masked: false
153+
masked: false,
154+
reverseFill: false
154155
}
155156
}
156157
},

src/number-format.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ export default class NumberFormat {
4646
this.number = ''
4747
this.isClean = !reverseFill
4848

49-
this.preSurRegExp = new RegExp(`${prefix}|${suffix}`, 'g')
49+
const escapedPrefix = prefix.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
50+
const escapedSuffix = suffix.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
51+
52+
this.preSurRegExp = new RegExp(`${escapedPrefix}|${escapedSuffix}`, 'g')
5053
this.numberRegExp = new RegExp(`[^0-9\\${decimal}]+`, 'gi')
5154
this.cleanRegExp = new RegExp('[^0-9]+', 'gi')
5255
this.negativeRegExp = new RegExp('[^0-9\\-]+', 'gi')
@@ -170,12 +173,14 @@ export default class NumberFormat {
170173
unformat(input: Input): string {
171174
this.input = input
172175
const { reverseFill, nullValue } = this.options
176+
const realNumber = this.realNumber()
177+
const unformatNumber = this.unformatNumber()
173178
if (this.isNull()) {
174179
return nullValue
175180
}
176-
if (reverseFill && this.realNumber() === 0) {
181+
if (reverseFill && realNumber === 0) {
177182
return nullValue
178183
}
179-
return this.sign() + this.realNumber()
184+
return this.sign() + unformatNumber
180185
}
181186
}

tests/component/component.minimumFractionDigits.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ describe('VueNumber', () => {
2727
await input.trigger('blur')
2828

2929
expect(wrapper.vm.maskedValue).toBe('1,234.0')
30-
expect(wrapper.vm.unmaskedValue).toBe('1234')
31-
expect(wrapper.emitted()['input:model-value'][2]).toEqual(['1234'])
32-
expect(wrapper.emitted()['update:model-value'][2]).toEqual(['1234'])
30+
expect(wrapper.vm.unmaskedValue).toBe('1234.0')
31+
expect(wrapper.emitted()['input:model-value'][2]).toEqual(['1234.0'])
32+
expect(wrapper.emitted()['update:model-value'][2]).toEqual(['1234.0'])
3333
})
3434
})

tests/component/component.reverseFill.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ describe('VueNumber', () => {
2525

2626
expect(input.element.value).toBe('1,234.00')
2727
expect(wrapper.vm.maskedValue).toBe('1,234.00')
28-
expect(wrapper.vm.unmaskedValue).toBe('1234')
29-
expect(wrapper.emitted()['input:model-value'][1]).toEqual(['1234'])
30-
expect(wrapper.emitted()['update:model-value'][1]).toEqual(['1234'])
28+
expect(wrapper.vm.unmaskedValue).toBe('1234.00')
29+
expect(wrapper.emitted()['input:model-value'][1]).toEqual(['1234.00'])
30+
expect(wrapper.emitted()['update:model-value'][1]).toEqual(['1234.00'])
3131
})
3232
})

0 commit comments

Comments
 (0)