Skip to content

Commit

Permalink
Merge branch 'twisterghost-fix-prefix-bug'
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir committed Mar 10, 2019
2 parents 27ebf3b + cf53ffb commit 3bc8ca9
Show file tree
Hide file tree
Showing 15 changed files with 181 additions and 97 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.4.4",
"version": "1.4.8",
"author": {
"name": "Max Huang",
"email": "[email protected]",
Expand Down
42 changes: 27 additions & 15 deletions dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,8 @@ return /******/ (function(modules) { // webpackBootstrap
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

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

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand Down Expand Up @@ -448,7 +449,7 @@ return /******/ (function(modules) { // webpackBootstrap
rawValue = owner.element.value;

if (pps.rawValueTrimPrefix) {
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result);
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
}

if (pps.numeral) {
Expand Down Expand Up @@ -1279,22 +1280,33 @@ return /******/ (function(modules) { // webpackBootstrap
}, 0);
},

// strip value by prefix length
// for prefix: PRE
// (PRE123, 3) -> 123
// (PR123, 3) -> 23 this happens when user hits backspace in front of "PRE"
getPrefixStrippedValue: function (value, prefix, prefixLength, prevValue) {
if (value.slice(0, prefixLength) !== prefix) {
// strip prefix
// Before type | After type | Return value
// PEFIX-... | PEFIX-... | ''
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Check whether if it is a deletion
if (value.length < prevValue.length) {
value = value.length > prefixLength ? prevValue : prefix;
} else {
var diffIndex = this.getFirstDiffIndex(prefix, value.slice(0, prefixLength));
value = prefix + value.slice(diffIndex, diffIndex + 1) + value.slice(prefixLength + 1);
}
// Pre result has issue
// Revert to raw prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
return '';
}

var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);

// New value has issue, someone typed in between prefix letters
// Revert to pre value
if (value.slice(0, prefixLength) !== prefix) {
return prevValue.slice(prefixLength);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
},

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

Large diffs are not rendered by default.

41 changes: 26 additions & 15 deletions dist/cleave-react-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ return /******/ (function(modules) { // webpackBootstrap
rawValue = pps.result;

if (pps.rawValueTrimPrefix) {
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result);
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
}

if (pps.numeral) {
Expand Down Expand Up @@ -387,7 +387,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);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand Down Expand Up @@ -2443,22 +2443,33 @@ return /******/ (function(modules) { // webpackBootstrap
}, 0);
},

// strip value by prefix length
// for prefix: PRE
// (PRE123, 3) -> 123
// (PR123, 3) -> 23 this happens when user hits backspace in front of "PRE"
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevValue) {
if (value.slice(0, prefixLength) !== prefix) {
// strip prefix
// Before type | After type | Return value
// PEFIX-... | PEFIX-... | ''
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Check whether if it is a deletion
if (value.length < prevValue.length) {
value = value.length > prefixLength ? prevValue : prefix;
} else {
var diffIndex = this.getFirstDiffIndex(prefix, value.slice(0, prefixLength));
value = prefix + value.slice(diffIndex, diffIndex + 1) + value.slice(prefixLength + 1);
}
// Pre result has issue
// Revert to raw prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
return '';
}

var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);

// New value has issue, someone typed in between prefix letters
// Revert to pre value
if (value.slice(0, prefixLength) !== prefix) {
return prevValue.slice(prefixLength);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
},

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

Large diffs are not rendered by default.

41 changes: 26 additions & 15 deletions dist/cleave-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ return /******/ (function(modules) { // webpackBootstrap
rawValue = pps.result;

if (pps.rawValueTrimPrefix) {
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result);
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
}

if (pps.numeral) {
Expand Down Expand Up @@ -387,7 +387,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);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand Down Expand Up @@ -2637,22 +2637,33 @@ return /******/ (function(modules) { // webpackBootstrap
}, 0);
},

// strip value by prefix length
// for prefix: PRE
// (PRE123, 3) -> 123
// (PR123, 3) -> 23 this happens when user hits backspace in front of "PRE"
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevValue) {
if (value.slice(0, prefixLength) !== prefix) {
// strip prefix
// Before type | After type | Return value
// PEFIX-... | PEFIX-... | ''
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Check whether if it is a deletion
if (value.length < prevValue.length) {
value = value.length > prefixLength ? prevValue : prefix;
} else {
var diffIndex = this.getFirstDiffIndex(prefix, value.slice(0, prefixLength));
value = prefix + value.slice(diffIndex, diffIndex + 1) + value.slice(prefixLength + 1);
}
// Pre result has issue
// Revert to raw prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
return '';
}

var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);

// New value has issue, someone typed in between prefix letters
// Revert to pre value
if (value.slice(0, prefixLength) !== prefix) {
return prevValue.slice(prefixLength);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
},

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

Large diffs are not rendered by default.

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

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

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand Down Expand Up @@ -448,7 +449,7 @@ return /******/ (function(modules) { // webpackBootstrap
rawValue = owner.element.value;

if (pps.rawValueTrimPrefix) {
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result);
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
}

if (pps.numeral) {
Expand Down Expand Up @@ -1222,22 +1223,33 @@ return /******/ (function(modules) { // webpackBootstrap
}, 0);
},

// strip value by prefix length
// for prefix: PRE
// (PRE123, 3) -> 123
// (PR123, 3) -> 23 this happens when user hits backspace in front of "PRE"
getPrefixStrippedValue: function (value, prefix, prefixLength, prevValue) {
if (value.slice(0, prefixLength) !== prefix) {
// strip prefix
// Before type | After type | Return value
// PEFIX-... | PEFIX-... | ''
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Check whether if it is a deletion
if (value.length < prevValue.length) {
value = value.length > prefixLength ? prevValue : prefix;
} else {
var diffIndex = this.getFirstDiffIndex(prefix, value.slice(0, prefixLength));
value = prefix + value.slice(diffIndex, diffIndex + 1) + value.slice(prefixLength + 1);
}
// Pre result has issue
// Revert to raw prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
return '';
}

var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);

// New value has issue, someone typed in between prefix letters
// Revert to pre value
if (value.slice(0, prefixLength) !== prefix) {
return prevValue.slice(prefixLength);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
},

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

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

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand Down Expand Up @@ -392,7 +393,7 @@ Cleave.prototype = {
rawValue = owner.element.value;

if (pps.rawValueTrimPrefix) {
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result);
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
}

if (pps.numeral) {
Expand Down
4 changes: 2 additions & 2 deletions src/Cleave.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ var cleaveReactClass = CreateReactClass({
rawValue = pps.result;

if (pps.rawValueTrimPrefix) {
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result);
rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
}

if (pps.numeral) {
Expand Down Expand Up @@ -328,7 +328,7 @@ var cleaveReactClass = CreateReactClass({
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

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

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand Down
37 changes: 24 additions & 13 deletions src/utils/Util.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,22 +79,33 @@ var Util = {
}, 0);
},

// strip value by prefix length
// for prefix: PRE
// (PRE123, 3) -> 123
// (PR123, 3) -> 23 this happens when user hits backspace in front of "PRE"
getPrefixStrippedValue: function (value, prefix, prefixLength, prevValue) {
if (value.slice(0, prefixLength) !== prefix) {
// strip prefix
// Before type | After type | Return value
// PEFIX-... | PEFIX-... | ''
// PREFIX-123 | PEFIX-123 | 123
// PREFIX-123 | PREFIX-23 | 23
// PREFIX-123 | PREFIX-1234 | 1234
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Check whether if it is a deletion
if (value.length < prevValue.length) {
value = value.length > prefixLength ? prevValue : prefix;
} else {
var diffIndex = this.getFirstDiffIndex(prefix, value.slice(0, prefixLength));
value = prefix + value.slice(diffIndex, diffIndex + 1) + value.slice(prefixLength + 1);
}
// Pre result has issue
// Revert to raw prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
return '';
}

var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);

// New value has issue, someone typed in between prefix letters
// Revert to pre value
if (value.slice(0, prefixLength) !== prefix) {
return prevValue.slice(prefixLength);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
},

Expand Down
Loading

0 comments on commit 3bc8ca9

Please sign in to comment.