Rev 2147 | Rev 2795 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { Controller } from 'react-hook-form'
import {
FormControl,
InputLabel,
MenuItem,
Select as MuiSelect
} from '@mui/material'
import FormErrorFeedback from '../form/FormErrorFeedback'
const Select = ({
label,
name = '',
control,
placeholder = 'Seleccione una opción',
defaultValue,
options = [],
rules,
value,
onChange,
error = null
}) => {
return (
<FormControl fullWidth>
{label ? (
<InputLabel shrink htmlFor={name}>
{label}
</InputLabel>
) : null}
{control ? (
<Controller
name={name}
control={control}
rules={rules}
defaultValue={defaultValue}
render={(field) => (
<MuiSelect
{...field}
fullWidth
displayEmpty
sx={{
borderRadius: '4px'
}}
>
<MenuItem value='' disabled>
{placeholder}
</MenuItem>
{options.map(({ name, value }) => (
<MenuItem key={value} value={value}>
{name}
</MenuItem>
))}
</MuiSelect>
)}
/>
) : (
<MuiSelect
name={name}
defaultValue={defaultValue}
value={value}
onChange={onChange}
fullWidth
displayEmpty
sx={{
borderRadius: '4px'
}}
>
<MenuItem value='' disabled>
{placeholder}
</MenuItem>
{options.map(({ name, value }) => (
<MenuItem key={value} value={value}>
{name}
</MenuItem>
))}
</MuiSelect>
)}
{error ? <FormErrorFeedback>{error}</FormErrorFeedback> : null}
</FormControl>
)
}
export default Select