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