Rev 2766 | Rev 2794 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import {
FormControl,
InputAdornment,
InputBase,
InputLabel,
styled
} from '@mui/material'
import { Controller } from 'react-hook-form'
import { colors } from '@app/styles/mui/colors'
import FormErrorFeedback from '../form/FormErrorFeedback'
const CustomInput = styled(InputBase)(({ theme }) => ({
borderRadius: 4,
position: 'relative',
backgroundColor: colors.main,
border: `1px solid var(--border-primary)`,
fontSize: 14,
padding: '5px 10px',
transition: theme.transitions.create([
'border-color',
'background-color',
'box-shadow'
]),
'& .MuiInputBase-input': {
paddingTop: 0,
paddingBottom: 0,
'&::file-selector-button': {
lineHeight: 1
}
},
'& svg': {
fontSize: '1.3rem'
}
}))
const Input = ({
name,
control,
label,
rules,
defaultValue = '',
onChange,
value: propValue,
icon,
accept,
error,
...props
}) => {
if (control) {
return (
<Controller
name={name}
control={control}
defaultValue={defaultValue}
rules={rules}
render={(field) => (
<FormControl variant='standard' fullWidth>
<InputLabel shrink>{label}</InputLabel>
<CustomInput
{...field}
inputProps={{
accept
}}
startAdornment={
icon ? <InputAdornment>{icon}</InputAdornment> : null
}
fullWidth
{...props}
/>
{error ? <FormErrorFeedback>{error}</FormErrorFeedback> : null}
</FormControl>
)}
/>
)
}
return (
<FormControl variant='standard' fullWidth>
<InputLabel shrink>{label}</InputLabel>
<CustomInput
name={name}
onChange={onChange}
defaultValue={defaultValue}
value={propValue}
inputProps={{
accept
}}
startAdornment={icon ? <InputAdornment>{icon}</InputAdornment> : null}
fullWidth
{...props}
/>
{error ? <FormErrorFeedback>{error}</FormErrorFeedback> : null}
</FormControl>
)
}
export default Input