index.tsx 992 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React, { forwardRef } from 'react';
  2. import { Input, TextArea } from './styled';
  3. type Props = {
  4. id?: string;
  5. name?: string;
  6. onChange?: (val: string) => void;
  7. onBlur?: () => void;
  8. value?: string | number;
  9. defaultValue?: string | number;
  10. placeholder?: string;
  11. disabled?: boolean;
  12. error?: boolean;
  13. shouldFitContainer?: boolean;
  14. variant?: 'standard' | 'multiline';
  15. }
  16. type Ref = any;
  17. const TextField = forwardRef<Ref, Props>(({
  18. variant = 'standard',
  19. onChange,
  20. disabled = false,
  21. ...rest
  22. }: Props, ref) => {
  23. const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>): void => {
  24. if (onChange && !disabled) {
  25. onChange(e.target.value);
  26. }
  27. };
  28. return (
  29. variant === 'standard' ? (
  30. <Input
  31. ref={ref}
  32. onChange={handleChange}
  33. {...rest}
  34. />
  35. ) : (
  36. <TextArea
  37. ref={ref}
  38. onChange={handleChange}
  39. {...rest}
  40. />
  41. )
  42. );
  43. });
  44. export default TextField;