diff --git a/src/components/Form/FormPasswordGenerator.tsx b/src/components/Form/FormPasswordGenerator.tsx index d015d3af..a94b0215 100644 --- a/src/components/Form/FormPasswordGenerator.tsx +++ b/src/components/Form/FormPasswordGenerator.tsx @@ -8,6 +8,7 @@ import { Controller, type FieldValues } from "react-hook-form"; export interface PasswordGeneratorProps extends BaseFormBuilderProps { type: "passwordGenerator"; + hide?: boolean; devicePSKBitCount: number; inputChange: ChangeEventHandler; selectChange: (event: string) => void; @@ -17,6 +18,7 @@ export interface PasswordGeneratorProps extends BaseFormBuilderProps { export function PasswordGenerator({ control, field, + disabled, }: GenericFormElementProps>) { return ( ({ control={control} render={({ field: { value, ...rest } }) => ( ({ buttonText="Generate" {...field.properties} {...rest} + disabled={disabled} /> )} /> diff --git a/src/components/PageComponents/Config/Security.tsx b/src/components/PageComponents/Config/Security.tsx index c1739aba..a82ed980 100644 --- a/src/components/PageComponents/Config/Security.tsx +++ b/src/components/PageComponents/Config/Security.tsx @@ -133,6 +133,7 @@ export const Security = (): JSX.Element => { devicePSKBitCount: privateKeyBitCount, inputChange: privateKeyInputChangeEvent, selectChange: privateKeySelectChangeEvent, + hide: !privateKeyVisible, buttonClick: () => clickEvent( setPrivateKey, @@ -191,6 +192,7 @@ export const Security = (): JSX.Element => { devicePSKBitCount: adminKeyBitCount, inputChange: adminKeyInputChangeEvent, selectChange: adminKeySelectChangeEvent, + hide: !adminKeyVisible, buttonClick: () => clickEvent( setAdminKey, diff --git a/src/components/UI/Generator.tsx b/src/components/UI/Generator.tsx index 344e89bb..0e8b1e0d 100644 --- a/src/components/UI/Generator.tsx +++ b/src/components/UI/Generator.tsx @@ -9,8 +9,10 @@ import { SelectTrigger, SelectValue, } from "@components/UI/Select.js"; +import type { LucideIcon } from "lucide-react"; export interface GeneratorProps extends React.BaseHTMLAttributes { + hide?: boolean; devicePSKBitCount?: number; value: string; variant: "default" | "invalid"; @@ -18,11 +20,17 @@ export interface GeneratorProps extends React.BaseHTMLAttributes { selectChange: (event: string) => void; inputChange: (event: React.ChangeEvent) => void; buttonClick: React.MouseEventHandler; + action?: { + icon: LucideIcon; + onClick: () => void; + }; + disabled?: boolean; } const Generator = React.forwardRef( ( { + hide = true, devicePSKBitCount, variant, value, @@ -30,6 +38,8 @@ const Generator = React.forwardRef( selectChange, inputChange, buttonClick, + action, + disabled, ...props }, ref, @@ -37,17 +47,19 @@ const Generator = React.forwardRef( return ( <>