Skip to content

Commit

Permalink
Merge pull request #55 from nosir/bug-fix
Browse files Browse the repository at this point in the history
[bug-fix] Ongoing till the end
  • Loading branch information
nosir authored Jul 19, 2016
2 parents c3f3e66 + 99c9ac9 commit 0a63989
Show file tree
Hide file tree
Showing 17 changed files with 131 additions and 37 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ Now in your JavaScript

```js
var cleave = new Cleave('.input-phone', {
phone: true,
regionCode: '{country}'
phone: true,
phoneRegionCode: '{country}'
});
```

Expand Down Expand Up @@ -171,7 +171,7 @@ gulp mocha && gulp eslint
- [ ] AngularJS component (WIP...)
- [ ] PhantomJS / Jest browser tests

> Then to contributors, we have a [not in the plan](https://github.com/nosir/cleave.js/blob/master/doc/not-in-the-plan.md) list you may concern.
> For contributors, we have a [not in the plan](https://github.com/nosir/cleave.js/blob/master/doc/not-in-the-plan.md) list you may concern.
## Get in touch
- Bugs / Suggestions: [open an issue](https://github.com/nosir/cleave.js/issues)
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"form",
"input"
],
"version": "0.4.8",
"version": "0.4.9",
"author": {
"name": "Max Huang",
"email": "[email protected]",
Expand Down
26 changes: 18 additions & 8 deletions dist/cleave-react.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/cleave-react.min.js

Large diffs are not rendered by default.

34 changes: 25 additions & 9 deletions dist/cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ Cleave.prototype = {
// 1234*| -> hit backspace -> 123|
// case 2: last character is not delimiter which is:
// 12|34* -> hit backspace -> 1|34*

if (pps.backspace && value.slice(-1) !== pps.delimiter) {
// note: no need to apply this for numeral mode
if (!pps.numeral && pps.backspace && value.slice(-1) !== pps.delimiter) {
value = Util.headStr(value, value.length - 1);
}

Expand Down Expand Up @@ -240,9 +240,14 @@ Cleave.prototype = {
},

getRawValue: function () {
var owner = this, pps = owner.properties;
var owner = this, pps = owner.properties,
inputValue = owner.element.value;

return Cleave.Util.strip(owner.element.value, pps.delimiterRE);
if (pps.numeral) {
return pps.numeralFormatter.getRawValue(inputValue);
}

return Cleave.Util.strip(inputValue, pps.delimiterRE);
},

getFormattedValue: function () {
Expand Down Expand Up @@ -375,8 +380,13 @@ var DefaultProperties = {

target.initValue = opts.initValue || '';

target.delimiter = opts.delimiter || (target.date ? '/' : (target.numeral ? ',' : ' '));
target.delimiterRE = new RegExp('\\' + target.delimiter, 'g');
target.delimiter =
(opts.delimiter || opts.delimiter === '') ? opts.delimiter :
(opts.date ? '/' :
(opts.numeral ? ',' :
(opts.phone ? ' ' :
' ')));
target.delimiterRE = new RegExp('\\' + (target.delimiter || ' '), 'g');

target.blocks = opts.blocks || [];
target.blocksLength = target.blocks.length;
Expand Down Expand Up @@ -592,7 +602,8 @@ var NumeralFormatter = function (numeralDecimalMark,
owner.numeralDecimalMark = numeralDecimalMark || '.';
owner.numeralDecimalScale = numeralDecimalScale || 2;
owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;
owner.delimiter = delimiter || ',';
owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
};

NumeralFormatter.groupStyle = {
Expand All @@ -602,6 +613,10 @@ NumeralFormatter.groupStyle = {
};

NumeralFormatter.prototype = {
getRawValue: function (value) {
return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');
},

format: function (value) {
var owner = this, parts, partInteger, partDecimal = '';

Expand Down Expand Up @@ -656,8 +671,9 @@ if (typeof module === 'object' && typeof module.exports === 'object') {
var PhoneFormatter = function (formatter, delimiter) {
var owner = this;

owner.delimiter = delimiter || ' ';
owner.delimiterRE = new RegExp('\\' + owner.delimiter, 'g');
owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';

owner.formatter = formatter;
};

Expand Down
4 changes: 2 additions & 2 deletions dist/cleave.min.js

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions doc/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ new Cleave('.my-input', {
...
```

You can also custom the [delimiter](#delimiter) for credit card numbers

### `onCreditCardTypeChanged`

A callback `Function`. Triggered after credit card type changes.
Expand Down Expand Up @@ -97,6 +99,8 @@ new Cleave('.my-input', {
// 202 XXX XXXX
```

You can also custom the [delimiter](#delimiter) for phone numbers

## Date

### `date`
Expand Down Expand Up @@ -126,6 +130,8 @@ new Cleave('.my-input', {
['Y', 'm', 'd']: 1965/04/26
```

You can also custom the [delimiter](#delimiter) for date

## Numerals

### `numeral`
Expand Down Expand Up @@ -204,6 +210,8 @@ new Cleave('.my-input', {
// 1.234.567,89
```

You can also custom the [prefix](#prefix) for numeral

## General config

### `delimiter`
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"form",
"input"
],
"version": "0.4.8",
"version": "0.4.9",
"author": {
"name": "Max Huang",
"url": "http://github.com/nosir",
Expand Down
13 changes: 9 additions & 4 deletions src/Cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ Cleave.prototype = {
// 1234*| -> hit backspace -> 123|
// case 2: last character is not delimiter which is:
// 12|34* -> hit backspace -> 1|34*

if (pps.backspace && value.slice(-1) !== pps.delimiter) {
// note: no need to apply this for numeral mode
if (!pps.numeral && pps.backspace && value.slice(-1) !== pps.delimiter) {
value = Util.headStr(value, value.length - 1);
}

Expand Down Expand Up @@ -238,9 +238,14 @@ Cleave.prototype = {
},

getRawValue: function () {
var owner = this, pps = owner.properties;
var owner = this, pps = owner.properties,
inputValue = owner.element.value;

if (pps.numeral) {
return pps.numeralFormatter.getRawValue(inputValue);
}

return Cleave.Util.strip(owner.element.value, pps.delimiterRE);
return Cleave.Util.strip(inputValue, pps.delimiterRE);
},

getFormattedValue: function () {
Expand Down
8 changes: 6 additions & 2 deletions src/Cleave.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,11 @@ var Cleave = React.createClass({

owner.onInput(event.target.value);

event.target.rawValue = Util.strip(pps.result, pps.delimiterRE);
if (pps.numeral) {
event.target.rawValue = pps.numeralFormatter.getRawValue(pps.result);
} else {
event.target.rawValue = Util.strip(pps.result, pps.delimiterRE);
}

owner.registeredEvents.onChange(event);
},
Expand All @@ -152,7 +156,7 @@ var Cleave = React.createClass({
// case 2: last character is not delimiter which is:
// 12|34* -> hit backspace -> 1|34*

if (pps.backspace && value.slice(-1) !== pps.delimiter) {
if (!pps.numeral && pps.backspace && value.slice(-1) !== pps.delimiter) {
value = Util.headStr(value, value.length - 1);
}

Expand Down
9 changes: 7 additions & 2 deletions src/common/DefaultProperties.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,13 @@ var DefaultProperties = {

target.initValue = opts.initValue || '';

target.delimiter = opts.delimiter || (target.date ? '/' : (target.numeral ? ',' : ' '));
target.delimiterRE = new RegExp('\\' + target.delimiter, 'g');
target.delimiter =
(opts.delimiter || opts.delimiter === '') ? opts.delimiter :
(opts.date ? '/' :
(opts.numeral ? ',' :
(opts.phone ? ' ' :
' ')));
target.delimiterRE = new RegExp('\\' + (target.delimiter || ' '), 'g');

target.blocks = opts.blocks || [];
target.blocksLength = target.blocks.length;
Expand Down
7 changes: 6 additions & 1 deletion src/shortcuts/NumeralFormatter.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ var NumeralFormatter = function (numeralDecimalMark,
owner.numeralDecimalMark = numeralDecimalMark || '.';
owner.numeralDecimalScale = numeralDecimalScale || 2;
owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;
owner.delimiter = delimiter || ',';
owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
};

NumeralFormatter.groupStyle = {
Expand All @@ -19,6 +20,10 @@ NumeralFormatter.groupStyle = {
};

NumeralFormatter.prototype = {
getRawValue: function (value) {
return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');
},

format: function (value) {
var owner = this, parts, partInteger, partDecimal = '';

Expand Down
5 changes: 3 additions & 2 deletions src/shortcuts/PhoneFormatter.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
var PhoneFormatter = function (formatter, delimiter) {
var owner = this;

owner.delimiter = delimiter || ' ';
owner.delimiterRE = new RegExp('\\' + owner.delimiter, 'g');
owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';

owner.formatter = formatter;
};

Expand Down
4 changes: 4 additions & 0 deletions test/NumeralFormatter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ describe('NumeralFormatter', function () {
title.push('Delimiter: ' + numeral.delimiter);
}

if (numeral.delimiterOff) {
title.push('Delimiter Off: ' + numeral.delimiterOff);
}

describe(title.join(', '), function () {
var numeralFormatter = new NumeralFormatter(
numeral.numeralDecimalMark,
Expand Down
12 changes: 12 additions & 0 deletions test/PhoneFormatter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,16 @@ describe('PhoneFormatter', function () {
});
});
});

describe('delimiter off', function () {
var delimiter = phones.delimiterOff;

var phoneNumberFormatter = new PhoneFormatter(new PhoneTypeFormatter.Cleave.AsYouTypeFormatter(delimiter.region), delimiter.sign);

_.each(delimiter.format, function (format) {
it('should format ' + delimiter.region + ' phone number ' + format[0] + ' to ' + format[1], function () {
phoneNumberFormatter.format(format[0]).should.eql(format[1]);
});
});
});
});
10 changes: 10 additions & 0 deletions test/fixtures/numeral.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,16 @@
]
]
},
{
"numeralDecimalMark": ".",
"delimiter": "",
"numbers": [
[
"1,234,567.89",
"1234567.89"
]
]
},
{
"thousandsGroupStyle": "lakh",
"numeralDecimalScale": 4,
Expand Down
14 changes: 14 additions & 0 deletions test/fixtures/phone.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,5 +116,19 @@
"07-7010-8054"
]
]
},
"delimiterOff": {
"region": "AU",
"sign": "",
"format": [
[
"+61 7 7010 8054",
"+61770108054"
],
[
"(613) 555-0117",
"6135550117"
]
]
}
}

0 comments on commit 0a63989

Please sign in to comment.