rewrite disabled dynamicforms stuff and fix factory reset in command palette

This commit is contained in:
Hunter Thornsberry
2024-09-04 21:50:23 -04:00
parent 737fbb4320
commit 0dcc2b1975
3 changed files with 18 additions and 7 deletions
+8 -4
View File
@@ -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 (!disabledBy) return false;
return disabledBy.some((field) => {
if (field.fieldName === "always") return true;
if (disabled) 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>
))}