Skip to content

Commit 23b596f

Browse files
committed
fix vuejs#541 currency filter for negative numbers
1 parent 447fa2d commit 23b596f

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/filters/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,14 @@ exports.currency = function (value, sign) {
5252
value = parseFloat(value)
5353
if (!value && value !== 0) return ''
5454
sign = sign || '$'
55-
var s = Math.floor(value).toString(),
55+
var s = Math.floor(Math.abs(value)).toString(),
5656
i = s.length % 3,
5757
h = i > 0
5858
? (s.slice(0, i) + (s.length > 3 ? ',' : ''))
5959
: '',
6060
f = '.' + value.toFixed(2).slice(-2)
61-
return sign + h + s.slice(i).replace(digitsRE, '$1,') + f
61+
return (value < 0 ? '-' : '') +
62+
sign + h + s.slice(i).replace(digitsRE, '$1,') + f
6263
}
6364

6465
/**

test/unit/specs/filters_spec.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ describe('Filters', function () {
5858
expect(filter(false)).toBe('')
5959
expect(filter(null)).toBe('')
6060
expect(filter(undefined)).toBe('')
61+
// negative numbers
62+
expect(filter(-50)).toBe('-$50.00')
63+
expect(filter(-150.43)).toBe('-$150.43')
64+
expect(filter(-1500.4343434)).toBe('-$1,500.43')
6165
})
6266

6367
it('key', function () {

0 commit comments

Comments
 (0)