ProfilationStep4.js 2.98 KB
import React, {Component} from "react";
import Select from "react-select";


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

var flexibilityOptions = [
    { value: "molto", label: "molto" },
    { value: "poco", label: "poco" },
    { value: "abbastanza", label: "abbastanza" }
];

function changeField(name, event, props) {
    var completed = true;
    if (event !== null && event.value !== "") {
        for (var property in props.step) {
            if (props.step.hasOwnProperty(property)) {
                if (
                    property !== name &&
                    property !== "isComplete" &&
                    property !== "isActive"
                ) {
                    completed = completed && props.step[property] !== "";
                }
            }
        }
    } else {
        completed = false;

    }

    let step = {...props.step};
	step[name] = event.value;
	step.isComplete = completed;
    props.updatePropValue(props.index, step);
}

class ProfilationStep4 extends Component{
    constructor(props) {
        super(props);

        this.handleFocus=this.handleFocus.bind(this)
    }

    handleFocus(index){
        this.props.activeStep(this.props.index)

        this.props.updateStoreValue('tabIndex',index)
    }

    componentDidUpdate(){
        if(!this.props.isActive){
            document.querySelector('*[tabindex="10"]').blur()            
        }

        if(this.props.step.isComplete) {
            this.props.updateDatabucket({
                flexibility: this.props.step.flexibility
            });
        }    
    }

    componentDidMount(){
        if(this.props.isActive){
            
            this.selectInput.focus();

            
        }
    }

render(){ 
    const props=this.props
    return (
    

	<div className="ProfilationStep" onClick={e => props.activeStep(props.index)}>

		<span>
			2. Avere maggiore flessibilità nei pagamenti è un aspetto che mi interessa
			<span className="ProfilationStep__span">
        {window.innerWidth>=0 && <Select
            ref={(input) => { this.selectInput = input; }} 
			name="flexibility"
			value={props.step.flexibility}
			onChange={e => changeField("flexibility", e, props)}
			options={flexibilityOptions}
			searchable={false}
			autosize={true}
            placeholder="placeholder"
            onFocus={() => this.handleFocus(10)}
            openOnFocus={true}
            tabIndex={'10'}
		/>};
      </span>
		</span>
	</div>
);}
}
const mapStateToProps = state => {
    return {

    }};

const mapDispatchToProps = dispatch => ({
     updateStoreValue: (prop,value) =>
     dispatch(SelectActionCreators.changeProp(prop,value)),
     updateDatabucket: (databucket) => 
        dispatch(SelectActionCreators.updateDatabucketProfilation(databucket))
});

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