Skip to content

Commit

Permalink
[User Experience Improvement] for Number Field, if allowing decimal, …
Browse files Browse the repository at this point in the history
…when the field is emtpy, the first "." will be considered as decimal input (text-mask#542)
  • Loading branch information
realdah authored and lozjackson committed Jun 12, 2017
1 parent 5b02e3c commit 4bffddc
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 3 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
language: node_js

node_js: "node"
node_js:
- "7"

install: true

Expand Down
2 changes: 1 addition & 1 deletion addons/dist/createNumberMask.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion addons/dist/textMaskAddons.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions addons/src/createNumberMask.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ export default function createNumberMask({
(rawValue[0] === prefix[0] && rawValueLength === 1)
) {
return prefix.split(emptyString).concat([digitRegExp]).concat(suffix.split(emptyString))
} else if(
rawValue === decimalSymbol &&
allowDecimal
) {
return prefix.split(emptyString).concat(['0', decimalSymbol, digitRegExp]).concat(suffix.split(emptyString))
}

const indexOfLastDecimal = rawValue.lastIndexOf(decimalSymbol)
Expand Down
17 changes: 17 additions & 0 deletions addons/test/createNumberMask.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,23 @@ describe('createNumberMask', () => {
expect(numberMask('-')).to.deep.equal([/-/, '$', /\d/])
})

it('starts with dot should be considered as decimal input', () => {
let numberMask = createNumberMask({prefix: '$', allowDecimal: true})
expect(numberMask('.')).to.deep.equal(['$', '0', '.', /\d/])

numberMask = createNumberMask({prefix: '#', allowDecimal: true})
expect(numberMask('.')).to.deep.equal(['#', '0', '.', /\d/])

numberMask = createNumberMask({prefix: '', allowDecimal: true})
expect(numberMask('.')).to.deep.equal(['0', '.', /\d/])

numberMask = createNumberMask({allowDecimal: false})
expect(numberMask('.')).to.deep.equal(['$'])

numberMask = createNumberMask({prefix: '', suffix: '$', allowDecimal: true})
expect(numberMask('.')).to.deep.equal(['0', '.', /\d/, '$'])
})

it('can allow leading zeroes', function() {
let numberMask = createNumberMask({allowLeadingZeroes: true})
expect(numberMask('012')).to.deep.equal(['$', /\d/, /\d/, /\d/])
Expand Down

0 comments on commit 4bffddc

Please sign in to comment.