From 6e5dda4e478011a2c9279c38c789be65febdc60f Mon Sep 17 00:00:00 2001 From: Ben-hur Santos Ott Date: Fri, 17 Feb 2017 15:42:08 -0200 Subject: [PATCH] feat(1.3.0): adding checkText to TextInputMask --- README.md | 47 +++++++++++++++++++-- lib/internal-dependencies/vanilla-masker.js | 12 +++--- lib/text-input-mask.js | 13 ++++++ package.json | 2 +- 4 files changed, 63 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 108c2017..df821f79 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ export default class MyComponent extends Component { render() { // the type is required but options is required only for some specific types. return ( - *cpf*: use the mask `999.999.999-99` and `numeric` keyboard.
*cnpj*: use the mask `99.999.999/9999-99` and `numeric` keyboard.
@@ -63,6 +63,44 @@ export default class MyComponent extends Component { *datetime*: use datetime mask with moment format (default DD/MM/YYYY HH:mm:ss). It accepts options (see later in this doc).
*custom*: use your custom mask (see the options props later in this doc).
+ +**onChangeText** + +Invoked after new value applied to mask. +```jsx +/** + * @param {String} text the text AFTER mask is applied. +*/ +onChangeText(text) { + // ... +} + + +``` + + +**checkText** + +Allow you to check and prevent value to be inputed. + +```jsx +/** + * @param {String} previous the previous text in the masked field. + * @param {String} next the next text that will be setted to field. + * @return {Boolean} return true if must accept the value. +*/ +checkText(previous, next) { + return next === 'your valid value or other boolean condition'; +} + + +``` + + **TextInput Props**
You can use the native props of TextInput, with this in mind: @@ -166,7 +204,7 @@ export default class MyComponent extends Component { // the type is required but options is required only for some specific types. // the sample below will output 4567 **** **** 1234 return ( - = values.length) { @@ -216,10 +214,10 @@ VMasker.toNumber = function(value) { return value.toString().replace(/(?!^-)[^0-9]/g, ""); }; - + VMasker.toAlphaNumeric = function(value) { return value.toString().replace(/[^a-z0-9 ]+/i, ""); }; return VMasker; -})); \ No newline at end of file +})); diff --git a/lib/text-input-mask.js b/lib/text-input-mask.js index cffa3bac..d092fb65 100644 --- a/lib/text-input-mask.js +++ b/lib/text-input-mask.js @@ -18,6 +18,11 @@ export default class TextInputMask extends BaseTextComponent { _onChangeText(text) { let self = this; + + if(!this._checkText(text)) { + return; + } + self.updateValue(text) .then(maskedText => { if(self.props.onChangeText) { @@ -26,6 +31,14 @@ export default class TextInputMask extends BaseTextComponent { }); } + _checkText(text) { + if(this.props.checkText) { + return this.props.checkText(this.state.value, text); + } + + return true; + } + render() { return (