react-input-mask
Advanced tools
Comparing version 0.4.1 to 0.5.0
@@ -41,10 +41,9 @@ // https://github.com/sanniassin/react-input-mask | ||
}, | ||
getPrefix: function (newState) { | ||
getPrefix: function () { | ||
var state = arguments.length <= 0 || arguments[0] === undefined ? this.state : arguments[0]; | ||
var prefix = ""; | ||
var mask = state.mask; | ||
var _ref = newState || this.state; | ||
var mask = _ref.mask; | ||
for (var i = 0; i < mask.length && this.isPermanentChar(i, newState); ++i) { | ||
for (var i = 0; i < mask.length && this.isPermanentChar(i, state); ++i) { | ||
prefix += mask[i]; | ||
@@ -54,7 +53,10 @@ } | ||
}, | ||
getFilledLength: function () { | ||
var value = arguments.length <= 0 || arguments[0] === undefined ? this.state.value : arguments[0]; | ||
getFilledLength: function (value) { | ||
var state = arguments.length <= 1 || arguments[1] === undefined ? this.state : arguments[1]; | ||
var i; | ||
var maskChar = this.state.maskChar; | ||
if (value == null) { | ||
value = state.value; | ||
} | ||
var maskChar = state.maskChar; | ||
@@ -67,3 +69,3 @@ if (!maskChar) { | ||
var char = value[i]; | ||
if (!this.isPermanentChar(i) && this.isAllowedChar(char, i)) { | ||
if (!this.isPermanentChar(i, state) && this.isAllowedChar(char, i, state)) { | ||
break; | ||
@@ -73,3 +75,3 @@ } | ||
return ++i || this.getPrefix().length; | ||
return ++i || this.getPrefix(state).length; | ||
}, | ||
@@ -104,4 +106,5 @@ getLeftEditablePos: function (pos) { | ||
var value = arguments.length <= 0 || arguments[0] === undefined ? this.state.value : arguments[0]; | ||
var state = arguments.length <= 1 || arguments[1] === undefined ? this.state : arguments[1]; | ||
return this.getFilledLength(value) === this.state.mask.length; | ||
return this.getFilledLength(value, state) === state.mask.length; | ||
}, | ||
@@ -115,14 +118,13 @@ createFilledArray: function (length, val) { | ||
}, | ||
formatValue: function (value, newState) { | ||
formatValue: function (value) { | ||
var _this2 = this; | ||
var _ref2 = newState || this.state; | ||
var state = arguments.length <= 1 || arguments[1] === undefined ? this.state : arguments[1]; | ||
var maskChar = state.maskChar; | ||
var mask = state.mask; | ||
var maskChar = _ref2.maskChar; | ||
var mask = _ref2.mask; | ||
if (!maskChar) { | ||
var prefixLen = this.getPrefix(newState).length; | ||
value = this.insertRawSubstr("", value, 0, newState); | ||
while (value.length > prefixLen && this.isPermanentChar(value.length - 1, newState)) { | ||
var prefixLen = this.getPrefix(state).length; | ||
value = this.insertRawSubstr("", value, 0, state); | ||
while (value.length > prefixLen && this.isPermanentChar(value.length - 1, state)) { | ||
value = value.slice(0, value.length - 1); | ||
@@ -132,6 +134,10 @@ } | ||
} | ||
if (value) { | ||
var emptyValue = this.formatValue("", state); | ||
return this.insertRawSubstr(emptyValue, value, 0, state); | ||
} | ||
return value.split("").concat(this.createFilledArray(mask.length - value.length, null)).map(function (char, pos) { | ||
if (_this2.isAllowedChar(char, pos, newState)) { | ||
if (_this2.isAllowedChar(char, pos, state)) { | ||
return char; | ||
} else if (_this2.isPermanentChar(pos, newState)) { | ||
} else if (_this2.isPermanentChar(pos, state)) { | ||
return mask[pos]; | ||
@@ -168,14 +174,13 @@ } | ||
}, | ||
insertRawSubstr: function (value, substr, pos, newState) { | ||
var _ref3 = newState || this.state; | ||
insertRawSubstr: function (value, substr, pos) { | ||
var state = arguments.length <= 3 || arguments[3] === undefined ? this.state : arguments[3]; | ||
var mask = state.mask; | ||
var maskChar = state.maskChar; | ||
var mask = _ref3.mask; | ||
var maskChar = _ref3.maskChar; | ||
var isFilled = this.isFilled(value); | ||
var isFilled = this.isFilled(value, state); | ||
substr = substr.split(""); | ||
for (var i = pos; i < mask.length && substr.length;) { | ||
if (!this.isPermanentChar(i, newState) || mask[i] === substr[0]) { | ||
if (!this.isPermanentChar(i, state) || mask[i] === substr[0]) { | ||
var char = substr.shift(); | ||
if (this.isAllowedChar(char, i, newState)) { | ||
if (this.isAllowedChar(char, i, state)) { | ||
if (i < value.length) { | ||
@@ -185,3 +190,3 @@ if (maskChar || isFilled) { | ||
} else { | ||
value = this.formatValue(value.substr(0, i) + char + value.substr(i), newState); | ||
value = this.formatValue(value.substr(0, i) + char + value.substr(i), state); | ||
} | ||
@@ -202,13 +207,12 @@ } else if (!maskChar) { | ||
}, | ||
getRawSubstrLength: function (value, substr, pos, newState) { | ||
var _ref4 = newState || this.state; | ||
getRawSubstrLength: function (value, substr, pos) { | ||
var state = arguments.length <= 3 || arguments[3] === undefined ? this.state : arguments[3]; | ||
var mask = state.mask; | ||
var maskChar = state.maskChar; | ||
var mask = _ref4.mask; | ||
var maskChar = _ref4.maskChar; | ||
substr = substr.split(""); | ||
for (var i = pos; i < mask.length && substr.length;) { | ||
if (!this.isPermanentChar(i, newState) || mask[i] === substr[0]) { | ||
if (!this.isPermanentChar(i, state) || mask[i] === substr[0]) { | ||
var char = substr.shift(); | ||
if (this.isAllowedChar(char, i, newState)) { | ||
if (this.isAllowedChar(char, i, state)) { | ||
++i; | ||
@@ -222,5 +226,7 @@ } | ||
}, | ||
isAllowedChar: function (char, pos, newState) { | ||
var mask = newState ? newState.mask : this.state.mask; | ||
if (this.isPermanentChar(pos, newState)) { | ||
isAllowedChar: function (char, pos) { | ||
var state = arguments.length <= 2 || arguments[2] === undefined ? this.state : arguments[2]; | ||
var mask = state.mask; | ||
if (this.isPermanentChar(pos, state)) { | ||
return mask[pos] === char; | ||
@@ -232,5 +238,6 @@ } | ||
}, | ||
isPermanentChar: function (pos, newState) { | ||
var permanents = newState ? newState.permanents : this.state.permanents; | ||
return permanents.indexOf(pos) !== -1; | ||
isPermanentChar: function (pos) { | ||
var state = arguments.length <= 1 || arguments[1] === undefined ? this.state : arguments[1]; | ||
return state.permanents.indexOf(pos) !== -1; | ||
}, | ||
@@ -356,3 +363,6 @@ setCaretToEnd: function () { | ||
}; | ||
state.value = this.props.alwaysShowMask ? this.formatValue(value, state) : value; | ||
if (this.props.alwaysShowMask || value) { | ||
value = this.formatValue(value, state); | ||
} | ||
state.value = value; | ||
@@ -382,7 +392,3 @@ return state; | ||
var isMaskChanged = mask.mask && mask.mask !== this.state.mask; | ||
if (isMaskChanged) { | ||
var emptyValue = this.formatValue("", state); | ||
newValue = this.insertRawSubstr(emptyValue, newValue, 0, state); | ||
} | ||
if (mask.mask && (newValue || nextProps.alwaysShowMask || this.isFocused())) { | ||
if (isMaskChanged || mask.mask && (newValue || nextProps.alwaysShowMask || this.isFocused())) { | ||
newValue = this.formatValue(newValue, state); | ||
@@ -389,0 +395,0 @@ } |
@@ -40,6 +40,6 @@ // https://github.com/sanniassin/react-input-mask | ||
}, | ||
getPrefix: function(newState) { | ||
getPrefix: function(state = this.state) { | ||
var prefix = ""; | ||
var { mask } = newState || this.state; | ||
for (var i = 0; i < mask.length && this.isPermanentChar(i, newState); ++i) { | ||
var { mask } = state; | ||
for (var i = 0; i < mask.length && this.isPermanentChar(i, state); ++i) { | ||
prefix += mask[i]; | ||
@@ -49,5 +49,8 @@ } | ||
}, | ||
getFilledLength: function(value = this.state.value) { | ||
getFilledLength: function(value, state = this.state) { | ||
var i; | ||
var maskChar = this.state.maskChar; | ||
if (value == null) { | ||
value = state.value; | ||
} | ||
var maskChar = state.maskChar; | ||
@@ -60,3 +63,3 @@ if (!maskChar) { | ||
var char = value[i]; | ||
if (!this.isPermanentChar(i) && this.isAllowedChar(char, i)) { | ||
if (!this.isPermanentChar(i, state) && this.isAllowedChar(char, i, state)) { | ||
break; | ||
@@ -66,3 +69,3 @@ } | ||
return ++i || this.getPrefix().length; | ||
return ++i || this.getPrefix(state).length; | ||
}, | ||
@@ -91,4 +94,4 @@ getLeftEditablePos: function(pos) { | ||
}, | ||
isFilled: function(value = this.state.value) { | ||
return this.getFilledLength(value) === this.state.mask.length; | ||
isFilled: function(value = this.state.value, state = this.state) { | ||
return this.getFilledLength(value, state) === state.mask.length; | ||
}, | ||
@@ -102,8 +105,8 @@ createFilledArray: function(length, val) { | ||
}, | ||
formatValue: function(value, newState) { | ||
var { maskChar, mask } = newState || this.state; | ||
formatValue: function(value, state = this.state) { | ||
var { maskChar, mask } = state; | ||
if (!maskChar) { | ||
var prefixLen = this.getPrefix(newState).length; | ||
value = this.insertRawSubstr("", value, 0, newState); | ||
while (value.length > prefixLen && this.isPermanentChar(value.length - 1, newState)) { | ||
var prefixLen = this.getPrefix(state).length; | ||
value = this.insertRawSubstr("", value, 0, state); | ||
while (value.length > prefixLen && this.isPermanentChar(value.length - 1, state)) { | ||
value = value.slice(0, value.length - 1); | ||
@@ -113,9 +116,13 @@ } | ||
} | ||
if (value) { | ||
var emptyValue = this.formatValue("", state); | ||
return this.insertRawSubstr(emptyValue, value, 0, state); | ||
} | ||
return value.split("") | ||
.concat(this.createFilledArray(mask.length - value.length, null)) | ||
.map((char, pos) => { | ||
if (this.isAllowedChar(char, pos, newState)) { | ||
if (this.isAllowedChar(char, pos, state)) { | ||
return char; | ||
} | ||
else if (this.isPermanentChar(pos, newState)) { | ||
else if (this.isPermanentChar(pos, state)) { | ||
return mask[pos]; | ||
@@ -153,10 +160,10 @@ } | ||
}, | ||
insertRawSubstr: function(value, substr, pos, newState) { | ||
var { mask, maskChar } = newState || this.state; | ||
var isFilled = this.isFilled(value); | ||
insertRawSubstr: function(value, substr, pos, state = this.state) { | ||
var { mask, maskChar } = state; | ||
var isFilled = this.isFilled(value, state); | ||
substr = substr.split(""); | ||
for (var i = pos; i < mask.length && substr.length; ) { | ||
if (!this.isPermanentChar(i, newState) || mask[i] === substr[0]) { | ||
if (!this.isPermanentChar(i, state) || mask[i] === substr[0]) { | ||
var char = substr.shift(); | ||
if (this.isAllowedChar(char, i, newState)) { | ||
if (this.isAllowedChar(char, i, state)) { | ||
if (i < value.length) { | ||
@@ -167,3 +174,3 @@ if (maskChar || isFilled) { | ||
else { | ||
value = this.formatValue(value.substr(0, i) + char + value.substr(i), newState); | ||
value = this.formatValue(value.substr(0, i) + char + value.substr(i), state); | ||
} | ||
@@ -186,9 +193,9 @@ } | ||
}, | ||
getRawSubstrLength: function(value, substr, pos, newState) { | ||
var { mask, maskChar } = newState || this.state; | ||
getRawSubstrLength: function(value, substr, pos, state = this.state) { | ||
var { mask, maskChar } = state; | ||
substr = substr.split(""); | ||
for (var i = pos; i < mask.length && substr.length; ) { | ||
if (!this.isPermanentChar(i, newState) || mask[i] === substr[0]) { | ||
if (!this.isPermanentChar(i, state) || mask[i] === substr[0]) { | ||
var char = substr.shift(); | ||
if (this.isAllowedChar(char, i, newState)) { | ||
if (this.isAllowedChar(char, i, state)) { | ||
++i; | ||
@@ -203,5 +210,5 @@ } | ||
}, | ||
isAllowedChar: function(char, pos, newState) { | ||
var mask = newState ? newState.mask : this.state.mask; | ||
if (this.isPermanentChar(pos, newState)) { | ||
isAllowedChar: function(char, pos, state = this.state) { | ||
var { mask } = state; | ||
if (this.isPermanentChar(pos, state)) { | ||
return mask[pos] === char; | ||
@@ -213,5 +220,4 @@ } | ||
}, | ||
isPermanentChar: function(pos, newState) { | ||
var permanents = newState ? newState.permanents : this.state.permanents; | ||
return permanents.indexOf(pos) !== -1; | ||
isPermanentChar: function(pos, state = this.state) { | ||
return state.permanents.indexOf(pos) !== -1; | ||
}, | ||
@@ -344,3 +350,6 @@ setCaretToEnd: function() { | ||
}; | ||
state.value = this.props.alwaysShowMask ? this.formatValue(value, state) : value; | ||
if (this.props.alwaysShowMask || value) { | ||
value = this.formatValue(value, state); | ||
} | ||
state.value = value; | ||
@@ -369,7 +378,3 @@ return state; | ||
var isMaskChanged = mask.mask && mask.mask !== this.state.mask; | ||
if (isMaskChanged) { | ||
var emptyValue = this.formatValue("", state); | ||
newValue = this.insertRawSubstr(emptyValue, newValue, 0, state); | ||
} | ||
if (mask.mask && (newValue || nextProps.alwaysShowMask || this.isFocused())) { | ||
if (isMaskChanged || (mask.mask && (newValue || nextProps.alwaysShowMask || this.isFocused()))) { | ||
newValue = this.formatValue(newValue, state); | ||
@@ -376,0 +381,0 @@ } |
{ | ||
"name": "react-input-mask", | ||
"description": "Masked input component for React", | ||
"version": "0.4.1", | ||
"version": "0.5.0", | ||
"homepage": "https://github.com/sanniassin/react-input-mask", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
43033
1134