import React from 'react';
import { usePropsResolution } from '../../../hooks';
import type { ITextFieldProps } from './types';
import { Stack } from '../../primitives/Stack';
import { Input } from '../../primitives/Input';
import Text from '../../primitives/Text';
import { extractInObject, stylingProps } from '../../../theme/tools/utils';
import Select from '../../primitives/Select';
import TextArea from '../../primitives/TextArea';
import { useHasResponsiveProps } from '../../../hooks/useHasResponsiveProps';
const TextField = (mainProps: ITextFieldProps, ref?: any) => {
//TODO: Remove `any`
const {
children,
helperText,
errorMessage,
InputLeftElement,
InputRightElement,
dropdownIcon,
...props
}: any = mainProps;
const {
divider,
_errorMessageProps,
_helperTextProps,
component,
...resolvedProps
} = usePropsResolution('TextField', props);
const [layoutProps, componentProps] = extractInObject(resolvedProps, [
'space',
'reversed',
...stylingProps.margin,
...stylingProps.layout,
...stylingProps.flexbox,
...stylingProps.position,
]);
//TODO: refactor for responsive prop
if (useHasResponsiveProps(props)) {
return null;
}
const activeComponent = () => {
switch (component) {
case 'select':
return (
);
case 'textarea':
return ;
default:
return (
);
}
};
return (
{activeComponent()}
{componentProps.isInvalid && (
{errorMessage}
)}
{!componentProps.isInvalid && (
{helperText}
)}
);
};
export default React.memo(React.forwardRef(TextField));