diff --git a/dist/react-input-mask.js b/dist/react-input-mask.js index cfea98e..16de12d 100644 --- a/dist/react-input-mask.js +++ b/dist/react-input-mask.js @@ -227,12 +227,15 @@ function formatValue(maskOptions, value) { if (!maskChar) { value = insertString(maskOptions, '', value, 0); - value = value.slice(0, getFilledLength(maskOptions, value)); if (value.length < prefix.length) { value = prefix; } + while (value.length < mask.length && isPermanentChar(maskOptions, value.length)) { + value += mask[value.length]; + } + return value; } @@ -259,6 +262,13 @@ function clearRange(maskOptions, value, start, len) { var arrayValue = value.split(''); if (!maskChar) { + // remove any permanent chars after clear range, they will be added back by foramtValue + for (var i = end; i < arrayValue.length; i++) { + if (isPermanentChar(maskOptions, i)) { + arrayValue[i] = ''; + } + } + start = Math.max(prefix.length, start); arrayValue.splice(start, end - start); value = arrayValue.join(''); @@ -443,7 +453,7 @@ function (_React$Component) { var newValue = this.hasValue ? this.getStringValue(nextProps.value) : this.value; if (!oldMaskOptions.mask && !this.hasValue) { - newValue = this.getInputDOMNode().value; + newValue = this.getInputValue(); } if (isMaskChanged || this.maskOptions.mask && (newValue || showEmpty)) { @@ -821,6 +831,10 @@ var _initialiseProps = function _initialiseProps() { var editablePos = deleteFromRight ? _this3.getRightEditablePos(cursorPos) : _this3.getLeftEditablePos(cursorPos - 1); if (editablePos !== null) { + if (!maskChar) { + value = value.substr(0, getFilledLength(_this3.maskOptions, value)); + } + value = clearRange(_this3.maskOptions, value, editablePos, 1); cursorPos = editablePos; } diff --git a/dist/react-input-mask.min.js b/dist/react-input-mask.min.js index 6467ae2..ff094da 100644 --- a/dist/react-input-mask.min.js +++ b/dist/react-input-mask.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):e.ReactInputMask=t(e.React)}(this,function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(){return(n=Object.assign||function(e){for(var t=1;tr.length&&a(e,t.length-1);)t=t.slice(0,t.length-1);return t.length}for(var s=r.length,i=t.length;i>=r.length;i--){var u=t[i];if(!a(e,i)&&o(e,i,u)){s=i+1;break}}return s}function u(e,t){return i(e,t)===e.mask.length}function l(e,t){var n=e.maskChar,r=e.mask,o=e.prefix;if(!n)return t=f(e,"",t,0),(t=t.slice(0,i(e,t))).length=o?t:a(e,r)?i[r]:s}).join(""):(n=Math.max(u.length,n),c.splice(n,o-n),t=c.join(""),l(e,t))}function f(e,t,n,r){var s=e.mask,i=e.maskChar,c=e.prefix,f=n.split(""),p=u(e,t),h=function(t,n){return!a(e,t)||n===s[t]},m=function(t,n){return!i||!a(e,n)||t!==i};return!i&&r>t.length&&(t+=s.slice(t.length,r)),f.every(function(n){for(;!h(r,n);){if(r>=t.length&&(t+=s[r]),!m(n,r))return!0;if(++r>=s.length)return!1}return!o(e,r,n)&&n!==i||(r=0||(a[n]=e[n]);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(r,["mask","alwaysShowMask","maskChar","formatChars"]));if(this.maskOptions.mask){if(!a.disabled&&!a.readOnly){["onChange","onKeyDown","onPaste","onMouseDown"].forEach(function(e){a[e]=t[e]})}null!=a.value&&(a.value=this.value)}return e.createElement("input",n({ref:function(e){return t.input=e}},a,{onFocus:this.onFocus,onBlur:this.onBlur}))},a}((e=e&&e.hasOwnProperty("default")?e["default"]:e).Component),b=function(){var n=this;Object.defineProperty(this,"lastCursorPos",{configurable:!0,enumerable:!0,writable:!0,value:null}),Object.defineProperty(this,"focused",{configurable:!0,enumerable:!0,writable:!0,value:!1}),Object.defineProperty(this,"isDOMElement",{configurable:!0,enumerable:!0,writable:!0,value:function(e){return"object"===("undefined"==typeof HTMLElement?"undefined":t(HTMLElement))?function(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?t[Symbol.hasInstance](e):e instanceof t}(e,HTMLElement):1===e.nodeType&&"string"==typeof e.nodeName}}),Object.defineProperty(this,"getInputDOMNode",{configurable:!0,enumerable:!0,writable:!0,value:function(){var t=n.input;return t?n.isDOMElement(t)?t:e.findDOMNode(t):null}}),Object.defineProperty(this,"getInputValue",{configurable:!0,enumerable:!0,writable:!0,value:function(){var e=n.getInputDOMNode();return e?e.value:null}}),Object.defineProperty(this,"setInputValue",{configurable:!0,enumerable:!0,writable:!0,value:function(e){var t=n.getInputDOMNode();t&&(n.value=e,t.value=e)}}),Object.defineProperty(this,"getLeftEditablePos",{configurable:!0,enumerable:!0,writable:!0,value:function(e){for(var t=e;t>=0;--t)if(!a(n.maskOptions,t))return t;return null}}),Object.defineProperty(this,"getRightEditablePos",{configurable:!0,enumerable:!0,writable:!0,value:function(e){for(var t=n.maskOptions.mask,r=e;r0||"Delete"===t&&n.value.length>s.start))return;n.backspaceOrDeleteRemoval={key:t,selection:n.getSelection()}}}}),Object.defineProperty(this,"onChange",{configurable:!0,enumerable:!0,writable:!0,value:function(e){var t=n.beforePasteState,r=n.maskOptions,a=r.mask,o=r.maskChar,s=r.lastEditablePos,u=r.prefix,h=n.getInputValue();if(t)return n.beforePasteState=null,void n.pasteText(t.value,h,t.selection,e);var m=n.value,g=n.getInputDOMNode();try{"function"==typeof g.matches&&g.matches(":-webkit-autofill")&&(m="")}catch(j){}var b,d,v=n.getSelection(),k=v.end,O=a.length,y=h.length,w=m.length;if(n.backspaceOrDeleteRemoval){var P="Delete"===n.backspaceOrDeleteRemoval.key;if(h=n.value,v=n.backspaceOrDeleteRemoval.selection,k=v.start,n.backspaceOrDeleteRemoval=null,v.length)h=c(n.maskOptions,h,v.start,v.length);else if(v.startw){var C=y-w,D=v.end-C;d=h.substr(D,C),k=D=u.length&&k=s.length)return!1;return(o(e,r,t)||t===i)&&r++,rr.length&&s(e,t.length-1);)t=t.slice(0,t.length-1);return t.length}for(var a=r.length,o=t.length;o>=r.length;o--){var l=t[o];if(!s(e,o)&&i(e,o,l)){a=o+1;break}}return a}function c(e,t){return u(e,t)===e.mask.length}function f(e,t){var n=e.maskChar,r=e.mask,a=e.prefix;if(!n){for((t=h(e,"",t,0)).length=a?t:s(e,r)?i[r]:o}).join("")}function h(e,t,n,r){var a=e.mask,o=e.maskChar,l=e.prefix,u=n.split(""),p=c(e,t),h=function(t,n){return!o||!s(e,n)||t!==o};return!o&&r>t.length&&(t+=a.slice(t.length,r)),u.every(function(n){for(;c=n,s(e,u=r)&&c!==a[u];){if(r>=t.length&&(t+=a[r]),!h(n,r))return!0;if(++r>=a.length)return!1}var u,c;return!i(e,r,n)&&n!==o||(r=0||(a[n]=e[n]);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(r,["mask","alwaysShowMask","maskChar","formatChars"]));if(this.maskOptions.mask){if(!a.disabled&&!a.readOnly){["onChange","onKeyDown","onPaste","onMouseDown"].forEach(function(e){a[e]=t[e]})}null!=a.value&&(a.value=this.value)}return e.createElement("input",n({ref:function(e){return t.input=e}},a,{onFocus:this.onFocus,onBlur:this.onBlur}))},s}((e=e&&e.hasOwnProperty("default")?e["default"]:e).Component),b=function(){var n=this;Object.defineProperty(this,"lastCursorPos",{configurable:!0,enumerable:!0,writable:!0,value:null}),Object.defineProperty(this,"focused",{configurable:!0,enumerable:!0,writable:!0,value:!1}),Object.defineProperty(this,"isDOMElement",{configurable:!0,enumerable:!0,writable:!0,value:function(e){return"object"===("undefined"==typeof HTMLElement?"undefined":t(HTMLElement))?(n=e,null!=(r=HTMLElement)&&"undefined"!=typeof Symbol&&r[Symbol.hasInstance]?r[Symbol.hasInstance](n):n instanceof r):1===e.nodeType&&"string"==typeof e.nodeName;var n,r}}),Object.defineProperty(this,"getInputDOMNode",{configurable:!0,enumerable:!0,writable:!0,value:function(){var t=n.input;return t?n.isDOMElement(t)?t:e.findDOMNode(t):null}}),Object.defineProperty(this,"getInputValue",{configurable:!0,enumerable:!0,writable:!0,value:function(){var e=n.getInputDOMNode();return e?e.value:null}}),Object.defineProperty(this,"setInputValue",{configurable:!0,enumerable:!0,writable:!0,value:function(e){var t=n.getInputDOMNode();t&&(n.value=e,t.value=e)}}),Object.defineProperty(this,"getLeftEditablePos",{configurable:!0,enumerable:!0,writable:!0,value:function(e){for(var t=e;t>=0;--t)if(!s(n.maskOptions,t))return t;return null}}),Object.defineProperty(this,"getRightEditablePos",{configurable:!0,enumerable:!0,writable:!0,value:function(e){for(var t=n.maskOptions.mask,r=e;r0||"Delete"===t&&n.value.length>s.start))return;n.backspaceOrDeleteRemoval={key:t,selection:n.getSelection()}}}}),Object.defineProperty(this,"onChange",{configurable:!0,enumerable:!0,writable:!0,value:function(e){var t=n.beforePasteState,r=n.maskOptions,a=r.mask,o=r.maskChar,s=r.lastEditablePos,i=r.prefix,l=n.getInputValue();if(t)return n.beforePasteState=null,void n.pasteText(t.value,l,t.selection,e);var c=n.value,g=n.getInputDOMNode();try{"function"==typeof g.matches&&g.matches(":-webkit-autofill")&&(c="")}catch(j){}var b,v,d=n.getSelection(),k=d.end,O=a.length,y=l.length,w=c.length;if(n.backspaceOrDeleteRemoval){var P="Delete"===n.backspaceOrDeleteRemoval.key;if(l=n.value,d=n.backspaceOrDeleteRemoval.selection,k=d.start,n.backspaceOrDeleteRemoval=null,d.length)l=p(n.maskOptions,l,d.start,d.length);else if(d.startw){var C=y-w,D=d.end-C;v=l.substr(D,C),k=D=i.length&&k=f.length)return!1;var t,n;return(i(l,c,e)||e===m)&&c++,c",