ProfilationStep3.js 3.58 KB
import React, {Component} from "react";
import Select from "react-select";
import PropTypes from "prop-types";

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

var environmentOptions = [
    { 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;
        console.log("completed", completed);
    }
    let step = {...props.step};
	step[name] = event.value;
	step.isComplete = completed;
    props.updatePropValue(props.index, step);
    
}

class ProfilationStep3 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)
    }
    componentDidMount(){
        if(this.props.isActive){
            
            this.selectInput.focus();
        }
        else{
            document.body.focus()
            document.body.blur()
        }
    }
    render(){
        const props=this.props

        return(<div className="ProfilationStep " onClick={e => props.activeStep(props.index)}>
        <p className="ProfilationStep__bold">Ecco 3 aspetti che dovresti sapere:</p>

        <p>
            1.  L'impatto ambientale della mia attività è un aspetto a cui tengo
            <span className="ProfilationStep__span">
        {window.innerWidth>=0 && <Select
            ref={(input) => { this.selectInput = input; }} 
            name="environment"
            value={props.step.environment}
            onChange={e => changeField("environment", e, props)}
            options={environmentOptions}
            searchable={false}
            autosize={true}
            placeholder="placeholder"
            onFocus={() => this.handleFocus(9)}
            openOnFocus={true}
            tabIndex={9}
        />}
        {/*window.innerWidth<768 && 
            <select
                name="environment"
                value={props.step.environment}
                onChange={e => changeField("environment", e.target, props)}
                onFocus={e => props.activeStep(props.index)}
                className='mobileSelect'
            >
                 <option value='' disabled></option>
                <option value='molto'>molto</option>
                <option value='poco'>poco</option>
                <option value='abbastanza'>abbastanza</option>

            </select>

        */}
      </span>;
        </p>
    </div>)
    }
}

const mapStateToProps = state => {
    return {

    }};

const mapDispatchToProps = dispatch => ({
    /*updatePropValue: (prop,value,index,complete) =>
     dispatch(SelectActionCreators.changeValue(prop,value,index,complete)),*/
     updateStoreValue: (prop,value) =>
     dispatch(SelectActionCreators.changeProp(prop,value)),

});

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