You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

30 lines
840 B

import { forwardRef, useEffect, useImperativeHandle, useRef, InputHTMLAttributes } from 'react';
export default forwardRef(function TextInput(
{ type = 'text', className = '', isFocused = false, ...props }: InputHTMLAttributes<HTMLInputElement> & { isFocused?: boolean },
ref
) {
const localRef = useRef<HTMLInputElement>(null);
useImperativeHandle(ref, () => ({
focus: () => localRef.current?.focus(),
}));
useEffect(() => {
if (isFocused) {
localRef.current?.focus();
}
}, []);
return (
<input
{...props}
type={type}
className={
'border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm ' +
className
}
ref={localRef}
/>
);
});