react-number-format
Advanced tools
Comparing version 2.0.0-alpha2 to 2.0.0-alpha3
/*! | ||
* react-number-format - 2.0.0-alpha2 | ||
* react-number-format - 2.0.0-alpha3 | ||
* Author : Sudhanshu Yadav | ||
@@ -120,2 +120,10 @@ * Copyright (c) 2016,2017 to Sudhanshu Yadav - ignitersworld.com , released under the MIT license. | ||
function omit(obj, keyMaps) { | ||
var filteredObj = {}; | ||
Object.keys(obj).forEach(function (key) { | ||
if (!keyMaps[key]) filteredObj[key] = obj[key]; | ||
}); | ||
return filteredObj; | ||
} | ||
var propTypes = { | ||
@@ -135,2 +143,3 @@ thousandSeparator: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.oneOf([true])]), | ||
onChange: _propTypes2.default.func, | ||
type: _propTypes2.default.oneOf(['text', 'tel']), | ||
isAllowed: _propTypes2.default.func | ||
@@ -143,2 +152,3 @@ }; | ||
allowNegative: true, | ||
type: 'text', | ||
isAllowed: function isAllowed() { | ||
@@ -189,3 +199,3 @@ return true; | ||
this.setState({ | ||
value: this.formatInput(value).formattedValue | ||
value: formattedValue | ||
}); | ||
@@ -451,4 +461,9 @@ } | ||
var cursorPos = this.getCursorPosition(inputValue, formattedValue, el.selectionStart); | ||
/*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device cursor bug*/ | ||
var currentCursorPosition = Math.max(el.selectionStart, el.selectionEnd); | ||
var cursorPos = this.getCursorPosition(inputValue, formattedValue, currentCursorPosition); | ||
//set caret position befor setState | ||
@@ -511,10 +526,6 @@ //this.setPatchedCaretPosition(el, cursorPos); | ||
value: function render() { | ||
var props = _extends({}, this.props); | ||
var props = omit(this.props, propTypes); | ||
Object.keys(propTypes).forEach(function (key) { | ||
delete props[key]; | ||
}); | ||
var inputProps = _extends({}, props, { | ||
type: 'text', | ||
type: this.props.type, | ||
value: this.state.value, | ||
@@ -521,0 +532,0 @@ onChange: this.onChange, |
/*! | ||
* react-number-format - 2.0.0-alpha2 | ||
* react-number-format - 2.0.0-alpha3 | ||
* Author : Sudhanshu Yadav | ||
* Copyright (c) 2016,2017 to Sudhanshu Yadav - ignitersworld.com , released under the MIT license. | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.NumberFormat=t(require("react")):e.NumberFormat=t(e.React)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){e.exports=r(1)},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function s(e){return e.replace(/^0+/,"")||"0"}function f(e,t){for(var r="",n=0;n<=t-1;n++)r+=e[n]||"0";return r}var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},p=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),c=r(2),d=n(c),h=r(7),v=n(h),m={thousandSeparator:d.default.oneOfType([d.default.string,d.default.oneOf([!0])]),decimalSeparator:d.default.string,decimalPrecision:d.default.number,displayType:d.default.oneOf(["input","text"]),prefix:d.default.string,suffix:d.default.string,format:d.default.oneOfType([d.default.string,d.default.func]),mask:d.default.string,value:d.default.oneOfType([d.default.number,d.default.string]),customInput:d.default.func,allowNegative:d.default.bool,onKeyDown:d.default.func,onChange:d.default.func,isAllowed:d.default.func},y={displayType:"input",decimalSeparator:".",allowNegative:!0,isAllowed:function(){return!0}},g=function(e){function t(e){a(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e)),n=r.optimizeValueProp(e);return r.state={value:r.formatInput(n).formattedValue},r.onChange=r.onChange.bind(r),r.onKeyDown=r.onKeyDown.bind(r),r}return i(t,e),p(t,[{key:"componentDidUpdate",value:function(e,t){this.updateValueIfRequired(e,t)}},{key:"updateValueIfRequired",value:function(e){var t=this.props,r=this.state;if(e!==t){var n=r.value,a=this.optimizeValueProp(t);void 0===a&&(a=n);var o=this.formatInput(a),i=o.formattedValue;i!==n&&this.setState({value:this.formatInput(a).formattedValue})}}},{key:"getFloatValue",value:function(e){var t=this.props.decimalSeparator;return parseFloat(e.replace(t,"."))||0}},{key:"optimizeValueProp",value:function(e){var t=this.getSeparators(e),r=t.decimalSeparator,n=e.decimalPrecision,a=e.format,o=e.value;if(a||void 0===o)return o;var i="number"==typeof o;return i&&(o=o.toString()),r&&i&&(o=o.replace(".",r)),0===n?o.split(r)[0]:o}},{key:"getSeparators",value:function(e){e=e||this.props;var t=e,r=t.decimalSeparator,n=e,a=n.thousandSeparator;if(a===!0&&(a=","),r===a)throw new Error("\n Decimal separator can't be same as thousand separator.\n\n thousandSeparator: "+a+' (thousandSeparator = {true} is same as thousandSeparator = ",")\n decimalSeparator: '+r+" (default value for decimalSeparator is .)\n ");return{decimalSeparator:r,thousandSeparator:a}}},{key:"getNumberRegex",value:function(e,t){var r=this.props,n=r.format,a=r.decimalPrecision,o=this.getSeparators(),i=o.decimalSeparator;return new RegExp("\\d"+(!i||0===a||t||n?"":"|"+u(i)),e?"g":void 0)}},{key:"setCaretPosition",value:function(e,t){if(e.value=e.value,null!==e){if(e.createTextRange){var r=e.createTextRange();return r.move("character",t),r.select(),!0}return e.selectionStart||0===e.selectionStart?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}},{key:"setPatchedCaretPosition",value:function(e,t){var r=this;this.setCaretPosition(e,t),setTimeout(function(){return r.setCaretPosition(e,t)},0)}},{key:"formatWithPattern",value:function(e){var t=this.props,r=t.format,n=t.mask;if(!r)return e;for(var a=r.split("#").length-1,o=0,i=r,u=0,s=e.length;u<s;u++)u<a&&(o=i.indexOf("#"),i=i.replace("#",e[u]));var f=i.lastIndexOf("#");return n?i.replace(/#/g,n):i.substring(0,o+1)+(f!==-1?i.substring(f+1,i.length):"")}},{key:"formatInput",value:function(e){var t=this.props,r=t.prefix,n=t.suffix,a=(t.mask,t.format),o=t.allowNegative,i=t.decimalPrecision,u=this.getSeparators(),l=u.thousandSeparator,p=u.decimalSeparator,c=this.getNumberRegex(!0),d=void 0,h=void 0;"number"==typeof e&&(e+="");var v=new RegExp("(-)"),m=new RegExp("(-)(.)*(-)");o&&!a&&(d=v.test(e),h=m.test(e));var y=e&&e.match(c);if(!y&&h)return{value:"",formattedValue:""};if(!y&&d)return{value:"",formattedValue:"-"};if(!y)return{value:"",formattedValue:""};var g=e.match(c).join(""),b=g;if(a)"string"==typeof a?b=this.formatWithPattern(b):"function"==typeof a&&(b=a(b));else{var x=b.indexOf(p)!==-1||i,P=b.split(p),S=P[0],w=P[1]||"";S=s(S),void 0!==i&&(w=f(w,i)),l&&(S=S.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+l)),r&&(S=r+S),n&&(w+=n),d&&!h&&(S="-"+S),b=S+(x&&p||"")+w}return{value:(d&&!h?"-":"")+b.match(c).join(""),formattedValue:b}}},{key:"getCursorPosition",value:function(e,t,r){var n=this.getNumberRegex(),a=void 0,o=void 0;for(a=0,o=0;o<r;o++)if((e[o].match(n)||e[o]===t[a])&&("0"!==e[o]||!t[a].match(n)||"0"===t[a])){for(;e[o]!==t[a]&&a<t.length;)a++;a++}return a}},{key:"onChangeHandler",value:function(e,t){var r=this;e.persist();var n=e.target,a=n.value,o=this.props.isAllowed,i=this.state.value,u=this.formatInput(a),s=u.formattedValue,f=u.value,l=this.getCursorPosition(a,s,n.selectionStart);return o(s,f,this.getFloatValue(f))||(s=i),this.setState({value:s},function(){r.setPatchedCaretPosition(n,l),t&&s!==i&&t(e,f)}),f}},{key:"onChange",value:function(e){this.onChangeHandler(e,this.props.onChange)}},{key:"onKeyDown",value:function(e){var t=e.target,r=t.selectionStart,n=t.selectionEnd,a=t.value,o=this.props.decimalPrecision,i=e.key,u=this.getNumberRegex(!1,void 0!==o),s=new RegExp("-");if(n-r===0)if("Delete"!==i||u.test(a[r])||s.test(a[r])){if("Backspace"===i&&!u.test(a[r-1])&&!s.test(a[r-1])){e.preventDefault();for(var f=r;!u.test(a[f-1])&&f>0;)f--;this.setPatchedCaretPosition(t,f)}}else{e.preventDefault();for(var l=r;!u.test(a[l])&&l<a.length;)l++;this.setPatchedCaretPosition(t,l)}this.props.onKeyDown&&this.props.onKeyDown(e)}},{key:"render",value:function(){var e=l({},this.props);Object.keys(m).forEach(function(t){delete e[t]});var t=l({},e,{type:"text",value:this.state.value,onChange:this.onChange,onKeyDown:this.onKeyDown});if("text"===this.props.displayType)return v.default.createElement("span",e,this.state.value);if(this.props.customInput){var r=this.props.customInput;return v.default.createElement(r,t)}return v.default.createElement("input",t)}}]),t}(v.default.Component);g.propTypes=m,g.defaultProps=y,e.exports=g},function(e,t,r){e.exports=r(3)()},function(e,t,r){"use strict";var n=r(4),a=r(5),o=r(6);e.exports=function(){function e(e,t,r,n,i,u){u!==o&&a(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return r.checkPropTypes=n,r.PropTypes=r,r}},function(e,t){"use strict";function r(e){return function(){return e}}var n=function(){};n.thatReturns=r,n.thatReturnsFalse=r(!1),n.thatReturnsTrue=r(!0),n.thatReturnsNull=r(null),n.thatReturnsThis=function(){return this},n.thatReturnsArgument=function(e){return e},e.exports=n},function(e,t,r){"use strict";function n(e,t,r,n,o,i,u,s){if(a(t),!e){var f;if(void 0===t)f=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[r,n,o,i,u,s],p=0;f=new Error(t.replace(/%s/g,function(){return l[p++]})),f.name="Invariant Violation"}throw f.framesToPop=1,f}}var a=function(e){};e.exports=n},function(e,t){"use strict";var r="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";e.exports=r},function(t,r){t.exports=e}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.NumberFormat=t(require("react")):e.NumberFormat=t(e.React)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){e.exports=r(1)},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function s(e){return e.replace(/^0+/,"")||"0"}function f(e,t){for(var r="",n=0;n<=t-1;n++)r+=e[n]||"0";return r}function l(e,t){var r={};return Object.keys(e).forEach(function(n){t[n]||(r[n]=e[n])}),r}var p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},c=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),d=r(2),h=n(d),v=r(7),m=n(v),y={thousandSeparator:h.default.oneOfType([h.default.string,h.default.oneOf([!0])]),decimalSeparator:h.default.string,decimalPrecision:h.default.number,displayType:h.default.oneOf(["input","text"]),prefix:h.default.string,suffix:h.default.string,format:h.default.oneOfType([h.default.string,h.default.func]),mask:h.default.string,value:h.default.oneOfType([h.default.number,h.default.string]),customInput:h.default.func,allowNegative:h.default.bool,onKeyDown:h.default.func,onChange:h.default.func,type:h.default.oneOf(["text","tel"]),isAllowed:h.default.func},g={displayType:"input",decimalSeparator:".",allowNegative:!0,type:"text",isAllowed:function(){return!0}},b=function(e){function t(e){a(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e)),n=r.optimizeValueProp(e);return r.state={value:r.formatInput(n).formattedValue},r.onChange=r.onChange.bind(r),r.onKeyDown=r.onKeyDown.bind(r),r}return i(t,e),c(t,[{key:"componentDidUpdate",value:function(e,t){this.updateValueIfRequired(e,t)}},{key:"updateValueIfRequired",value:function(e){var t=this.props,r=this.state;if(e!==t){var n=r.value,a=this.optimizeValueProp(t);void 0===a&&(a=n);var o=this.formatInput(a),i=o.formattedValue;i!==n&&this.setState({value:i})}}},{key:"getFloatValue",value:function(e){var t=this.props.decimalSeparator;return parseFloat(e.replace(t,"."))||0}},{key:"optimizeValueProp",value:function(e){var t=this.getSeparators(e),r=t.decimalSeparator,n=e.decimalPrecision,a=e.format,o=e.value;if(a||void 0===o)return o;var i="number"==typeof o;return i&&(o=o.toString()),r&&i&&(o=o.replace(".",r)),0===n?o.split(r)[0]:o}},{key:"getSeparators",value:function(e){e=e||this.props;var t=e,r=t.decimalSeparator,n=e,a=n.thousandSeparator;if(a===!0&&(a=","),r===a)throw new Error("\n Decimal separator can't be same as thousand separator.\n\n thousandSeparator: "+a+' (thousandSeparator = {true} is same as thousandSeparator = ",")\n decimalSeparator: '+r+" (default value for decimalSeparator is .)\n ");return{decimalSeparator:r,thousandSeparator:a}}},{key:"getNumberRegex",value:function(e,t){var r=this.props,n=r.format,a=r.decimalPrecision,o=this.getSeparators(),i=o.decimalSeparator;return new RegExp("\\d"+(!i||0===a||t||n?"":"|"+u(i)),e?"g":void 0)}},{key:"setCaretPosition",value:function(e,t){if(e.value=e.value,null!==e){if(e.createTextRange){var r=e.createTextRange();return r.move("character",t),r.select(),!0}return e.selectionStart||0===e.selectionStart?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}},{key:"setPatchedCaretPosition",value:function(e,t){var r=this;this.setCaretPosition(e,t),setTimeout(function(){return r.setCaretPosition(e,t)},0)}},{key:"formatWithPattern",value:function(e){var t=this.props,r=t.format,n=t.mask;if(!r)return e;for(var a=r.split("#").length-1,o=0,i=r,u=0,s=e.length;u<s;u++)u<a&&(o=i.indexOf("#"),i=i.replace("#",e[u]));var f=i.lastIndexOf("#");return n?i.replace(/#/g,n):i.substring(0,o+1)+(f!==-1?i.substring(f+1,i.length):"")}},{key:"formatInput",value:function(e){var t=this.props,r=t.prefix,n=t.suffix,a=(t.mask,t.format),o=t.allowNegative,i=t.decimalPrecision,u=this.getSeparators(),l=u.thousandSeparator,p=u.decimalSeparator,c=this.getNumberRegex(!0),d=void 0,h=void 0;"number"==typeof e&&(e+="");var v=new RegExp("(-)"),m=new RegExp("(-)(.)*(-)");o&&!a&&(d=v.test(e),h=m.test(e));var y=e&&e.match(c);if(!y&&h)return{value:"",formattedValue:""};if(!y&&d)return{value:"",formattedValue:"-"};if(!y)return{value:"",formattedValue:""};var g=e.match(c).join(""),b=g;if(a)"string"==typeof a?b=this.formatWithPattern(b):"function"==typeof a&&(b=a(b));else{var x=b.indexOf(p)!==-1||i,P=b.split(p),S=P[0],w=P[1]||"";S=s(S),void 0!==i&&(w=f(w,i)),l&&(S=S.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+l)),r&&(S=r+S),n&&(w+=n),d&&!h&&(S="-"+S),b=S+(x&&p||"")+w}return{value:(d&&!h?"-":"")+b.match(c).join(""),formattedValue:b}}},{key:"getCursorPosition",value:function(e,t,r){var n=this.getNumberRegex(),a=void 0,o=void 0;for(a=0,o=0;o<r;o++)if((e[o].match(n)||e[o]===t[a])&&("0"!==e[o]||!t[a].match(n)||"0"===t[a])){for(;e[o]!==t[a]&&a<t.length;)a++;a++}return a}},{key:"onChangeHandler",value:function(e,t){var r=this;e.persist();var n=e.target,a=n.value,o=this.props.isAllowed,i=this.state.value,u=this.formatInput(a),s=u.formattedValue,f=u.value,l=Math.max(n.selectionStart,n.selectionEnd),p=this.getCursorPosition(a,s,l);return o(s,f,this.getFloatValue(f))||(s=i),this.setState({value:s},function(){r.setPatchedCaretPosition(n,p),t&&s!==i&&t(e,f)}),f}},{key:"onChange",value:function(e){this.onChangeHandler(e,this.props.onChange)}},{key:"onKeyDown",value:function(e){var t=e.target,r=t.selectionStart,n=t.selectionEnd,a=t.value,o=this.props.decimalPrecision,i=e.key,u=this.getNumberRegex(!1,void 0!==o),s=new RegExp("-");if(n-r===0)if("Delete"!==i||u.test(a[r])||s.test(a[r])){if("Backspace"===i&&!u.test(a[r-1])&&!s.test(a[r-1])){e.preventDefault();for(var f=r;!u.test(a[f-1])&&f>0;)f--;this.setPatchedCaretPosition(t,f)}}else{e.preventDefault();for(var l=r;!u.test(a[l])&&l<a.length;)l++;this.setPatchedCaretPosition(t,l)}this.props.onKeyDown&&this.props.onKeyDown(e)}},{key:"render",value:function(){var e=l(this.props,y),t=p({},e,{type:this.props.type,value:this.state.value,onChange:this.onChange,onKeyDown:this.onKeyDown});if("text"===this.props.displayType)return m.default.createElement("span",e,this.state.value);if(this.props.customInput){var r=this.props.customInput;return m.default.createElement(r,t)}return m.default.createElement("input",t)}}]),t}(m.default.Component);b.propTypes=y,b.defaultProps=g,e.exports=b},function(e,t,r){e.exports=r(3)()},function(e,t,r){"use strict";var n=r(4),a=r(5),o=r(6);e.exports=function(){function e(e,t,r,n,i,u){u!==o&&a(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return r.checkPropTypes=n,r.PropTypes=r,r}},function(e,t){"use strict";function r(e){return function(){return e}}var n=function(){};n.thatReturns=r,n.thatReturnsFalse=r(!1),n.thatReturnsTrue=r(!0),n.thatReturnsNull=r(null),n.thatReturnsThis=function(){return this},n.thatReturnsArgument=function(e){return e},e.exports=n},function(e,t,r){"use strict";function n(e,t,r,n,o,i,u,s){if(a(t),!e){var f;if(void 0===t)f=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[r,n,o,i,u,s],p=0;f=new Error(t.replace(/%s/g,function(){return l[p++]})),f.name="Invariant Violation"}throw f.framesToPop=1,f}}var a=function(e){};e.exports=n},function(e,t){"use strict";var r="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";e.exports=r},function(t,r){t.exports=e}])}); |
@@ -52,2 +52,10 @@ 'use strict'; | ||
function omit(obj, keyMaps) { | ||
var filteredObj = {}; | ||
Object.keys(obj).forEach(function (key) { | ||
if (!keyMaps[key]) filteredObj[key] = obj[key]; | ||
}); | ||
return filteredObj; | ||
} | ||
var propTypes = { | ||
@@ -67,2 +75,3 @@ thousandSeparator: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.oneOf([true])]), | ||
onChange: _propTypes2.default.func, | ||
type: _propTypes2.default.oneOf(['text', 'tel']), | ||
isAllowed: _propTypes2.default.func | ||
@@ -75,2 +84,3 @@ }; | ||
allowNegative: true, | ||
type: 'text', | ||
isAllowed: function isAllowed() { | ||
@@ -121,3 +131,3 @@ return true; | ||
this.setState({ | ||
value: this.formatInput(value).formattedValue | ||
value: formattedValue | ||
}); | ||
@@ -383,4 +393,9 @@ } | ||
var cursorPos = this.getCursorPosition(inputValue, formattedValue, el.selectionStart); | ||
/*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device cursor bug*/ | ||
var currentCursorPosition = Math.max(el.selectionStart, el.selectionEnd); | ||
var cursorPos = this.getCursorPosition(inputValue, formattedValue, currentCursorPosition); | ||
//set caret position befor setState | ||
@@ -443,10 +458,6 @@ //this.setPatchedCaretPosition(el, cursorPos); | ||
value: function render() { | ||
var props = _extends({}, this.props); | ||
var props = omit(this.props, propTypes); | ||
Object.keys(propTypes).forEach(function (key) { | ||
delete props[key]; | ||
}); | ||
var inputProps = _extends({}, props, { | ||
type: 'text', | ||
type: this.props.type, | ||
value: this.state.value, | ||
@@ -453,0 +464,0 @@ onChange: this.onChange, |
{ | ||
"name": "react-number-format", | ||
"description": "React component to format number in an input or as a text.", | ||
"version": "2.0.0-alpha2", | ||
"version": "2.0.0-alpha3", | ||
"main": "lib/number_format.js", | ||
@@ -6,0 +6,0 @@ "author": "Sudhanshu Yadav", |
@@ -33,2 +33,10 @@ /** | ||
function omit(obj, keyMaps) { | ||
const filteredObj = {}; | ||
Object.keys(obj).forEach((key) => { | ||
if (!keyMaps[key]) filteredObj[key] = obj[key] | ||
}); | ||
return filteredObj; | ||
} | ||
const propTypes = { | ||
@@ -54,2 +62,3 @@ thousandSeparator: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([true])]), | ||
onChange: PropTypes.func, | ||
type: PropTypes.oneOf(['text', 'tel']), | ||
isAllowed: PropTypes.func | ||
@@ -62,2 +71,3 @@ }; | ||
allowNegative: true, | ||
type: 'text', | ||
isAllowed: function() {return true;} | ||
@@ -94,3 +104,3 @@ }; | ||
this.setState({ | ||
value : this.formatInput(value).formattedValue | ||
value : formattedValue | ||
}) | ||
@@ -314,4 +324,8 @@ } | ||
let {formattedValue, value} = this.formatInput(inputValue); | ||
const cursorPos = this.getCursorPosition(inputValue, formattedValue, el.selectionStart); | ||
/*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device cursor bug*/ | ||
const currentCursorPosition = Math.max(el.selectionStart, el.selectionEnd); | ||
const cursorPos = this.getCursorPosition(inputValue, formattedValue, currentCursorPosition); | ||
//set caret position befor setState | ||
@@ -364,10 +378,6 @@ //this.setPatchedCaretPosition(el, cursorPos); | ||
render() { | ||
const props = Object.assign({}, this.props); | ||
const props = omit(this.props, propTypes); | ||
Object.keys(propTypes).forEach((key) => { | ||
delete props[key]; | ||
}); | ||
const inputProps = Object.assign({}, props, { | ||
type:'text', | ||
type:this.props.type, | ||
value:this.state.value, | ||
@@ -374,0 +384,0 @@ onChange:this.onChange, |
@@ -20,2 +20,12 @@ import React from 'react'; | ||
describe('NumberFormat as input', () => { | ||
it('should render input as type text by default', () => { | ||
const wrapper = mount(<NumberFormat />); | ||
expect(wrapper.find('input').get(0).getAttribute('type')).toEqual('text'); | ||
}); | ||
it('should render input as type tel', () => { | ||
const wrapper = mount(<NumberFormat type="tel" />); | ||
expect(wrapper.find('input').get(0).getAttribute('type')).toEqual('tel'); | ||
}); | ||
it('should have initial value', () => { | ||
@@ -22,0 +32,0 @@ const wrapper = mount(<NumberFormat value={2456981} thousandSeparator={true} prefix={'$'} />); |
129044
2252