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}
)}
>
);
}