@@ -17,6 +17,8 @@ var _lodash = require("lodash");
1717
1818var _reactFinalForm = require ( "react-final-form" ) ;
1919
20+ var _InputNumberButtons = _interopRequireDefault ( require ( "./InputNumberButtons/InputNumberButtons" ) ) ;
21+
2022var _OptionsMenu = _interopRequireDefault ( require ( "../../elements/OptionsMenu/OptionsMenu" ) ) ;
2123
2224var _TextTooltipTemplate = _interopRequireDefault ( require ( "../TooltipTemplate/TextTooltipTemplate" ) ) ;
@@ -136,7 +138,7 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
136138 ( 0 , _useDetectOutsideClick . useDetectOutsideClick ) ( ref , function ( ) {
137139 return setShowValidationRules ( false ) ;
138140 } ) ;
139- var formFieldClassNames = ( 0 , _classnames . default ) ( 'form-field form-field -input' , className ) ;
141+ var formFieldClassNames = ( 0 , _classnames . default ) ( 'form-field-input' , className ) ;
140142 var inputWrapperClassNames = ( 0 , _classnames . default ) ( 'form-field__wrapper' , "form-field__wrapper-" . concat ( density ) , disabled && 'form-field__wrapper-disabled' , isInvalid && 'form-field__wrapper-invalid' , withoutBorder && 'without-border' ) ;
141143 var labelClassNames = ( 0 , _classnames . default ) ( 'form-field__label' , disabled && 'form-field__label-disabled' ) ;
142144 ( 0 , _react . useEffect ) ( function ( ) {
@@ -189,11 +191,6 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
189191 }
190192 } ;
191193
192- var handleInputChange = function handleInputChange ( event ) {
193- input . onChange ( event ) ;
194- onChange && onChange ( event . target . value ) ;
195- } ;
196-
197194 var handleInputFocus = function handleInputFocus ( event ) {
198195 input . onFocus ( event ) ;
199196 setIsFocused ( true ) ;
@@ -202,7 +199,7 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
202199 var handleScroll = function handleScroll ( event ) {
203200 if ( inputRef . current . contains ( event . target ) ) return ;
204201
205- if ( ! event . target . closest ( '.options-menu' ) && ! event . target . classList . contains ( 'form-field' ) ) {
202+ if ( ! event . target . closest ( '.options-menu' ) && ! event . target . classList . contains ( 'form-field-input ' ) ) {
206203 setShowValidationRules ( false ) ;
207204 }
208205 } ;
@@ -231,7 +228,8 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
231228 } , [ meta . error ] ) ;
232229
233230 var validateField = function validateField ( value ) {
234- var valueToValidate = value !== null && value !== void 0 ? value : '' ;
231+ var valueToValidate = ( 0 , _lodash . isNil ) ( value ) ? '' : String ( value ) ;
232+ if ( ! valueToValidate && ! required ) return ;
235233 var validationError = null ;
236234
237235 if ( ! ( 0 , _lodash . isEmpty ) ( validationRules ) ) {
@@ -255,6 +253,22 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
255253 }
256254
257255 if ( ( 0 , _lodash . isEmpty ) ( validationError ) ) {
256+ if ( inputProps . type === 'number' ) {
257+ if ( inputProps . max && + valueToValidate > + inputProps . max ) {
258+ validationError = {
259+ name : 'maxValue' ,
260+ label : "Max value is " . concat ( inputProps . max )
261+ } ;
262+ }
263+
264+ if ( inputProps . min && + valueToValidate < + inputProps . min ) {
265+ validationError = {
266+ name : 'minValue' ,
267+ label : "Min value is " . concat ( inputProps . min )
268+ } ;
269+ }
270+ }
271+
258272 if ( pattern && ! validationPattern . test ( valueToValidate ) ) {
259273 validationError = {
260274 name : 'pattern' ,
@@ -280,9 +294,15 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
280294 return validationError ;
281295 } ;
282296
297+ var parseField = function parseField ( val ) {
298+ if ( ! val ) return ;
299+ return inputProps . type === 'number' ? + val : val ;
300+ } ;
301+
283302 return /*#__PURE__*/ ( 0 , _jsxRuntime . jsx ) ( _reactFinalForm . Field , {
284303 validate : validateField ,
285304 name : name ,
305+ parse : parseField ,
286306 children : function children ( _ref4 ) {
287307 var _inputProps$autocompl , _meta$error$label , _meta$error ;
288308
@@ -333,7 +353,6 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
333353 pattern : pattern
334354 } , inputProps ) , input ) ) , { } , {
335355 autoComplete : ( _inputProps$autocompl = inputProps . autocomplete ) !== null && _inputProps$autocompl !== void 0 ? _inputProps$autocompl : 'off' ,
336- onChange : handleInputChange ,
337356 onBlur : handleInputBlur ,
338357 onFocus : handleInputFocus
339358 } ) )
@@ -358,7 +377,9 @@ var FormInput = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
358377 className : iconClass ,
359378 children : inputIcon
360379 } ) ]
361- } ) ]
380+ } ) , inputProps . type === 'number' && /*#__PURE__*/ ( 0 , _jsxRuntime . jsx ) ( _InputNumberButtons . default , _objectSpread ( { } , _objectSpread ( _objectSpread ( _objectSpread ( { } , inputProps ) , input ) , { } , {
381+ disabled : disabled
382+ } ) ) ) ]
362383 } ) , ( suggestionList === null || suggestionList === void 0 ? void 0 : suggestionList . length ) > 0 && isFocused && /*#__PURE__*/ ( 0 , _jsxRuntime . jsx ) ( "ul" , {
363384 className : "form-field__suggestion-list" ,
364385 children : suggestionList . map ( function ( item , index ) {
@@ -398,15 +419,15 @@ FormInput.defaultProps = {
398419 show : '' ,
399420 value : ''
400421 } ,
401- maxLength : null ,
402422 min : null ,
423+ max : null ,
403424 onBlur : function onBlur ( ) { } ,
404425 onChange : function onChange ( ) { } ,
405426 onKeyDown : function onKeyDown ( ) { } ,
406427 pattern : null ,
407428 placeholder : '' ,
408429 required : false ,
409- step : '' ,
430+ step : '1 ' ,
410431 suggestionList : [ ] ,
411432 tip : '' ,
412433 type : 'text' ,
@@ -425,8 +446,8 @@ FormInput.propTypes = {
425446 invalidText : _propTypes . default . string ,
426447 label : _propTypes . default . string ,
427448 link : _types . INPUT_LINK ,
428- maxLength : _propTypes . default . number ,
429- min : _propTypes . default . number ,
449+ min : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . number ] ) ,
450+ max : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . number ] ) ,
430451 name : _propTypes . default . string . isRequired ,
431452 onBlur : _propTypes . default . func ,
432453 onChange : _propTypes . default . func ,
0 commit comments