Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2795 | Rev 3683 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1459 stevensc 1
import React from 'react'
2109 stevensc 2
import { Controller } from 'react-hook-form'
1785 stevensc 3
import {
4
  FormControl,
5
  InputLabel,
6
  MenuItem,
7
  Select as MuiSelect
8
} from '@mui/material'
1459 stevensc 9
 
1781 stevensc 10
import FormErrorFeedback from '../form/FormErrorFeedback'
1459 stevensc 11
 
1781 stevensc 12
const Select = ({
2795 stevensc 13
  name,
14
  control,
2104 stevensc 15
  label,
2795 stevensc 16
  rules,
17
  defaultValue,
18
  onChange,
19
  value,
20
  icon,
21
  accept,
22
  error,
2110 stevensc 23
  placeholder = 'Seleccione una opción',
1459 stevensc 24
  options = [],
2795 stevensc 25
  ...props
1459 stevensc 26
}) => {
2795 stevensc 27
  if (control) {
28
    return (
29
      <Controller
30
        name={name}
31
        control={control}
32
        rules={rules}
33
        defaultValue={defaultValue}
34
        render={({ field }) => (
35
          <FormControl fullWidth>
3075 stevensc 36
            {label && <InputLabel shrink>{label}</InputLabel>}
2104 stevensc 37
 
2114 stevensc 38
            <MuiSelect
39
              {...field}
40
              fullWidth
41
              displayEmpty
42
              sx={{
43
                borderRadius: '4px'
44
              }}
2795 stevensc 45
              {...props}
2114 stevensc 46
            >
2147 stevensc 47
              <MenuItem value='' disabled>
2146 stevensc 48
                {placeholder}
49
              </MenuItem>
2104 stevensc 50
 
2114 stevensc 51
              {options.map(({ name, value }) => (
52
                <MenuItem key={value} value={value}>
53
                  {name}
54
                </MenuItem>
55
              ))}
56
            </MuiSelect>
2795 stevensc 57
 
58
            {error ? <FormErrorFeedback>{error}</FormErrorFeedback> : null}
59
          </FormControl>
60
        )}
61
      />
62
    )
63
  }
64
 
65
  return (
66
    <FormControl fullWidth>
3075 stevensc 67
      {label && <InputLabel shrink>{label}</InputLabel>}
2795 stevensc 68
 
69
      <MuiSelect
70
        name={name}
71
        defaultValue={defaultValue}
72
        value={value}
73
        onChange={onChange}
74
        fullWidth
75
        displayEmpty
76
        sx={{
77
          borderRadius: '4px'
78
        }}
79
        {...props}
80
      >
81
        <MenuItem value='' disabled>
82
          {placeholder}
83
        </MenuItem>
84
 
85
        {options.map(({ name, value }) => (
86
          <MenuItem key={value} value={value}>
87
            {name}
2148 stevensc 88
          </MenuItem>
2795 stevensc 89
        ))}
90
      </MuiSelect>
2109 stevensc 91
 
1781 stevensc 92
      {error ? <FormErrorFeedback>{error}</FormErrorFeedback> : null}
93
    </FormControl>
1459 stevensc 94
  )
95
}
96
 
1781 stevensc 97
export default Select