Proyectos de Subversion LeadersLinked - SPA

Rev

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

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