added password visibility toggle

This commit is contained in:
medentem
2024-10-02 15:54:53 -05:00
parent 06d2c393ce
commit 4b532fc7f8
4 changed files with 30 additions and 6 deletions
+12 -1
View File
@@ -4,7 +4,9 @@ import type {
} from "@components/Form/DynamicForm.js";
import { Input } from "@components/UI/Input.js";
import type { LucideIcon } from "lucide-react";
import { Eye, EyeOff } from "lucide-react";
import type { ChangeEventHandler } from "react";
import { useState } from "react";
import { Controller, type FieldValues } from "react-hook-form";
export interface InputFieldProps<T> extends BaseFormBuilderProps<T> {
@@ -27,13 +29,22 @@ export function GenericInput<T extends FieldValues>({
disabled,
field,
}: GenericFormElementProps<T, InputFieldProps<T>>) {
const [passwordShown, setPasswordShown] = useState(false);
const togglePasswordVisiblity = () => {
setPasswordShown(passwordShown ? false : true);
};
return (
<Controller
name={field.name}
control={control}
render={({ field: { value, onChange, ...rest } }) => (
<Input
type={field.type}
type={field.type == "password" && passwordShown ? "text" : field.type}
action={field.type == "password" ? {
icon: passwordShown ? EyeOff : Eye,
onClick: togglePasswordVisiblity
} : undefined}
step={field.properties?.step}
value={field.type === "number" ? Number.parseFloat(value) : value}
onChange={(e) => {