Browse Source
Merge pull request #290 from Hunter275/disabled-dynamicform
Rework disabled in DynamicForms
pull/294/head
latest
Ben Meadors
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
9 additions and
5 deletions
-
src/components/Form/DynamicForm.tsx
-
src/components/PageComponents/Config/Security.tsx
|
|
|
@ -16,13 +16,14 @@ import { |
|
|
|
} from "react-hook-form"; |
|
|
|
|
|
|
|
interface DisabledBy<T> { |
|
|
|
fieldName: Path<T> | "always"; |
|
|
|
fieldName: Path<T>; |
|
|
|
selector?: number; |
|
|
|
invert?: boolean; |
|
|
|
} |
|
|
|
|
|
|
|
export interface BaseFormBuilderProps<T> { |
|
|
|
name: Path<T>; |
|
|
|
disabled?: boolean; |
|
|
|
disabledBy?: DisabledBy<T>[]; |
|
|
|
label: string; |
|
|
|
description?: string; |
|
|
|
@ -62,11 +63,14 @@ export function DynamicForm<T extends FieldValues>({ |
|
|
|
defaultValues: defaultValues, |
|
|
|
}); |
|
|
|
|
|
|
|
const isDisabled = (disabledBy?: DisabledBy<T>[]): boolean => { |
|
|
|
const isDisabled = ( |
|
|
|
disabledBy?: DisabledBy<T>[], |
|
|
|
disabled?: boolean, |
|
|
|
): boolean => { |
|
|
|
if (disabled) return true; |
|
|
|
if (!disabledBy) return false; |
|
|
|
|
|
|
|
return disabledBy.some((field) => { |
|
|
|
if (field.fieldName === "always") return true; |
|
|
|
const value = getValues(field.fieldName); |
|
|
|
if (value === "always") return true; |
|
|
|
if (typeof value === "boolean") return field.invert ? value : !value; |
|
|
|
@ -111,7 +115,7 @@ export function DynamicForm<T extends FieldValues>({ |
|
|
|
<DynamicFormField |
|
|
|
field={field} |
|
|
|
control={control} |
|
|
|
disabled={isDisabled(field.disabledBy)} |
|
|
|
disabled={isDisabled(field.disabledBy, field.disabled)} |
|
|
|
/> |
|
|
|
</FieldWrapper> |
|
|
|
))} |
|
|
|
|
|
|
|
@ -158,9 +158,9 @@ export const Security = (): JSX.Element => { |
|
|
|
type: "text", |
|
|
|
name: "publicKey", |
|
|
|
label: "Public Key", |
|
|
|
disabled: true, |
|
|
|
description: |
|
|
|
"Sent out to other nodes on the mesh to allow them to compute a shared secret key", |
|
|
|
disabledBy: [{ fieldName: "always" }], |
|
|
|
}, |
|
|
|
], |
|
|
|
}, |
|
|
|
|