diff --git a/README.md b/README.md index 837c143..e93379e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # react-inputs-validation -[![npm version](https://badge.fury.io/js/react-inputs-validation.svg)](https://badge.fury.io/js/react-inputs-validation) [![Build Status](https://travis-ci.org/edwardfhsiao/react-inputs-validation.svg?branch=master)](https://travis-ci.org/edwardfhsiao/react-inputs-validation) [![react-inputs-validation](http://img.shields.io/npm/dm/react-inputs-validation.svg)](https://www.npmjs.com/package/react-inputs-validation) [![Package Quality](http://npm.packagequality.com/shield/react-inputs-validation.svg)](http://packagequality.com/#?package=react-inputs-validation) [![Coverage Status](https://coveralls.io/repos/github/edwardfhsiao/react-inputs-validation/badge.svg?branch=master)](https://coveralls.io/github/edwardfhsiao/react-inputs-validation?branch=master) ![npm bundle size (minified + gzip)](https://img.shields.io/bundlephobia/minzip/react-inputs-validation.svg) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/edwardfhsiao/react-inputs-validation/master/LICENSE) +[![npm version](https://badge.fury.io/js/react-inputs-validation.svg)](https://badge.fury.io/js/react-inputs-validation) [![Build Status](https://travis-ci.org/edwardfhsiao/react-inputs-validation.svg?branch=master)](https://travis-ci.org/edwardfhsiao/react-inputs-validation) [![react-inputs-validation](http://img.shields.io/npm/dm/react-inputs-validation.svg)](https://www.npmjs.com/package/react-inputs-validation) [![Package Quality](https://npm.packagequality.com/shield/react-inputs-validation.svg)](http://packagequality.com/#?package=react-inputs-validation) [![Coverage Status](https://coveralls.io/repos/github/edwardfhsiao/react-inputs-validation/badge.svg?branch=master)](https://coveralls.io/github/edwardfhsiao/react-inputs-validation?branch=master) ![npm bundle size (minified + gzip)](https://img.shields.io/bundlephobia/minzip/react-inputs-validation.svg) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/edwardfhsiao/react-inputs-validation/master/LICENSE) [![Join the chat at https://gitter.im/react-inputs-validation/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/react-inputs-validation/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A react inputs validation component. -# +# # Online Demo Online demo example @@ -171,10 +171,10 @@ import 'react-inputs-validation/lib/react-inputs-validation.min.css'; |customStyleWrapper | Opt | Obj | | {} | |customStyleContainer | Opt | Obj | | {} | |customStyleOptionListItem | Opt | Obj | | {} | -|**onBlur** |**Opt.**|**Func** |**In order to validate the value on blur, you MUST provide a function, even if it is an empty function. Missing this, the validation on blur will not work.** |**none** | -|**onChange** |**Req.**|**Func** |**(val, e) => {}. Will return the value.**|**(val, e)=>{}** | -|onFocus |*Opt.* |Func | |none | -|onClick |*Opt.* |Func | |none | +|**onBlur** |**Opt**|**Func** |**In order to validate the value on blur, you MUST provide a function, even if it is an empty function. Missing this, the validation on blur will not work.** |**none** | +|**onChange** |**Req**|**Func** |**(val, e) => {}. Will return the value.**|**(val, e)=>{}** | +|onFocus |Opt |Func | |none | +|onClick |Opt |Func | |none | |**validationOption** |**Opt**|**obj** |**validationOption object, see below**|**{}** | |**validationOption.name** |**Opt**|**Str** |**To display in the Error message. i.e Please enter your ${name}.**|**""** | |**validationOption.check** |**Opt**|**Bool**|**To determin if you need to validate.**|**true** | @@ -242,7 +242,7 @@ import 'react-inputs-validation/lib/react-inputs-validation.min.css'; |id | Opt | Str | | "" | |name | Opt | Str | | "" | |value | Opt | Str | | "" | -|checked | Opt | Bool | | false | +|**checked** |**Req**|**Bool**|**Recommend using the value returned from ```onChange``` callback, which is ```isChecked```.** |**false** | |disabled | Opt | Bool | | false | |**validate** |**Opt**|**Bool**|**If you have a submit button and trying to validate all the inputs of your form at once, toggle it to true, then it will validate the field and pass the result via the "validationCallback" you provide.**|**false** | |**validationCallback** |**Opt**|**Func**|**Return the validation result.**|**none** | @@ -252,11 +252,11 @@ import 'react-inputs-validation/lib/react-inputs-validation.min.css'; |customStyleWrapper | Opt | Obj | | {} | |customStyleInputBox | Opt | Obj | | {} | |customStyleContainer | Opt | Obj | | {} | -|**onBlur** |**Opt.**|**Func** |**In order to validate the value on blur, you MUST provide a function, even if it is an empty function. Missing this, the validation on blur will not work.** |**none** | -|**onChange** |**Req.**|**Func** |**(isChecked, e) => {}. Will return the value.**|**(val, e)=>{}** | -|onFocus |*Opt.* |Func | |none | -|onClick |*Opt.* |Func | |none | -|**labelHtml** |*Req.* |Html | |none | +|**onBlur** |**Opt**|**Func** |**In order to validate the value on blur, you MUST provide a function, even if it is an empty function. Missing this, the validation on blur will not work.** |**none** | +|**onChange** |**Req**|**Func** |**(isChecked, e) => {}. Will return the value.**|**(val, e)=>{}** | +|onFocus |Opt |Func | |none | +|onClick |Opt |Func | |none | +|**labelHtml** |Req |Html | |none | |**validationOption** |**Opt**|**obj** |**validationOption object, see below**|**{}** | |**validationOption.name** |**Opt**|**Str** |**To display in the Error message. i.e Please enter your ${name}.**|**""** | |**validationOption.check** |**Opt**|**Bool**|**To determin if you need to validate.**|**true** | @@ -274,7 +274,7 @@ import 'react-inputs-validation/lib/react-inputs-validation.min.css'; id={'agreement'} //Optional.[String].Default: "". Input ID. name={'agreement'} //Optional.[String].Default: "". Input name value={agreement} //Required.[String].Default: "". - checked={false} //Optional.[Bool].Default: false. + checked={isAgreementChecked} //Required.[Bool].Default: false. disabled={false} //Optional.[Bool].Default: false. validate={validate} //Optional.[Bool].Default: false. If you have a submit button and trying to validate all the inputs of your form at once, toggle it to true, then it will validate the field and pass the result via the "validationCallback" you provide. validationCallback={res => @@ -338,7 +338,7 @@ import 'react-inputs-validation/lib/react-inputs-validation.min.css'; |customStyleContainer | Opt | Obj | | {} | |customStyleOptionListContainer | Opt | Obj | | {} | |customStyleOptionListItem | Opt | Obj | | {} | -|**onBlur** |**Opt.**|**Func** |**In order to validate the value on blur, you MUST provide a function, even if it is an empty function. Missing this, the validation on blur will not work.** |**none** | +|**onBlur** |**Opt**|**Func** |**In order to validate the value on blur, you MUST provide a function, even if it is an empty function. Missing this, the validation on blur will not work.** |**none** | |**onChange** |**Req**|**Func**| |**(val, e) => {}**| |onFocus | Opt | Func | | none | |onClick | Opt | Func | | none | diff --git a/lib/components/Checkbox.js b/lib/components/Checkbox.js index d5b37b7..befe186 100644 --- a/lib/components/Checkbox.js +++ b/lib/components/Checkbox.js @@ -134,7 +134,7 @@ function (_React$Component) { _createClass(Index, [{ key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { - if (this.state.validate === true && prevState.validate === false) { + if (this.state.validate !== prevState.validate) { this.check(); } } @@ -193,7 +193,6 @@ function (_React$Component) { var onFocus = this.props.onFocus; if (onFocus) { - this.check(); onFocus(e); } } @@ -280,10 +279,10 @@ function (_React$Component) { msg = _this$state.msg, checked = _this$state.checked, successMsg = _this$state.successMsg; - var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['checkbox__wrapper'], " ").concat(checked && reactInputsValidationCss['checked'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['checkbox__container'], " ").concat(checked && reactInputsValidationCss['checked'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var boxClass = "".concat(classNameInputBox, " ").concat(reactInputsValidationCss['checkbox__box'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(checked && reactInputsValidationCss['checked'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var labelClass = "".concat(checked && reactInputsValidationCss['checked'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['checkbox__wrapper'], " ").concat(checked && reactInputsValidationCss['checked'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['checkbox__container'], " ").concat(checked && reactInputsValidationCss['checked'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var boxClass = "".concat(classNameInputBox, " ").concat(reactInputsValidationCss['checkbox__box'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(checked && reactInputsValidationCss['checked'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var labelClass = "".concat(checked && reactInputsValidationCss['checked'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); var errMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(err && reactInputsValidationCss['error']); var successMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(!err && reactInputsValidationCss['success']); var msgHtml; @@ -297,7 +296,7 @@ function (_React$Component) { }, msg); } - if (showMsg && !err && successMsg) { + if (showMsg && !err && typeof successMsg !== 'undefined') { msgHtml = React.createElement("div", { className: successMsgClass }, successMsg); @@ -324,7 +323,7 @@ function (_React$Component) { type: "checkbox", className: reactInputsValidationCss['checkbox__input'], value: String(value), - checked: checked, + defaultChecked: checked, disabled: disabled, onChange: this.onChange, ref: this.input @@ -335,16 +334,18 @@ function (_React$Component) { }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { - // TODO: This was from componentWillReceiveProps() - // if (this.props.checked != nextProps.checked) { - // this.setState({ checked: nextProps.checked }); - // } - if (nextProps.validate === true && prevState.validate === false) { + if (nextProps.validate !== prevState.validate) { return { validate: nextProps.validate }; } + if (nextProps.checked !== prevState.checked) { + return { + checked: nextProps.checked + }; + } + return null; } }]); diff --git a/lib/components/Radiobox.js b/lib/components/Radiobox.js index 3eb2331..1913ebe 100644 --- a/lib/components/Radiobox.js +++ b/lib/components/Radiobox.js @@ -140,7 +140,7 @@ function (_React$Component) { _createClass(Index, [{ key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { - if (this.state.validate === true && prevState.validate === false) { + if (this.state.validate !== prevState.validate) { this.check(); } } @@ -268,11 +268,11 @@ function (_React$Component) { err = _this$state.err, msg = _this$state.msg, successMsg = _this$state.successMsg; - var wrapperClass = "".concat(classNameWrapper, " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__wrapper'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var containerClass = "".concat(classNameContainer, " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__container'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var inputClass = "".concat(classNameInput, " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__input'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var labelClass = "".concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__label'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var optionListItemClass = "".concat(classNameOptionListItem, " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__item'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var wrapperClass = "".concat(classNameWrapper, " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__wrapper'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var containerClass = "".concat(classNameContainer, " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__container'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var inputClass = "".concat(classNameInput, " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__input'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var labelClass = "".concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__label'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var optionListItemClass = "".concat(classNameOptionListItem, " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(reactInputsValidationCss['radiobox__item'], " ").concat(disabled && reactInputsValidationCss['disabled']); var errMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(err && reactInputsValidationCss['error']); var successMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(!err && reactInputsValidationCss['success']); var msgHtml; @@ -286,7 +286,7 @@ function (_React$Component) { }, msg); } - if (showMsg && !err && successMsg) { + if (showMsg && !err && typeof successMsg !== 'undefined') { msgHtml = React.createElement("div", { className: successMsgClass }, successMsg); @@ -336,7 +336,7 @@ function (_React$Component) { }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { - if (nextProps.validate === true && prevState.validate === false) { + if (nextProps.validate !== prevState.validate) { return { validate: nextProps.validate }; diff --git a/lib/components/Select.js b/lib/components/Select.js index 86284c0..67b9ea5 100644 --- a/lib/components/Select.js +++ b/lib/components/Select.js @@ -202,7 +202,7 @@ function (_React$Component) { } } - if (this.state.validate === true && prevState.validate === false) { + if (this.state.validate !== prevState.validate) { this.check(); } } @@ -617,12 +617,12 @@ function (_React$Component) { show = _this$state2.show, successMsg = _this$state2.successMsg, isTyping = _this$state2.isTyping; - var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['select__wrapper'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); - var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['select__container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(show && reactInputsValidationCss['show'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); - var inputClass = "".concat(reactInputsValidationCss['select__input'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); - var selectClass = "".concat(classNameSelect, " ").concat(reactInputsValidationCss['ellipsis'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); - var selectOptionListContainerClass = "".concat(classNameOptionListContainer, " ").concat(reactInputsValidationCss['select__options-container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(show && reactInputsValidationCss['show'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); - var selectOptionListItemClass = "".concat(!isTyping && reactInputsValidationCss['select__options-item-show-cursor'], " ").concat(classNameOptionListItem, " ").concat(reactInputsValidationCss['select__options-item'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); + var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['select__wrapper'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); + var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['select__container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(show && reactInputsValidationCss['show'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); + var inputClass = "".concat(reactInputsValidationCss['select__input'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); + var selectClass = "".concat(classNameSelect, " ").concat(reactInputsValidationCss['ellipsis'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); + var selectOptionListContainerClass = "".concat(classNameOptionListContainer, " ").concat(reactInputsValidationCss['select__options-container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(show && reactInputsValidationCss['show'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); + var selectOptionListItemClass = "".concat(!isTyping && reactInputsValidationCss['select__options-item-show-cursor'], " ").concat(classNameOptionListItem, " ").concat(reactInputsValidationCss['select__options-item'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled'], ";"); var dropdownIconClass = "".concat(classNameDropdownIconOptionListItem, " ").concat(reactInputsValidationCss['select__dropdown-icon']); var errMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(err && reactInputsValidationCss['error']); var successMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(!err && reactInputsValidationCss['success']); @@ -637,7 +637,7 @@ function (_React$Component) { }, msg); } - if (showMsg && !err && successMsg) { + if (showMsg && !err && typeof successMsg !== 'undefined') { msgHtml = React.createElement("div", { className: successMsgClass }, successMsg); @@ -731,7 +731,7 @@ function (_React$Component) { }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { - if (nextProps.validate === true && prevState.validate === false) { + if (nextProps.validate !== prevState.validate) { return { validate: nextProps.validate }; diff --git a/lib/components/Textarea.js b/lib/components/Textarea.js index 213a88f..1a607d3 100644 --- a/lib/components/Textarea.js +++ b/lib/components/Textarea.js @@ -164,7 +164,7 @@ function (_React$Component) { _createClass(Index, [{ key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { - if (this.state.validate === true && prevState.validate === false) { + if (this.state.validate !== prevState.validate) { this.check(); } } @@ -208,7 +208,6 @@ function (_React$Component) { var onFocus = this.props.onFocus; if (onFocus) { - this.check(); onFocus(e); } } @@ -382,9 +381,9 @@ function (_React$Component) { err = _this$state.err, msg = _this$state.msg, successMsg = _this$state.successMsg; - var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['textarea__wrapper'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['textarea__container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var inputClass = "".concat(classNameInput, " ").concat(reactInputsValidationCss['textarea__input'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['textarea__wrapper'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['textarea__container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var inputClass = "".concat(classNameInput, " ").concat(reactInputsValidationCss['textarea__input'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); var errmsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(err && reactInputsValidationCss['error']); var successMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(!err && reactInputsValidationCss['success']); var msgHtml; @@ -398,7 +397,7 @@ function (_React$Component) { }, msg); } - if (showMsg && !err && successMsg) { + if (showMsg && !err && typeof successMsg !== 'undefined') { msgHtml = React.createElement("div", { className: successMsgClass }, successMsg); @@ -431,7 +430,7 @@ function (_React$Component) { }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { - if (nextProps.validate === true && prevState.validate === false) { + if (nextProps.validate !== prevState.validate) { return { validate: nextProps.validate }; diff --git a/lib/components/Textbox.js b/lib/components/Textbox.js index e80b1c4..c3227fc 100644 --- a/lib/components/Textbox.js +++ b/lib/components/Textbox.js @@ -166,7 +166,7 @@ function (_React$Component) { _createClass(Index, [{ key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { - if (this.state.validate === true && prevState.validate === false) { + if (this.state.validate !== prevState.validate) { this.check(); } } @@ -227,7 +227,6 @@ function (_React$Component) { var onFocus = this.props.onFocus; if (onFocus) { - this.check(); onFocus(e); } } @@ -476,9 +475,9 @@ function (_React$Component) { err = _this$state.err, msg = _this$state.msg, successMsg = _this$state.successMsg; - var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['textbox__wrapper'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['textbox__container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); - var inputClass = "".concat(classNameInput, " ").concat(reactInputsValidationCss['textbox__input'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(successMsg && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var wrapperClass = "".concat(classNameWrapper, " ").concat(reactInputsValidationCss['textbox__wrapper'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var containerClass = "".concat(classNameContainer, " ").concat(reactInputsValidationCss['textbox__container'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); + var inputClass = "".concat(classNameInput, " ").concat(reactInputsValidationCss['textbox__input'], " ").concat(err && reactInputsValidationCss['error'], " ").concat(typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success'], " ").concat(disabled && reactInputsValidationCss['disabled']); var errmsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(err && reactInputsValidationCss['error']); var successMsgClass = "".concat(reactInputsValidationCss['msg'], " ").concat(!err && reactInputsValidationCss['success']); var msgHtml; @@ -492,7 +491,7 @@ function (_React$Component) { }, msg); } - if (showMsg && !err && successMsg) { + if (showMsg && !err && typeof successMsg !== 'undefined') { msgHtml = React.createElement("div", { className: successMsgClass }, successMsg); @@ -526,7 +525,7 @@ function (_React$Component) { }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { - if (nextProps.validate === true && prevState.validate === false) { + if (nextProps.validate !== prevState.validate) { return { validate: nextProps.validate }; diff --git a/lib/react-inputs-validation.js b/lib/react-inputs-validation.js index 6636c31..06ca5c5 100644 --- a/lib/react-inputs-validation.js +++ b/lib/react-inputs-validation.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["react-inputs-validation"]=t():e["react-inputs-validation"]=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.LOCALE_OPTION_LIST=["en-US","zh-CN"];t.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE="Invalid window.REACT_INPUTS_VALIDATION['customErrorMessage']. EXAMPLE: window.REACT_INPUTS_VALIDATION={customErrorMessage:{'en-US':{textbox:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}},radiobox:{empty:function empty(name){return'Please choose one '+getEnglishName(name)}},checkbox:{unchecked:function unchecked(name){return getEnglishName(name)+'must be checked'}},select:{empty:function empty(name){return'Please select a '+getEnglishName(name)}},textarea:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}}}}};";t.DEFAULT_LOCALE="en-US"},function(e,t,n){"use strict";e.exports=n(8)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(e){var t="";return e&&(t=e+" "),t},i={"zh-CN":{textbox:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}},radiobox:{empty:function(e){return"必须勾选一个"+e}},checkbox:{unchecked:function(e){return e+"必须勾选"}},select:{empty:function(e){return"请选择一个"+e}},textarea:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}}},"en-US":{textbox:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}},radiobox:{empty:function(e){return"Please choose one "+o(e)}},checkbox:{unchecked:function(e){return o(e)+"must be checked"}},select:{empty:function(e){return"Please select a "+o(e)}},textarea:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}}}};t.getCustomErrorMessage=function(e,t){return e&&"object"==typeof e&&e.constructor===Object&&Object.keys(e).length?(Object.keys(e).map(function(n){t[n]?Object.keys(e[n]).length&&Object.keys(e[n]).map(function(r){Object.keys(e[n][r]).length&&Object.keys(e[n][r]).map(function(o){t[n][r][o]=e[n][r][o]})}):t[n]=e[n]}),t):(console.error(r.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE),!1)},t.handleCustomErrorMessage=function(e,n){var r;return void 0!==n&&n.REACT_INPUTS_VALIDATION&&n.REACT_INPUTS_VALIDATION.customErrorMessage&&(r=t.getCustomErrorMessage(n.REACT_INPUTS_VALIDATION.customErrorMessage,e)),void 0===r||!1===r?e:r},"undefined"!=typeof window&&(window.REACT_INPUTS_VALIDATION=window.REACT_INPUTS_VALIDATION||{},i=t.handleCustomErrorMessage(i,window)),t.default=i},function(e,t,n){e.exports={ellipsis:"react-inputs-validation__ellipsis___3-Api",textbox__wrapper:"react-inputs-validation__textbox__wrapper___3tnXv",textbox__container:"react-inputs-validation__textbox__container___3KXOM",textbox__input:"react-inputs-validation__textbox__input___20hDL",error:"react-inputs-validation__error___2aXSp",success:"react-inputs-validation__success___3TpwE",disabled:"react-inputs-validation__disabled___1-57g",msg:"react-inputs-validation__msg___pxv8o",textarea__wrapper:"react-inputs-validation__textarea__wrapper___35GhF",textarea__container:"react-inputs-validation__textarea__container___2fbGp",textarea__input:"react-inputs-validation__textarea__input___1CFm_",radiobox__wrapper:"react-inputs-validation__radiobox__wrapper___1zZ30",radiobox__container:"react-inputs-validation__radiobox__container___FD4vb",radiobox__input:"react-inputs-validation__radiobox__input___2uX2-",radiobox__label:"react-inputs-validation__radiobox__label___2tQsB",checked:"react-inputs-validation__checked___2O0Ju",radiobox__item:"react-inputs-validation__radiobox__item___ejuz1",checkbox__wrapper:"react-inputs-validation__checkbox__wrapper___1c1rD",checkbox__input:"react-inputs-validation__checkbox__input___1yF4X",checkbox__container:"react-inputs-validation__checkbox__container___3I1rX",checkbox__box:"react-inputs-validation__checkbox__box___1uj8A",box:"react-inputs-validation__box___3E9nu",select__wrapper:"react-inputs-validation__select__wrapper___1B4OH",select__input:"react-inputs-validation__select__input___3h-P7",select__container:"react-inputs-validation__select__container___3jgUR","select__options-item":"react-inputs-validation__select__options-item___30yY4","select__options-item-show-cursor":"react-inputs-validation__select__options-item-show-cursor___1ZT3b","select__no-mouse":"react-inputs-validation__select__no-mouse___2uRg6","select__hover-active":"react-inputs-validation__select__hover-active___2z1MQ",active:"react-inputs-validation__active___3eZBB","select__options-container-animate":"react-inputs-validation__select__options-container-animate___2Rm--",show:"react-inputs-validation__show___2NI3u","select__options-container":"react-inputs-validation__select__options-container___d54qE",select__dropdown:"react-inputs-validation__select__dropdown___11yDr","select__dropdown-icon":"react-inputs-validation__select__dropdown-icon___1T5r2","select__dropdown-name":"react-inputs-validation__select__dropdown-name___3hghL","select__dropdown-icon-container":"react-inputs-validation__select__dropdown-icon-container___2ild-"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},o={reg:function(e,t){var n=!0;return e.test(t)&&(n=!1),n},empty:function(e){return!e.replace(/\s/g,"").length},number:function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=999999999999),!!r(e)&&!(en)}};t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g,function(e,t){return 0==+e?"":0===t?e.toLowerCase():e.toUpperCase()})},o={camelize:r,toCamelCase:function(e){return function(t){void 0===t&&(t=!1);var n=r(e);return t?n.substr(0,1).toUpperCase()+n.substr(1,n.length):n}}};t.default=o},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(7));t.Textbox=o.default;var i=r(n(10));t.Textarea=i.default;var a=r(n(11));t.Select=a.default;var s=r(n(12));t.Checkbox=s.default;var u=r(n(13));t.Radiobox=u.default,"undefined"!=typeof window&&(window.Textbox=o.default,window.Textarea=i.default,window.Radiobox=u.default,window.Checkbox=s.default,window.Select=a.default)},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=i(n(4)),c=i(n(5)),l=n(0),d=i(n(3)),p=["string","number"],f=function(e){var t=e.reg,n=e.min,r=e.max,o=e.type,i=e.name,a=e.check,s=e.length,u=e.regMsg,c=e.compare,d=e.required,p=e.showMsg,f=e.locale,h=e.msgOnError,m=e.msgOnSuccess,v=e.customFunc;return f=void 0!==f?f:l.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0!==n?n:0,r=void 0!==r?r:0,o=void 0!==o?o:"string",i=void 0!==i?i:"",a=void 0===a||a,p=void 0===p||p,{reg:t,min:n,max:r,type:o,name:i,check:a,length:s=void 0!==s?s:0,regMsg:u=void 0!==u?u:"",locale:f,compare:c=void 0!==c?c:"",required:d=void 0===d||d,showMsg:p,msgOnError:h=void 0!==h?h:"",msgOnSuccess:m=void 0!==m?m:"",customFunc:v=void 0!==v?v:void 0}},h=function(e){function t(t){var n=e.call(this,t)||this;return n.state={err:!1,msg:"",successMsg:void 0,value:t.value,validate:t.validate},n.onChange=n.onChange.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyUp=n.onKeyUp.bind(n),n.input=a.createRef(),n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return!0===e.validate&&!1===t.validate?{validate:e.validate}:null},t.prototype.componentDidUpdate=function(e,t){!0===this.state.validate&&!1===t.validate&&this.check()},t.prototype.onChange=function(e){var t=this.input;if(null!==t){var n=t.current.value;if(!(""!==this.props.maxLength&&n.length>Number(this.props.maxLength))){var r=this.props.validationOption;f(r).type===p[1]&&(n=String(this.autoFormatNumber(n)));var o=this.props.onChange;o&&o(n,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&(this.check(),t(e))},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=f(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,h=n.check,m=n.length,v=n.regMsg,_=n.locale,g=n.compare,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(h)if(a)if(-1!==p.indexOf(a)){if(!s.default[_]||!s.default[_].textbox)return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[_].textbox,S=this.input;if(null===S)return;var O=e||S.current.value,w=d||"";if(y&&u.default.empty(O))return void this.handleCheckEnd(!0,C.empty(w));if(""!==String(O)){if(r&&u.default.reg(r,O))return void this.handleCheckEnd(!0,""!==v?v:C.invalid(w));if(a===p[0]){if(o||i)if(o&&i){if(String(O).lengthi)return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&String(O).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(m&&String(O).length!==m)return void this.handleCheckEnd(!0,C.lengthEqual(w)(m))}if(a===p[1]){if(!u.default[a](O))return void this.handleCheckEnd(!0,C.invalid(w));if(o||i)if(o&&i){if(!u.default[a](O,o,i))return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&!u.default[a](O,o))return void this.handleCheckEnd(!0,C.lessThan(w)(o));if(i&&!u.default[a](O,0,i))return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(m&&String(O).length!==m)return void this.handleCheckEnd(!0,C.lengthEqual(w)(m))}if(g&&""!==g&&O!==g)return void this.handleCheckEnd(!0,C.twoInputsNotEqual())}if(E&&"function"==typeof E){var k=E(O);if(!0!==k)return void this.handleCheckEnd(!0,k)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase("textbox")(!0)+' "type" options in validationOption are ['+p.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.autoFormatNumber=function(e){var t="",n=!1;return String(e).split("").filter(function(e){var r=e.toLowerCase().charCodeAt(0);(r>=48&&r<=57||46===r&&!n)&&(46===r&&(n=!0),t+=e)}),t.length&&"."===t[0]&&(t="0"+t),t},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=f(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=t.type,s=t.value,u=t.disabled,c=t.maxLength,l=t.autoComplete,p=t.placeholder,h=t.classNameWrapper,m=t.classNameContainer,v=t.classNameInput,_=t.customStyleWrapper,g=t.customStyleContainer,y=t.customStyleInput,b=t.validationOption,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=h+" "+d.default.textbox__wrapper+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(u&&d.default.disabled),k=m+" "+d.default.textbox__container+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(u&&d.default.disabled),x=v+" "+d.default.textbox__input+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(u&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=f(b).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:_},a.createElement("div",{className:k,style:g},a.createElement("input",{tabIndex:Number(n),id:r,name:o,type:i,value:s,disabled:u,autoComplete:l,maxLength:Number(c),onBlur:this.onBlur,onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:y,placeholder:p,ref:this.input})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",disabled:!1,validate:!1,autoComplete:"on",maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=h},function(e,t,n){"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["react-inputs-validation"]=t():e["react-inputs-validation"]=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.LOCALE_OPTION_LIST=["en-US","zh-CN"];t.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE="Invalid window.REACT_INPUTS_VALIDATION['customErrorMessage']. EXAMPLE: window.REACT_INPUTS_VALIDATION={customErrorMessage:{'en-US':{textbox:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}},radiobox:{empty:function empty(name){return'Please choose one '+getEnglishName(name)}},checkbox:{unchecked:function unchecked(name){return getEnglishName(name)+'must be checked'}},select:{empty:function empty(name){return'Please select a '+getEnglishName(name)}},textarea:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}}}}};";t.DEFAULT_LOCALE="en-US"},function(e,t,n){"use strict";e.exports=n(8)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(e){var t="";return e&&(t=e+" "),t},i={"zh-CN":{textbox:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}},radiobox:{empty:function(e){return"必须勾选一个"+e}},checkbox:{unchecked:function(e){return e+"必须勾选"}},select:{empty:function(e){return"请选择一个"+e}},textarea:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}}},"en-US":{textbox:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}},radiobox:{empty:function(e){return"Please choose one "+o(e)}},checkbox:{unchecked:function(e){return o(e)+"must be checked"}},select:{empty:function(e){return"Please select a "+o(e)}},textarea:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}}}};t.getCustomErrorMessage=function(e,t){return e&&"object"==typeof e&&e.constructor===Object&&Object.keys(e).length?(Object.keys(e).map(function(n){t[n]?Object.keys(e[n]).length&&Object.keys(e[n]).map(function(r){Object.keys(e[n][r]).length&&Object.keys(e[n][r]).map(function(o){t[n][r][o]=e[n][r][o]})}):t[n]=e[n]}),t):(console.error(r.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE),!1)},t.handleCustomErrorMessage=function(e,n){var r;return void 0!==n&&n.REACT_INPUTS_VALIDATION&&n.REACT_INPUTS_VALIDATION.customErrorMessage&&(r=t.getCustomErrorMessage(n.REACT_INPUTS_VALIDATION.customErrorMessage,e)),void 0===r||!1===r?e:r},"undefined"!=typeof window&&(window.REACT_INPUTS_VALIDATION=window.REACT_INPUTS_VALIDATION||{},i=t.handleCustomErrorMessage(i,window)),t.default=i},function(e,t,n){e.exports={ellipsis:"react-inputs-validation__ellipsis___3-Api",textbox__wrapper:"react-inputs-validation__textbox__wrapper___3tnXv",textbox__container:"react-inputs-validation__textbox__container___3KXOM",textbox__input:"react-inputs-validation__textbox__input___20hDL",error:"react-inputs-validation__error___2aXSp",success:"react-inputs-validation__success___3TpwE",disabled:"react-inputs-validation__disabled___1-57g",msg:"react-inputs-validation__msg___pxv8o",textarea__wrapper:"react-inputs-validation__textarea__wrapper___35GhF",textarea__container:"react-inputs-validation__textarea__container___2fbGp",textarea__input:"react-inputs-validation__textarea__input___1CFm_",radiobox__wrapper:"react-inputs-validation__radiobox__wrapper___1zZ30",radiobox__container:"react-inputs-validation__radiobox__container___FD4vb",radiobox__input:"react-inputs-validation__radiobox__input___2uX2-",radiobox__label:"react-inputs-validation__radiobox__label___2tQsB",checked:"react-inputs-validation__checked___2O0Ju",radiobox__item:"react-inputs-validation__radiobox__item___ejuz1",checkbox__wrapper:"react-inputs-validation__checkbox__wrapper___1c1rD",checkbox__input:"react-inputs-validation__checkbox__input___1yF4X",checkbox__container:"react-inputs-validation__checkbox__container___3I1rX",checkbox__box:"react-inputs-validation__checkbox__box___1uj8A",box:"react-inputs-validation__box___3E9nu",select__wrapper:"react-inputs-validation__select__wrapper___1B4OH",select__input:"react-inputs-validation__select__input___3h-P7",select__container:"react-inputs-validation__select__container___3jgUR","select__options-item":"react-inputs-validation__select__options-item___30yY4","select__options-item-show-cursor":"react-inputs-validation__select__options-item-show-cursor___1ZT3b","select__no-mouse":"react-inputs-validation__select__no-mouse___2uRg6","select__hover-active":"react-inputs-validation__select__hover-active___2z1MQ",active:"react-inputs-validation__active___3eZBB","select__options-container-animate":"react-inputs-validation__select__options-container-animate___2Rm--",show:"react-inputs-validation__show___2NI3u","select__options-container":"react-inputs-validation__select__options-container___d54qE",select__dropdown:"react-inputs-validation__select__dropdown___11yDr","select__dropdown-icon":"react-inputs-validation__select__dropdown-icon___1T5r2","select__dropdown-name":"react-inputs-validation__select__dropdown-name___3hghL","select__dropdown-icon-container":"react-inputs-validation__select__dropdown-icon-container___2ild-"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},o={reg:function(e,t){var n=!0;return e.test(t)&&(n=!1),n},empty:function(e){return!e.replace(/\s/g,"").length},number:function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=999999999999),!!r(e)&&!(en)}};t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g,function(e,t){return 0==+e?"":0===t?e.toLowerCase():e.toUpperCase()})},o={camelize:r,toCamelCase:function(e){return function(t){void 0===t&&(t=!1);var n=r(e);return t?n.substr(0,1).toUpperCase()+n.substr(1,n.length):n}}};t.default=o},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(7));t.Textbox=o.default;var i=r(n(10));t.Textarea=i.default;var a=r(n(11));t.Select=a.default;var s=r(n(12));t.Checkbox=s.default;var u=r(n(13));t.Radiobox=u.default,"undefined"!=typeof window&&(window.Textbox=o.default,window.Textarea=i.default,window.Radiobox=u.default,window.Checkbox=s.default,window.Select=a.default)},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=i(n(4)),c=i(n(5)),l=n(0),d=i(n(3)),p=["string","number"],f=function(e){var t=e.reg,n=e.min,r=e.max,o=e.type,i=e.name,a=e.check,s=e.length,u=e.regMsg,c=e.compare,d=e.required,p=e.showMsg,f=e.locale,h=e.msgOnError,v=e.msgOnSuccess,m=e.customFunc;return f=void 0!==f?f:l.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0!==n?n:0,r=void 0!==r?r:0,o=void 0!==o?o:"string",i=void 0!==i?i:"",a=void 0===a||a,p=void 0===p||p,{reg:t,min:n,max:r,type:o,name:i,check:a,length:s=void 0!==s?s:0,regMsg:u=void 0!==u?u:"",locale:f,compare:c=void 0!==c?c:"",required:d=void 0===d||d,showMsg:p,msgOnError:h=void 0!==h?h:"",msgOnSuccess:v=void 0!==v?v:"",customFunc:m=void 0!==m?m:void 0}},h=function(e){function t(t){var n=e.call(this,t)||this;return n.state={err:!1,msg:"",successMsg:void 0,value:t.value,validate:t.validate},n.onChange=n.onChange.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyUp=n.onKeyUp.bind(n),n.input=a.createRef(),n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return e.validate!==t.validate?{validate:e.validate}:null},t.prototype.componentDidUpdate=function(e,t){this.state.validate!==t.validate&&this.check()},t.prototype.onChange=function(e){var t=this.input;if(null!==t){var n=t.current.value;if(!(""!==this.props.maxLength&&n.length>Number(this.props.maxLength))){var r=this.props.validationOption;f(r).type===p[1]&&(n=String(this.autoFormatNumber(n)));var o=this.props.onChange;o&&o(n,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&t(e)},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=f(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,h=n.check,v=n.length,m=n.regMsg,_=n.locale,g=n.compare,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(h)if(a)if(-1!==p.indexOf(a)){if(!s.default[_]||!s.default[_].textbox)return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[_].textbox,S=this.input;if(null===S)return;var O=e||S.current.value,w=d||"";if(y&&u.default.empty(O))return void this.handleCheckEnd(!0,C.empty(w));if(""!==String(O)){if(r&&u.default.reg(r,O))return void this.handleCheckEnd(!0,""!==m?m:C.invalid(w));if(a===p[0]){if(o||i)if(o&&i){if(String(O).lengthi)return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&String(O).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(v&&String(O).length!==v)return void this.handleCheckEnd(!0,C.lengthEqual(w)(v))}if(a===p[1]){if(!u.default[a](O))return void this.handleCheckEnd(!0,C.invalid(w));if(o||i)if(o&&i){if(!u.default[a](O,o,i))return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&!u.default[a](O,o))return void this.handleCheckEnd(!0,C.lessThan(w)(o));if(i&&!u.default[a](O,0,i))return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(v&&String(O).length!==v)return void this.handleCheckEnd(!0,C.lengthEqual(w)(v))}if(g&&""!==g&&O!==g)return void this.handleCheckEnd(!0,C.twoInputsNotEqual())}if(E&&"function"==typeof E){var k=E(O);if(!0!==k)return void this.handleCheckEnd(!0,k)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase("textbox")(!0)+' "type" options in validationOption are ['+p.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.autoFormatNumber=function(e){var t="",n=!1;return String(e).split("").filter(function(e){var r=e.toLowerCase().charCodeAt(0);(r>=48&&r<=57||46===r&&!n)&&(46===r&&(n=!0),t+=e)}),t.length&&"."===t[0]&&(t="0"+t),t},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=f(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=t.type,s=t.value,u=t.disabled,c=t.maxLength,l=t.autoComplete,p=t.placeholder,h=t.classNameWrapper,v=t.classNameContainer,m=t.classNameInput,_=t.customStyleWrapper,g=t.customStyleContainer,y=t.customStyleInput,b=t.validationOption,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=h+" "+d.default.textbox__wrapper+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(u&&d.default.disabled),k=v+" "+d.default.textbox__container+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(u&&d.default.disabled),x=m+" "+d.default.textbox__input+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(u&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=f(b).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&void 0!==O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:_},a.createElement("div",{className:k,style:g},a.createElement("input",{tabIndex:Number(n),id:r,name:o,type:i,value:s,disabled:u,autoComplete:l,maxLength:Number(c),onBlur:this.onBlur,onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:y,placeholder:p,ref:this.input})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",disabled:!1,validate:!1,autoComplete:"on",maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=h},function(e,t,n){"use strict"; /** @license React v16.6.0 * react.production.min.js * @@ -6,10 +6,10 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var r=n(9),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,s=o?Symbol.for("react.fragment"):60107,u=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,d=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.concurrent_mode"):60111,f=o?Symbol.for("react.forward_ref"):60112,h=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,v=o?Symbol.for("react.lazy"):60116,_="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;rM.length&&M.push(e)}function L(e,t,n){return null==e?0:function e(t,n,r,o){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+P(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;cM.length&&M.push(e)}function L(e,t,n){return null==e?0:function e(t,n,r,o){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+P(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;cNumber(this.props.maxLength))){var t=this.props.onChange;t&&t(this.value,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&(this.check(),t(e))},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=h(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,m=n.check,v=n.length,_=n.regMsg,g=n.locale,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(m)if(a)if(-1!==f.indexOf(a)){if(!s.default[g]||!s.default[g][p])return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[g][p],S=e||this.value,O=d||"";if(y&&u.default.empty(S))return void this.handleCheckEnd(!0,C.empty(O));if(""!==String(S)){if(r&&u.default.reg(r,S))return void this.handleCheckEnd(!0,""!==_?_:C.invalid(O));if(a===f[0]){if(o||i)if(o&&i){if(String(S).lengthi)return void this.handleCheckEnd(!0,C.inBetween(O)(o)(i))}else{if(o&&String(S).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(O)(i))}if(v&&String(S).length!==v)return void this.handleCheckEnd(!0,C.lengthEqual(O)(v))}}if(E&&"function"==typeof E){var w=E(S);if(!0!==w)return void this.handleCheckEnd(!0,w)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase(p)(!0)+' "type" options in validationOption are ['+f.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=h(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=(t.type,t.value),s=t.disabled,u=t.maxLength,c=t.placeholder,l=t.classNameWrapper,p=t.classNameContainer,f=t.classNameInput,m=t.customStyleWrapper,v=t.customStyleContainer,_=t.customStyleInput,g=t.validationOption,y=t.cols,b=t.rows,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=l+" "+d.default.textarea__wrapper+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(s&&d.default.disabled),k=p+" "+d.default.textarea__container+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(s&&d.default.disabled),x=f+" "+d.default.textarea__input+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(s&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=h(g).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:m},a.createElement("div",{className:k,style:v},a.createElement("textarea",{tabIndex:Number(n),id:r,name:o,value:i,disabled:s,onBlur:this.onBlur,maxLength:Number(u),onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:_,placeholder:c,cols:Number(y),rows:Number(b)})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",cols:2,rows:2,disabled:!1,validate:!1,maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=m},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=n(0),c=i(n(3));String.prototype.startsWith||(String.prototype.startsWith=function(e,t){var n=t||0;return this.indexOf(e,n)===n});var l=function(e){var t=e.name,n=e.check,r=e.required,o=e.showMsg,i=e.locale,a=e.msgOnError,s=e.msgOnSuccess;return i=void 0!==i?i:u.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0===n||n,o=void 0===o||o,r=void 0===r||r,s=void 0!==s?s:"",{name:t,check:n,showMsg:o,required:r,locale:i,msgOnError:a=void 0!==a?a:"",msgOnSuccess:s}},d=function(e){function t(t){var n=e.call(this,t)||this;return n.state={value:t.value,show:!1,isTyping:!1,err:!1,msg:"",successMsg:void 0,keycodeList:[],validate:t.validate},n.onChange=n.onChange.bind(n),n.onClick=n.onClick.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyDown=n.onKeyDown.bind(n),n.pageClick=n.pageClick.bind(n),n.wrapper=a.createRef(),n.itemsWrapper=a.createRef(),n.input=a.createRef(),n.optionItems=[],n.focus=!1,n.corrected=!1,n.currentFocus=void 0,n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return!0===e.validate&&!1===t.validate?{validate:e.validate}:t.value!==e.value?{value:e.value}:null},t.prototype.componentDidMount=function(){window.addEventListener("mousedown",this.pageClick),window.addEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.addEventListener("keydown",this.onKeyDown)},t.prototype.componentDidUpdate=function(e,t){t.show!==this.state.show&&this.state.show&&this.resetCurrentFocus(),!0===this.state.validate&&!1===t.validate&&this.check()},t.prototype.componentWillUnmount=function(){window.removeEventListener("mousedown",this.pageClick),window.removeEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.removeEventListener("keydown",this.onKeyDown)},t.prototype.onChange=function(e,t){var n=this.props.onChange;n&&n(String(e),t),this.setState({value:e}),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})},t.prototype.onClick=function(e){var t=this.props.onClick;t&&t(e)},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){this.focus=!0;var t=this.props.onFocus;t&&t(e)},t.prototype.getIndex=function(e,t){for(var n=-1,r=0;ri.length-1&&(this.currentFocus=i.length-1),this.addActive();else if(38===s)a="up",this.currentFocus-=1,this.currentFocus<0&&(this.currentFocus=0),this.addActive();else if(13===s&&this.currentFocus>-1&&o){var u=o[this.currentFocus];if(!u)return;u.current.click()}}else{var c=this.state.keycodeList;this.setTimeoutTyping();var l=c.concat([s]),d=String.fromCharCode.apply(String,l).toLowerCase(),p=-1;i.filter(function(e,t){e.name.toLowerCase().startsWith(d)&&-1===p&&(p=t)}),-1!==p&&(this.currentFocus=p,this.addActive()),this.setState({keycodeList:l})}return this.scroll(a),this.currentFocus}},t.prototype.setTimeoutTyping=function(){var e=this;this.typingTimeout&&clearTimeout(this.typingTimeout),this.typingTimeout=setTimeout(function(){e.setState({keycodeList:[]})},250)},t.prototype.scroll=function(e){void 0===e&&(e=void 0);var t=this.itemsWrapper;if(null!==t){var n=t.current.offsetHeight,r=t.current.scrollTop;if(this.currentFocus&&this.optionItems[this.currentFocus]){var o=this.optionItems[this.currentFocus];if(null!==o){var i=o.current.offsetHeight;if(e){if("down"===e){var a=r+n,s=this.currentFocus*i,u=a-i;if(s>=u){var c=Math.abs(s-u-i);c>=0&&!this.corrected?(t.current.scrollTop=r+i-c,this.corrected=!0):t.current.scrollTop=r+i}}"up"===e&&(this.corrected=!1,this.currentFocus*i<=r&&(t.current.scrollTop=this.currentFocus*i))}else this.corrected=!1,t.current.scrollTop=this.currentFocus*i}}}},t.prototype.addActive=function(){var e=this.optionItems;if(!e)return!1;if(this.removeActive(),void 0!==this.currentFocus){this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1);var t=e[this.currentFocus];t&&(t.current.className+=" "+c.default["select__hover-active"])}},t.prototype.removeActive=function(){for(var e=this.optionItems,t=0;tNumber(this.props.maxLength))){var t=this.props.onChange;t&&t(this.value,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&t(e)},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=h(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,v=n.check,m=n.length,_=n.regMsg,g=n.locale,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(v)if(a)if(-1!==f.indexOf(a)){if(!s.default[g]||!s.default[g][p])return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[g][p],S=e||this.value,O=d||"";if(y&&u.default.empty(S))return void this.handleCheckEnd(!0,C.empty(O));if(""!==String(S)){if(r&&u.default.reg(r,S))return void this.handleCheckEnd(!0,""!==_?_:C.invalid(O));if(a===f[0]){if(o||i)if(o&&i){if(String(S).lengthi)return void this.handleCheckEnd(!0,C.inBetween(O)(o)(i))}else{if(o&&String(S).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(O)(i))}if(m&&String(S).length!==m)return void this.handleCheckEnd(!0,C.lengthEqual(O)(m))}}if(E&&"function"==typeof E){var w=E(S);if(!0!==w)return void this.handleCheckEnd(!0,w)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase(p)(!0)+' "type" options in validationOption are ['+f.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=h(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=(t.type,t.value),s=t.disabled,u=t.maxLength,c=t.placeholder,l=t.classNameWrapper,p=t.classNameContainer,f=t.classNameInput,v=t.customStyleWrapper,m=t.customStyleContainer,_=t.customStyleInput,g=t.validationOption,y=t.cols,b=t.rows,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=l+" "+d.default.textarea__wrapper+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(s&&d.default.disabled),k=p+" "+d.default.textarea__container+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(s&&d.default.disabled),x=f+" "+d.default.textarea__input+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(s&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=h(g).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&void 0!==O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:v},a.createElement("div",{className:k,style:m},a.createElement("textarea",{tabIndex:Number(n),id:r,name:o,value:i,disabled:s,onBlur:this.onBlur,maxLength:Number(u),onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:_,placeholder:c,cols:Number(y),rows:Number(b)})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",cols:2,rows:2,disabled:!1,validate:!1,maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=v},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=n(0),c=i(n(3));String.prototype.startsWith||(String.prototype.startsWith=function(e,t){var n=t||0;return this.indexOf(e,n)===n});var l=function(e){var t=e.name,n=e.check,r=e.required,o=e.showMsg,i=e.locale,a=e.msgOnError,s=e.msgOnSuccess;return i=void 0!==i?i:u.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0===n||n,o=void 0===o||o,r=void 0===r||r,s=void 0!==s?s:"",{name:t,check:n,showMsg:o,required:r,locale:i,msgOnError:a=void 0!==a?a:"",msgOnSuccess:s}},d=function(e){function t(t){var n=e.call(this,t)||this;return n.state={value:t.value,show:!1,isTyping:!1,err:!1,msg:"",successMsg:void 0,keycodeList:[],validate:t.validate},n.onChange=n.onChange.bind(n),n.onClick=n.onClick.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyDown=n.onKeyDown.bind(n),n.pageClick=n.pageClick.bind(n),n.wrapper=a.createRef(),n.itemsWrapper=a.createRef(),n.input=a.createRef(),n.optionItems=[],n.focus=!1,n.corrected=!1,n.currentFocus=void 0,n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return e.validate!==t.validate?{validate:e.validate}:t.value!==e.value?{value:e.value}:null},t.prototype.componentDidMount=function(){window.addEventListener("mousedown",this.pageClick),window.addEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.addEventListener("keydown",this.onKeyDown)},t.prototype.componentDidUpdate=function(e,t){t.show!==this.state.show&&this.state.show&&this.resetCurrentFocus(),this.state.validate!==t.validate&&this.check()},t.prototype.componentWillUnmount=function(){window.removeEventListener("mousedown",this.pageClick),window.removeEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.removeEventListener("keydown",this.onKeyDown)},t.prototype.onChange=function(e,t){var n=this.props.onChange;n&&n(String(e),t),this.setState({value:e}),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})},t.prototype.onClick=function(e){var t=this.props.onClick;t&&t(e)},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){this.focus=!0;var t=this.props.onFocus;t&&t(e)},t.prototype.getIndex=function(e,t){for(var n=-1,r=0;ri.length-1&&(this.currentFocus=i.length-1),this.addActive();else if(38===s)a="up",this.currentFocus-=1,this.currentFocus<0&&(this.currentFocus=0),this.addActive();else if(13===s&&this.currentFocus>-1&&o){var u=o[this.currentFocus];if(!u)return;u.current.click()}}else{var c=this.state.keycodeList;this.setTimeoutTyping();var l=c.concat([s]),d=String.fromCharCode.apply(String,l).toLowerCase(),p=-1;i.filter(function(e,t){e.name.toLowerCase().startsWith(d)&&-1===p&&(p=t)}),-1!==p&&(this.currentFocus=p,this.addActive()),this.setState({keycodeList:l})}return this.scroll(a),this.currentFocus}},t.prototype.setTimeoutTyping=function(){var e=this;this.typingTimeout&&clearTimeout(this.typingTimeout),this.typingTimeout=setTimeout(function(){e.setState({keycodeList:[]})},250)},t.prototype.scroll=function(e){void 0===e&&(e=void 0);var t=this.itemsWrapper;if(null!==t){var n=t.current.offsetHeight,r=t.current.scrollTop;if(this.currentFocus&&this.optionItems[this.currentFocus]){var o=this.optionItems[this.currentFocus];if(null!==o){var i=o.current.offsetHeight;if(e){if("down"===e){var a=r+n,s=this.currentFocus*i,u=a-i;if(s>=u){var c=Math.abs(s-u-i);c>=0&&!this.corrected?(t.current.scrollTop=r+i-c,this.corrected=!0):t.current.scrollTop=r+i}}"up"===e&&(this.corrected=!1,this.currentFocus*i<=r&&(t.current.scrollTop=this.currentFocus*i))}else this.corrected=!1,t.current.scrollTop=this.currentFocus*i}}}},t.prototype.addActive=function(){var e=this.optionItems;if(!e)return!1;if(this.removeActive(),void 0!==this.currentFocus){this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1);var t=e[this.currentFocus];t&&(t.current.className+=" "+c.default["select__hover-active"])}},t.prototype.removeActive=function(){for(var e=this.optionItems,t=0;t {\n let res = '';\n if (name) {\n res = `${name} `;\n }\n return res;\n};\n\nconst TEXT_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst TEXT_AREA_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_AREA_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst SELECT_VALIDATION_ZH_CN = {\n empty: (name: string) => `请选择一个${name}`,\n};\n\nconst SELECT_VALIDATION_EN_US = {\n empty: (name: string) => `Please select a ${getEnglishName(name)}`,\n};\n\nconst CHECK_BOX_VALIDATION_ZH_CN = {\n unchecked: (name: string) => `${name}必须勾选`,\n};\n\nconst CHECK_BOX_VALIDATION_EN_US = {\n unchecked: (name: string) => `${getEnglishName(name)}must be checked`,\n};\n\nconst RADIO_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `必须勾选一个${name}`,\n};\n\nconst RADIO_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `Please choose one ${getEnglishName(name)}`,\n};\n\ninterface Message {\n [key: string]: Key;\n}\n\ninterface Key {\n [key: string]: Func;\n}\n\ninterface Func {\n [key: string]: Function;\n}\n\nlet message: Message = {\n 'zh-CN': {\n textbox: TEXT_BOX_VALIDATION_ZH_CN,\n radiobox: RADIO_BOX_VALIDATION_ZH_CN,\n checkbox: CHECK_BOX_VALIDATION_ZH_CN,\n select: SELECT_VALIDATION_ZH_CN,\n textarea: TEXT_AREA_VALIDATION_ZH_CN,\n },\n 'en-US': {\n textbox: TEXT_BOX_VALIDATION_EN_US,\n radiobox: RADIO_BOX_VALIDATION_EN_US,\n checkbox: CHECK_BOX_VALIDATION_EN_US,\n select: SELECT_VALIDATION_EN_US,\n textarea: TEXT_AREA_VALIDATION_EN_US,\n },\n};\n\n// TODO: find a rewire way to handle non-export function\nexport const getCustomErrorMessage = (o: any, m: any) => {\n if (!o || typeof o !== 'object' || o.constructor !== Object || !Object.keys(o).length) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return false;\n }\n Object.keys(o).map(i => {\n if (!m[i]) {\n m[i] = o[i];\n } else {\n if (Object.keys(o[i]).length) {\n Object.keys(o[i]).map(j => {\n if (Object.keys(o[i][j]).length) {\n Object.keys(o[i][j]).map(k => {\n m[i][j][k] = o[i][j][k];\n });\n }\n });\n }\n }\n });\n return m;\n};\n\ndeclare global {\n interface Window {\n REACT_INPUTS_VALIDATION: any;\n }\n}\n\n// TODO: find a rewire way to handle non-export function\nexport const handleCustomErrorMessage = (message: any, w: Window) => {\n let res;\n if (typeof w !== 'undefined') {\n if (w.REACT_INPUTS_VALIDATION && w.REACT_INPUTS_VALIDATION['customErrorMessage']) {\n res = getCustomErrorMessage(w.REACT_INPUTS_VALIDATION['customErrorMessage'], message);\n }\n }\n if (typeof res === 'undefined' || res === false) {\n return message;\n }\n return res;\n};\n\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.REACT_INPUTS_VALIDATION = window.REACT_INPUTS_VALIDATION || {};\n message = handleCustomErrorMessage(message, window);\n}\n\nexport default message;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ellipsis\":\"react-inputs-validation__ellipsis___3-Api\",\"textbox__wrapper\":\"react-inputs-validation__textbox__wrapper___3tnXv\",\"textbox__container\":\"react-inputs-validation__textbox__container___3KXOM\",\"textbox__input\":\"react-inputs-validation__textbox__input___20hDL\",\"error\":\"react-inputs-validation__error___2aXSp\",\"success\":\"react-inputs-validation__success___3TpwE\",\"disabled\":\"react-inputs-validation__disabled___1-57g\",\"msg\":\"react-inputs-validation__msg___pxv8o\",\"textarea__wrapper\":\"react-inputs-validation__textarea__wrapper___35GhF\",\"textarea__container\":\"react-inputs-validation__textarea__container___2fbGp\",\"textarea__input\":\"react-inputs-validation__textarea__input___1CFm_\",\"radiobox__wrapper\":\"react-inputs-validation__radiobox__wrapper___1zZ30\",\"radiobox__container\":\"react-inputs-validation__radiobox__container___FD4vb\",\"radiobox__input\":\"react-inputs-validation__radiobox__input___2uX2-\",\"radiobox__label\":\"react-inputs-validation__radiobox__label___2tQsB\",\"checked\":\"react-inputs-validation__checked___2O0Ju\",\"radiobox__item\":\"react-inputs-validation__radiobox__item___ejuz1\",\"checkbox__wrapper\":\"react-inputs-validation__checkbox__wrapper___1c1rD\",\"checkbox__input\":\"react-inputs-validation__checkbox__input___1yF4X\",\"checkbox__container\":\"react-inputs-validation__checkbox__container___3I1rX\",\"checkbox__box\":\"react-inputs-validation__checkbox__box___1uj8A\",\"box\":\"react-inputs-validation__box___3E9nu\",\"select__wrapper\":\"react-inputs-validation__select__wrapper___1B4OH\",\"select__input\":\"react-inputs-validation__select__input___3h-P7\",\"select__container\":\"react-inputs-validation__select__container___3jgUR\",\"select__options-item\":\"react-inputs-validation__select__options-item___30yY4\",\"select__options-item-show-cursor\":\"react-inputs-validation__select__options-item-show-cursor___1ZT3b\",\"select__no-mouse\":\"react-inputs-validation__select__no-mouse___2uRg6\",\"select__hover-active\":\"react-inputs-validation__select__hover-active___2z1MQ\",\"active\":\"react-inputs-validation__active___3eZBB\",\"select__options-container-animate\":\"react-inputs-validation__select__options-container-animate___2Rm--\",\"show\":\"react-inputs-validation__show___2NI3u\",\"select__options-container\":\"react-inputs-validation__select__options-container___d54qE\",\"select__dropdown\":\"react-inputs-validation__select__dropdown___11yDr\",\"select__dropdown-icon\":\"react-inputs-validation__select__dropdown-icon___1T5r2\",\"select__dropdown-name\":\"react-inputs-validation__select__dropdown-name___3hghL\",\"select__dropdown-icon-container\":\"react-inputs-validation__select__dropdown-icon-container___2ild-\"};","const empty = (v: string) => (v.replace(/\\s/g, '').length ? false : true);\nconst number = (v: number, min: number = 0, max: number = 999999999999) => {\n if (!isNumeric(v)) {\n return false;\n }\n return v < min || v > max ? false : true;\n};\n// TODO: find a better type for regex\nconst reg = (reg: any, v: string) => {\n let err = true;\n if (reg.test(v)) {\n err = false;\n }\n return err;\n};\nconst isNumeric = (v: any) => {\n return !isNaN(parseFloat(v)) && isFinite(v);\n};\n\ninterface Validator {\n [key: string]: Function;\n}\n\nconst validator: Validator = {\n reg,\n empty,\n number,\n};\nexport default validator;\n","const camelize = (str: string) => {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) => {\n if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\n });\n};\n\nconst toCamelCase = (str: string) => (capitalLize: boolean = false) => {\n const res = camelize(str);\n return capitalLize ? res.substr(0, 1).toUpperCase() + res.substr(1, res.length) : res;\n};\n\ninterface Utils {\n [key: string]: Function;\n}\n\nconst utils: Utils = {\n camelize,\n toCamelCase,\n};\nexport default utils;\n","import Textbox from './Textbox';\nimport Textarea from './Textarea';\nimport Select from './Select';\nimport Checkbox from './Checkbox';\nimport Radiobox from './Radiobox';\n\nif (typeof window !== 'undefined') {\n (window).Textbox = Textbox;\n (window).Textarea = Textarea;\n (window).Radiobox = Radiobox;\n (window).Checkbox = Checkbox;\n (window).Select = Select;\n}\n\nexport { Textbox, Textarea, Select, Checkbox, Radiobox };\n","import * as React from 'react';\nimport message from './message';\nimport validator from './validator';\nimport utils from './utils';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'textbox';\nconst VALIDATE_OPTION_TYPE_LIST = ['string', 'number'];\nconst DEFAULT_MAX_LENGTH = 524288; // Default value is 524288\nconst DEFAULT_AUTO_COMPLETE = 'on'; // Default value is on\ninterface DefaultValidationOption {\n locale?: string;\n reg?: string;\n min?: number;\n max?: number;\n type?: string;\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n length?: number;\n regMsg?: string;\n compare?: string;\n required?: boolean;\n msgOnError?: string;\n msgOnSuccess?: string;\n customFunc?: undefined | Function;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { reg, min, max, type, name, check, length, regMsg, compare, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n compare = typeof compare !== 'undefined' ? compare : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n compare,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n autoComplete?: string;\n maxLength?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n type: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n autoComplete: string;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n disabled: false,\n validate: false,\n autoComplete: DEFAULT_AUTO_COMPLETE,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.input = React.createRef();\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n let v = node.current.value;\n if (this.props.maxLength !== '') {\n if (v.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { type } = getDefaultValidationOption(validationOption);\n // FORMAT NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n v = String(this.autoFormatNumber(v));\n }\n const { onChange } = this.props;\n onChange && onChange(v, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n this.check();\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, compare, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n const value = val || node.current.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n if (!validator[type](value)) {\n this.handleCheckEnd(true, msg.invalid(nameText));\n return;\n }\n if (min || max) {\n if (min && max) {\n if (!validator[type](value, min, max)) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (!validator[type](value, min)) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (!validator[type](value, 0, max)) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK EQUAL\n if (compare && compare !== '') {\n if (value !== compare) {\n this.handleCheckEnd(true, msg.twoInputsNotEqual());\n return;\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n autoFormatNumber(v: number | string) {\n const DOT = '.';\n let res = '';\n let hasDot = false;\n String(v)\n .split('')\n .filter(i => {\n const charCode = i.toLowerCase().charCodeAt(0);\n if ((charCode >= 48 && charCode <= 57) || (charCode === 46 && !hasDot)) {\n if (charCode === 46) {\n hasDot = true;\n }\n res += i;\n }\n });\n if (res.length && res[0] === DOT) {\n res = `0${res}`;\n }\n return res;\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n autoComplete,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textbox__wrapper']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textbox__container']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textbox__input']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","/** @license React v16.6.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,A=n?Symbol.for(\"react.memo\"):\n60115,B=n?Symbol.for(\"react.lazy\"):60116,C=\"function\"===typeof Symbol&&Symbol.iterator;function aa(a,b,e,c,d,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[e,c,d,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction D(a){for(var b=arguments.length-1,e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cQ.length&&Q.push(a)}\nfunction T(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h {\n let { reg, min, max, type, name, check, length, regMsg, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n maxLength?: string | number;\n cols?: string | number;\n rows?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n cols: string | number;\n rows: string | number;\n disabled: boolean;\n validate: boolean;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n cols: DEFAULT_ROWS,\n rows: DEFAULT_COLS,\n disabled: false,\n validate: false,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private value: string;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.value = props.value;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n this.value = e.target.value;\n if (this.props.maxLength !== '') {\n if (this.value.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { onChange } = this.props;\n onChange && onChange(this.value, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n this.check();\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const value = val || this.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n cols,\n rows,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textarea__wrapper']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textarea__container']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textarea__input']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'select';\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position) {\n const p = position || 0;\n return this.indexOf(searchString, p) === p;\n };\n}\n\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList: OptionListItem[];\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent | Event) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n selectHtml?: React.ReactNode;\n selectOptionListItemHtml?: React.ReactNode;\n classNameWrapper?: string;\n classNameContainer?: string;\n classNameSelect?: string;\n classNameOptionListContainer?: string;\n classNameDropdownIconOptionListItem?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleSelect?: object;\n customStyleOptionListContainer?: object;\n customStyleDropdownIcon?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n classNameOptionListContainer: string;\n classNameDropdownIconOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleOptionListItem: object;\n customStyleOptionListContainer: object;\n customStyleDropdownIcon: object;\n validationOption: object;\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n value: string;\n show: boolean;\n isTyping: boolean;\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n keycodeList: number[];\n validate: boolean;\n}\n\ninterface Node {\n [key: string]: any;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n classNameOptionListContainer: '',\n classNameDropdownIconOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleOptionListItem: {},\n customStyleOptionListContainer: {},\n customStyleDropdownIcon: {},\n validationOption: {},\n onChange: () => {},\n };\n private wrapper: React.RefObject;\n private itemsWrapper: React.RefObject;\n private input: React.RefObject;\n private optionItems: React.RefObject[];\n private focus: boolean;\n private corrected: boolean;\n // TODO: find a better type\n private typingTimeout: any;\n private currentFocus: number | undefined;\n constructor(props: any) {\n super(props);\n this.state = {\n value: props.value,\n show: false,\n isTyping: false,\n err: false,\n msg: '',\n successMsg: undefined,\n keycodeList: [],\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.pageClick = this.pageClick.bind(this);\n this.wrapper = React.createRef();\n this.itemsWrapper = React.createRef();\n this.input = React.createRef();\n this.optionItems = [];\n this.focus = false;\n this.corrected = false;\n this.currentFocus = undefined;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n if (prevState.value !== nextProps.value) {\n return {\n value: nextProps.value,\n };\n }\n return null;\n }\n\n componentDidMount() {\n window.addEventListener('mousedown', this.pageClick);\n window.addEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.addEventListener('keydown', this.onKeyDown);\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevState.show !== this.state.show) {\n if (this.state.show) {\n this.resetCurrentFocus();\n }\n }\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('mousedown', this.pageClick);\n window.removeEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.removeEventListener('keydown', this.onKeyDown);\n }\n }\n\n onChange(value: string, e: React.MouseEvent | Event) {\n const { onChange } = this.props;\n onChange && onChange(String(value), e);\n this.setState({ value });\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent | Event) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n this.focus = true;\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n getIndex(list: OptionListItem[], val: string) {\n let key = -1;\n for (let i = 0; i < list.length; i += 1) {\n if (list[i].id === val) {\n key = i;\n break;\n }\n }\n return key;\n }\n\n resetCurrentFocus() {\n const { value } = this.state;\n const { optionList } = this.props;\n this.currentFocus = this.getIndex(optionList, value);\n this.scroll();\n }\n\n onKeyDown(e: any) {\n this.setState({ isTyping: true });\n if (e.preventDefault) {\n e.preventDefault();\n }\n const { show, value } = this.state;\n if (!show) {\n return;\n }\n const x = this.optionItems;\n const { optionList } = this.props;\n this.currentFocus = typeof this.currentFocus !== 'undefined' ? this.currentFocus : this.getIndex(optionList, value);\n let direction = undefined;\n const { keyCode } = e;\n const keyCodeEsc = 27;\n const keyCodeDown = 40;\n const keyCodeUp = 38;\n const keyCodeEnter = 13;\n const selectKeyList = [keyCodeEsc, keyCodeDown, keyCodeUp, keyCodeEnter];\n if (selectKeyList.indexOf(keyCode) !== -1) {\n if (keyCode === keyCodeEsc) {\n this.setState({ show: false });\n this.resetCurrentFocus();\n return;\n }\n if (keyCode === keyCodeDown) {\n direction = 'down';\n this.currentFocus += 1;\n if (this.currentFocus > optionList.length - 1) {\n this.currentFocus = optionList.length - 1;\n }\n this.addActive();\n } else if (keyCode === keyCodeUp) {\n direction = 'up';\n this.currentFocus -= 1;\n if (this.currentFocus < 0) {\n this.currentFocus = 0;\n }\n this.addActive();\n } else if (keyCode === keyCodeEnter) {\n if (this.currentFocus > -1) {\n if (x) {\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.click();\n }\n }\n }\n } else {\n const { keycodeList } = this.state;\n this.setTimeoutTyping();\n const newkeyCodeList = [...keycodeList, keyCode];\n const str = String.fromCharCode(...newkeyCodeList).toLowerCase();\n let index = -1;\n optionList.filter((i, k) => {\n const { name } = i;\n if (name.toLowerCase().startsWith(str)) {\n if (index === -1) {\n index = k;\n }\n }\n });\n if (index !== -1) {\n this.currentFocus = index;\n this.addActive();\n }\n this.setState({ keycodeList: newkeyCodeList });\n }\n this.scroll(direction);\n return this.currentFocus;\n }\n\n setTimeoutTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n this.typingTimeout = setTimeout(() => {\n this.setState({ keycodeList: [] });\n }, 250);\n }\n\n scroll(direction: undefined | string = undefined) {\n const itemsWrapperNode: Node | null = this.itemsWrapper;\n /* istanbul ignore next */\n if (itemsWrapperNode === null) {\n return;\n }\n const containerHeight = itemsWrapperNode.current.offsetHeight;\n const containerScrollTop = itemsWrapperNode.current.scrollTop;\n /* istanbul ignore next */\n if (!this.currentFocus || !this.optionItems[this.currentFocus]) {\n return;\n }\n const optionItemsNode: Node | null = this.optionItems[this.currentFocus];\n /* istanbul ignore next */\n if (optionItemsNode === null) {\n return;\n }\n const itemHeight = optionItemsNode.current.offsetHeight;\n if (direction) {\n if (direction === 'down') {\n const bound = containerScrollTop + containerHeight;\n const heightItems = this.currentFocus * itemHeight;\n const heightContainer = bound - itemHeight;\n if (heightItems >= heightContainer) {\n const offset = Math.abs(heightItems - heightContainer - itemHeight);\n if (offset >= 0 && !this.corrected) {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight - offset;\n this.corrected = true;\n } else {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight;\n }\n }\n }\n if (direction === 'up') {\n this.corrected = false;\n if (this.currentFocus * itemHeight <= containerScrollTop) {\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n } else {\n this.corrected = false;\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n\n addActive() {\n const x = this.optionItems;\n if (!x) return false;\n this.removeActive();\n if (typeof this.currentFocus === 'undefined') return;\n if (this.currentFocus >= x.length) this.currentFocus = 0;\n if (this.currentFocus < 0) this.currentFocus = x.length - 1;\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.className += ` ${reactInputsValidationCss['select__hover-active']}`;\n }\n\n removeActive() {\n const x = this.optionItems;\n for (let i = 0; i < x.length; i += 1) {\n const node: Node | null = x[i];\n node.current.className = node.current.className.replace(reactInputsValidationCss['select__hover-active'], '');\n }\n }\n\n pageClick(e: Event) {\n const node: Node | null = this.wrapper;\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n /* istanbul ignore next */\n if (node.current.contains(e.target)) {\n return;\n }\n if (this.focus) {\n this.onBlur(e);\n this.focus = false;\n }\n this.toggleShow(false);\n }\n\n toggleShow(show: boolean) {\n this.setState({ show });\n }\n\n check(val: null | string = null) {\n let { value } = this.state;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n optionList,\n disabled,\n classNameWrapper,\n classNameContainer,\n classNameSelect,\n classNameOptionListContainer,\n classNameOptionListItem,\n classNameDropdownIconOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleSelect,\n customStyleOptionListContainer,\n customStyleOptionListItem,\n selectHtml,\n selectOptionListItemHtml,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { value, err, msg, show, successMsg, isTyping } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['select__wrapper']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['select__container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const inputClass = `${reactInputsValidationCss['select__input']} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled &&\n reactInputsValidationCss['disabled']};`;\n\n const selectClass = `${classNameSelect} ${reactInputsValidationCss['ellipsis']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListContainerClass = `${classNameOptionListContainer} ${reactInputsValidationCss['select__options-container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListItemClass = `${!isTyping && reactInputsValidationCss['select__options-item-show-cursor']} ${classNameOptionListItem} ${\n reactInputsValidationCss['select__options-item']\n } ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const dropdownIconClass = `${classNameDropdownIconOptionListItem} ${reactInputsValidationCss['select__dropdown-icon']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n let optionListHtml;\n let item: OptionListItem | undefined;\n optionList.filter(i => {\n if (String(i.id) === String(value)) {\n item = i;\n }\n });\n if (optionList.length) {\n if (selectOptionListItemHtml) {\n optionListHtml = selectOptionListItemHtml;\n } else {\n optionListHtml = optionList.map((i, k) => {\n this.optionItems[k] = React.createRef();\n return (\n {\n this.currentFocus = k;\n this.addActive();\n }}\n onMouseMove={() => {\n this.setState({ isTyping: false });\n }}\n onMouseOut={() => {\n this.removeActive();\n }}\n className={String(i.id) === String(value) ? `${selectOptionListItemClass} ${reactInputsValidationCss['active']}` : `${selectOptionListItemClass}`}\n key={k}\n style={customStyleOptionListItem}\n onClick={e => {\n this.onChange(i.id, e);\n }}\n >\n {i.name}\n \n );\n });\n }\n }\n let selectorHtml = selectHtml;\n if (!selectorHtml) {\n selectorHtml = (\n
\n
{item ? item.name : ''}
\n
\n
\n );\n }\n return (\n {\n this.onClick(e);\n !disabled ? this.toggleShow(!show) : ``;\n }}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ref={this.wrapper}\n >\n
\n {}} ref={this.input} />\n
\n {selectorHtml}\n
\n
\n {optionListHtml}\n
\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'checkbox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | boolean;\n checked?: boolean;\n disabled?: boolean;\n labelHtml?: React.ReactNode;\n validate?: boolean;\n onChange: (res: boolean, e: Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameInputBox?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInputBox?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | boolean;\n checked: boolean;\n disabled: boolean;\n validate: boolean;\n labelHtml: React.ReactNode;\n classNameInput: string;\n classNameWrapper: string;\n classNameInputBox: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleInputBox: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: boolean, e: Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n checked: boolean;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n checked: false,\n disabled: false,\n validate: false,\n labelHtml: undefined,\n classNameInput: '',\n classNameWrapper: '',\n classNameInputBox: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleInputBox: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n checked: props.checked,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.input = React.createRef();\n }\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n // TODO: This was from componentWillReceiveProps()\n // if (this.props.checked != nextProps.checked) {\n // this.setState({ checked: nextProps.checked });\n // }\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(e: any) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n const checked = !this.state.checked;\n this.setState({ checked });\n const { onChange } = this.props;\n onChange && onChange(checked, e);\n // when props.validate toggled\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n onClick(e: React.MouseEvent) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n this.onChange(e);\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n this.check();\n onFocus(e);\n }\n }\n check() {\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, locale, required, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (required) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (!this.state.checked) {\n this.handleCheckEnd(true, msg.unchecked(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n labelHtml,\n classNameWrapper,\n classNameContainer,\n classNameInputBox,\n customStyleWrapper,\n customStyleContainer,\n customStyleInputBox,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, checked, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['checkbox__wrapper']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['checkbox__container']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const boxClass = `${classNameInputBox} ${reactInputsValidationCss['checkbox__box']} ${err && reactInputsValidationCss['error']} ${checked && reactInputsValidationCss['checked']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${checked && reactInputsValidationCss['checked']} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled &&\n reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n
\n
\n \n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'radiobox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList?: OptionListItem[];\n onChange: (res: string, e: React.ChangeEvent) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameWrapper?: string;\n classNameInput?: string;\n classNameContainer?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInput?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameInput: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleInput: object;\n customStyleOptionListItem: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameInput: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleInput: {},\n customStyleOptionListItem: {},\n validationOption: {},\n onChange: () => {},\n };\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n if (nextProps.value !== prevState.value) {\n const o: { value: string | any; err?: boolean; successMsg?: undefined } = { value: nextProps.value };\n if (prevState.err) {\n o['err'] = false;\n } else {\n o['successMsg'] = undefined;\n }\n return o;\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(val: string, e: React.ChangeEvent) {\n const { onChange } = this.props;\n onChange && onChange(val, e);\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n check(val: null | string = null) {\n let { value } = this.props;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n optionList,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n classNameOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n customStyleOptionListItem,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__wrapper']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__container']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__input']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${reactInputsValidationCss['radiobox__label']} ${disabled &&\n reactInputsValidationCss['disabled']}`;\n\n const optionListItemClass = `${classNameOptionListItem} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__item']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n\n let optionHtml;\n if (optionList.length) {\n optionHtml = optionList.map((i, k) => {\n const checked = String(i.id) === String(value) ? true : false;\n return (\n
\n this.onChange(i.id, e)}\n style={customStyleInput}\n />\n \n
\n );\n });\n }\n\n return (\n
\n
\n {optionHtml}\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://react-inputs-validation/webpack/universalModuleDefinition","webpack://react-inputs-validation/webpack/bootstrap","webpack://react-inputs-validation/./src/js/Inputs/const.ts","webpack://react-inputs-validation/./node_modules/_react@16.6.0@react/index.js","webpack://react-inputs-validation/./src/js/Inputs/message.ts","webpack://react-inputs-validation/./src/js/Inputs/react-inputs-validation.css?33c2","webpack://react-inputs-validation/./src/js/Inputs/validator.ts","webpack://react-inputs-validation/./src/js/Inputs/utils.ts","webpack://react-inputs-validation/./src/js/Inputs/index.umd.ts","webpack://react-inputs-validation/./src/js/Inputs/Textbox.tsx","webpack://react-inputs-validation/./node_modules/_react@16.6.0@react/cjs/react.production.min.js","webpack://react-inputs-validation/./node_modules/_object-assign@4.1.1@object-assign/index.js","webpack://react-inputs-validation/./src/js/Inputs/Textarea.tsx","webpack://react-inputs-validation/./src/js/Inputs/Select.tsx","webpack://react-inputs-validation/./src/js/Inputs/Checkbox.tsx","webpack://react-inputs-validation/./src/js/Inputs/Radiobox.tsx"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","LOCALE_OPTION_LIST","REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE","DEFAULT_LOCALE","const_1","getEnglishName","res","message","zh-CN","textbox","empty","invalid","invalidFormat","inBetween","min","max","lessThan","greaterThan","lengthEqual","length","twoInputsNotEqual","radiobox","checkbox","unchecked","select","textarea","en-US","getCustomErrorMessage","constructor","keys","map","j","k","console","error","handleCustomErrorMessage","w","REACT_INPUTS_VALIDATION","default","ellipsis","textbox__wrapper","textbox__container","textbox__input","success","disabled","msg","textarea__wrapper","textarea__container","textarea__input","radiobox__wrapper","radiobox__container","radiobox__input","radiobox__label","checked","radiobox__item","checkbox__wrapper","checkbox__input","checkbox__container","checkbox__box","box","select__wrapper","select__input","select__container","select__options-item","select__options-item-show-cursor","select__no-mouse","select__hover-active","active","select__options-container-animate","show","select__options-container","select__dropdown","select__dropdown-icon","select__dropdown-name","select__dropdown-icon-container","isNumeric","v","isNaN","parseFloat","isFinite","validator","reg","err","test","replace","number","camelize","str","match","index","toLowerCase","toUpperCase","utils","toCamelCase","capitalLize","substr","Textbox_1","__importDefault","Textbox","Textarea_1","Textarea","Select_1","Select","Checkbox_1","Checkbox","Radiobox_1","Radiobox","React","__importStar","message_1","validator_1","utils_1","react_inputs_validation_css_1","VALIDATE_OPTION_TYPE_LIST","getDefaultValidationOption","obj","type","check","regMsg","compare","required","showMsg","locale","msgOnError","msgOnSuccess","customFunc","undefined","Index","_super","props","_this","this","state","successMsg","validate","onChange","onBlur","onFocus","onKeyUp","input","createRef","__extends","getDerivedStateFromProps","nextProps","prevState","componentDidUpdate","prevProps","e","node","current","maxLength","Number","validationOption","String","autoFormatNumber","setState","val","_a","indexOf","nameText","handleCheckEnd","customFuncResult","hasDot","split","filter","charCode","charCodeAt","validationCallback","render","msgHtml","tabIndex","id","autoComplete","placeholder","classNameWrapper","classNameContainer","classNameInput","customStyleWrapper","customStyleContainer","customStyleInput","_b","wrapperClass","containerClass","inputClass","errmsgClass","successMsgClass","createElement","className","style","ref","defaultProps","Component","for","q","u","x","y","z","A","B","C","iterator","D","a","b","arguments","encodeURIComponent","g","h","f","Error","framesToPop","aa","E","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","F","G","context","refs","updater","H","I","isReactComponent","forceUpdate","J","isPureReactComponent","K","currentDispatcher","L","M","__self","__source","N","children","Array","$$typeof","_owner","O","P","Q","R","pop","result","keyPrefix","func","count","S","push","V","T","U","isArray","next","done","join","=",":","escape","toString","ca","da","W","ba","X","Children","forEach","toArray","only","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","Provider","Consumer","_context","forwardRef","lazy","_ctor","_status","_result","memo","Fragment","StrictMode","unstable_ConcurrentMode","Suspense","unstable_Profiler","cloneElement","createFactory","isValidElement","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","assign","Y","Z","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","target","source","from","symbols","to","TypeError","toObject","TYPE","cols","rows","startsWith","searchString","position","isTyping","keycodeList","onClick","onKeyDown","pageClick","wrapper","itemsWrapper","optionItems","focus","corrected","currentFocus","componentDidMount","addEventListener","resetCurrentFocus","componentWillUnmount","removeEventListener","getIndex","list","optionList","scroll","preventDefault","direction","keyCode","addActive","click","setTimeoutTyping","newkeyCodeList","concat","str_1","apply","index_1","typingTimeout","clearTimeout","setTimeout","itemsWrapperNode","containerHeight","offsetHeight","containerScrollTop","scrollTop","optionItemsNode","itemHeight","bound","heightItems","heightContainer","offset","Math","abs","removeActive","contains","toggleShow","isValidateValue","optionListHtml","item","classNameSelect","classNameOptionListContainer","classNameOptionListItem","classNameDropdownIconOptionListItem","customStyleSelect","customStyleOptionListContainer","customStyleOptionListItem","selectHtml","selectOptionListItemHtml","selectClass","selectOptionListContainerClass","selectOptionListItemClass","dropdownIconClass","errMsgClass","onMouseOver","onMouseMove","onMouseOut","selectorHtml","customStyleDropdownIcon","labelHtml","classNameInputBox","customStyleInputBox","boxClass","labelClass","defaultChecked","optionHtml","optionListItemClass","htmlFor"],"mappings":"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","file":"react-inputs-validation.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"react-inputs-validation\"] = factory();\n\telse\n\t\troot[\"react-inputs-validation\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","const LOCALE_OPTION_LIST = ['en-US', 'zh-CN'];\nconst REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE =\n \"Invalid window.REACT_INPUTS_VALIDATION['customErrorMessage']. EXAMPLE: window.REACT_INPUTS_VALIDATION={customErrorMessage:{'en-US':{textbox:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}},radiobox:{empty:function empty(name){return'Please choose one '+getEnglishName(name)}},checkbox:{unchecked:function unchecked(name){return getEnglishName(name)+'must be checked'}},select:{empty:function empty(name){return'Please select a '+getEnglishName(name)}},textarea:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}}}}};\";\nconst DEFAULT_LOCALE = 'en-US';\nexport { LOCALE_OPTION_LIST, REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE } from './const';\n\nconst getEnglishName = (name: string) => {\n let res = '';\n if (name) {\n res = `${name} `;\n }\n return res;\n};\n\nconst TEXT_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst TEXT_AREA_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_AREA_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst SELECT_VALIDATION_ZH_CN = {\n empty: (name: string) => `请选择一个${name}`,\n};\n\nconst SELECT_VALIDATION_EN_US = {\n empty: (name: string) => `Please select a ${getEnglishName(name)}`,\n};\n\nconst CHECK_BOX_VALIDATION_ZH_CN = {\n unchecked: (name: string) => `${name}必须勾选`,\n};\n\nconst CHECK_BOX_VALIDATION_EN_US = {\n unchecked: (name: string) => `${getEnglishName(name)}must be checked`,\n};\n\nconst RADIO_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `必须勾选一个${name}`,\n};\n\nconst RADIO_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `Please choose one ${getEnglishName(name)}`,\n};\n\ninterface Message {\n [key: string]: Key;\n}\n\ninterface Key {\n [key: string]: Func;\n}\n\ninterface Func {\n [key: string]: Function;\n}\n\nlet message: Message = {\n 'zh-CN': {\n textbox: TEXT_BOX_VALIDATION_ZH_CN,\n radiobox: RADIO_BOX_VALIDATION_ZH_CN,\n checkbox: CHECK_BOX_VALIDATION_ZH_CN,\n select: SELECT_VALIDATION_ZH_CN,\n textarea: TEXT_AREA_VALIDATION_ZH_CN,\n },\n 'en-US': {\n textbox: TEXT_BOX_VALIDATION_EN_US,\n radiobox: RADIO_BOX_VALIDATION_EN_US,\n checkbox: CHECK_BOX_VALIDATION_EN_US,\n select: SELECT_VALIDATION_EN_US,\n textarea: TEXT_AREA_VALIDATION_EN_US,\n },\n};\n\n// TODO: find a rewire way to handle non-export function\nexport const getCustomErrorMessage = (o: any, m: any) => {\n if (!o || typeof o !== 'object' || o.constructor !== Object || !Object.keys(o).length) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return false;\n }\n Object.keys(o).map(i => {\n if (!m[i]) {\n m[i] = o[i];\n } else {\n if (Object.keys(o[i]).length) {\n Object.keys(o[i]).map(j => {\n if (Object.keys(o[i][j]).length) {\n Object.keys(o[i][j]).map(k => {\n m[i][j][k] = o[i][j][k];\n });\n }\n });\n }\n }\n });\n return m;\n};\n\ndeclare global {\n interface Window {\n REACT_INPUTS_VALIDATION: any;\n }\n}\n\n// TODO: find a rewire way to handle non-export function\nexport const handleCustomErrorMessage = (message: any, w: Window) => {\n let res;\n if (typeof w !== 'undefined') {\n if (w.REACT_INPUTS_VALIDATION && w.REACT_INPUTS_VALIDATION['customErrorMessage']) {\n res = getCustomErrorMessage(w.REACT_INPUTS_VALIDATION['customErrorMessage'], message);\n }\n }\n if (typeof res === 'undefined' || res === false) {\n return message;\n }\n return res;\n};\n\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.REACT_INPUTS_VALIDATION = window.REACT_INPUTS_VALIDATION || {};\n message = handleCustomErrorMessage(message, window);\n}\n\nexport default message;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ellipsis\":\"react-inputs-validation__ellipsis___3-Api\",\"textbox__wrapper\":\"react-inputs-validation__textbox__wrapper___3tnXv\",\"textbox__container\":\"react-inputs-validation__textbox__container___3KXOM\",\"textbox__input\":\"react-inputs-validation__textbox__input___20hDL\",\"error\":\"react-inputs-validation__error___2aXSp\",\"success\":\"react-inputs-validation__success___3TpwE\",\"disabled\":\"react-inputs-validation__disabled___1-57g\",\"msg\":\"react-inputs-validation__msg___pxv8o\",\"textarea__wrapper\":\"react-inputs-validation__textarea__wrapper___35GhF\",\"textarea__container\":\"react-inputs-validation__textarea__container___2fbGp\",\"textarea__input\":\"react-inputs-validation__textarea__input___1CFm_\",\"radiobox__wrapper\":\"react-inputs-validation__radiobox__wrapper___1zZ30\",\"radiobox__container\":\"react-inputs-validation__radiobox__container___FD4vb\",\"radiobox__input\":\"react-inputs-validation__radiobox__input___2uX2-\",\"radiobox__label\":\"react-inputs-validation__radiobox__label___2tQsB\",\"checked\":\"react-inputs-validation__checked___2O0Ju\",\"radiobox__item\":\"react-inputs-validation__radiobox__item___ejuz1\",\"checkbox__wrapper\":\"react-inputs-validation__checkbox__wrapper___1c1rD\",\"checkbox__input\":\"react-inputs-validation__checkbox__input___1yF4X\",\"checkbox__container\":\"react-inputs-validation__checkbox__container___3I1rX\",\"checkbox__box\":\"react-inputs-validation__checkbox__box___1uj8A\",\"box\":\"react-inputs-validation__box___3E9nu\",\"select__wrapper\":\"react-inputs-validation__select__wrapper___1B4OH\",\"select__input\":\"react-inputs-validation__select__input___3h-P7\",\"select__container\":\"react-inputs-validation__select__container___3jgUR\",\"select__options-item\":\"react-inputs-validation__select__options-item___30yY4\",\"select__options-item-show-cursor\":\"react-inputs-validation__select__options-item-show-cursor___1ZT3b\",\"select__no-mouse\":\"react-inputs-validation__select__no-mouse___2uRg6\",\"select__hover-active\":\"react-inputs-validation__select__hover-active___2z1MQ\",\"active\":\"react-inputs-validation__active___3eZBB\",\"select__options-container-animate\":\"react-inputs-validation__select__options-container-animate___2Rm--\",\"show\":\"react-inputs-validation__show___2NI3u\",\"select__options-container\":\"react-inputs-validation__select__options-container___d54qE\",\"select__dropdown\":\"react-inputs-validation__select__dropdown___11yDr\",\"select__dropdown-icon\":\"react-inputs-validation__select__dropdown-icon___1T5r2\",\"select__dropdown-name\":\"react-inputs-validation__select__dropdown-name___3hghL\",\"select__dropdown-icon-container\":\"react-inputs-validation__select__dropdown-icon-container___2ild-\"};","const empty = (v: string) => (v.replace(/\\s/g, '').length ? false : true);\nconst number = (v: number, min: number = 0, max: number = 999999999999) => {\n if (!isNumeric(v)) {\n return false;\n }\n return v < min || v > max ? false : true;\n};\n// TODO: find a better type for regex\nconst reg = (reg: any, v: string) => {\n let err = true;\n if (reg.test(v)) {\n err = false;\n }\n return err;\n};\nconst isNumeric = (v: any) => {\n return !isNaN(parseFloat(v)) && isFinite(v);\n};\n\ninterface Validator {\n [key: string]: Function;\n}\n\nconst validator: Validator = {\n reg,\n empty,\n number,\n};\nexport default validator;\n","const camelize = (str: string) => {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) => {\n if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\n });\n};\n\nconst toCamelCase = (str: string) => (capitalLize: boolean = false) => {\n const res = camelize(str);\n return capitalLize ? res.substr(0, 1).toUpperCase() + res.substr(1, res.length) : res;\n};\n\ninterface Utils {\n [key: string]: Function;\n}\n\nconst utils: Utils = {\n camelize,\n toCamelCase,\n};\nexport default utils;\n","import Textbox from './Textbox';\nimport Textarea from './Textarea';\nimport Select from './Select';\nimport Checkbox from './Checkbox';\nimport Radiobox from './Radiobox';\n\nif (typeof window !== 'undefined') {\n (window).Textbox = Textbox;\n (window).Textarea = Textarea;\n (window).Radiobox = Radiobox;\n (window).Checkbox = Checkbox;\n (window).Select = Select;\n}\n\nexport { Textbox, Textarea, Select, Checkbox, Radiobox };\n","import * as React from 'react';\nimport message from './message';\nimport validator from './validator';\nimport utils from './utils';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'textbox';\nconst VALIDATE_OPTION_TYPE_LIST = ['string', 'number'];\nconst DEFAULT_MAX_LENGTH = 524288; // Default value is 524288\nconst DEFAULT_AUTO_COMPLETE = 'on'; // Default value is on\ninterface DefaultValidationOption {\n locale?: string;\n reg?: string;\n min?: number;\n max?: number;\n type?: string;\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n length?: number;\n regMsg?: string;\n compare?: string;\n required?: boolean;\n msgOnError?: string;\n msgOnSuccess?: string;\n customFunc?: undefined | Function;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { reg, min, max, type, name, check, length, regMsg, compare, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n compare = typeof compare !== 'undefined' ? compare : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n compare,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n autoComplete?: string;\n maxLength?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n type: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n autoComplete: string;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n disabled: false,\n validate: false,\n autoComplete: DEFAULT_AUTO_COMPLETE,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.input = React.createRef();\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n let v = node.current.value;\n if (this.props.maxLength !== '') {\n if (v.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { type } = getDefaultValidationOption(validationOption);\n // FORMAT NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n v = String(this.autoFormatNumber(v));\n }\n const { onChange } = this.props;\n onChange && onChange(v, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, compare, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n const value = val || node.current.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n if (!validator[type](value)) {\n this.handleCheckEnd(true, msg.invalid(nameText));\n return;\n }\n if (min || max) {\n if (min && max) {\n if (!validator[type](value, min, max)) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (!validator[type](value, min)) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (!validator[type](value, 0, max)) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK EQUAL\n if (compare && compare !== '') {\n if (value !== compare) {\n this.handleCheckEnd(true, msg.twoInputsNotEqual());\n return;\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n autoFormatNumber(v: number | string) {\n const DOT = '.';\n let res = '';\n let hasDot = false;\n String(v)\n .split('')\n .filter(i => {\n const charCode = i.toLowerCase().charCodeAt(0);\n if ((charCode >= 48 && charCode <= 57) || (charCode === 46 && !hasDot)) {\n if (charCode === 46) {\n hasDot = true;\n }\n res += i;\n }\n });\n if (res.length && res[0] === DOT) {\n res = `0${res}`;\n }\n return res;\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n autoComplete,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textbox__wrapper']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textbox__container']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textbox__input']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","/** @license React v16.6.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,A=n?Symbol.for(\"react.memo\"):\n60115,B=n?Symbol.for(\"react.lazy\"):60116,C=\"function\"===typeof Symbol&&Symbol.iterator;function aa(a,b,e,c,d,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[e,c,d,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction D(a){for(var b=arguments.length-1,e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cQ.length&&Q.push(a)}\nfunction T(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h {\n let { reg, min, max, type, name, check, length, regMsg, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n maxLength?: string | number;\n cols?: string | number;\n rows?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n cols: string | number;\n rows: string | number;\n disabled: boolean;\n validate: boolean;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n cols: DEFAULT_ROWS,\n rows: DEFAULT_COLS,\n disabled: false,\n validate: false,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private value: string;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.value = props.value;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n this.value = e.target.value;\n if (this.props.maxLength !== '') {\n if (this.value.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { onChange } = this.props;\n onChange && onChange(this.value, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const value = val || this.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n cols,\n rows,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textarea__wrapper']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textarea__container']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textarea__input']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'select';\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position) {\n const p = position || 0;\n return this.indexOf(searchString, p) === p;\n };\n}\n\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList: OptionListItem[];\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent | Event) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n selectHtml?: React.ReactNode;\n selectOptionListItemHtml?: React.ReactNode;\n classNameWrapper?: string;\n classNameContainer?: string;\n classNameSelect?: string;\n classNameOptionListContainer?: string;\n classNameDropdownIconOptionListItem?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleSelect?: object;\n customStyleOptionListContainer?: object;\n customStyleDropdownIcon?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n classNameOptionListContainer: string;\n classNameDropdownIconOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleOptionListItem: object;\n customStyleOptionListContainer: object;\n customStyleDropdownIcon: object;\n validationOption: object;\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n value: string;\n show: boolean;\n isTyping: boolean;\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n keycodeList: number[];\n validate: boolean;\n}\n\ninterface Node {\n [key: string]: any;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n classNameOptionListContainer: '',\n classNameDropdownIconOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleOptionListItem: {},\n customStyleOptionListContainer: {},\n customStyleDropdownIcon: {},\n validationOption: {},\n onChange: () => {},\n };\n private wrapper: React.RefObject;\n private itemsWrapper: React.RefObject;\n private input: React.RefObject;\n private optionItems: React.RefObject[];\n private focus: boolean;\n private corrected: boolean;\n // TODO: find a better type\n private typingTimeout: any;\n private currentFocus: number | undefined;\n constructor(props: any) {\n super(props);\n this.state = {\n value: props.value,\n show: false,\n isTyping: false,\n err: false,\n msg: '',\n successMsg: undefined,\n keycodeList: [],\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.pageClick = this.pageClick.bind(this);\n this.wrapper = React.createRef();\n this.itemsWrapper = React.createRef();\n this.input = React.createRef();\n this.optionItems = [];\n this.focus = false;\n this.corrected = false;\n this.currentFocus = undefined;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n if (prevState.value !== nextProps.value) {\n return {\n value: nextProps.value,\n };\n }\n return null;\n }\n\n componentDidMount() {\n window.addEventListener('mousedown', this.pageClick);\n window.addEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.addEventListener('keydown', this.onKeyDown);\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevState.show !== this.state.show) {\n if (this.state.show) {\n this.resetCurrentFocus();\n }\n }\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('mousedown', this.pageClick);\n window.removeEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.removeEventListener('keydown', this.onKeyDown);\n }\n }\n\n onChange(value: string, e: React.MouseEvent | Event) {\n const { onChange } = this.props;\n onChange && onChange(String(value), e);\n this.setState({ value });\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent | Event) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n this.focus = true;\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n getIndex(list: OptionListItem[], val: string) {\n let key = -1;\n for (let i = 0; i < list.length; i += 1) {\n if (list[i].id === val) {\n key = i;\n break;\n }\n }\n return key;\n }\n\n resetCurrentFocus() {\n const { value } = this.state;\n const { optionList } = this.props;\n this.currentFocus = this.getIndex(optionList, value);\n this.scroll();\n }\n\n onKeyDown(e: any) {\n this.setState({ isTyping: true });\n if (e.preventDefault) {\n e.preventDefault();\n }\n const { show, value } = this.state;\n if (!show) {\n return;\n }\n const x = this.optionItems;\n const { optionList } = this.props;\n this.currentFocus = typeof this.currentFocus !== 'undefined' ? this.currentFocus : this.getIndex(optionList, value);\n let direction = undefined;\n const { keyCode } = e;\n const keyCodeEsc = 27;\n const keyCodeDown = 40;\n const keyCodeUp = 38;\n const keyCodeEnter = 13;\n const selectKeyList = [keyCodeEsc, keyCodeDown, keyCodeUp, keyCodeEnter];\n if (selectKeyList.indexOf(keyCode) !== -1) {\n if (keyCode === keyCodeEsc) {\n this.setState({ show: false });\n this.resetCurrentFocus();\n return;\n }\n if (keyCode === keyCodeDown) {\n direction = 'down';\n this.currentFocus += 1;\n if (this.currentFocus > optionList.length - 1) {\n this.currentFocus = optionList.length - 1;\n }\n this.addActive();\n } else if (keyCode === keyCodeUp) {\n direction = 'up';\n this.currentFocus -= 1;\n if (this.currentFocus < 0) {\n this.currentFocus = 0;\n }\n this.addActive();\n } else if (keyCode === keyCodeEnter) {\n if (this.currentFocus > -1) {\n if (x) {\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.click();\n }\n }\n }\n } else {\n const { keycodeList } = this.state;\n this.setTimeoutTyping();\n const newkeyCodeList = [...keycodeList, keyCode];\n const str = String.fromCharCode(...newkeyCodeList).toLowerCase();\n let index = -1;\n optionList.filter((i, k) => {\n const { name } = i;\n if (name.toLowerCase().startsWith(str)) {\n if (index === -1) {\n index = k;\n }\n }\n });\n if (index !== -1) {\n this.currentFocus = index;\n this.addActive();\n }\n this.setState({ keycodeList: newkeyCodeList });\n }\n this.scroll(direction);\n return this.currentFocus;\n }\n\n setTimeoutTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n this.typingTimeout = setTimeout(() => {\n this.setState({ keycodeList: [] });\n }, 250);\n }\n\n scroll(direction: undefined | string = undefined) {\n const itemsWrapperNode: Node | null = this.itemsWrapper;\n /* istanbul ignore next */\n if (itemsWrapperNode === null) {\n return;\n }\n const containerHeight = itemsWrapperNode.current.offsetHeight;\n const containerScrollTop = itemsWrapperNode.current.scrollTop;\n /* istanbul ignore next */\n if (!this.currentFocus || !this.optionItems[this.currentFocus]) {\n return;\n }\n const optionItemsNode: Node | null = this.optionItems[this.currentFocus];\n /* istanbul ignore next */\n if (optionItemsNode === null) {\n return;\n }\n const itemHeight = optionItemsNode.current.offsetHeight;\n if (direction) {\n if (direction === 'down') {\n const bound = containerScrollTop + containerHeight;\n const heightItems = this.currentFocus * itemHeight;\n const heightContainer = bound - itemHeight;\n if (heightItems >= heightContainer) {\n const offset = Math.abs(heightItems - heightContainer - itemHeight);\n if (offset >= 0 && !this.corrected) {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight - offset;\n this.corrected = true;\n } else {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight;\n }\n }\n }\n if (direction === 'up') {\n this.corrected = false;\n if (this.currentFocus * itemHeight <= containerScrollTop) {\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n } else {\n this.corrected = false;\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n\n addActive() {\n const x = this.optionItems;\n if (!x) return false;\n this.removeActive();\n if (typeof this.currentFocus === 'undefined') return;\n if (this.currentFocus >= x.length) this.currentFocus = 0;\n if (this.currentFocus < 0) this.currentFocus = x.length - 1;\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.className += ` ${reactInputsValidationCss['select__hover-active']}`;\n }\n\n removeActive() {\n const x = this.optionItems;\n for (let i = 0; i < x.length; i += 1) {\n const node: Node | null = x[i];\n node.current.className = node.current.className.replace(reactInputsValidationCss['select__hover-active'], '');\n }\n }\n\n pageClick(e: Event) {\n const node: Node | null = this.wrapper;\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n /* istanbul ignore next */\n if (node.current.contains(e.target)) {\n return;\n }\n if (this.focus) {\n this.onBlur(e);\n this.focus = false;\n }\n this.toggleShow(false);\n }\n\n toggleShow(show: boolean) {\n this.setState({ show });\n }\n\n check(val: null | string = null) {\n let { value } = this.state;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n optionList,\n disabled,\n classNameWrapper,\n classNameContainer,\n classNameSelect,\n classNameOptionListContainer,\n classNameOptionListItem,\n classNameDropdownIconOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleSelect,\n customStyleOptionListContainer,\n customStyleOptionListItem,\n selectHtml,\n selectOptionListItemHtml,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { value, err, msg, show, successMsg, isTyping } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['select__wrapper']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['select__container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const inputClass = `${reactInputsValidationCss['select__input']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectClass = `${classNameSelect} ${reactInputsValidationCss['ellipsis']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListContainerClass = `${classNameOptionListContainer} ${reactInputsValidationCss['select__options-container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListItemClass = `${!isTyping && reactInputsValidationCss['select__options-item-show-cursor']} ${classNameOptionListItem} ${\n reactInputsValidationCss['select__options-item']\n } ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const dropdownIconClass = `${classNameDropdownIconOptionListItem} ${reactInputsValidationCss['select__dropdown-icon']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n let optionListHtml;\n let item: OptionListItem | undefined;\n optionList.filter(i => {\n if (String(i.id) === String(value)) {\n item = i;\n }\n });\n if (optionList.length) {\n if (selectOptionListItemHtml) {\n optionListHtml = selectOptionListItemHtml;\n } else {\n optionListHtml = optionList.map((i, k) => {\n this.optionItems[k] = React.createRef();\n return (\n {\n this.currentFocus = k;\n this.addActive();\n }}\n onMouseMove={() => {\n this.setState({ isTyping: false });\n }}\n onMouseOut={() => {\n this.removeActive();\n }}\n className={String(i.id) === String(value) ? `${selectOptionListItemClass} ${reactInputsValidationCss['active']}` : `${selectOptionListItemClass}`}\n key={k}\n style={customStyleOptionListItem}\n onClick={e => {\n this.onChange(i.id, e);\n }}\n >\n {i.name}\n
\n );\n });\n }\n }\n let selectorHtml = selectHtml;\n if (!selectorHtml) {\n selectorHtml = (\n
\n
{item ? item.name : ''}
\n
\n
\n );\n }\n return (\n {\n this.onClick(e);\n !disabled ? this.toggleShow(!show) : ``;\n }}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ref={this.wrapper}\n >\n
\n {}} ref={this.input} />\n
\n {selectorHtml}\n
\n
\n {optionListHtml}\n
\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'checkbox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | boolean;\n checked?: boolean;\n disabled?: boolean;\n labelHtml?: React.ReactNode;\n validate?: boolean;\n onChange: (res: boolean, e: Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameInputBox?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInputBox?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | boolean;\n checked: boolean;\n disabled: boolean;\n validate: boolean;\n labelHtml: React.ReactNode;\n classNameInput: string;\n classNameWrapper: string;\n classNameInputBox: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleInputBox: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: boolean, e: Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n checked: boolean;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n checked: false,\n disabled: false,\n validate: false,\n labelHtml: undefined,\n classNameInput: '',\n classNameWrapper: '',\n classNameInputBox: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleInputBox: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n checked: props.checked,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.input = React.createRef();\n }\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n if (nextProps.checked !== prevState.checked) {\n return {\n checked: nextProps.checked,\n };\n }\n return null;\n }\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(e: any) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n const checked = !this.state.checked;\n this.setState({ checked });\n const { onChange } = this.props;\n onChange && onChange(checked, e);\n // when props.validate toggled\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n onClick(e: React.MouseEvent) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n this.onChange(e);\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n check() {\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, locale, required, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (required) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (!this.state.checked) {\n this.handleCheckEnd(true, msg.unchecked(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n labelHtml,\n classNameWrapper,\n classNameContainer,\n classNameInputBox,\n customStyleWrapper,\n customStyleContainer,\n customStyleInputBox,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, checked, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['checkbox__wrapper']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['checkbox__container']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const boxClass = `${classNameInputBox} ${reactInputsValidationCss['checkbox__box']} ${err && reactInputsValidationCss['error']} ${checked &&\n reactInputsValidationCss['checked']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${checked && reactInputsValidationCss['checked']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n
\n
\n \n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'radiobox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList?: OptionListItem[];\n onChange: (res: string, e: React.ChangeEvent) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameWrapper?: string;\n classNameInput?: string;\n classNameContainer?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInput?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameInput: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleInput: object;\n customStyleOptionListItem: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameInput: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleInput: {},\n customStyleOptionListItem: {},\n validationOption: {},\n onChange: () => {},\n };\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n if (nextProps.value !== prevState.value) {\n const o: { value: string | any; err?: boolean; successMsg?: undefined } = { value: nextProps.value };\n if (prevState.err) {\n o['err'] = false;\n } else {\n o['successMsg'] = undefined;\n }\n return o;\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(val: string, e: React.ChangeEvent) {\n const { onChange } = this.props;\n onChange && onChange(val, e);\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n check(val: null | string = null) {\n let { value } = this.props;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n optionList,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n classNameOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n customStyleOptionListItem,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__wrapper']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__container']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__input']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__label']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const optionListItemClass = `${classNameOptionListItem} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__item']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n\n let optionHtml;\n if (optionList.length) {\n optionHtml = optionList.map((i, k) => {\n const checked = String(i.id) === String(value) ? true : false;\n return (\n
\n this.onChange(i.id, e)}\n style={customStyleInput}\n />\n \n
\n );\n });\n }\n\n return (\n
\n
\n {optionHtml}\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/react-inputs-validation.min.js b/lib/react-inputs-validation.min.js index ed7d397..51179c6 100644 --- a/lib/react-inputs-validation.min.js +++ b/lib/react-inputs-validation.min.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["react-inputs-validation"]=t():e["react-inputs-validation"]=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.LOCALE_OPTION_LIST=["en-US","zh-CN"];t.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE="Invalid window.REACT_INPUTS_VALIDATION['customErrorMessage']. EXAMPLE: window.REACT_INPUTS_VALIDATION={customErrorMessage:{'en-US':{textbox:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}},radiobox:{empty:function empty(name){return'Please choose one '+getEnglishName(name)}},checkbox:{unchecked:function unchecked(name){return getEnglishName(name)+'must be checked'}},select:{empty:function empty(name){return'Please select a '+getEnglishName(name)}},textarea:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}}}}};";t.DEFAULT_LOCALE="en-US"},function(e,t,n){"use strict";e.exports=n(8)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(e){var t="";return e&&(t=e+" "),t},i={"zh-CN":{textbox:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}},radiobox:{empty:function(e){return"必须勾选一个"+e}},checkbox:{unchecked:function(e){return e+"必须勾选"}},select:{empty:function(e){return"请选择一个"+e}},textarea:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}}},"en-US":{textbox:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}},radiobox:{empty:function(e){return"Please choose one "+o(e)}},checkbox:{unchecked:function(e){return o(e)+"must be checked"}},select:{empty:function(e){return"Please select a "+o(e)}},textarea:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}}}};t.getCustomErrorMessage=function(e,t){return e&&"object"==typeof e&&e.constructor===Object&&Object.keys(e).length?(Object.keys(e).map(function(n){t[n]?Object.keys(e[n]).length&&Object.keys(e[n]).map(function(r){Object.keys(e[n][r]).length&&Object.keys(e[n][r]).map(function(o){t[n][r][o]=e[n][r][o]})}):t[n]=e[n]}),t):(console.error(r.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE),!1)},t.handleCustomErrorMessage=function(e,n){var r;return void 0!==n&&n.REACT_INPUTS_VALIDATION&&n.REACT_INPUTS_VALIDATION.customErrorMessage&&(r=t.getCustomErrorMessage(n.REACT_INPUTS_VALIDATION.customErrorMessage,e)),void 0===r||!1===r?e:r},"undefined"!=typeof window&&(window.REACT_INPUTS_VALIDATION=window.REACT_INPUTS_VALIDATION||{},i=t.handleCustomErrorMessage(i,window)),t.default=i},function(e,t,n){e.exports={ellipsis:"react-inputs-validation__ellipsis___3-Api",textbox__wrapper:"react-inputs-validation__textbox__wrapper___3tnXv",textbox__container:"react-inputs-validation__textbox__container___3KXOM",textbox__input:"react-inputs-validation__textbox__input___20hDL",error:"react-inputs-validation__error___2aXSp",success:"react-inputs-validation__success___3TpwE",disabled:"react-inputs-validation__disabled___1-57g",msg:"react-inputs-validation__msg___pxv8o",textarea__wrapper:"react-inputs-validation__textarea__wrapper___35GhF",textarea__container:"react-inputs-validation__textarea__container___2fbGp",textarea__input:"react-inputs-validation__textarea__input___1CFm_",radiobox__wrapper:"react-inputs-validation__radiobox__wrapper___1zZ30",radiobox__container:"react-inputs-validation__radiobox__container___FD4vb",radiobox__input:"react-inputs-validation__radiobox__input___2uX2-",radiobox__label:"react-inputs-validation__radiobox__label___2tQsB",checked:"react-inputs-validation__checked___2O0Ju",radiobox__item:"react-inputs-validation__radiobox__item___ejuz1",checkbox__wrapper:"react-inputs-validation__checkbox__wrapper___1c1rD",checkbox__input:"react-inputs-validation__checkbox__input___1yF4X",checkbox__container:"react-inputs-validation__checkbox__container___3I1rX",checkbox__box:"react-inputs-validation__checkbox__box___1uj8A",box:"react-inputs-validation__box___3E9nu",select__wrapper:"react-inputs-validation__select__wrapper___1B4OH",select__input:"react-inputs-validation__select__input___3h-P7",select__container:"react-inputs-validation__select__container___3jgUR","select__options-item":"react-inputs-validation__select__options-item___30yY4","select__options-item-show-cursor":"react-inputs-validation__select__options-item-show-cursor___1ZT3b","select__no-mouse":"react-inputs-validation__select__no-mouse___2uRg6","select__hover-active":"react-inputs-validation__select__hover-active___2z1MQ",active:"react-inputs-validation__active___3eZBB","select__options-container-animate":"react-inputs-validation__select__options-container-animate___2Rm--",show:"react-inputs-validation__show___2NI3u","select__options-container":"react-inputs-validation__select__options-container___d54qE",select__dropdown:"react-inputs-validation__select__dropdown___11yDr","select__dropdown-icon":"react-inputs-validation__select__dropdown-icon___1T5r2","select__dropdown-name":"react-inputs-validation__select__dropdown-name___3hghL","select__dropdown-icon-container":"react-inputs-validation__select__dropdown-icon-container___2ild-"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},o={reg:function(e,t){var n=!0;return e.test(t)&&(n=!1),n},empty:function(e){return!e.replace(/\s/g,"").length},number:function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=999999999999),!!r(e)&&!(en)}};t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g,function(e,t){return 0==+e?"":0===t?e.toLowerCase():e.toUpperCase()})},o={camelize:r,toCamelCase:function(e){return function(t){void 0===t&&(t=!1);var n=r(e);return t?n.substr(0,1).toUpperCase()+n.substr(1,n.length):n}}};t.default=o},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(7));t.Textbox=o.default;var i=r(n(10));t.Textarea=i.default;var a=r(n(11));t.Select=a.default;var s=r(n(12));t.Checkbox=s.default;var u=r(n(13));t.Radiobox=u.default,"undefined"!=typeof window&&(window.Textbox=o.default,window.Textarea=i.default,window.Radiobox=u.default,window.Checkbox=s.default,window.Select=a.default)},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=i(n(4)),c=i(n(5)),l=n(0),d=i(n(3)),p=["string","number"],f=function(e){var t=e.reg,n=e.min,r=e.max,o=e.type,i=e.name,a=e.check,s=e.length,u=e.regMsg,c=e.compare,d=e.required,p=e.showMsg,f=e.locale,h=e.msgOnError,m=e.msgOnSuccess,v=e.customFunc;return f=void 0!==f?f:l.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0!==n?n:0,r=void 0!==r?r:0,o=void 0!==o?o:"string",i=void 0!==i?i:"",a=void 0===a||a,p=void 0===p||p,{reg:t,min:n,max:r,type:o,name:i,check:a,length:s=void 0!==s?s:0,regMsg:u=void 0!==u?u:"",locale:f,compare:c=void 0!==c?c:"",required:d=void 0===d||d,showMsg:p,msgOnError:h=void 0!==h?h:"",msgOnSuccess:m=void 0!==m?m:"",customFunc:v=void 0!==v?v:void 0}},h=function(e){function t(t){var n=e.call(this,t)||this;return n.state={err:!1,msg:"",successMsg:void 0,value:t.value,validate:t.validate},n.onChange=n.onChange.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyUp=n.onKeyUp.bind(n),n.input=a.createRef(),n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return!0===e.validate&&!1===t.validate?{validate:e.validate}:null},t.prototype.componentDidUpdate=function(e,t){!0===this.state.validate&&!1===t.validate&&this.check()},t.prototype.onChange=function(e){var t=this.input;if(null!==t){var n=t.current.value;if(!(""!==this.props.maxLength&&n.length>Number(this.props.maxLength))){var r=this.props.validationOption;f(r).type===p[1]&&(n=String(this.autoFormatNumber(n)));var o=this.props.onChange;o&&o(n,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&(this.check(),t(e))},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=f(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,h=n.check,m=n.length,v=n.regMsg,_=n.locale,g=n.compare,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(h)if(a)if(-1!==p.indexOf(a)){if(!s.default[_]||!s.default[_].textbox)return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[_].textbox,S=this.input;if(null===S)return;var O=e||S.current.value,w=d||"";if(y&&u.default.empty(O))return void this.handleCheckEnd(!0,C.empty(w));if(""!==String(O)){if(r&&u.default.reg(r,O))return void this.handleCheckEnd(!0,""!==v?v:C.invalid(w));if(a===p[0]){if(o||i)if(o&&i){if(String(O).lengthi)return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&String(O).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(m&&String(O).length!==m)return void this.handleCheckEnd(!0,C.lengthEqual(w)(m))}if(a===p[1]){if(!u.default[a](O))return void this.handleCheckEnd(!0,C.invalid(w));if(o||i)if(o&&i){if(!u.default[a](O,o,i))return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&!u.default[a](O,o))return void this.handleCheckEnd(!0,C.lessThan(w)(o));if(i&&!u.default[a](O,0,i))return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(m&&String(O).length!==m)return void this.handleCheckEnd(!0,C.lengthEqual(w)(m))}if(g&&""!==g&&O!==g)return void this.handleCheckEnd(!0,C.twoInputsNotEqual())}if(E&&"function"==typeof E){var k=E(O);if(!0!==k)return void this.handleCheckEnd(!0,k)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase("textbox")(!0)+' "type" options in validationOption are ['+p.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.autoFormatNumber=function(e){var t="",n=!1;return String(e).split("").filter(function(e){var r=e.toLowerCase().charCodeAt(0);(r>=48&&r<=57||46===r&&!n)&&(46===r&&(n=!0),t+=e)}),t.length&&"."===t[0]&&(t="0"+t),t},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=f(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=t.type,s=t.value,u=t.disabled,c=t.maxLength,l=t.autoComplete,p=t.placeholder,h=t.classNameWrapper,m=t.classNameContainer,v=t.classNameInput,_=t.customStyleWrapper,g=t.customStyleContainer,y=t.customStyleInput,b=t.validationOption,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=h+" "+d.default.textbox__wrapper+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(u&&d.default.disabled),k=m+" "+d.default.textbox__container+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(u&&d.default.disabled),x=v+" "+d.default.textbox__input+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(u&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=f(b).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:_},a.createElement("div",{className:k,style:g},a.createElement("input",{tabIndex:Number(n),id:r,name:o,type:i,value:s,disabled:u,autoComplete:l,maxLength:Number(c),onBlur:this.onBlur,onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:y,placeholder:p,ref:this.input})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",disabled:!1,validate:!1,autoComplete:"on",maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=h},function(e,t,n){"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["react-inputs-validation"]=t():e["react-inputs-validation"]=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.LOCALE_OPTION_LIST=["en-US","zh-CN"];t.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE="Invalid window.REACT_INPUTS_VALIDATION['customErrorMessage']. EXAMPLE: window.REACT_INPUTS_VALIDATION={customErrorMessage:{'en-US':{textbox:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}},radiobox:{empty:function empty(name){return'Please choose one '+getEnglishName(name)}},checkbox:{unchecked:function unchecked(name){return getEnglishName(name)+'must be checked'}},select:{empty:function empty(name){return'Please select a '+getEnglishName(name)}},textarea:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}}}}};";t.DEFAULT_LOCALE="en-US"},function(e,t,n){"use strict";e.exports=n(8)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(e){var t="";return e&&(t=e+" "),t},i={"zh-CN":{textbox:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}},radiobox:{empty:function(e){return"必须勾选一个"+e}},checkbox:{unchecked:function(e){return e+"必须勾选"}},select:{empty:function(e){return"请选择一个"+e}},textarea:{empty:function(e){return e+"不能为空"},invalid:function(e){return e+"格式有误"},invalidFormat:function(e){return e+"不是数字"},inBetween:function(e){return function(t){return function(n){return e+"必须在"+t+"-"+n+"之间"}}},lessThan:function(e){return function(t){return e+"不可少于"+t}},greaterThan:function(e){return function(t){return e+"不可大于"+t}},lengthEqual:function(e){return function(t){return e+"长度必须为"+t}},twoInputsNotEqual:function(){return"两次输入不一致"}}},"en-US":{textbox:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}},radiobox:{empty:function(e){return"Please choose one "+o(e)}},checkbox:{unchecked:function(e){return o(e)+"must be checked"}},select:{empty:function(e){return"Please select a "+o(e)}},textarea:{empty:function(e){return o(e)+"cannot be empty"},invalid:function(e){return o(e)+"invalid format"},invalidFormat:function(e){return o(e)+"is not a number"},inBetween:function(e){return function(t){return function(n){return o(e)+"must be "+t+"-"+n}}},lessThan:function(e){return function(t){return o(e)+"cannot less than "+t}},greaterThan:function(e){return function(t){return o(e)+"cannot greater than "+t}},lengthEqual:function(e){return function(t){return o(e)+"length must be "+t}},twoInputsNotEqual:function(){return"two inputs are not equal"}}}};t.getCustomErrorMessage=function(e,t){return e&&"object"==typeof e&&e.constructor===Object&&Object.keys(e).length?(Object.keys(e).map(function(n){t[n]?Object.keys(e[n]).length&&Object.keys(e[n]).map(function(r){Object.keys(e[n][r]).length&&Object.keys(e[n][r]).map(function(o){t[n][r][o]=e[n][r][o]})}):t[n]=e[n]}),t):(console.error(r.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE),!1)},t.handleCustomErrorMessage=function(e,n){var r;return void 0!==n&&n.REACT_INPUTS_VALIDATION&&n.REACT_INPUTS_VALIDATION.customErrorMessage&&(r=t.getCustomErrorMessage(n.REACT_INPUTS_VALIDATION.customErrorMessage,e)),void 0===r||!1===r?e:r},"undefined"!=typeof window&&(window.REACT_INPUTS_VALIDATION=window.REACT_INPUTS_VALIDATION||{},i=t.handleCustomErrorMessage(i,window)),t.default=i},function(e,t,n){e.exports={ellipsis:"react-inputs-validation__ellipsis___3-Api",textbox__wrapper:"react-inputs-validation__textbox__wrapper___3tnXv",textbox__container:"react-inputs-validation__textbox__container___3KXOM",textbox__input:"react-inputs-validation__textbox__input___20hDL",error:"react-inputs-validation__error___2aXSp",success:"react-inputs-validation__success___3TpwE",disabled:"react-inputs-validation__disabled___1-57g",msg:"react-inputs-validation__msg___pxv8o",textarea__wrapper:"react-inputs-validation__textarea__wrapper___35GhF",textarea__container:"react-inputs-validation__textarea__container___2fbGp",textarea__input:"react-inputs-validation__textarea__input___1CFm_",radiobox__wrapper:"react-inputs-validation__radiobox__wrapper___1zZ30",radiobox__container:"react-inputs-validation__radiobox__container___FD4vb",radiobox__input:"react-inputs-validation__radiobox__input___2uX2-",radiobox__label:"react-inputs-validation__radiobox__label___2tQsB",checked:"react-inputs-validation__checked___2O0Ju",radiobox__item:"react-inputs-validation__radiobox__item___ejuz1",checkbox__wrapper:"react-inputs-validation__checkbox__wrapper___1c1rD",checkbox__input:"react-inputs-validation__checkbox__input___1yF4X",checkbox__container:"react-inputs-validation__checkbox__container___3I1rX",checkbox__box:"react-inputs-validation__checkbox__box___1uj8A",box:"react-inputs-validation__box___3E9nu",select__wrapper:"react-inputs-validation__select__wrapper___1B4OH",select__input:"react-inputs-validation__select__input___3h-P7",select__container:"react-inputs-validation__select__container___3jgUR","select__options-item":"react-inputs-validation__select__options-item___30yY4","select__options-item-show-cursor":"react-inputs-validation__select__options-item-show-cursor___1ZT3b","select__no-mouse":"react-inputs-validation__select__no-mouse___2uRg6","select__hover-active":"react-inputs-validation__select__hover-active___2z1MQ",active:"react-inputs-validation__active___3eZBB","select__options-container-animate":"react-inputs-validation__select__options-container-animate___2Rm--",show:"react-inputs-validation__show___2NI3u","select__options-container":"react-inputs-validation__select__options-container___d54qE",select__dropdown:"react-inputs-validation__select__dropdown___11yDr","select__dropdown-icon":"react-inputs-validation__select__dropdown-icon___1T5r2","select__dropdown-name":"react-inputs-validation__select__dropdown-name___3hghL","select__dropdown-icon-container":"react-inputs-validation__select__dropdown-icon-container___2ild-"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},o={reg:function(e,t){var n=!0;return e.test(t)&&(n=!1),n},empty:function(e){return!e.replace(/\s/g,"").length},number:function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=999999999999),!!r(e)&&!(en)}};t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g,function(e,t){return 0==+e?"":0===t?e.toLowerCase():e.toUpperCase()})},o={camelize:r,toCamelCase:function(e){return function(t){void 0===t&&(t=!1);var n=r(e);return t?n.substr(0,1).toUpperCase()+n.substr(1,n.length):n}}};t.default=o},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(7));t.Textbox=o.default;var i=r(n(10));t.Textarea=i.default;var a=r(n(11));t.Select=a.default;var s=r(n(12));t.Checkbox=s.default;var u=r(n(13));t.Radiobox=u.default,"undefined"!=typeof window&&(window.Textbox=o.default,window.Textarea=i.default,window.Radiobox=u.default,window.Checkbox=s.default,window.Select=a.default)},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=i(n(4)),c=i(n(5)),l=n(0),d=i(n(3)),p=["string","number"],f=function(e){var t=e.reg,n=e.min,r=e.max,o=e.type,i=e.name,a=e.check,s=e.length,u=e.regMsg,c=e.compare,d=e.required,p=e.showMsg,f=e.locale,h=e.msgOnError,v=e.msgOnSuccess,m=e.customFunc;return f=void 0!==f?f:l.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0!==n?n:0,r=void 0!==r?r:0,o=void 0!==o?o:"string",i=void 0!==i?i:"",a=void 0===a||a,p=void 0===p||p,{reg:t,min:n,max:r,type:o,name:i,check:a,length:s=void 0!==s?s:0,regMsg:u=void 0!==u?u:"",locale:f,compare:c=void 0!==c?c:"",required:d=void 0===d||d,showMsg:p,msgOnError:h=void 0!==h?h:"",msgOnSuccess:v=void 0!==v?v:"",customFunc:m=void 0!==m?m:void 0}},h=function(e){function t(t){var n=e.call(this,t)||this;return n.state={err:!1,msg:"",successMsg:void 0,value:t.value,validate:t.validate},n.onChange=n.onChange.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyUp=n.onKeyUp.bind(n),n.input=a.createRef(),n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return e.validate!==t.validate?{validate:e.validate}:null},t.prototype.componentDidUpdate=function(e,t){this.state.validate!==t.validate&&this.check()},t.prototype.onChange=function(e){var t=this.input;if(null!==t){var n=t.current.value;if(!(""!==this.props.maxLength&&n.length>Number(this.props.maxLength))){var r=this.props.validationOption;f(r).type===p[1]&&(n=String(this.autoFormatNumber(n)));var o=this.props.onChange;o&&o(n,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&t(e)},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=f(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,h=n.check,v=n.length,m=n.regMsg,_=n.locale,g=n.compare,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(h)if(a)if(-1!==p.indexOf(a)){if(!s.default[_]||!s.default[_].textbox)return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[_].textbox,S=this.input;if(null===S)return;var O=e||S.current.value,w=d||"";if(y&&u.default.empty(O))return void this.handleCheckEnd(!0,C.empty(w));if(""!==String(O)){if(r&&u.default.reg(r,O))return void this.handleCheckEnd(!0,""!==m?m:C.invalid(w));if(a===p[0]){if(o||i)if(o&&i){if(String(O).lengthi)return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&String(O).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(v&&String(O).length!==v)return void this.handleCheckEnd(!0,C.lengthEqual(w)(v))}if(a===p[1]){if(!u.default[a](O))return void this.handleCheckEnd(!0,C.invalid(w));if(o||i)if(o&&i){if(!u.default[a](O,o,i))return void this.handleCheckEnd(!0,C.inBetween(w)(o)(i))}else{if(o&&!u.default[a](O,o))return void this.handleCheckEnd(!0,C.lessThan(w)(o));if(i&&!u.default[a](O,0,i))return void this.handleCheckEnd(!0,C.greaterThan(w)(i))}if(v&&String(O).length!==v)return void this.handleCheckEnd(!0,C.lengthEqual(w)(v))}if(g&&""!==g&&O!==g)return void this.handleCheckEnd(!0,C.twoInputsNotEqual())}if(E&&"function"==typeof E){var k=E(O);if(!0!==k)return void this.handleCheckEnd(!0,k)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase("textbox")(!0)+' "type" options in validationOption are ['+p.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.autoFormatNumber=function(e){var t="",n=!1;return String(e).split("").filter(function(e){var r=e.toLowerCase().charCodeAt(0);(r>=48&&r<=57||46===r&&!n)&&(46===r&&(n=!0),t+=e)}),t.length&&"."===t[0]&&(t="0"+t),t},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=f(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=t.type,s=t.value,u=t.disabled,c=t.maxLength,l=t.autoComplete,p=t.placeholder,h=t.classNameWrapper,v=t.classNameContainer,m=t.classNameInput,_=t.customStyleWrapper,g=t.customStyleContainer,y=t.customStyleInput,b=t.validationOption,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=h+" "+d.default.textbox__wrapper+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(u&&d.default.disabled),k=v+" "+d.default.textbox__container+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(u&&d.default.disabled),x=m+" "+d.default.textbox__input+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(u&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=f(b).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&void 0!==O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:_},a.createElement("div",{className:k,style:g},a.createElement("input",{tabIndex:Number(n),id:r,name:o,type:i,value:s,disabled:u,autoComplete:l,maxLength:Number(c),onBlur:this.onBlur,onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:y,placeholder:p,ref:this.input})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",disabled:!1,validate:!1,autoComplete:"on",maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=h},function(e,t,n){"use strict"; /** @license React v16.6.0 * react.production.min.js * @@ -6,10 +6,10 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var r=n(9),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,s=o?Symbol.for("react.fragment"):60107,u=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,d=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.concurrent_mode"):60111,f=o?Symbol.for("react.forward_ref"):60112,h=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,v=o?Symbol.for("react.lazy"):60116,_="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=0;rM.length&&M.push(e)}function L(e,t,n){return null==e?0:function e(t,n,r,o){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+P(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;cM.length&&M.push(e)}function L(e,t,n){return null==e?0:function e(t,n,r,o){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(o,t,""===n?"."+P(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;cNumber(this.props.maxLength))){var t=this.props.onChange;t&&t(this.value,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&(this.check(),t(e))},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=h(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,m=n.check,v=n.length,_=n.regMsg,g=n.locale,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(m)if(a)if(-1!==f.indexOf(a)){if(!s.default[g]||!s.default[g][p])return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[g][p],S=e||this.value,O=d||"";if(y&&u.default.empty(S))return void this.handleCheckEnd(!0,C.empty(O));if(""!==String(S)){if(r&&u.default.reg(r,S))return void this.handleCheckEnd(!0,""!==_?_:C.invalid(O));if(a===f[0]){if(o||i)if(o&&i){if(String(S).lengthi)return void this.handleCheckEnd(!0,C.inBetween(O)(o)(i))}else{if(o&&String(S).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(O)(i))}if(v&&String(S).length!==v)return void this.handleCheckEnd(!0,C.lengthEqual(O)(v))}}if(E&&"function"==typeof E){var w=E(S);if(!0!==w)return void this.handleCheckEnd(!0,w)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase(p)(!0)+' "type" options in validationOption are ['+f.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=h(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=(t.type,t.value),s=t.disabled,u=t.maxLength,c=t.placeholder,l=t.classNameWrapper,p=t.classNameContainer,f=t.classNameInput,m=t.customStyleWrapper,v=t.customStyleContainer,_=t.customStyleInput,g=t.validationOption,y=t.cols,b=t.rows,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=l+" "+d.default.textarea__wrapper+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(s&&d.default.disabled),k=p+" "+d.default.textarea__container+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(s&&d.default.disabled),x=f+" "+d.default.textarea__input+" "+(C&&d.default.error)+" "+(O&&!C&&d.default.success)+" "+(s&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=h(g).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:m},a.createElement("div",{className:k,style:v},a.createElement("textarea",{tabIndex:Number(n),id:r,name:o,value:i,disabled:s,onBlur:this.onBlur,maxLength:Number(u),onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:_,placeholder:c,cols:Number(y),rows:Number(b)})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",cols:2,rows:2,disabled:!1,validate:!1,maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=m},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=n(0),c=i(n(3));String.prototype.startsWith||(String.prototype.startsWith=function(e,t){var n=t||0;return this.indexOf(e,n)===n});var l=function(e){var t=e.name,n=e.check,r=e.required,o=e.showMsg,i=e.locale,a=e.msgOnError,s=e.msgOnSuccess;return i=void 0!==i?i:u.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0===n||n,o=void 0===o||o,r=void 0===r||r,s=void 0!==s?s:"",{name:t,check:n,showMsg:o,required:r,locale:i,msgOnError:a=void 0!==a?a:"",msgOnSuccess:s}},d=function(e){function t(t){var n=e.call(this,t)||this;return n.state={value:t.value,show:!1,isTyping:!1,err:!1,msg:"",successMsg:void 0,keycodeList:[],validate:t.validate},n.onChange=n.onChange.bind(n),n.onClick=n.onClick.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyDown=n.onKeyDown.bind(n),n.pageClick=n.pageClick.bind(n),n.wrapper=a.createRef(),n.itemsWrapper=a.createRef(),n.input=a.createRef(),n.optionItems=[],n.focus=!1,n.corrected=!1,n.currentFocus=void 0,n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return!0===e.validate&&!1===t.validate?{validate:e.validate}:t.value!==e.value?{value:e.value}:null},t.prototype.componentDidMount=function(){window.addEventListener("mousedown",this.pageClick),window.addEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.addEventListener("keydown",this.onKeyDown)},t.prototype.componentDidUpdate=function(e,t){t.show!==this.state.show&&this.state.show&&this.resetCurrentFocus(),!0===this.state.validate&&!1===t.validate&&this.check()},t.prototype.componentWillUnmount=function(){window.removeEventListener("mousedown",this.pageClick),window.removeEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.removeEventListener("keydown",this.onKeyDown)},t.prototype.onChange=function(e,t){var n=this.props.onChange;n&&n(String(e),t),this.setState({value:e}),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})},t.prototype.onClick=function(e){var t=this.props.onClick;t&&t(e)},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){this.focus=!0;var t=this.props.onFocus;t&&t(e)},t.prototype.getIndex=function(e,t){for(var n=-1,r=0;ri.length-1&&(this.currentFocus=i.length-1),this.addActive();else if(38===s)a="up",this.currentFocus-=1,this.currentFocus<0&&(this.currentFocus=0),this.addActive();else if(13===s&&this.currentFocus>-1&&o){var u=o[this.currentFocus];if(!u)return;u.current.click()}}else{var c=this.state.keycodeList;this.setTimeoutTyping();var l=c.concat([s]),d=String.fromCharCode.apply(String,l).toLowerCase(),p=-1;i.filter(function(e,t){e.name.toLowerCase().startsWith(d)&&-1===p&&(p=t)}),-1!==p&&(this.currentFocus=p,this.addActive()),this.setState({keycodeList:l})}return this.scroll(a),this.currentFocus}},t.prototype.setTimeoutTyping=function(){var e=this;this.typingTimeout&&clearTimeout(this.typingTimeout),this.typingTimeout=setTimeout(function(){e.setState({keycodeList:[]})},250)},t.prototype.scroll=function(e){void 0===e&&(e=void 0);var t=this.itemsWrapper;if(null!==t){var n=t.current.offsetHeight,r=t.current.scrollTop;if(this.currentFocus&&this.optionItems[this.currentFocus]){var o=this.optionItems[this.currentFocus];if(null!==o){var i=o.current.offsetHeight;if(e){if("down"===e){var a=r+n,s=this.currentFocus*i,u=a-i;if(s>=u){var c=Math.abs(s-u-i);c>=0&&!this.corrected?(t.current.scrollTop=r+i-c,this.corrected=!0):t.current.scrollTop=r+i}}"up"===e&&(this.corrected=!1,this.currentFocus*i<=r&&(t.current.scrollTop=this.currentFocus*i))}else this.corrected=!1,t.current.scrollTop=this.currentFocus*i}}}},t.prototype.addActive=function(){var e=this.optionItems;if(!e)return!1;if(this.removeActive(),void 0!==this.currentFocus){this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1);var t=e[this.currentFocus];t&&(t.current.className+=" "+c.default["select__hover-active"])}},t.prototype.removeActive=function(){for(var e=this.optionItems,t=0;tNumber(this.props.maxLength))){var t=this.props.onChange;t&&t(this.value,e),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})}},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){var t=this.props.onFocus;t&&t(e)},t.prototype.onKeyUp=function(e){var t=this.props.onKeyUp;t&&(this.check(),t(e))},t.prototype.check=function(e){void 0===e&&(e=null);var t=this.props.validationOption,n=h(t),r=n.reg,o=n.min,i=n.max,a=n.type,d=n.name,v=n.check,m=n.length,_=n.regMsg,g=n.locale,y=n.required,b=n.msgOnSuccess,E=n.customFunc;if(v)if(a)if(-1!==f.indexOf(a)){if(!s.default[g]||!s.default[g][p])return void console.error(l.REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);var C=s.default[g][p],S=e||this.value,O=d||"";if(y&&u.default.empty(S))return void this.handleCheckEnd(!0,C.empty(O));if(""!==String(S)){if(r&&u.default.reg(r,S))return void this.handleCheckEnd(!0,""!==_?_:C.invalid(O));if(a===f[0]){if(o||i)if(o&&i){if(String(S).lengthi)return void this.handleCheckEnd(!0,C.inBetween(O)(o)(i))}else{if(o&&String(S).lengthi)return void this.handleCheckEnd(!0,C.greaterThan(O)(i))}if(m&&String(S).length!==m)return void this.handleCheckEnd(!0,C.lengthEqual(O)(m))}}if(E&&"function"==typeof E){var w=E(S);if(!0!==w)return void this.handleCheckEnd(!0,w)}b&&this.setState({successMsg:b}),this.handleCheckEnd(!1,b)}else console.error("The valid "+c.default.toCamelCase(p)(!0)+' "type" options in validationOption are ['+f.map(function(e){return e})+"]");else console.error('Please provide "type" in validationOption')},t.prototype.handleCheckEnd=function(e,t){var n=t,r=this.props.validationOption,o=h(r).msgOnError;e&&o&&(n=o),this.setState({err:e,msg:n});var i=this.props.validationCallback;i&&i(e)},t.prototype.render=function(){var e,t=this.props,n=t.tabIndex,r=t.id,o=t.name,i=(t.type,t.value),s=t.disabled,u=t.maxLength,c=t.placeholder,l=t.classNameWrapper,p=t.classNameContainer,f=t.classNameInput,v=t.customStyleWrapper,m=t.customStyleContainer,_=t.customStyleInput,g=t.validationOption,y=t.cols,b=t.rows,E=this.state,C=E.err,S=E.msg,O=E.successMsg,w=l+" "+d.default.textarea__wrapper+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(s&&d.default.disabled),k=p+" "+d.default.textarea__container+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(s&&d.default.disabled),x=f+" "+d.default.textarea__input+" "+(C&&d.default.error)+" "+(void 0!==O&&!C&&d.default.success)+" "+(s&&d.default.disabled),N=d.default.msg+" "+(C&&d.default.error),I=d.default.msg+" "+(!C&&d.default.success),T=h(g).showMsg;return T&&C&&S&&(e=a.createElement("div",{className:N},S)),T&&!C&&void 0!==O&&(e=a.createElement("div",{className:I},O)),a.createElement("div",{className:w,style:v},a.createElement("div",{className:k,style:m},a.createElement("textarea",{tabIndex:Number(n),id:r,name:o,value:i,disabled:s,onBlur:this.onBlur,maxLength:Number(u),onKeyUp:this.onKeyUp,onFocus:this.onFocus,className:x,onChange:this.onChange,style:_,placeholder:c,cols:Number(y),rows:Number(b)})),e)},t.defaultProps={tabIndex:-1,id:"",name:"",type:"text",value:"",cols:2,rows:2,disabled:!1,validate:!1,maxLength:524288,placeholder:"",classNameInput:"",classNameWrapper:"",classNameContainer:"",customStyleInput:{},customStyleWrapper:{},customStyleContainer:{},validationOption:{},onChange:function(){}},t}(a.Component);t.default=v},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(1)),s=i(n(2)),u=n(0),c=i(n(3));String.prototype.startsWith||(String.prototype.startsWith=function(e,t){var n=t||0;return this.indexOf(e,n)===n});var l=function(e){var t=e.name,n=e.check,r=e.required,o=e.showMsg,i=e.locale,a=e.msgOnError,s=e.msgOnSuccess;return i=void 0!==i?i:u.DEFAULT_LOCALE,t=void 0!==t?t:"",n=void 0===n||n,o=void 0===o||o,r=void 0===r||r,s=void 0!==s?s:"",{name:t,check:n,showMsg:o,required:r,locale:i,msgOnError:a=void 0!==a?a:"",msgOnSuccess:s}},d=function(e){function t(t){var n=e.call(this,t)||this;return n.state={value:t.value,show:!1,isTyping:!1,err:!1,msg:"",successMsg:void 0,keycodeList:[],validate:t.validate},n.onChange=n.onChange.bind(n),n.onClick=n.onClick.bind(n),n.onBlur=n.onBlur.bind(n),n.onFocus=n.onFocus.bind(n),n.onKeyDown=n.onKeyDown.bind(n),n.pageClick=n.pageClick.bind(n),n.wrapper=a.createRef(),n.itemsWrapper=a.createRef(),n.input=a.createRef(),n.optionItems=[],n.focus=!1,n.corrected=!1,n.currentFocus=void 0,n}return r(t,e),t.getDerivedStateFromProps=function(e,t){return e.validate!==t.validate?{validate:e.validate}:t.value!==e.value?{value:e.value}:null},t.prototype.componentDidMount=function(){window.addEventListener("mousedown",this.pageClick),window.addEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.addEventListener("keydown",this.onKeyDown)},t.prototype.componentDidUpdate=function(e,t){t.show!==this.state.show&&this.state.show&&this.resetCurrentFocus(),this.state.validate!==t.validate&&this.check()},t.prototype.componentWillUnmount=function(){window.removeEventListener("mousedown",this.pageClick),window.removeEventListener("touchstart",this.pageClick);var e=this.wrapper.current;e&&e.removeEventListener("keydown",this.onKeyDown)},t.prototype.onChange=function(e,t){var n=this.props.onChange;n&&n(String(e),t),this.setState({value:e}),this.state.err?this.setState({err:!1}):this.setState({successMsg:void 0})},t.prototype.onClick=function(e){var t=this.props.onClick;t&&t(e)},t.prototype.onBlur=function(e){var t=this.props.onBlur;t&&(this.check(),t(e))},t.prototype.onFocus=function(e){this.focus=!0;var t=this.props.onFocus;t&&t(e)},t.prototype.getIndex=function(e,t){for(var n=-1,r=0;ri.length-1&&(this.currentFocus=i.length-1),this.addActive();else if(38===s)a="up",this.currentFocus-=1,this.currentFocus<0&&(this.currentFocus=0),this.addActive();else if(13===s&&this.currentFocus>-1&&o){var u=o[this.currentFocus];if(!u)return;u.current.click()}}else{var c=this.state.keycodeList;this.setTimeoutTyping();var l=c.concat([s]),d=String.fromCharCode.apply(String,l).toLowerCase(),p=-1;i.filter(function(e,t){e.name.toLowerCase().startsWith(d)&&-1===p&&(p=t)}),-1!==p&&(this.currentFocus=p,this.addActive()),this.setState({keycodeList:l})}return this.scroll(a),this.currentFocus}},t.prototype.setTimeoutTyping=function(){var e=this;this.typingTimeout&&clearTimeout(this.typingTimeout),this.typingTimeout=setTimeout(function(){e.setState({keycodeList:[]})},250)},t.prototype.scroll=function(e){void 0===e&&(e=void 0);var t=this.itemsWrapper;if(null!==t){var n=t.current.offsetHeight,r=t.current.scrollTop;if(this.currentFocus&&this.optionItems[this.currentFocus]){var o=this.optionItems[this.currentFocus];if(null!==o){var i=o.current.offsetHeight;if(e){if("down"===e){var a=r+n,s=this.currentFocus*i,u=a-i;if(s>=u){var c=Math.abs(s-u-i);c>=0&&!this.corrected?(t.current.scrollTop=r+i-c,this.corrected=!0):t.current.scrollTop=r+i}}"up"===e&&(this.corrected=!1,this.currentFocus*i<=r&&(t.current.scrollTop=this.currentFocus*i))}else this.corrected=!1,t.current.scrollTop=this.currentFocus*i}}}},t.prototype.addActive=function(){var e=this.optionItems;if(!e)return!1;if(this.removeActive(),void 0!==this.currentFocus){this.currentFocus>=e.length&&(this.currentFocus=0),this.currentFocus<0&&(this.currentFocus=e.length-1);var t=e[this.currentFocus];t&&(t.current.className+=" "+c.default["select__hover-active"])}},t.prototype.removeActive=function(){for(var e=this.optionItems,t=0;t {\n let res = '';\n if (name) {\n res = `${name} `;\n }\n return res;\n};\n\nconst TEXT_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst TEXT_AREA_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_AREA_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst SELECT_VALIDATION_ZH_CN = {\n empty: (name: string) => `请选择一个${name}`,\n};\n\nconst SELECT_VALIDATION_EN_US = {\n empty: (name: string) => `Please select a ${getEnglishName(name)}`,\n};\n\nconst CHECK_BOX_VALIDATION_ZH_CN = {\n unchecked: (name: string) => `${name}必须勾选`,\n};\n\nconst CHECK_BOX_VALIDATION_EN_US = {\n unchecked: (name: string) => `${getEnglishName(name)}must be checked`,\n};\n\nconst RADIO_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `必须勾选一个${name}`,\n};\n\nconst RADIO_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `Please choose one ${getEnglishName(name)}`,\n};\n\ninterface Message {\n [key: string]: Key;\n}\n\ninterface Key {\n [key: string]: Func;\n}\n\ninterface Func {\n [key: string]: Function;\n}\n\nlet message: Message = {\n 'zh-CN': {\n textbox: TEXT_BOX_VALIDATION_ZH_CN,\n radiobox: RADIO_BOX_VALIDATION_ZH_CN,\n checkbox: CHECK_BOX_VALIDATION_ZH_CN,\n select: SELECT_VALIDATION_ZH_CN,\n textarea: TEXT_AREA_VALIDATION_ZH_CN,\n },\n 'en-US': {\n textbox: TEXT_BOX_VALIDATION_EN_US,\n radiobox: RADIO_BOX_VALIDATION_EN_US,\n checkbox: CHECK_BOX_VALIDATION_EN_US,\n select: SELECT_VALIDATION_EN_US,\n textarea: TEXT_AREA_VALIDATION_EN_US,\n },\n};\n\n// TODO: find a rewire way to handle non-export function\nexport const getCustomErrorMessage = (o: any, m: any) => {\n if (!o || typeof o !== 'object' || o.constructor !== Object || !Object.keys(o).length) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return false;\n }\n Object.keys(o).map(i => {\n if (!m[i]) {\n m[i] = o[i];\n } else {\n if (Object.keys(o[i]).length) {\n Object.keys(o[i]).map(j => {\n if (Object.keys(o[i][j]).length) {\n Object.keys(o[i][j]).map(k => {\n m[i][j][k] = o[i][j][k];\n });\n }\n });\n }\n }\n });\n return m;\n};\n\ndeclare global {\n interface Window {\n REACT_INPUTS_VALIDATION: any;\n }\n}\n\n// TODO: find a rewire way to handle non-export function\nexport const handleCustomErrorMessage = (message: any, w: Window) => {\n let res;\n if (typeof w !== 'undefined') {\n if (w.REACT_INPUTS_VALIDATION && w.REACT_INPUTS_VALIDATION['customErrorMessage']) {\n res = getCustomErrorMessage(w.REACT_INPUTS_VALIDATION['customErrorMessage'], message);\n }\n }\n if (typeof res === 'undefined' || res === false) {\n return message;\n }\n return res;\n};\n\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.REACT_INPUTS_VALIDATION = window.REACT_INPUTS_VALIDATION || {};\n message = handleCustomErrorMessage(message, window);\n}\n\nexport default message;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ellipsis\":\"react-inputs-validation__ellipsis___3-Api\",\"textbox__wrapper\":\"react-inputs-validation__textbox__wrapper___3tnXv\",\"textbox__container\":\"react-inputs-validation__textbox__container___3KXOM\",\"textbox__input\":\"react-inputs-validation__textbox__input___20hDL\",\"error\":\"react-inputs-validation__error___2aXSp\",\"success\":\"react-inputs-validation__success___3TpwE\",\"disabled\":\"react-inputs-validation__disabled___1-57g\",\"msg\":\"react-inputs-validation__msg___pxv8o\",\"textarea__wrapper\":\"react-inputs-validation__textarea__wrapper___35GhF\",\"textarea__container\":\"react-inputs-validation__textarea__container___2fbGp\",\"textarea__input\":\"react-inputs-validation__textarea__input___1CFm_\",\"radiobox__wrapper\":\"react-inputs-validation__radiobox__wrapper___1zZ30\",\"radiobox__container\":\"react-inputs-validation__radiobox__container___FD4vb\",\"radiobox__input\":\"react-inputs-validation__radiobox__input___2uX2-\",\"radiobox__label\":\"react-inputs-validation__radiobox__label___2tQsB\",\"checked\":\"react-inputs-validation__checked___2O0Ju\",\"radiobox__item\":\"react-inputs-validation__radiobox__item___ejuz1\",\"checkbox__wrapper\":\"react-inputs-validation__checkbox__wrapper___1c1rD\",\"checkbox__input\":\"react-inputs-validation__checkbox__input___1yF4X\",\"checkbox__container\":\"react-inputs-validation__checkbox__container___3I1rX\",\"checkbox__box\":\"react-inputs-validation__checkbox__box___1uj8A\",\"box\":\"react-inputs-validation__box___3E9nu\",\"select__wrapper\":\"react-inputs-validation__select__wrapper___1B4OH\",\"select__input\":\"react-inputs-validation__select__input___3h-P7\",\"select__container\":\"react-inputs-validation__select__container___3jgUR\",\"select__options-item\":\"react-inputs-validation__select__options-item___30yY4\",\"select__options-item-show-cursor\":\"react-inputs-validation__select__options-item-show-cursor___1ZT3b\",\"select__no-mouse\":\"react-inputs-validation__select__no-mouse___2uRg6\",\"select__hover-active\":\"react-inputs-validation__select__hover-active___2z1MQ\",\"active\":\"react-inputs-validation__active___3eZBB\",\"select__options-container-animate\":\"react-inputs-validation__select__options-container-animate___2Rm--\",\"show\":\"react-inputs-validation__show___2NI3u\",\"select__options-container\":\"react-inputs-validation__select__options-container___d54qE\",\"select__dropdown\":\"react-inputs-validation__select__dropdown___11yDr\",\"select__dropdown-icon\":\"react-inputs-validation__select__dropdown-icon___1T5r2\",\"select__dropdown-name\":\"react-inputs-validation__select__dropdown-name___3hghL\",\"select__dropdown-icon-container\":\"react-inputs-validation__select__dropdown-icon-container___2ild-\"};","const empty = (v: string) => (v.replace(/\\s/g, '').length ? false : true);\nconst number = (v: number, min: number = 0, max: number = 999999999999) => {\n if (!isNumeric(v)) {\n return false;\n }\n return v < min || v > max ? false : true;\n};\n// TODO: find a better type for regex\nconst reg = (reg: any, v: string) => {\n let err = true;\n if (reg.test(v)) {\n err = false;\n }\n return err;\n};\nconst isNumeric = (v: any) => {\n return !isNaN(parseFloat(v)) && isFinite(v);\n};\n\ninterface Validator {\n [key: string]: Function;\n}\n\nconst validator: Validator = {\n reg,\n empty,\n number,\n};\nexport default validator;\n","const camelize = (str: string) => {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) => {\n if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\n });\n};\n\nconst toCamelCase = (str: string) => (capitalLize: boolean = false) => {\n const res = camelize(str);\n return capitalLize ? res.substr(0, 1).toUpperCase() + res.substr(1, res.length) : res;\n};\n\ninterface Utils {\n [key: string]: Function;\n}\n\nconst utils: Utils = {\n camelize,\n toCamelCase,\n};\nexport default utils;\n","import Textbox from './Textbox';\nimport Textarea from './Textarea';\nimport Select from './Select';\nimport Checkbox from './Checkbox';\nimport Radiobox from './Radiobox';\n\nif (typeof window !== 'undefined') {\n (window).Textbox = Textbox;\n (window).Textarea = Textarea;\n (window).Radiobox = Radiobox;\n (window).Checkbox = Checkbox;\n (window).Select = Select;\n}\n\nexport { Textbox, Textarea, Select, Checkbox, Radiobox };\n","import * as React from 'react';\nimport message from './message';\nimport validator from './validator';\nimport utils from './utils';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'textbox';\nconst VALIDATE_OPTION_TYPE_LIST = ['string', 'number'];\nconst DEFAULT_MAX_LENGTH = 524288; // Default value is 524288\nconst DEFAULT_AUTO_COMPLETE = 'on'; // Default value is on\ninterface DefaultValidationOption {\n locale?: string;\n reg?: string;\n min?: number;\n max?: number;\n type?: string;\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n length?: number;\n regMsg?: string;\n compare?: string;\n required?: boolean;\n msgOnError?: string;\n msgOnSuccess?: string;\n customFunc?: undefined | Function;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { reg, min, max, type, name, check, length, regMsg, compare, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n compare = typeof compare !== 'undefined' ? compare : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n compare,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n autoComplete?: string;\n maxLength?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n type: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n autoComplete: string;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n disabled: false,\n validate: false,\n autoComplete: DEFAULT_AUTO_COMPLETE,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.input = React.createRef();\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n let v = node.current.value;\n if (this.props.maxLength !== '') {\n if (v.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { type } = getDefaultValidationOption(validationOption);\n // FORMAT NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n v = String(this.autoFormatNumber(v));\n }\n const { onChange } = this.props;\n onChange && onChange(v, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n this.check();\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, compare, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n const value = val || node.current.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n if (!validator[type](value)) {\n this.handleCheckEnd(true, msg.invalid(nameText));\n return;\n }\n if (min || max) {\n if (min && max) {\n if (!validator[type](value, min, max)) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (!validator[type](value, min)) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (!validator[type](value, 0, max)) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK EQUAL\n if (compare && compare !== '') {\n if (value !== compare) {\n this.handleCheckEnd(true, msg.twoInputsNotEqual());\n return;\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n autoFormatNumber(v: number | string) {\n const DOT = '.';\n let res = '';\n let hasDot = false;\n String(v)\n .split('')\n .filter(i => {\n const charCode = i.toLowerCase().charCodeAt(0);\n if ((charCode >= 48 && charCode <= 57) || (charCode === 46 && !hasDot)) {\n if (charCode === 46) {\n hasDot = true;\n }\n res += i;\n }\n });\n if (res.length && res[0] === DOT) {\n res = `0${res}`;\n }\n return res;\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n autoComplete,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textbox__wrapper']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textbox__container']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textbox__input']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","/** @license React v16.6.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,A=n?Symbol.for(\"react.memo\"):\n60115,B=n?Symbol.for(\"react.lazy\"):60116,C=\"function\"===typeof Symbol&&Symbol.iterator;function aa(a,b,e,c,d,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[e,c,d,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction D(a){for(var b=arguments.length-1,e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cQ.length&&Q.push(a)}\nfunction T(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h {\n let { reg, min, max, type, name, check, length, regMsg, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n maxLength?: string | number;\n cols?: string | number;\n rows?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n cols: string | number;\n rows: string | number;\n disabled: boolean;\n validate: boolean;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n cols: DEFAULT_ROWS,\n rows: DEFAULT_COLS,\n disabled: false,\n validate: false,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private value: string;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.value = props.value;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n this.value = e.target.value;\n if (this.props.maxLength !== '') {\n if (this.value.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { onChange } = this.props;\n onChange && onChange(this.value, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n this.check();\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const value = val || this.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n cols,\n rows,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textarea__wrapper']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textarea__container']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textarea__input']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'select';\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position) {\n const p = position || 0;\n return this.indexOf(searchString, p) === p;\n };\n}\n\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList: OptionListItem[];\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent | Event) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n selectHtml?: React.ReactNode;\n selectOptionListItemHtml?: React.ReactNode;\n classNameWrapper?: string;\n classNameContainer?: string;\n classNameSelect?: string;\n classNameOptionListContainer?: string;\n classNameDropdownIconOptionListItem?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleSelect?: object;\n customStyleOptionListContainer?: object;\n customStyleDropdownIcon?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n classNameOptionListContainer: string;\n classNameDropdownIconOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleOptionListItem: object;\n customStyleOptionListContainer: object;\n customStyleDropdownIcon: object;\n validationOption: object;\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n value: string;\n show: boolean;\n isTyping: boolean;\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n keycodeList: number[];\n validate: boolean;\n}\n\ninterface Node {\n [key: string]: any;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n classNameOptionListContainer: '',\n classNameDropdownIconOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleOptionListItem: {},\n customStyleOptionListContainer: {},\n customStyleDropdownIcon: {},\n validationOption: {},\n onChange: () => {},\n };\n private wrapper: React.RefObject;\n private itemsWrapper: React.RefObject;\n private input: React.RefObject;\n private optionItems: React.RefObject[];\n private focus: boolean;\n private corrected: boolean;\n // TODO: find a better type\n private typingTimeout: any;\n private currentFocus: number | undefined;\n constructor(props: any) {\n super(props);\n this.state = {\n value: props.value,\n show: false,\n isTyping: false,\n err: false,\n msg: '',\n successMsg: undefined,\n keycodeList: [],\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.pageClick = this.pageClick.bind(this);\n this.wrapper = React.createRef();\n this.itemsWrapper = React.createRef();\n this.input = React.createRef();\n this.optionItems = [];\n this.focus = false;\n this.corrected = false;\n this.currentFocus = undefined;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n if (prevState.value !== nextProps.value) {\n return {\n value: nextProps.value,\n };\n }\n return null;\n }\n\n componentDidMount() {\n window.addEventListener('mousedown', this.pageClick);\n window.addEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.addEventListener('keydown', this.onKeyDown);\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevState.show !== this.state.show) {\n if (this.state.show) {\n this.resetCurrentFocus();\n }\n }\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('mousedown', this.pageClick);\n window.removeEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.removeEventListener('keydown', this.onKeyDown);\n }\n }\n\n onChange(value: string, e: React.MouseEvent | Event) {\n const { onChange } = this.props;\n onChange && onChange(String(value), e);\n this.setState({ value });\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent | Event) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n this.focus = true;\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n getIndex(list: OptionListItem[], val: string) {\n let key = -1;\n for (let i = 0; i < list.length; i += 1) {\n if (list[i].id === val) {\n key = i;\n break;\n }\n }\n return key;\n }\n\n resetCurrentFocus() {\n const { value } = this.state;\n const { optionList } = this.props;\n this.currentFocus = this.getIndex(optionList, value);\n this.scroll();\n }\n\n onKeyDown(e: any) {\n this.setState({ isTyping: true });\n if (e.preventDefault) {\n e.preventDefault();\n }\n const { show, value } = this.state;\n if (!show) {\n return;\n }\n const x = this.optionItems;\n const { optionList } = this.props;\n this.currentFocus = typeof this.currentFocus !== 'undefined' ? this.currentFocus : this.getIndex(optionList, value);\n let direction = undefined;\n const { keyCode } = e;\n const keyCodeEsc = 27;\n const keyCodeDown = 40;\n const keyCodeUp = 38;\n const keyCodeEnter = 13;\n const selectKeyList = [keyCodeEsc, keyCodeDown, keyCodeUp, keyCodeEnter];\n if (selectKeyList.indexOf(keyCode) !== -1) {\n if (keyCode === keyCodeEsc) {\n this.setState({ show: false });\n this.resetCurrentFocus();\n return;\n }\n if (keyCode === keyCodeDown) {\n direction = 'down';\n this.currentFocus += 1;\n if (this.currentFocus > optionList.length - 1) {\n this.currentFocus = optionList.length - 1;\n }\n this.addActive();\n } else if (keyCode === keyCodeUp) {\n direction = 'up';\n this.currentFocus -= 1;\n if (this.currentFocus < 0) {\n this.currentFocus = 0;\n }\n this.addActive();\n } else if (keyCode === keyCodeEnter) {\n if (this.currentFocus > -1) {\n if (x) {\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.click();\n }\n }\n }\n } else {\n const { keycodeList } = this.state;\n this.setTimeoutTyping();\n const newkeyCodeList = [...keycodeList, keyCode];\n const str = String.fromCharCode(...newkeyCodeList).toLowerCase();\n let index = -1;\n optionList.filter((i, k) => {\n const { name } = i;\n if (name.toLowerCase().startsWith(str)) {\n if (index === -1) {\n index = k;\n }\n }\n });\n if (index !== -1) {\n this.currentFocus = index;\n this.addActive();\n }\n this.setState({ keycodeList: newkeyCodeList });\n }\n this.scroll(direction);\n return this.currentFocus;\n }\n\n setTimeoutTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n this.typingTimeout = setTimeout(() => {\n this.setState({ keycodeList: [] });\n }, 250);\n }\n\n scroll(direction: undefined | string = undefined) {\n const itemsWrapperNode: Node | null = this.itemsWrapper;\n /* istanbul ignore next */\n if (itemsWrapperNode === null) {\n return;\n }\n const containerHeight = itemsWrapperNode.current.offsetHeight;\n const containerScrollTop = itemsWrapperNode.current.scrollTop;\n /* istanbul ignore next */\n if (!this.currentFocus || !this.optionItems[this.currentFocus]) {\n return;\n }\n const optionItemsNode: Node | null = this.optionItems[this.currentFocus];\n /* istanbul ignore next */\n if (optionItemsNode === null) {\n return;\n }\n const itemHeight = optionItemsNode.current.offsetHeight;\n if (direction) {\n if (direction === 'down') {\n const bound = containerScrollTop + containerHeight;\n const heightItems = this.currentFocus * itemHeight;\n const heightContainer = bound - itemHeight;\n if (heightItems >= heightContainer) {\n const offset = Math.abs(heightItems - heightContainer - itemHeight);\n if (offset >= 0 && !this.corrected) {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight - offset;\n this.corrected = true;\n } else {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight;\n }\n }\n }\n if (direction === 'up') {\n this.corrected = false;\n if (this.currentFocus * itemHeight <= containerScrollTop) {\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n } else {\n this.corrected = false;\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n\n addActive() {\n const x = this.optionItems;\n if (!x) return false;\n this.removeActive();\n if (typeof this.currentFocus === 'undefined') return;\n if (this.currentFocus >= x.length) this.currentFocus = 0;\n if (this.currentFocus < 0) this.currentFocus = x.length - 1;\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.className += ` ${reactInputsValidationCss['select__hover-active']}`;\n }\n\n removeActive() {\n const x = this.optionItems;\n for (let i = 0; i < x.length; i += 1) {\n const node: Node | null = x[i];\n node.current.className = node.current.className.replace(reactInputsValidationCss['select__hover-active'], '');\n }\n }\n\n pageClick(e: Event) {\n const node: Node | null = this.wrapper;\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n /* istanbul ignore next */\n if (node.current.contains(e.target)) {\n return;\n }\n if (this.focus) {\n this.onBlur(e);\n this.focus = false;\n }\n this.toggleShow(false);\n }\n\n toggleShow(show: boolean) {\n this.setState({ show });\n }\n\n check(val: null | string = null) {\n let { value } = this.state;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n optionList,\n disabled,\n classNameWrapper,\n classNameContainer,\n classNameSelect,\n classNameOptionListContainer,\n classNameOptionListItem,\n classNameDropdownIconOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleSelect,\n customStyleOptionListContainer,\n customStyleOptionListItem,\n selectHtml,\n selectOptionListItemHtml,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { value, err, msg, show, successMsg, isTyping } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['select__wrapper']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['select__container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const inputClass = `${reactInputsValidationCss['select__input']} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled &&\n reactInputsValidationCss['disabled']};`;\n\n const selectClass = `${classNameSelect} ${reactInputsValidationCss['ellipsis']} ${err && reactInputsValidationCss['error']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListContainerClass = `${classNameOptionListContainer} ${reactInputsValidationCss['select__options-container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListItemClass = `${!isTyping && reactInputsValidationCss['select__options-item-show-cursor']} ${classNameOptionListItem} ${\n reactInputsValidationCss['select__options-item']\n } ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const dropdownIconClass = `${classNameDropdownIconOptionListItem} ${reactInputsValidationCss['select__dropdown-icon']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n let optionListHtml;\n let item: OptionListItem | undefined;\n optionList.filter(i => {\n if (String(i.id) === String(value)) {\n item = i;\n }\n });\n if (optionList.length) {\n if (selectOptionListItemHtml) {\n optionListHtml = selectOptionListItemHtml;\n } else {\n optionListHtml = optionList.map((i, k) => {\n this.optionItems[k] = React.createRef();\n return (\n {\n this.currentFocus = k;\n this.addActive();\n }}\n onMouseMove={() => {\n this.setState({ isTyping: false });\n }}\n onMouseOut={() => {\n this.removeActive();\n }}\n className={String(i.id) === String(value) ? `${selectOptionListItemClass} ${reactInputsValidationCss['active']}` : `${selectOptionListItemClass}`}\n key={k}\n style={customStyleOptionListItem}\n onClick={e => {\n this.onChange(i.id, e);\n }}\n >\n {i.name}\n
\n );\n });\n }\n }\n let selectorHtml = selectHtml;\n if (!selectorHtml) {\n selectorHtml = (\n
\n
{item ? item.name : ''}
\n
\n
\n );\n }\n return (\n {\n this.onClick(e);\n !disabled ? this.toggleShow(!show) : ``;\n }}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ref={this.wrapper}\n >\n
\n {}} ref={this.input} />\n
\n {selectorHtml}\n
\n
\n {optionListHtml}\n
\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'checkbox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | boolean;\n checked?: boolean;\n disabled?: boolean;\n labelHtml?: React.ReactNode;\n validate?: boolean;\n onChange: (res: boolean, e: Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameInputBox?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInputBox?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | boolean;\n checked: boolean;\n disabled: boolean;\n validate: boolean;\n labelHtml: React.ReactNode;\n classNameInput: string;\n classNameWrapper: string;\n classNameInputBox: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleInputBox: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: boolean, e: Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n checked: boolean;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n checked: false,\n disabled: false,\n validate: false,\n labelHtml: undefined,\n classNameInput: '',\n classNameWrapper: '',\n classNameInputBox: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleInputBox: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n checked: props.checked,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.input = React.createRef();\n }\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n // TODO: This was from componentWillReceiveProps()\n // if (this.props.checked != nextProps.checked) {\n // this.setState({ checked: nextProps.checked });\n // }\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(e: any) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n const checked = !this.state.checked;\n this.setState({ checked });\n const { onChange } = this.props;\n onChange && onChange(checked, e);\n // when props.validate toggled\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n onClick(e: React.MouseEvent) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n this.onChange(e);\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n this.check();\n onFocus(e);\n }\n }\n check() {\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, locale, required, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (required) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (!this.state.checked) {\n this.handleCheckEnd(true, msg.unchecked(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n labelHtml,\n classNameWrapper,\n classNameContainer,\n classNameInputBox,\n customStyleWrapper,\n customStyleContainer,\n customStyleInputBox,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, checked, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['checkbox__wrapper']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['checkbox__container']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const boxClass = `${classNameInputBox} ${reactInputsValidationCss['checkbox__box']} ${err && reactInputsValidationCss['error']} ${checked && reactInputsValidationCss['checked']} ${successMsg &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${checked && reactInputsValidationCss['checked']} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${disabled &&\n reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n
\n
\n \n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'radiobox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList?: OptionListItem[];\n onChange: (res: string, e: React.ChangeEvent) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameWrapper?: string;\n classNameInput?: string;\n classNameContainer?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInput?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameInput: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleInput: object;\n customStyleOptionListItem: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameInput: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleInput: {},\n customStyleOptionListItem: {},\n validationOption: {},\n onChange: () => {},\n };\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate === true && prevState.validate === false) {\n return {\n validate: nextProps.validate,\n };\n }\n if (nextProps.value !== prevState.value) {\n const o: { value: string | any; err?: boolean; successMsg?: undefined } = { value: nextProps.value };\n if (prevState.err) {\n o['err'] = false;\n } else {\n o['successMsg'] = undefined;\n }\n return o;\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate === true && prevState.validate === false) {\n this.check();\n }\n }\n\n onChange(val: string, e: React.ChangeEvent) {\n const { onChange } = this.props;\n onChange && onChange(val, e);\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n check(val: null | string = null) {\n let { value } = this.props;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n optionList,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n classNameOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n customStyleOptionListItem,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__wrapper']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__container']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__input']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${reactInputsValidationCss['radiobox__label']} ${disabled &&\n reactInputsValidationCss['disabled']}`;\n\n const optionListItemClass = `${classNameOptionListItem} ${err && reactInputsValidationCss['error']} ${successMsg && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__item']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && successMsg) {\n msgHtml =
{successMsg}
;\n }\n\n let optionHtml;\n if (optionList.length) {\n optionHtml = optionList.map((i, k) => {\n const checked = String(i.id) === String(value) ? true : false;\n return (\n
\n this.onChange(i.id, e)}\n style={customStyleInput}\n />\n \n
\n );\n });\n }\n\n return (\n
\n
\n {optionHtml}\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://react-inputs-validation/webpack/universalModuleDefinition","webpack://react-inputs-validation/webpack/bootstrap","webpack://react-inputs-validation/./src/js/Inputs/const.ts","webpack://react-inputs-validation/./node_modules/_react@16.6.0@react/index.js","webpack://react-inputs-validation/./src/js/Inputs/message.ts","webpack://react-inputs-validation/./src/js/Inputs/react-inputs-validation.css?33c2","webpack://react-inputs-validation/./src/js/Inputs/validator.ts","webpack://react-inputs-validation/./src/js/Inputs/utils.ts","webpack://react-inputs-validation/./src/js/Inputs/index.umd.ts","webpack://react-inputs-validation/./src/js/Inputs/Textbox.tsx","webpack://react-inputs-validation/./node_modules/_react@16.6.0@react/cjs/react.production.min.js","webpack://react-inputs-validation/./node_modules/_object-assign@4.1.1@object-assign/index.js","webpack://react-inputs-validation/./src/js/Inputs/Textarea.tsx","webpack://react-inputs-validation/./src/js/Inputs/Select.tsx","webpack://react-inputs-validation/./src/js/Inputs/Checkbox.tsx","webpack://react-inputs-validation/./src/js/Inputs/Radiobox.tsx"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","LOCALE_OPTION_LIST","REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE","DEFAULT_LOCALE","const_1","getEnglishName","res","message","zh-CN","textbox","empty","invalid","invalidFormat","inBetween","min","max","lessThan","greaterThan","lengthEqual","length","twoInputsNotEqual","radiobox","checkbox","unchecked","select","textarea","en-US","getCustomErrorMessage","constructor","keys","map","j","k","console","error","handleCustomErrorMessage","w","REACT_INPUTS_VALIDATION","default","ellipsis","textbox__wrapper","textbox__container","textbox__input","success","disabled","msg","textarea__wrapper","textarea__container","textarea__input","radiobox__wrapper","radiobox__container","radiobox__input","radiobox__label","checked","radiobox__item","checkbox__wrapper","checkbox__input","checkbox__container","checkbox__box","box","select__wrapper","select__input","select__container","select__options-item","select__options-item-show-cursor","select__no-mouse","select__hover-active","active","select__options-container-animate","show","select__options-container","select__dropdown","select__dropdown-icon","select__dropdown-name","select__dropdown-icon-container","isNumeric","v","isNaN","parseFloat","isFinite","validator","reg","err","test","replace","number","camelize","str","match","index","toLowerCase","toUpperCase","utils","toCamelCase","capitalLize","substr","Textbox_1","__importDefault","Textbox","Textarea_1","Textarea","Select_1","Select","Checkbox_1","Checkbox","Radiobox_1","Radiobox","React","__importStar","message_1","validator_1","utils_1","react_inputs_validation_css_1","VALIDATE_OPTION_TYPE_LIST","getDefaultValidationOption","obj","type","check","regMsg","compare","required","showMsg","locale","msgOnError","msgOnSuccess","customFunc","undefined","Index","_super","props","_this","this","state","successMsg","validate","onChange","onBlur","onFocus","onKeyUp","input","createRef","__extends","getDerivedStateFromProps","nextProps","prevState","componentDidUpdate","prevProps","e","node","current","maxLength","Number","validationOption","String","autoFormatNumber","setState","val","_a","indexOf","nameText","handleCheckEnd","customFuncResult","hasDot","split","filter","charCode","charCodeAt","validationCallback","render","msgHtml","tabIndex","id","autoComplete","placeholder","classNameWrapper","classNameContainer","classNameInput","customStyleWrapper","customStyleContainer","customStyleInput","_b","wrapperClass","containerClass","inputClass","errmsgClass","successMsgClass","createElement","className","style","ref","defaultProps","Component","for","q","u","x","y","z","A","B","C","iterator","D","a","b","arguments","encodeURIComponent","g","h","f","Error","framesToPop","aa","E","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","F","G","context","refs","updater","H","I","isReactComponent","forceUpdate","J","isPureReactComponent","K","currentDispatcher","L","M","__self","__source","N","children","Array","$$typeof","_owner","O","P","Q","R","pop","result","keyPrefix","func","count","S","push","V","T","U","isArray","next","done","join","=",":","escape","toString","ca","da","W","ba","X","Children","forEach","toArray","only","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","Provider","Consumer","_context","forwardRef","lazy","_ctor","_status","_result","memo","Fragment","StrictMode","unstable_ConcurrentMode","Suspense","unstable_Profiler","cloneElement","createFactory","isValidElement","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","assign","Y","Z","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","target","source","from","symbols","to","TypeError","toObject","TYPE","cols","rows","startsWith","searchString","position","isTyping","keycodeList","onClick","onKeyDown","pageClick","wrapper","itemsWrapper","optionItems","focus","corrected","currentFocus","componentDidMount","addEventListener","resetCurrentFocus","componentWillUnmount","removeEventListener","getIndex","list","optionList","scroll","preventDefault","direction","keyCode","addActive","click","setTimeoutTyping","newkeyCodeList","concat","str_1","apply","index_1","typingTimeout","clearTimeout","setTimeout","itemsWrapperNode","containerHeight","offsetHeight","containerScrollTop","scrollTop","optionItemsNode","itemHeight","bound","heightItems","heightContainer","offset","Math","abs","removeActive","contains","toggleShow","isValidateValue","optionListHtml","item","classNameSelect","classNameOptionListContainer","classNameOptionListItem","classNameDropdownIconOptionListItem","customStyleSelect","customStyleOptionListContainer","customStyleOptionListItem","selectHtml","selectOptionListItemHtml","selectClass","selectOptionListContainerClass","selectOptionListItemClass","dropdownIconClass","errMsgClass","onMouseOver","onMouseMove","onMouseOut","selectorHtml","customStyleDropdownIcon","labelHtml","classNameInputBox","customStyleInputBox","boxClass","labelClass","defaultChecked","optionHtml","optionListItemClass","htmlFor"],"mappings":"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","file":"react-inputs-validation.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"react-inputs-validation\"] = factory();\n\telse\n\t\troot[\"react-inputs-validation\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","const LOCALE_OPTION_LIST = ['en-US', 'zh-CN'];\nconst REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE =\n \"Invalid window.REACT_INPUTS_VALIDATION['customErrorMessage']. EXAMPLE: window.REACT_INPUTS_VALIDATION={customErrorMessage:{'en-US':{textbox:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}},radiobox:{empty:function empty(name){return'Please choose one '+getEnglishName(name)}},checkbox:{unchecked:function unchecked(name){return getEnglishName(name)+'must be checked'}},select:{empty:function empty(name){return'Please select a '+getEnglishName(name)}},textarea:{empty:function empty(name){return getEnglishName(name)+'cannot be empty'},invalid:function invalid(name){return getEnglishName(name)+'invalid format'},invalidFormat:function invalidFormat(name){return getEnglishName(name)+'is not a number'},inBetween:function inBetween(name){return function(min){return function(max){return getEnglishName(name)+'must be '+min+'-'+max}}},lessThan:function lessThan(name){return function(min){return getEnglishName(name)+'cannot less than '+min}},greaterThan:function greaterThan(name){return function(max){return getEnglishName(name)+'cannot greater than '+max}},lengthEqual:function lengthEqual(name){return function(length){return getEnglishName(name)+'length must be '+length}},twoInputsNotEqual:function twoInputsNotEqual(){return'two inputs are not equal'}}}}};\";\nconst DEFAULT_LOCALE = 'en-US';\nexport { LOCALE_OPTION_LIST, REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE } from './const';\n\nconst getEnglishName = (name: string) => {\n let res = '';\n if (name) {\n res = `${name} `;\n }\n return res;\n};\n\nconst TEXT_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst TEXT_AREA_VALIDATION_ZH_CN = {\n empty: (name: string) => `${name}不能为空`,\n invalid: (name: string) => `${name}格式有误`,\n invalidFormat: (name: string) => `${name}不是数字`,\n inBetween: (name: string) => (min: number) => (max: number) => `${name}必须在${min}-${max}之间`,\n lessThan: (name: string) => (min: number) => `${name}不可少于${min}`,\n greaterThan: (name: string) => (max: number) => `${name}不可大于${max}`,\n lengthEqual: (name: string) => (length: number) => `${name}长度必须为${length}`,\n twoInputsNotEqual: () => `两次输入不一致`,\n};\n\nconst TEXT_AREA_VALIDATION_EN_US = {\n empty: (name: string) => `${getEnglishName(name)}cannot be empty`,\n invalid: (name: string) => `${getEnglishName(name)}invalid format`,\n invalidFormat: (name: string) => `${getEnglishName(name)}is not a number`,\n inBetween: (name: string) => (min: number) => (max: number) => `${getEnglishName(name)}must be ${min}-${max}`,\n lessThan: (name: string) => (min: number) => `${getEnglishName(name)}cannot less than ${min}`,\n greaterThan: (name: string) => (max: number) => `${getEnglishName(name)}cannot greater than ${max}`,\n lengthEqual: (name: string) => (length: number) => `${getEnglishName(name)}length must be ${length}`,\n twoInputsNotEqual: () => `two inputs are not equal`,\n};\n\nconst SELECT_VALIDATION_ZH_CN = {\n empty: (name: string) => `请选择一个${name}`,\n};\n\nconst SELECT_VALIDATION_EN_US = {\n empty: (name: string) => `Please select a ${getEnglishName(name)}`,\n};\n\nconst CHECK_BOX_VALIDATION_ZH_CN = {\n unchecked: (name: string) => `${name}必须勾选`,\n};\n\nconst CHECK_BOX_VALIDATION_EN_US = {\n unchecked: (name: string) => `${getEnglishName(name)}must be checked`,\n};\n\nconst RADIO_BOX_VALIDATION_ZH_CN = {\n empty: (name: string) => `必须勾选一个${name}`,\n};\n\nconst RADIO_BOX_VALIDATION_EN_US = {\n empty: (name: string) => `Please choose one ${getEnglishName(name)}`,\n};\n\ninterface Message {\n [key: string]: Key;\n}\n\ninterface Key {\n [key: string]: Func;\n}\n\ninterface Func {\n [key: string]: Function;\n}\n\nlet message: Message = {\n 'zh-CN': {\n textbox: TEXT_BOX_VALIDATION_ZH_CN,\n radiobox: RADIO_BOX_VALIDATION_ZH_CN,\n checkbox: CHECK_BOX_VALIDATION_ZH_CN,\n select: SELECT_VALIDATION_ZH_CN,\n textarea: TEXT_AREA_VALIDATION_ZH_CN,\n },\n 'en-US': {\n textbox: TEXT_BOX_VALIDATION_EN_US,\n radiobox: RADIO_BOX_VALIDATION_EN_US,\n checkbox: CHECK_BOX_VALIDATION_EN_US,\n select: SELECT_VALIDATION_EN_US,\n textarea: TEXT_AREA_VALIDATION_EN_US,\n },\n};\n\n// TODO: find a rewire way to handle non-export function\nexport const getCustomErrorMessage = (o: any, m: any) => {\n if (!o || typeof o !== 'object' || o.constructor !== Object || !Object.keys(o).length) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return false;\n }\n Object.keys(o).map(i => {\n if (!m[i]) {\n m[i] = o[i];\n } else {\n if (Object.keys(o[i]).length) {\n Object.keys(o[i]).map(j => {\n if (Object.keys(o[i][j]).length) {\n Object.keys(o[i][j]).map(k => {\n m[i][j][k] = o[i][j][k];\n });\n }\n });\n }\n }\n });\n return m;\n};\n\ndeclare global {\n interface Window {\n REACT_INPUTS_VALIDATION: any;\n }\n}\n\n// TODO: find a rewire way to handle non-export function\nexport const handleCustomErrorMessage = (message: any, w: Window) => {\n let res;\n if (typeof w !== 'undefined') {\n if (w.REACT_INPUTS_VALIDATION && w.REACT_INPUTS_VALIDATION['customErrorMessage']) {\n res = getCustomErrorMessage(w.REACT_INPUTS_VALIDATION['customErrorMessage'], message);\n }\n }\n if (typeof res === 'undefined' || res === false) {\n return message;\n }\n return res;\n};\n\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.REACT_INPUTS_VALIDATION = window.REACT_INPUTS_VALIDATION || {};\n message = handleCustomErrorMessage(message, window);\n}\n\nexport default message;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ellipsis\":\"react-inputs-validation__ellipsis___3-Api\",\"textbox__wrapper\":\"react-inputs-validation__textbox__wrapper___3tnXv\",\"textbox__container\":\"react-inputs-validation__textbox__container___3KXOM\",\"textbox__input\":\"react-inputs-validation__textbox__input___20hDL\",\"error\":\"react-inputs-validation__error___2aXSp\",\"success\":\"react-inputs-validation__success___3TpwE\",\"disabled\":\"react-inputs-validation__disabled___1-57g\",\"msg\":\"react-inputs-validation__msg___pxv8o\",\"textarea__wrapper\":\"react-inputs-validation__textarea__wrapper___35GhF\",\"textarea__container\":\"react-inputs-validation__textarea__container___2fbGp\",\"textarea__input\":\"react-inputs-validation__textarea__input___1CFm_\",\"radiobox__wrapper\":\"react-inputs-validation__radiobox__wrapper___1zZ30\",\"radiobox__container\":\"react-inputs-validation__radiobox__container___FD4vb\",\"radiobox__input\":\"react-inputs-validation__radiobox__input___2uX2-\",\"radiobox__label\":\"react-inputs-validation__radiobox__label___2tQsB\",\"checked\":\"react-inputs-validation__checked___2O0Ju\",\"radiobox__item\":\"react-inputs-validation__radiobox__item___ejuz1\",\"checkbox__wrapper\":\"react-inputs-validation__checkbox__wrapper___1c1rD\",\"checkbox__input\":\"react-inputs-validation__checkbox__input___1yF4X\",\"checkbox__container\":\"react-inputs-validation__checkbox__container___3I1rX\",\"checkbox__box\":\"react-inputs-validation__checkbox__box___1uj8A\",\"box\":\"react-inputs-validation__box___3E9nu\",\"select__wrapper\":\"react-inputs-validation__select__wrapper___1B4OH\",\"select__input\":\"react-inputs-validation__select__input___3h-P7\",\"select__container\":\"react-inputs-validation__select__container___3jgUR\",\"select__options-item\":\"react-inputs-validation__select__options-item___30yY4\",\"select__options-item-show-cursor\":\"react-inputs-validation__select__options-item-show-cursor___1ZT3b\",\"select__no-mouse\":\"react-inputs-validation__select__no-mouse___2uRg6\",\"select__hover-active\":\"react-inputs-validation__select__hover-active___2z1MQ\",\"active\":\"react-inputs-validation__active___3eZBB\",\"select__options-container-animate\":\"react-inputs-validation__select__options-container-animate___2Rm--\",\"show\":\"react-inputs-validation__show___2NI3u\",\"select__options-container\":\"react-inputs-validation__select__options-container___d54qE\",\"select__dropdown\":\"react-inputs-validation__select__dropdown___11yDr\",\"select__dropdown-icon\":\"react-inputs-validation__select__dropdown-icon___1T5r2\",\"select__dropdown-name\":\"react-inputs-validation__select__dropdown-name___3hghL\",\"select__dropdown-icon-container\":\"react-inputs-validation__select__dropdown-icon-container___2ild-\"};","const empty = (v: string) => (v.replace(/\\s/g, '').length ? false : true);\nconst number = (v: number, min: number = 0, max: number = 999999999999) => {\n if (!isNumeric(v)) {\n return false;\n }\n return v < min || v > max ? false : true;\n};\n// TODO: find a better type for regex\nconst reg = (reg: any, v: string) => {\n let err = true;\n if (reg.test(v)) {\n err = false;\n }\n return err;\n};\nconst isNumeric = (v: any) => {\n return !isNaN(parseFloat(v)) && isFinite(v);\n};\n\ninterface Validator {\n [key: string]: Function;\n}\n\nconst validator: Validator = {\n reg,\n empty,\n number,\n};\nexport default validator;\n","const camelize = (str: string) => {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) => {\n if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\n });\n};\n\nconst toCamelCase = (str: string) => (capitalLize: boolean = false) => {\n const res = camelize(str);\n return capitalLize ? res.substr(0, 1).toUpperCase() + res.substr(1, res.length) : res;\n};\n\ninterface Utils {\n [key: string]: Function;\n}\n\nconst utils: Utils = {\n camelize,\n toCamelCase,\n};\nexport default utils;\n","import Textbox from './Textbox';\nimport Textarea from './Textarea';\nimport Select from './Select';\nimport Checkbox from './Checkbox';\nimport Radiobox from './Radiobox';\n\nif (typeof window !== 'undefined') {\n (window).Textbox = Textbox;\n (window).Textarea = Textarea;\n (window).Radiobox = Radiobox;\n (window).Checkbox = Checkbox;\n (window).Select = Select;\n}\n\nexport { Textbox, Textarea, Select, Checkbox, Radiobox };\n","import * as React from 'react';\nimport message from './message';\nimport validator from './validator';\nimport utils from './utils';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'textbox';\nconst VALIDATE_OPTION_TYPE_LIST = ['string', 'number'];\nconst DEFAULT_MAX_LENGTH = 524288; // Default value is 524288\nconst DEFAULT_AUTO_COMPLETE = 'on'; // Default value is on\ninterface DefaultValidationOption {\n locale?: string;\n reg?: string;\n min?: number;\n max?: number;\n type?: string;\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n length?: number;\n regMsg?: string;\n compare?: string;\n required?: boolean;\n msgOnError?: string;\n msgOnSuccess?: string;\n customFunc?: undefined | Function;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { reg, min, max, type, name, check, length, regMsg, compare, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n compare = typeof compare !== 'undefined' ? compare : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n compare,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n autoComplete?: string;\n maxLength?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n type: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n autoComplete: string;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n disabled: false,\n validate: false,\n autoComplete: DEFAULT_AUTO_COMPLETE,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.input = React.createRef();\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n let v = node.current.value;\n if (this.props.maxLength !== '') {\n if (v.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { type } = getDefaultValidationOption(validationOption);\n // FORMAT NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n v = String(this.autoFormatNumber(v));\n }\n const { onChange } = this.props;\n onChange && onChange(v, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, compare, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const node: { [key: string]: any } | null = this.input;\n if (node === null) {\n return;\n }\n const value = val || node.current.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK NUMBER\n if (type === VALIDATE_OPTION_TYPE_LIST[1]) {\n if (!validator[type](value)) {\n this.handleCheckEnd(true, msg.invalid(nameText));\n return;\n }\n if (min || max) {\n if (min && max) {\n if (!validator[type](value, min, max)) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (!validator[type](value, min)) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (!validator[type](value, 0, max)) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n // CHECK EQUAL\n if (compare && compare !== '') {\n if (value !== compare) {\n this.handleCheckEnd(true, msg.twoInputsNotEqual());\n return;\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n autoFormatNumber(v: number | string) {\n const DOT = '.';\n let res = '';\n let hasDot = false;\n String(v)\n .split('')\n .filter(i => {\n const charCode = i.toLowerCase().charCodeAt(0);\n if ((charCode >= 48 && charCode <= 57) || (charCode === 46 && !hasDot)) {\n if (charCode === 46) {\n hasDot = true;\n }\n res += i;\n }\n });\n if (res.length && res[0] === DOT) {\n res = `0${res}`;\n }\n return res;\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n autoComplete,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textbox__wrapper']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textbox__container']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textbox__input']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","/** @license React v16.6.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,A=n?Symbol.for(\"react.memo\"):\n60115,B=n?Symbol.for(\"react.lazy\"):60116,C=\"function\"===typeof Symbol&&Symbol.iterator;function aa(a,b,e,c,d,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[e,c,d,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction D(a){for(var b=arguments.length-1,e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cQ.length&&Q.push(a)}\nfunction T(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h {\n let { reg, min, max, type, name, check, length, regMsg, required, showMsg, locale, msgOnError, msgOnSuccess, customFunc } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n reg = typeof reg !== 'undefined' ? reg : '';\n min = typeof min !== 'undefined' ? min : 0;\n max = typeof max !== 'undefined' ? max : 0;\n type = typeof type !== 'undefined' ? type : 'string';\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n length = typeof length !== 'undefined' ? length : 0;\n regMsg = typeof regMsg !== 'undefined' ? regMsg : '';\n required = typeof required !== 'undefined' ? required : true;\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n customFunc = typeof customFunc !== 'undefined' ? customFunc : undefined;\n return {\n reg,\n min,\n max,\n type,\n name,\n check,\n length,\n regMsg,\n locale,\n required,\n showMsg,\n msgOnError,\n msgOnSuccess,\n customFunc,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n type?: string;\n value?: string;\n disabled?: boolean;\n validate?: boolean;\n maxLength?: string | number;\n cols?: string | number;\n rows?: string | number;\n placeholder?: string;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n validationOption?: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n cols: string | number;\n rows: string | number;\n disabled: boolean;\n validate: boolean;\n maxLength: string | number;\n placeholder: string;\n classNameInput: string;\n classNameWrapper: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n type: 'text',\n value: '',\n cols: DEFAULT_ROWS,\n rows: DEFAULT_COLS,\n disabled: false,\n validate: false,\n maxLength: DEFAULT_MAX_LENGTH,\n placeholder: '',\n classNameInput: '',\n classNameWrapper: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private value: string;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.value = props.value;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(e: React.ChangeEvent) {\n this.value = e.target.value;\n if (this.props.maxLength !== '') {\n if (this.value.length > Number(this.props.maxLength)) {\n return;\n }\n }\n const { onChange } = this.props;\n onChange && onChange(this.value, e);\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n onKeyUp(e: React.KeyboardEvent) {\n const { onKeyUp } = this.props;\n if (onKeyUp) {\n this.check();\n onKeyUp(e);\n }\n }\n\n check(val: null | string = null) {\n const { validationOption } = this.props as PropsWithDefaults;\n const { reg, min, max, type, name, check, length, regMsg, locale, required, msgOnSuccess, customFunc } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (type) {\n if (VALIDATE_OPTION_TYPE_LIST.indexOf(type) !== -1) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const value = val || this.value;\n const nameText = name ? name : '';\n // CHECK EMPTY\n if (required) {\n if (validator.empty(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (String(value) !== '') {\n // CHECK REGEX\n if (reg) {\n if (validator['reg'](reg, value)) {\n this.handleCheckEnd(true, regMsg !== '' ? regMsg : msg.invalid(nameText));\n return;\n }\n }\n // CHECK STRING\n if (type === VALIDATE_OPTION_TYPE_LIST[0]) {\n if (min || max) {\n if (min && max) {\n if (String(value).length < min || String(value).length > max) {\n this.handleCheckEnd(true, msg.inBetween(nameText)(min)(max));\n return;\n }\n } else {\n if (min) {\n if (String(value).length < min) {\n this.handleCheckEnd(true, msg.lessThan(nameText)(min));\n return;\n }\n }\n if (max) {\n if (String(value).length > max) {\n this.handleCheckEnd(true, msg.greaterThan(nameText)(max));\n return;\n }\n }\n }\n }\n if (length) {\n if (String(value).length !== length) {\n this.handleCheckEnd(true, msg.lengthEqual(nameText)(length));\n return;\n }\n }\n }\n }\n // CHECK CUSTOM FUNCTION\n if (customFunc && typeof customFunc === 'function') {\n const customFuncResult = customFunc(value);\n if (customFuncResult !== true) {\n this.handleCheckEnd(true, customFuncResult);\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n } else {\n console.error(`The valid ${utils.toCamelCase(TYPE)(true)} \"type\" options in validationOption are [${VALIDATE_OPTION_TYPE_LIST.map(i => i)}]`);\n }\n } else {\n console.error('Please provide \"type\" in validationOption');\n }\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n type,\n value,\n disabled,\n maxLength,\n placeholder,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n validationOption,\n cols,\n rows,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['textarea__wrapper']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['textarea__container']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${reactInputsValidationCss['textarea__input']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errmsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'select';\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position) {\n const p = position || 0;\n return this.indexOf(searchString, p) === p;\n };\n}\n\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList: OptionListItem[];\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent | Event) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n selectHtml?: React.ReactNode;\n selectOptionListItemHtml?: React.ReactNode;\n classNameWrapper?: string;\n classNameContainer?: string;\n classNameSelect?: string;\n classNameOptionListContainer?: string;\n classNameDropdownIconOptionListItem?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleSelect?: object;\n customStyleOptionListContainer?: object;\n customStyleDropdownIcon?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n classNameOptionListContainer: string;\n classNameDropdownIconOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleOptionListItem: object;\n customStyleOptionListContainer: object;\n customStyleDropdownIcon: object;\n validationOption: object;\n onChange: (res: string, e: React.MouseEvent | Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n value: string;\n show: boolean;\n isTyping: boolean;\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n keycodeList: number[];\n validate: boolean;\n}\n\ninterface Node {\n [key: string]: any;\n}\n\nclass Index extends React.Component {\n static defaultProps: Props = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n classNameOptionListContainer: '',\n classNameDropdownIconOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleOptionListItem: {},\n customStyleOptionListContainer: {},\n customStyleDropdownIcon: {},\n validationOption: {},\n onChange: () => {},\n };\n private wrapper: React.RefObject;\n private itemsWrapper: React.RefObject;\n private input: React.RefObject;\n private optionItems: React.RefObject[];\n private focus: boolean;\n private corrected: boolean;\n // TODO: find a better type\n private typingTimeout: any;\n private currentFocus: number | undefined;\n constructor(props: any) {\n super(props);\n this.state = {\n value: props.value,\n show: false,\n isTyping: false,\n err: false,\n msg: '',\n successMsg: undefined,\n keycodeList: [],\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.pageClick = this.pageClick.bind(this);\n this.wrapper = React.createRef();\n this.itemsWrapper = React.createRef();\n this.input = React.createRef();\n this.optionItems = [];\n this.focus = false;\n this.corrected = false;\n this.currentFocus = undefined;\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n if (prevState.value !== nextProps.value) {\n return {\n value: nextProps.value,\n };\n }\n return null;\n }\n\n componentDidMount() {\n window.addEventListener('mousedown', this.pageClick);\n window.addEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.addEventListener('keydown', this.onKeyDown);\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevState.show !== this.state.show) {\n if (this.state.show) {\n this.resetCurrentFocus();\n }\n }\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('mousedown', this.pageClick);\n window.removeEventListener('touchstart', this.pageClick);\n const node = this.wrapper.current;\n if (node) {\n node.removeEventListener('keydown', this.onKeyDown);\n }\n }\n\n onChange(value: string, e: React.MouseEvent | Event) {\n const { onChange } = this.props;\n onChange && onChange(String(value), e);\n this.setState({ value });\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent | Event) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n this.focus = true;\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n getIndex(list: OptionListItem[], val: string) {\n let key = -1;\n for (let i = 0; i < list.length; i += 1) {\n if (list[i].id === val) {\n key = i;\n break;\n }\n }\n return key;\n }\n\n resetCurrentFocus() {\n const { value } = this.state;\n const { optionList } = this.props;\n this.currentFocus = this.getIndex(optionList, value);\n this.scroll();\n }\n\n onKeyDown(e: any) {\n this.setState({ isTyping: true });\n if (e.preventDefault) {\n e.preventDefault();\n }\n const { show, value } = this.state;\n if (!show) {\n return;\n }\n const x = this.optionItems;\n const { optionList } = this.props;\n this.currentFocus = typeof this.currentFocus !== 'undefined' ? this.currentFocus : this.getIndex(optionList, value);\n let direction = undefined;\n const { keyCode } = e;\n const keyCodeEsc = 27;\n const keyCodeDown = 40;\n const keyCodeUp = 38;\n const keyCodeEnter = 13;\n const selectKeyList = [keyCodeEsc, keyCodeDown, keyCodeUp, keyCodeEnter];\n if (selectKeyList.indexOf(keyCode) !== -1) {\n if (keyCode === keyCodeEsc) {\n this.setState({ show: false });\n this.resetCurrentFocus();\n return;\n }\n if (keyCode === keyCodeDown) {\n direction = 'down';\n this.currentFocus += 1;\n if (this.currentFocus > optionList.length - 1) {\n this.currentFocus = optionList.length - 1;\n }\n this.addActive();\n } else if (keyCode === keyCodeUp) {\n direction = 'up';\n this.currentFocus -= 1;\n if (this.currentFocus < 0) {\n this.currentFocus = 0;\n }\n this.addActive();\n } else if (keyCode === keyCodeEnter) {\n if (this.currentFocus > -1) {\n if (x) {\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.click();\n }\n }\n }\n } else {\n const { keycodeList } = this.state;\n this.setTimeoutTyping();\n const newkeyCodeList = [...keycodeList, keyCode];\n const str = String.fromCharCode(...newkeyCodeList).toLowerCase();\n let index = -1;\n optionList.filter((i, k) => {\n const { name } = i;\n if (name.toLowerCase().startsWith(str)) {\n if (index === -1) {\n index = k;\n }\n }\n });\n if (index !== -1) {\n this.currentFocus = index;\n this.addActive();\n }\n this.setState({ keycodeList: newkeyCodeList });\n }\n this.scroll(direction);\n return this.currentFocus;\n }\n\n setTimeoutTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n this.typingTimeout = setTimeout(() => {\n this.setState({ keycodeList: [] });\n }, 250);\n }\n\n scroll(direction: undefined | string = undefined) {\n const itemsWrapperNode: Node | null = this.itemsWrapper;\n /* istanbul ignore next */\n if (itemsWrapperNode === null) {\n return;\n }\n const containerHeight = itemsWrapperNode.current.offsetHeight;\n const containerScrollTop = itemsWrapperNode.current.scrollTop;\n /* istanbul ignore next */\n if (!this.currentFocus || !this.optionItems[this.currentFocus]) {\n return;\n }\n const optionItemsNode: Node | null = this.optionItems[this.currentFocus];\n /* istanbul ignore next */\n if (optionItemsNode === null) {\n return;\n }\n const itemHeight = optionItemsNode.current.offsetHeight;\n if (direction) {\n if (direction === 'down') {\n const bound = containerScrollTop + containerHeight;\n const heightItems = this.currentFocus * itemHeight;\n const heightContainer = bound - itemHeight;\n if (heightItems >= heightContainer) {\n const offset = Math.abs(heightItems - heightContainer - itemHeight);\n if (offset >= 0 && !this.corrected) {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight - offset;\n this.corrected = true;\n } else {\n itemsWrapperNode.current.scrollTop = containerScrollTop + itemHeight;\n }\n }\n }\n if (direction === 'up') {\n this.corrected = false;\n if (this.currentFocus * itemHeight <= containerScrollTop) {\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n } else {\n this.corrected = false;\n itemsWrapperNode.current.scrollTop = this.currentFocus * itemHeight;\n }\n }\n\n addActive() {\n const x = this.optionItems;\n if (!x) return false;\n this.removeActive();\n if (typeof this.currentFocus === 'undefined') return;\n if (this.currentFocus >= x.length) this.currentFocus = 0;\n if (this.currentFocus < 0) this.currentFocus = x.length - 1;\n const node: Node | null = x[this.currentFocus];\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n node.current.className += ` ${reactInputsValidationCss['select__hover-active']}`;\n }\n\n removeActive() {\n const x = this.optionItems;\n for (let i = 0; i < x.length; i += 1) {\n const node: Node | null = x[i];\n node.current.className = node.current.className.replace(reactInputsValidationCss['select__hover-active'], '');\n }\n }\n\n pageClick(e: Event) {\n const node: Node | null = this.wrapper;\n /* istanbul ignore next */\n if (!node) {\n return;\n }\n /* istanbul ignore next */\n if (node.current.contains(e.target)) {\n return;\n }\n if (this.focus) {\n this.onBlur(e);\n this.focus = false;\n }\n this.toggleShow(false);\n }\n\n toggleShow(show: boolean) {\n this.setState({ show });\n }\n\n check(val: null | string = null) {\n let { value } = this.state;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n optionList,\n disabled,\n classNameWrapper,\n classNameContainer,\n classNameSelect,\n classNameOptionListContainer,\n classNameOptionListItem,\n classNameDropdownIconOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleSelect,\n customStyleOptionListContainer,\n customStyleOptionListItem,\n selectHtml,\n selectOptionListItemHtml,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { value, err, msg, show, successMsg, isTyping } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['select__wrapper']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['select__container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const inputClass = `${reactInputsValidationCss['select__input']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectClass = `${classNameSelect} ${reactInputsValidationCss['ellipsis']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListContainerClass = `${classNameOptionListContainer} ${reactInputsValidationCss['select__options-container']} ${err && reactInputsValidationCss['error']} ${show &&\n reactInputsValidationCss['show']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const selectOptionListItemClass = `${!isTyping && reactInputsValidationCss['select__options-item-show-cursor']} ${classNameOptionListItem} ${\n reactInputsValidationCss['select__options-item']\n } ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']};`;\n\n const dropdownIconClass = `${classNameDropdownIconOptionListItem} ${reactInputsValidationCss['select__dropdown-icon']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n let optionListHtml;\n let item: OptionListItem | undefined;\n optionList.filter(i => {\n if (String(i.id) === String(value)) {\n item = i;\n }\n });\n if (optionList.length) {\n if (selectOptionListItemHtml) {\n optionListHtml = selectOptionListItemHtml;\n } else {\n optionListHtml = optionList.map((i, k) => {\n this.optionItems[k] = React.createRef();\n return (\n {\n this.currentFocus = k;\n this.addActive();\n }}\n onMouseMove={() => {\n this.setState({ isTyping: false });\n }}\n onMouseOut={() => {\n this.removeActive();\n }}\n className={String(i.id) === String(value) ? `${selectOptionListItemClass} ${reactInputsValidationCss['active']}` : `${selectOptionListItemClass}`}\n key={k}\n style={customStyleOptionListItem}\n onClick={e => {\n this.onChange(i.id, e);\n }}\n >\n {i.name}\n
\n );\n });\n }\n }\n let selectorHtml = selectHtml;\n if (!selectorHtml) {\n selectorHtml = (\n
\n
{item ? item.name : ''}
\n
\n
\n );\n }\n return (\n {\n this.onClick(e);\n !disabled ? this.toggleShow(!show) : ``;\n }}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ref={this.wrapper}\n >\n
\n {}} ref={this.input} />\n
\n {selectorHtml}\n
\n
\n {optionListHtml}\n
\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'checkbox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | boolean;\n checked?: boolean;\n disabled?: boolean;\n labelHtml?: React.ReactNode;\n validate?: boolean;\n onChange: (res: boolean, e: Event) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameInput?: string;\n classNameWrapper?: string;\n classNameInputBox?: string;\n classNameContainer?: string;\n customStyleInput?: object;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInputBox?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | boolean;\n checked: boolean;\n disabled: boolean;\n validate: boolean;\n labelHtml: React.ReactNode;\n classNameInput: string;\n classNameWrapper: string;\n classNameInputBox: string;\n classNameContainer: string;\n customStyleInput: object;\n customStyleWrapper: object;\n customStyleInputBox: object;\n customStyleContainer: object;\n validationOption: object;\n onChange: (res: boolean, e: Event) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n checked: boolean;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n checked: false,\n disabled: false,\n validate: false,\n labelHtml: undefined,\n classNameInput: '',\n classNameWrapper: '',\n classNameInputBox: '',\n classNameContainer: '',\n customStyleInput: {},\n customStyleWrapper: {},\n customStyleInputBox: {},\n customStyleContainer: {},\n validationOption: {},\n onChange: () => {},\n };\n private input: React.RefObject;\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n checked: props.checked,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.input = React.createRef();\n }\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n if (nextProps.checked !== prevState.checked) {\n return {\n checked: nextProps.checked,\n };\n }\n return null;\n }\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(e: any) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n const checked = !this.state.checked;\n this.setState({ checked });\n const { onChange } = this.props;\n onChange && onChange(checked, e);\n // when props.validate toggled\n if (this.state.err) {\n this.setState({ err: false });\n } else {\n this.setState({ successMsg: undefined });\n }\n }\n onClick(e: React.MouseEvent) {\n const { disabled } = this.props;\n if (disabled) {\n return;\n }\n this.onChange(e);\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n check() {\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, locale, required, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (required) {\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (!this.state.checked) {\n this.handleCheckEnd(true, msg.unchecked(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n labelHtml,\n classNameWrapper,\n classNameContainer,\n classNameInputBox,\n customStyleWrapper,\n customStyleContainer,\n customStyleInputBox,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, checked, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${reactInputsValidationCss['checkbox__wrapper']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${reactInputsValidationCss['checkbox__container']} ${checked && reactInputsValidationCss['checked']} ${err &&\n reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const boxClass = `${classNameInputBox} ${reactInputsValidationCss['checkbox__box']} ${err && reactInputsValidationCss['error']} ${checked &&\n reactInputsValidationCss['checked']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${checked && reactInputsValidationCss['checked']} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' &&\n !err &&\n reactInputsValidationCss['success']} ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n return (\n
\n
\n
\n
\n \n
\n \n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n","import * as React from 'react';\nimport message from './message';\nimport { REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE, DEFAULT_LOCALE } from './const';\nimport reactInputsValidationCss from './react-inputs-validation.css';\nconst TYPE = 'radiobox';\ninterface DefaultValidationOption {\n name?: string;\n check?: boolean;\n showMsg?: boolean;\n required?: boolean;\n locale?: string;\n msgOnError?: string;\n msgOnSuccess?: string;\n}\n\nconst getDefaultValidationOption = (obj: DefaultValidationOption) => {\n let { name, check, required, showMsg, locale, msgOnError, msgOnSuccess } = obj;\n locale = typeof locale !== 'undefined' ? locale : DEFAULT_LOCALE;\n name = typeof name !== 'undefined' ? name : '';\n check = typeof check !== 'undefined' ? check : true;\n showMsg = typeof showMsg !== 'undefined' ? showMsg : true;\n required = typeof required !== 'undefined' ? required : true;\n msgOnSuccess = typeof msgOnSuccess !== 'undefined' ? msgOnSuccess : '';\n msgOnError = typeof msgOnError !== 'undefined' ? msgOnError : '';\n return {\n name,\n check,\n showMsg,\n required,\n locale,\n msgOnError,\n msgOnSuccess,\n };\n};\n\nconst isValidateValue = (value: any) => {\n const v = String(value);\n if (v === '' || v === 'null' || v === 'undefined') {\n return true;\n }\n return false;\n};\n\ninterface OptionListItem {\n id: string;\n name: string;\n}\n\ninterface Props {\n tabIndex?: string | number;\n id?: string;\n name?: string;\n value?: string | number;\n disabled?: boolean;\n validate?: boolean;\n optionList?: OptionListItem[];\n onChange: (res: string, e: React.ChangeEvent) => void;\n onClick?: (e: React.MouseEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n validationOption?: object;\n classNameWrapper?: string;\n classNameInput?: string;\n classNameContainer?: string;\n classNameOptionListItem?: string;\n customStyleWrapper?: object;\n customStyleContainer?: object;\n customStyleInput?: object;\n customStyleOptionListItem?: object;\n validationCallback?: (res: boolean) => void;\n}\n\ninterface DefaultProps {\n tabIndex: string | number;\n id: string;\n name: string;\n value: string | number;\n disabled: boolean;\n validate: boolean;\n optionList: OptionListItem[];\n classNameWrapper: string;\n classNameInput: string;\n classNameContainer: string;\n classNameOptionListItem: string;\n customStyleWrapper: object;\n customStyleContainer: object;\n customStyleInput: object;\n customStyleOptionListItem: object;\n validationOption: object;\n onChange: (res: string, e: React.ChangeEvent) => void;\n}\n\ntype PropsWithDefaults = Props & DefaultProps;\n\ninterface State {\n err: boolean;\n msg: string;\n successMsg: undefined | string;\n value: string;\n validate: boolean;\n}\n\nclass Index extends React.Component {\n static defaultProps: DefaultProps = {\n tabIndex: -1,\n id: '',\n name: '',\n value: '',\n disabled: false,\n validate: false,\n optionList: [],\n classNameWrapper: '',\n classNameInput: '',\n classNameContainer: '',\n classNameOptionListItem: '',\n customStyleWrapper: {},\n customStyleContainer: {},\n customStyleInput: {},\n customStyleOptionListItem: {},\n validationOption: {},\n onChange: () => {},\n };\n constructor(props: any) {\n super(props);\n this.state = {\n err: false,\n msg: '',\n successMsg: undefined,\n value: props.value,\n validate: props.validate,\n };\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n if (nextProps.validate !== prevState.validate) {\n return {\n validate: nextProps.validate,\n };\n }\n if (nextProps.value !== prevState.value) {\n const o: { value: string | any; err?: boolean; successMsg?: undefined } = { value: nextProps.value };\n if (prevState.err) {\n o['err'] = false;\n } else {\n o['successMsg'] = undefined;\n }\n return o;\n }\n return null;\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.state.validate !== prevState.validate) {\n this.check();\n }\n }\n\n onChange(val: string, e: React.ChangeEvent) {\n const { onChange } = this.props;\n onChange && onChange(val, e);\n }\n\n onClick(e: React.MouseEvent) {\n const { onClick } = this.props;\n onClick && onClick(e);\n }\n\n onBlur(e: React.FocusEvent) {\n const { onBlur } = this.props;\n if (onBlur) {\n this.check();\n onBlur(e);\n }\n }\n\n onFocus(e: React.FocusEvent) {\n const { onFocus } = this.props;\n if (onFocus) {\n onFocus(e);\n }\n }\n\n check(val: null | string = null) {\n let { value } = this.props;\n if (val != null) {\n value = val;\n }\n const { validationOption } = this.props as PropsWithDefaults;\n const { name, check, required, locale, msgOnSuccess } = getDefaultValidationOption(validationOption);\n if (!check) {\n return;\n }\n if (!message[locale] || !message[locale][TYPE]) {\n console.error(REACT_INPUTS_VALIDATION_CUSTOM_ERROR_MESSAGE_EXAMPLE);\n return;\n }\n const msg = message[locale][TYPE];\n const nameText = name ? name : '';\n if (required) {\n if (isValidateValue(value)) {\n this.handleCheckEnd(true, msg.empty(nameText));\n return;\n }\n }\n if (msgOnSuccess) {\n this.setState({ successMsg: msgOnSuccess });\n }\n this.handleCheckEnd(false, msgOnSuccess);\n }\n\n handleCheckEnd(err: boolean, message: string) {\n let msg = message;\n const { validationOption } = this.props as PropsWithDefaults;\n const { msgOnError } = getDefaultValidationOption(validationOption);\n if (err && msgOnError) {\n msg = msgOnError;\n }\n this.setState({ err, msg });\n const { validationCallback } = this.props;\n validationCallback && validationCallback(err);\n }\n\n render() {\n const {\n tabIndex,\n id,\n name,\n value,\n disabled,\n optionList,\n classNameWrapper,\n classNameContainer,\n classNameInput,\n classNameOptionListItem,\n customStyleWrapper,\n customStyleContainer,\n customStyleInput,\n customStyleOptionListItem,\n validationOption,\n } = this.props as PropsWithDefaults;\n\n const { err, msg, successMsg } = this.state;\n\n const wrapperClass = `${classNameWrapper} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__wrapper']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const containerClass = `${classNameContainer} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__container']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const inputClass = `${classNameInput} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__input']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const labelClass = `${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__label']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const optionListItemClass = `${classNameOptionListItem} ${err && reactInputsValidationCss['error']} ${typeof successMsg !== 'undefined' && !err && reactInputsValidationCss['success']} ${\n reactInputsValidationCss['radiobox__item']\n } ${disabled && reactInputsValidationCss['disabled']}`;\n\n const errMsgClass = `${reactInputsValidationCss['msg']} ${err && reactInputsValidationCss['error']}`;\n const successMsgClass = `${reactInputsValidationCss['msg']} ${!err && reactInputsValidationCss['success']}`;\n\n let msgHtml;\n const { showMsg } = getDefaultValidationOption(validationOption);\n if (showMsg && err && msg) {\n msgHtml =
{msg}
;\n }\n if (showMsg && !err && typeof successMsg !== 'undefined') {\n msgHtml =
{successMsg}
;\n }\n\n let optionHtml;\n if (optionList.length) {\n optionHtml = optionList.map((i, k) => {\n const checked = String(i.id) === String(value) ? true : false;\n return (\n
\n this.onChange(i.id, e)}\n style={customStyleInput}\n />\n \n
\n );\n });\n }\n\n return (\n
\n
\n {optionHtml}\n
\n {msgHtml}\n
\n );\n }\n}\n\nexport default Index;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 89d0365..7f7e293 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-inputs-validation", - "version": "2.1.4", - "description": "a react inputs validation component", + "version": "2.2.0", + "description": "React inputs validation component", "main": "index.js", "repository": { "type": "git", diff --git a/react-inputs-validation.gif b/react-inputs-validation.gif new file mode 100644 index 0000000..4a60d70 Binary files /dev/null and b/react-inputs-validation.gif differ diff --git a/src/js/Inputs/Checkbox.tsx b/src/js/Inputs/Checkbox.tsx index 17309db..e474727 100644 --- a/src/js/Inputs/Checkbox.tsx +++ b/src/js/Inputs/Checkbox.tsx @@ -180,7 +180,6 @@ class Index extends React.Component { onFocus(e: React.FocusEvent) { const { onFocus } = this.props; if (onFocus) { - // this.check(); onFocus(e); } } diff --git a/src/js/Inputs/Textarea.tsx b/src/js/Inputs/Textarea.tsx index 1c19bc4..4df306b 100644 --- a/src/js/Inputs/Textarea.tsx +++ b/src/js/Inputs/Textarea.tsx @@ -196,7 +196,6 @@ class Index extends React.Component { onFocus(e: React.FocusEvent) { const { onFocus } = this.props; if (onFocus) { - // this.check(); onFocus(e); } } diff --git a/src/js/Inputs/Textbox.tsx b/src/js/Inputs/Textbox.tsx index a632b76..496fccf 100644 --- a/src/js/Inputs/Textbox.tsx +++ b/src/js/Inputs/Textbox.tsx @@ -208,7 +208,6 @@ class Index extends React.Component { onFocus(e: React.FocusEvent) { const { onFocus } = this.props; if (onFocus) { - // this.check(); onFocus(e); } }