| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- import React from 'react'
- import * as Yup from 'yup';
- import { useFormik, Form, FormikProvider } from 'formik';
- import {
- Box, Button, Stack, TextField, Divider, Typography,
- } from '@mui/material';
- import { AddCircle } from '@mui/icons-material/';
- import { MailTable } from './MailTable';
- export function Candidato(props) {
- const CandidatoSchema = Yup.object().shape({
- nombres:
- Yup.string()
- .min(2, 'Demasiado corto!')
- .max(50, 'Demasiado largo!')
- .required("Ingresa un nombre válido"),
- apellidos:
- Yup.string()
- .required("Ingresa un apellido válido")
- .min(2, 'Demasiado corto!').max(50, 'Demasiado Largo!'),
- mail:
- Yup.string()
- .email("Correo no valido")
- .required("Ingrea un puesto válido"),
- sendmail:
- Yup.bool()
- .required('Ingresa un nivel educativo válido'),
- nombrepuesto:
- Yup.string('Ingresa un valor válido')
- .required('Ingresa un nombre válido'),
- nombreEmpresa:
- Yup.string('Ingresa un valor válido')
- .required('Ingresa un nombre válido'),
- });
- let { handleNext, handleBack, password, setPassword } = props
- const formik = useFormik({
- initialValues: {
- nombres: "",
- apellidos: "",
- sendmail: "",
- mail: "",
- candidatos : password.candidatos ? password.candidatos : [],
- nombrepuesto: password.nombrepuesto ? password.nombrepuesto : password.puesto[0].nombrepuesto,
- nombreEmpresa: 'test'//password.nombreEmpresa ? password.nombreEmpresa : auth.getProfile().nombre,
- // nombreEmpresa: password.nombreEmpresa ? password.nombreEmpresa : auth.getProfile().nombre,
- },
- onSubmit: (fields) => {
- setPassword({ ...password, ...fields })
- handleNext()
- },
- validationSchema: CandidatoSchema,
- });
- const { errors, touched, handleSubmit, getFieldProps, values } = formik;
- const addToList = () => {
- let user = {
- 'nombres': values.nombres,
- 'apellidos': values.apellidos,
- 'mail': values.mail,
- }
- let new_users = [...password.candidatos, user ]
- setPassword({...password, candidatos: new_users })
- console.log(values);
- }
- const removeFromList = (umail) => {
- let without = password.candidatos.filter( user => user.mail !== umail )
- setPassword({...password, candidatos: without })
- }
- return (
- <FormikProvider style={{ padding: 25 }} value={formik}>
- <Form autoComplete="off" noValidate onSubmit={handleSubmit}>
- <Typography style={{ paddingBottom :15 }}>Ingresa uno o mas destinos</Typography>
- <Divider/>
- <Stack spacing={3}>
- <Stack style={{paddingTop: 15}} direction={{ xs: 'column', sm: 'row' }} spacing={2}>
- <TextField
- label="Nombre"
- fullWidth
- {...getFieldProps('nombres')}
- error={Boolean(touched.nombres && errors.nombres)}
- helperText={touched.nombres && errors.nombres}
- />
- <TextField
- label="Apellidos"
- fullWidth
- {...getFieldProps('apellidos')}
- error={Boolean(touched.apellidos && errors.apellidos)}
- helperText={touched.apellidos && errors.apellidos}
- />
- </Stack>
- <Stack direction={{ xs: 'column', sm: 'row' }} spacing={2}>
- <TextField
- fullWidth
- type="email"
- label="Correo Electronico"
- {...getFieldProps('mail')}
- error={Boolean(touched.mail && errors.mail)}
- helperText={touched.mail && errors.mail}
- />
- <Button onClick={addToList}>
- <AddCircle/>
- </Button>
- </Stack>
- <MailTable
- remove={removeFromList}
- users={password.candidatos}
- />
- <Box sx={{ mb: 2 }}>
- <div style={{ paddingTop: 15 }}>
- <Button
- type="submit"
- className="registerBtn"
- variant="contained"
- sx={{ mt: 1, mr: 1 }}
- >
- {'Siguiente'}
- </Button>
- <Button
- disabled={false}
- onClick={handleBack}
- sx={{ mt: 1, mr: 1 }}
- >
- Regresar
- </Button>
- </div>
- </Box>
- </Stack>
- </Form>
- </FormikProvider>
- );
- }
|