import { useState, KeyboardEvent, HTMLAttributes, ReactElement } from "react"; import { RegisterOptions, useFormContext } from "react-hook-form"; import { isNullOrWhiteSpace } from "../../util/stringUtil"; import InputWrapper from "./inputParts/inputWrapper"; import InternalInput from "./inputParts/internalInput"; export type FieldArrayErrorConfig = { baseName: string; errorIndex: number; fieldName: string; }; export type InputProps = { wrapperClassName?: string; inputClassName?: string; label: string; name: string; type: React.HTMLInputTypeAttribute; disabled?: boolean; registerWhenDisabled?: boolean; autoComplete?: string; registerOptions?: RegisterOptions; iconLeft?: ReactElement; onClickIcon?: () => void; iconRight?: ReactElement; updateFilteredOptions?: (currentInput: string) => void; setAutocompleteListActive?: (isListActive: boolean) => void; handleKeyPressed?: (event: KeyboardEvent) => void; inputMode?: HTMLAttributes["inputMode"]; errorConfig?: FieldArrayErrorConfig; readonly?: boolean; selectOnFocus?: boolean; paragraph?: string | ReactElement; noBorder?: boolean; }; export default function Input({ setAutocompleteListActive, handleKeyPressed, updateFilteredOptions, iconLeft, iconRight, onClickIcon, inputClassName, wrapperClassName, label, type, name, autoComplete, disabled = false, registerWhenDisabled = false, registerOptions, inputMode, errorConfig, readonly, selectOnFocus, paragraph, noBorder = false, }: InputProps) { const { getValues } = useFormContext(); const [isActive, setIsActive] = useState( !isNullOrWhiteSpace(getValues(name) && !disabled) ); const [inputState, setInputState] = useState< "default" | "active" | "error" | "disabled" >("default"); const [hasFocus, setHasFocus] = useState(false); return ( <> {paragraph && (
{paragraph}
)} ); }