Skip to content

Commit

Permalink
[ISSUE-455] Fix noImmediatePrefix broken issue
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir committed Jul 15, 2019
1 parent 98106d5 commit 996f977
Show file tree
Hide file tree
Showing 17 changed files with 91 additions and 54 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description":
"JavaScript library for formatting input text content when you are typing",
"keywords": ["cleave", "javascript", "html", "form", "input"],
"version": "1.5.2",
"version": "1.5.3",
"author": {
"name": "Max Huang",
"email": "[email protected]",
Expand Down
16 changes: 10 additions & 6 deletions dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,10 @@ return /******/ (function(modules) { // webpackBootstrap
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
// var strippedPreviousResult = Util.stripDelimiters(pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(
value, pps.prefix, pps.prefixLength,
pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix
);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -342,7 +344,7 @@ return /******/ (function(modules) { // webpackBootstrap
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down Expand Up @@ -1405,15 +1407,17 @@ return /******/ (function(modules) { // webpackBootstrap
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result has issue
// Revert to raw prefix
// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

return '';
}

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

Large diffs are not rendered by default.

16 changes: 10 additions & 6 deletions dist/cleave-esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -775,15 +775,17 @@ var Util = {
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result has issue
// Revert to raw prefix
// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

return '';
}

Expand Down Expand Up @@ -1306,8 +1308,10 @@ Cleave.prototype = {
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
// var strippedPreviousResult = Util.stripDelimiters(pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(
value, pps.prefix, pps.prefixLength,
pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix
);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -1316,7 +1320,7 @@ Cleave.prototype = {
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down
2 changes: 1 addition & 1 deletion dist/cleave-esm.min.js

Large diffs are not rendered by default.

12 changes: 7 additions & 5 deletions dist/cleave-react-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ return /******/ (function(modules) { // webpackBootstrap
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -422,7 +422,7 @@ return /******/ (function(modules) { // webpackBootstrap
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down Expand Up @@ -2601,15 +2601,17 @@ return /******/ (function(modules) { // webpackBootstrap
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters) {
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result has issue
// Revert to raw prefix
// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

return '';
}

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

Large diffs are not rendered by default.

12 changes: 7 additions & 5 deletions dist/cleave-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ return /******/ (function(modules) { // webpackBootstrap
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -422,7 +422,7 @@ return /******/ (function(modules) { // webpackBootstrap
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down Expand Up @@ -2795,15 +2795,17 @@ return /******/ (function(modules) { // webpackBootstrap
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters) {
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result has issue
// Revert to raw prefix
// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

return '';
}

Expand Down
6 changes: 3 additions & 3 deletions dist/cleave-react.min.js

Large diffs are not rendered by default.

16 changes: 10 additions & 6 deletions dist/cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,10 @@ return /******/ (function(modules) { // webpackBootstrap
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
// var strippedPreviousResult = Util.stripDelimiters(pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(
value, pps.prefix, pps.prefixLength,
pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix
);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -342,7 +344,7 @@ return /******/ (function(modules) { // webpackBootstrap
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down Expand Up @@ -1348,15 +1350,17 @@ return /******/ (function(modules) { // webpackBootstrap
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result has issue
// Revert to raw prefix
// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

return '';
}

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

Large diffs are not rendered by default.

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": "1.5.2",
"version": "1.5.3",
"files": [
"src",
"dist",
Expand Down
8 changes: 5 additions & 3 deletions src/Cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -276,8 +276,10 @@ Cleave.prototype = {
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
// var strippedPreviousResult = Util.stripDelimiters(pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(
value, pps.prefix, pps.prefixLength,
pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix
);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -286,7 +288,7 @@ Cleave.prototype = {
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down
7 changes: 5 additions & 2 deletions src/Cleave.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,10 @@ var cleaveReactClass = CreateReactClass({
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

// strip prefix
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
value = Util.getPrefixStrippedValue(
value, pps.prefix, pps.prefixLength,
pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix
);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -359,7 +362,7 @@ var cleaveReactClass = CreateReactClass({
value = pps.uppercase ? value.toUpperCase() : value;
value = pps.lowercase ? value.toLowerCase() : value;

// prefix
// prevent from showing prefix when no immediate option enabled with empty input value
if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
value = pps.prefix + value;

Expand Down
8 changes: 5 additions & 3 deletions src/utils/Util.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,17 @@ var Util = {
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result has issue
// Revert to raw prefix
// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

return '';
}

Expand Down
24 changes: 19 additions & 5 deletions test/fixtures/util.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,20 +126,34 @@
4,
"test12",
"-",
[]
[],
false
],
"expected": "123"
},
{
"params": [
"test23",
"1",
"test",
4,
"test123",
"",
"-",
[]
[],
false
],
"expected": ""
},
{
"params": [
"1",
"test",
4,
"",
"-",
[],
true
],
"expected": "23"
"expected": "1"
},
{
"params": [
Expand Down
2 changes: 1 addition & 1 deletion test/unit/Util_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ describe('Util', function () {
_.each(json.getPrefixStrippedValue, function (data) {
var params = data.params;
it('should get prefix stripped value for: ' + params[0] + ' as: ' + data.expected, function () {
Util.getPrefixStrippedValue(params[0], params[1], params[2], params[3], params[4], params[5]).should.eql(data.expected);
Util.getPrefixStrippedValue(params[0], params[1], params[2], params[3], params[4], params[5], params[6]).should.eql(data.expected);
});
});
});
Expand Down

0 comments on commit 996f977

Please sign in to comment.