Skip to content

Commit

Permalink
Merge branch 'bezyaev-feature/postfix'
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir committed Mar 3, 2020
2 parents d9a881b + 3895ba9 commit e59f5e2
Show file tree
Hide file tree
Showing 18 changed files with 247 additions and 93 deletions.
45 changes: 30 additions & 15 deletions dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ return /******/ (function(modules) { // webpackBootstrap
pps.stripLeadingZeroes,
pps.prefix,
pps.signBeforePrefix,
pps.tailPrefix,
pps.delimiter
);
},
Expand Down Expand Up @@ -332,10 +333,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, pps.noImmediatePrefix
);
value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix);

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

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


// no blocks specified, no need to do formatting
if (pps.blocksLength === 0) {
Expand Down Expand Up @@ -474,7 +477,7 @@ return /******/ (function(modules) { // webpackBootstrap
rawValue = owner.element.value;

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

if (pps.numeral) {
Expand Down Expand Up @@ -606,6 +609,7 @@ return /******/ (function(modules) { // webpackBootstrap
stripLeadingZeroes,
prefix,
signBeforePrefix,
tailPrefix,
delimiter) {
var owner = this;

Expand All @@ -617,6 +621,7 @@ return /******/ (function(modules) { // webpackBootstrap
owner.stripLeadingZeroes = stripLeadingZeroes !== false;
owner.prefix = (prefix || prefix === '') ? prefix : '';
owner.signBeforePrefix = !!signBeforePrefix;
owner.tailPrefix = !!tailPrefix;
owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
};
Expand Down Expand Up @@ -706,6 +711,10 @@ return /******/ (function(modules) { // webpackBootstrap
break;
}

if (owner.tailPrefix) {
return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;
}

return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');
}
};
Expand Down Expand Up @@ -1408,30 +1417,35 @@ 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, noImmediatePrefix) {
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// 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 '';
if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;
return '';
} else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;
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);
if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {
return prevValue.slice(prefixLength);
} else if (value.slice(-prefixLength) !== prefix && tailPrefix) {
return prevValue.slice(0, -prefixLength - 1);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);
},

getFirstDiffIndex: function (prev, current) {
Expand Down Expand Up @@ -1627,6 +1641,7 @@ return /******/ (function(modules) { // webpackBootstrap
target.numeralPositiveOnly = !!opts.numeralPositiveOnly;
target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;
target.signBeforePrefix = !!opts.signBeforePrefix;
target.tailPrefix = !!opts.tailPrefix;

// others
target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;
Expand Down
2 changes: 1 addition & 1 deletion dist/cleave-angular.min.js

Large diffs are not rendered by default.

45 changes: 30 additions & 15 deletions dist/cleave-esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ var NumeralFormatter = function (numeralDecimalMark,
stripLeadingZeroes,
prefix,
signBeforePrefix,
tailPrefix,
delimiter) {
var owner = this;

Expand All @@ -19,6 +20,7 @@ var NumeralFormatter = function (numeralDecimalMark,
owner.stripLeadingZeroes = stripLeadingZeroes !== false;
owner.prefix = (prefix || prefix === '') ? prefix : '';
owner.signBeforePrefix = !!signBeforePrefix;
owner.tailPrefix = !!tailPrefix;
owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
};
Expand Down Expand Up @@ -108,6 +110,10 @@ NumeralFormatter.prototype = {
break;
}

if (owner.tailPrefix) {
return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;
}

return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');
}
};
Expand Down Expand Up @@ -775,30 +781,35 @@ 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, noImmediatePrefix) {
getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// 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 '';
if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;
return '';
} else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;
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);
if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {
return prevValue.slice(prefixLength);
} else if (value.slice(-prefixLength) !== prefix && tailPrefix) {
return prevValue.slice(0, -prefixLength - 1);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);
},

getFirstDiffIndex: function (prev, current) {
Expand Down Expand Up @@ -987,6 +998,7 @@ var DefaultProperties = {
target.numeralPositiveOnly = !!opts.numeralPositiveOnly;
target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;
target.signBeforePrefix = !!opts.signBeforePrefix;
target.tailPrefix = !!opts.tailPrefix;

// others
target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;
Expand Down Expand Up @@ -1131,6 +1143,7 @@ Cleave.prototype = {
pps.stripLeadingZeroes,
pps.prefix,
pps.signBeforePrefix,
pps.tailPrefix,
pps.delimiter
);
},
Expand Down Expand Up @@ -1308,10 +1321,7 @@ Cleave.prototype = {
value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);

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

// strip non-numeric characters
value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
Expand All @@ -1322,7 +1332,12 @@ Cleave.prototype = {

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


// no blocks specified, no need to do formatting
if (pps.blocksLength === 0) {
Expand Down Expand Up @@ -1450,7 +1465,7 @@ Cleave.prototype = {
rawValue = owner.element.value;

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

if (pps.numeral) {
Expand Down
2 changes: 1 addition & 1 deletion dist/cleave-esm.min.js

Large diffs are not rendered by default.

35 changes: 25 additions & 10 deletions dist/cleave-react-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}

pps.numeralFormatter = new NumeralFormatter(pps.numeralDecimalMark, pps.numeralIntegerScale, pps.numeralDecimalScale, pps.numeralThousandsGroupStyle, pps.numeralPositiveOnly, pps.stripLeadingZeroes, pps.prefix, pps.signBeforePrefix, pps.delimiter);
pps.numeralFormatter = new NumeralFormatter(pps.numeralDecimalMark, pps.numeralIntegerScale, pps.numeralDecimalScale, pps.numeralThousandsGroupStyle, pps.numeralPositiveOnly, pps.stripLeadingZeroes, pps.prefix, pps.signBeforePrefix, pps.tailPrefix, pps.delimiter);
},

initTimeFormatter: function initTimeFormatter() {
Expand Down Expand Up @@ -268,7 +268,7 @@ return /******/ (function(modules) { // webpackBootstrap
rawValue = pps.result;

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

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

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

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

// no blocks specified, no need to do formatting
if (pps.blocksLength === 0) {
Expand Down Expand Up @@ -1795,7 +1799,7 @@ return /******/ (function(modules) { // webpackBootstrap

'use strict';

var NumeralFormatter = function NumeralFormatter(numeralDecimalMark, numeralIntegerScale, numeralDecimalScale, numeralThousandsGroupStyle, numeralPositiveOnly, stripLeadingZeroes, prefix, signBeforePrefix, delimiter) {
var NumeralFormatter = function NumeralFormatter(numeralDecimalMark, numeralIntegerScale, numeralDecimalScale, numeralThousandsGroupStyle, numeralPositiveOnly, stripLeadingZeroes, prefix, signBeforePrefix, tailPrefix, delimiter) {
var owner = this;

owner.numeralDecimalMark = numeralDecimalMark || '.';
Expand All @@ -1806,6 +1810,7 @@ return /******/ (function(modules) { // webpackBootstrap
owner.stripLeadingZeroes = stripLeadingZeroes !== false;
owner.prefix = prefix || prefix === '' ? prefix : '';
owner.signBeforePrefix = !!signBeforePrefix;
owner.tailPrefix = !!tailPrefix;
owner.delimiter = delimiter || delimiter === '' ? delimiter : ',';
owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
};
Expand Down Expand Up @@ -1900,6 +1905,10 @@ return /******/ (function(modules) { // webpackBootstrap
break;
}

if (owner.tailPrefix) {
return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;
}

return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');
}
};
Expand Down Expand Up @@ -2596,30 +2605,35 @@ 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, noImmediatePrefix) {
getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix) {
// No prefix
if (prefixLength === 0) {
return value;
}

// Pre result prefix string does not match pre-defined prefix
if (prevResult.slice(0, prefixLength) !== prefix) {
if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;
return '';
} else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {
// Check if the first time user entered something
if (noImmediatePrefix && !prevResult && value) return value;

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) {
if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {
return prevValue.slice(prefixLength);
} else if (value.slice(-prefixLength) !== prefix && tailPrefix) {
return prevValue.slice(0, -prefixLength - 1);
}

// No issue, strip prefix for new value
return value.slice(prefixLength);
return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);
},

getFirstDiffIndex: function getFirstDiffIndex(prev, current) {
Expand Down Expand Up @@ -2817,6 +2831,7 @@ return /******/ (function(modules) { // webpackBootstrap
target.numeralPositiveOnly = !!opts.numeralPositiveOnly;
target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;
target.signBeforePrefix = !!opts.signBeforePrefix;
target.tailPrefix = !!opts.tailPrefix;

// others
target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;
Expand Down
2 changes: 1 addition & 1 deletion dist/cleave-react-node.min.js

Large diffs are not rendered by default.

Loading

0 comments on commit e59f5e2

Please sign in to comment.