From 4b532fc7f86305f8793464ef5113244a8fddf38f Mon Sep 17 00:00:00 2001 From: medentem Date: Wed, 2 Oct 2024 15:54:53 -0500 Subject: [PATCH] added password visibility toggle --- src/components/Form/FormInput.tsx | 13 ++++++++++++- src/components/Form/FormPasswordGenerator.tsx | 14 +++++++++++++- src/components/PageComponents/Channel.tsx | 3 ++- src/components/UI/Generator.tsx | 6 +++--- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/components/Form/FormInput.tsx b/src/components/Form/FormInput.tsx index 13f77260..27c3828b 100644 --- a/src/components/Form/FormInput.tsx +++ b/src/components/Form/FormInput.tsx @@ -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 extends BaseFormBuilderProps { @@ -27,13 +29,22 @@ export function GenericInput({ disabled, field, }: GenericFormElementProps>) { + const [passwordShown, setPasswordShown] = useState(false); + const togglePasswordVisiblity = () => { + setPasswordShown(passwordShown ? false : true); + }; + return ( ( { diff --git a/src/components/Form/FormPasswordGenerator.tsx b/src/components/Form/FormPasswordGenerator.tsx index cf05f806..4410097d 100644 --- a/src/components/Form/FormPasswordGenerator.tsx +++ b/src/components/Form/FormPasswordGenerator.tsx @@ -4,6 +4,8 @@ import type { } from "@components/Form/DynamicForm.js"; import { Generator } from "@components/UI/Generator.js"; import type { ChangeEventHandler, MouseEventHandler } from "react"; +import { useState } from "react"; +import { Eye, EyeOff } from "lucide-react"; import { Controller, type FieldValues } from "react-hook-form"; export interface PasswordGeneratorProps extends BaseFormBuilderProps { @@ -21,13 +23,23 @@ export function PasswordGenerator({ field, disabled, }: GenericFormElementProps>) { + + const [passwordShown, setPasswordShown] = useState(false); + const togglePasswordVisiblity = () => { + setPasswordShown(passwordShown ? false : true); + }; + return ( ( { inputChange: inputChangeEvent, selectChange: selectChangeEvent, buttonClick: clickEvent, + hide: true, properties: { - value: pass, + value: pass }, }, { diff --git a/src/components/UI/Generator.tsx b/src/components/UI/Generator.tsx index 7d589be4..f9db3f89 100644 --- a/src/components/UI/Generator.tsx +++ b/src/components/UI/Generator.tsx @@ -12,7 +12,7 @@ import { import type { LucideIcon } from "lucide-react"; export interface GeneratorProps extends React.BaseHTMLAttributes { - hide?: boolean; + type: "text" | "password"; devicePSKBitCount?: number; value: string; variant: "default" | "invalid"; @@ -31,7 +31,7 @@ export interface GeneratorProps extends React.BaseHTMLAttributes { const Generator = React.forwardRef( ( { - hide = true, + type, devicePSKBitCount, variant, value, @@ -68,7 +68,7 @@ const Generator = React.forwardRef( return ( <>