Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15411 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useState } from 'react'
import { useEffect } from 'react'
import { useForm } from 'react-hook-form'
import { getData } from '../../../helpers/fetchHelpers'
import SubmitModal from './SubmitModal'

const ExperienceModal = ({
        closeModal,
        dataLink
}) => {

        const [isActive, setIsActive] = useState(false)
        const { register, watch, setValue, errors } = useForm()

        useEffect(() => {
                getData(dataLink)
                        .then(({ experience_visible, experience_min, experience_max }) => {
                                setValue('experience_min', experience_min)
                                setValue('experience_max', experience_max)
                                experience_visible === 'y' ? setIsActive(true) : setIsActive(false)
                        })
        }, [])

        return (
                <SubmitModal
                        title='Años de experiencia'
                        closeModal={closeModal}
                        submitData={{
                                experience_visible: isActive ? 'y' : 'n',
                                experience_min: watch('experience_min'),
                                experience_max: watch('experience_max')
                        }}
                        postLink={dataLink}
                >
                        <div
                                className={`toggle btn btn-block btn-primary ${!isActive && 'off'}`}
                                data-toggle="toggle"
                                role="button"
                                style={{ width: '130px' }}
                                onClick={() => setIsActive(!isActive)}
                        >
                                <input
                                        type="checkbox"
                                        checked={isActive}
                                />
                                <div className="toggle-group">
                                        <label htmlFor="status" className="btn btn-primary toggle-on">Mostrar</label>
                                        <label htmlFor="status" className="btn btn-light toggle-off">No mostrar</label>
                                        <span className="toggle-handle btn btn-light"></span>
                                </div>
                        </div>
                        <div className='form-group'>
                                <label className="form-label">Minimo de años</label>
                                <input
                                        type='number'
                                        hidden={!isActive}
                                        className='form-control'
                                        name='experience_min'
                                        ref={register({
                                                required: isActive && true,
                                                valueAsNumber: true,
                                                min: 1,
                                                max: 40
                                        })}
                                />
                                {errors.experience_min?.type === 'required' && <p>Este campo es requerido</p>}
                        </div>
                        <div className='form-group'>
                                <label className="form-label">Máximo de años</label>
                                <input
                                        type='text'
                                        hidden={!isActive}
                                        className='form-control'
                                        name='experience_max'
                                        ref={register({
                                                required: isActive && true,
                                                valueAsNumber: true,
                                                min: 1,
                                                max: 40,
                                                validate: value => value > watch('experience_min')
                                        })}
                                />
                                {errors.experience_max?.type === 'validate' && <p>El máximo de años debe ser mayor que el minimo</p>}
                                {errors.experience_max?.type === 'max' && <p>El máximo de años permitidos es de 40</p>}
                                {errors.experience_max?.type === 'required' && <p>Este campo es requerido</p>}
                        </div>
                </SubmitModal>
        )
}

export default ExperienceModal