import { forwardRef, useRef, useImperativeHandle, KeyboardEvent, useLayoutEffect, } from "react"; import clsx from "clsx"; import "./TextField.scss"; export type TextFieldProps = { value?: string; onChange?: (value: string) => void; onClick?: () => void; onKeyDown?: (event: KeyboardEvent) => void; readonly?: boolean; fullWidth?: boolean; selectOnRender?: boolean; label?: string; placeholder?: string; }; export const TextField = forwardRef( ( { value, onChange, label, fullWidth, placeholder, readonly, selectOnRender, onKeyDown, }, ref, ) => { const innerRef = useRef(null); useImperativeHandle(ref, () => innerRef.current!); useLayoutEffect(() => { if (selectOnRender) { innerRef.current?.select(); } }, [selectOnRender]); return (
{ innerRef.current?.focus(); }} >
{label}
onChange?.(event.target.value)} onKeyDown={onKeyDown} />
); }, );