,
| 'as'
| 'textareaRef'
| 'value'
| 'color'
| 'size'
| 'valid'
| 'invalid'
| 'fullWidth'
| 'simple'
| 'noPadding'
| 'autoHeight'
| 'errorMessage'
| 'className'
>;
const Textarea = (props: TextareaPropsType) => {
const {
valid,
invalid,
size = SIZE.NORMAL,
color = 'default',
fullWidth,
simple,
noPadding,
autoHeight,
value,
className,
textareaRef,
errorMessage,
as: Type = 'textarea',
...additionalProps
} = props;
if (valid === true && invalid === true) {
throw {
name: 'WrongValidation',
message: 'Textarea can be either valid or invalid!',
};
}
const textareaClass = classnames(
'sg-textarea',
{
[`sg-textarea--${String(size)}`]: size !== SIZE.NORMAL,
[`sg-textarea--${String(color)}`]: color !== 'default',
'sg-textarea--valid': valid,
'sg-textarea--invalid': invalid,
'sg-textarea--full-width': fullWidth,
'sg-textarea--simple': simple,
'sg-textarea--no-padding': noPadding,
'sg-textarea--auto-height': autoHeight,
},
className
);
const wrapperClass = classnames('sg-input__wrapper', {
'sg-textarea__wrapper--full-width': fullWidth,
});
const errorMessageDisplayed =
invalid === true && errorMessage !== undefined && errorMessage !== '';
return (
{errorMessageDisplayed && (
{errorMessage}
)}
);
};
export default Textarea;