ModalValidatingInput.js 3.95 KB
import React, { Component } from 'react';

import greenCheck from '../../img/outlineGreenCheck.svg'
import alertError from '../../img/alert_error.svg'

import * as SelectActionCreators from '../actions/profilationSelect'
import {connect} from 'react-redux';

/*
	<ValidatingInput 
		            	allowNonValidInput={false}
					label={'NOME'}
					pattern={"[A-zÀ-ÿ ]*"}
					name={'nomeIntestatario'}
					placeholder={'Nome'}
					stepIndex={2}
					/>
*/

class ModalValidatingInput extends Component{
	constructor(props){
		super(props)
		this.state={
			focus:false,
		}
		this.handleChange=this.handleChange.bind(this)
		this.setFocus=this.setFocus.bind(this)
	}

	setFocus(val){
		this.setState({
			...this.state,
			focus:val
		})
	}

	handleChange(e){
		/*var performChange=true;
		if(this.props.name==='volumiAccise' && (e.target.value>100 || e.target.value<0)){
			performChange=false
		}


		
		if(performChange){

			if(this.props.name==='referentPhone'){
			this.props.updateActivation(4,'sendAgainNumber',{
			...this.props.activationSteps[4].sendAgainNumber,
			value:e.target.value,
			valid:e.target.validity.valid&&e.target.value!==''})	
		}

			this.props.updateActivation(this.props.stepIndex,this.props.name,{
			...this.props.activationSteps[this.props.stepIndex][this.props.name],
			value:e.target.value,
			valid:e.target.validity.valid&&e.target.value!==''})	
		}*/

		this.props.updateModalValues(this.props.modal,this.props.name,{
			...this.props.modalContacts[this.props.modal][this.props.name],
			value:e.target.value,
			valid:e.target.validity.valid&&e.target.value!==''})	
		
	}

	render(){
		console.log('modalprops',this.props)
		const className='wrapper-input '+this.props.className
		const value=this.props.modalContacts[this.props.modal][this.props.name].value
		const valid=this.props.modalContacts[this.props.modal][this.props.name].valid
	

		return(<div className={className}>
		                <label htmlFor="">{this.props.label}</label>
		                {typeof this.props.subLabel !== 'undefined' &&
		                	<p className='wrapper-input_subLabel'>
		                		{this.props.subLabel}
		                	</p>

		                }
			<div className="input_validation">
		                <input
		                type={(typeof this.props.type==='undefined')? 'text': this.props.type}
		                pattern={this.props.pattern}
		                onChange={this.handleChange} 
		                className='' 
		                name={this.props.name} 
		                value={value} 
		                placeholder={this.props.placeholder}
		                onFocus={() => this.setFocus(true)} 
		                onBlur={() => this.setFocus(false)} 
		                />

		                {valid && value!=='' &&

		                  <div className="validationIcon">
		                    <img src={greenCheck} alt=""/>
		                  </div>
		              }

		                {(!valid && value!=='' && !this.state.focus)&&

		                <div className="validationIcon">
		                  <img src={alertError} alt=""/>
		                </div>
		                }
			</div>
		              </div>)
	}
}

const mapStateToProps = state => {
  return {

    modalContacts: state.ProfilationSelectReducer.modalContacts,

  }
};

const mapDispatchToProps = dispatch => ({
	updateStoreValue: (prop,value) => 
    dispatch(SelectActionCreators.changeProp(prop,value)),
  updatePropValue: (steps, activeStep) => dispatch(SelectActionCreators.changeValue(steps, activeStep)),
  updateModalValues: (modal,field,value) => dispatch(SelectActionCreators.updateModalValues(modal,field,value)),

});

/*Profilation.propTypes = {
  steps: PropTypes.array.isRequired,
  activeStep: PropTypes.number.isRequired,
  updatePropValue: PropTypes.func.isRequired
}*/

export default connect(mapStateToProps, mapDispatchToProps)(ModalValidatingInput);