From 5b7627585fa2a34a0a355dc7b1c79cb5f1490b10 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 8 May 2025 16:17:25 -0700 Subject: [PATCH] improvements: address feedback --- .../components/AddPoliciesButton.tsx | 2 +- .../components/GeneralPermissionPolicies.tsx | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx index aaf58d0e2..f438f50e8 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx @@ -40,7 +40,7 @@ export const AddPoliciesButton = ({ isDisabled }: Props) => { > diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/GeneralPermissionPolicies.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/GeneralPermissionPolicies.tsx index c46c4fce8..50b43e101 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/GeneralPermissionPolicies.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/GeneralPermissionPolicies.tsx @@ -1,5 +1,5 @@ import { cloneElement, ReactNode, useState } from "react"; -import { Controller, useFieldArray, useFormContext, useWatch } from "react-hook-form"; +import { Control, Controller, useFieldArray, useFormContext, useWatch } from "react-hook-form"; import { faChevronDown, faChevronRight, @@ -35,12 +35,15 @@ type ActionProps = { rootIndex: number; label: ReactNode; isDisabled?: boolean; - control: any; + control: Control; }; const ActionCheckbox = ({ value, subject, isDisabled, rootIndex, label, control }: ActionProps) => { - // scott: using Controller caused discrepency between field value and actual value, this is a hacky fix - const fieldValue = useWatch({ control, name: `permissions.${subject}.${rootIndex}.${value}` }); + // scott: using Controller caused discrepancy between field value and actual value, this is a hacky fix + const fieldValue = useWatch({ + control, + name: `permissions.${subject}.${rootIndex}.${value}` as any + }); const { setValue } = useFormContext(); return ( @@ -51,7 +54,8 @@ const ActionCheckbox = ({ value, subject, isDisabled, rootIndex, label, control onCheckedChange={(isChecked) => setValue(`permissions.${subject}.${rootIndex}.${value}`, isChecked, { shouldDirty: true, - shouldTouch: true + shouldTouch: true, + shouldValidate: true }) } id={`permissions.${subject}.${rootIndex}.${String(value)}`} @@ -76,7 +80,7 @@ export const GeneralPermissionPolicies = ({ control, name: `permissions.${subject}` }); @@ -85,7 +89,7 @@ export const GeneralPermissionPolicies = (null); const [dragOverItem, setDragOverItem] = useState(null); - if (!watchFields?.length) return
; + if (!watchFields || !Array.isArray(watchFields) || watchFields.length === 0) return
; const handleDragStart = (_: React.DragEvent, index: number) => { setDraggedItem(index);