From 02d54da74a31c32ca355a807b23307793f7fb68b Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 12 Sep 2024 15:22:05 -0700 Subject: [PATCH] resolve change requests --- .../src/components/v2/ComboBox/ComboBox.tsx | 6 ++-- .../IdentityTab/components/IdentityModal.tsx | 35 +++++++++++++++---- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/v2/ComboBox/ComboBox.tsx b/frontend/src/components/v2/ComboBox/ComboBox.tsx index 692d19e63..c590110c3 100644 --- a/frontend/src/components/v2/ComboBox/ComboBox.tsx +++ b/frontend/src/components/v2/ComboBox/ComboBox.tsx @@ -5,7 +5,7 @@ import { Combobox, Transition } from "@headlessui/react"; import { ByComparator } from "@headlessui/react/dist/types"; import { twMerge } from "tailwind-merge"; -type MyComboBoxProps = { +type ComboBoxProps = { value?: T; className?: string; items: { @@ -29,11 +29,11 @@ export const ComboBox = ({ by, items, ...props -}: MyComboBoxProps) => { +}: ComboBoxProps) => { const [query, setQuery] = useState(""); const filteredResult = - query === "" ? items.slice(0, 20) : items.filter((el) => onFilter(el, query)); + query === "" ? items.slice(0, 20) : items.filter((el) => onFilter(el, query)).slice(0, 20); return ( diff --git a/frontend/src/views/Project/MembersPage/components/IdentityTab/components/IdentityModal.tsx b/frontend/src/views/Project/MembersPage/components/IdentityTab/components/IdentityModal.tsx index 0ca6f70f1..6ddd2d097 100644 --- a/frontend/src/views/Project/MembersPage/components/IdentityTab/components/IdentityModal.tsx +++ b/frontend/src/views/Project/MembersPage/components/IdentityTab/components/IdentityModal.tsx @@ -1,4 +1,4 @@ -import { useMemo } from "react"; +import { useEffect, useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; import Link from "next/link"; import { yupResolver } from "@hookform/resolvers/yup"; @@ -55,7 +55,11 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { }); const identityMemberships = identityMembershipsData?.identityMemberships; - const { data: roles } = useGetProjectRoles(projectSlug); + const { + data: roles, + isLoading: isRolesLoading, + isFetched: isRolesFetched + } = useGetProjectRoles(projectSlug); const { mutateAsync: addIdentityToWorkspaceMutateAsync } = useAddIdentityToWorkspace(); @@ -73,11 +77,18 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { control, handleSubmit, reset, + setValue, formState: { isSubmitting } } = useForm({ resolver: yupResolver(schema) }); + useEffect(() => { + if (!isRolesFetched || !roles) return; + + setValue("role", { name: roles[0]?.name, slug: roles[0]?.slug }); + }, [isRolesFetched, roles]); + const onFormSubmit = async ({ identity, role }: FormData) => { try { await addIdentityToWorkspaceMutateAsync({ @@ -91,7 +102,17 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { type: "success" }); - reset(); + const nextAvailableMembership = filteredIdentityMembershipOrgs.filter( + (membership) => membership.identity.id !== identity.id + )[0]; + + // prevents combobox from displaying previously added identity + reset({ + identity: { + name: nextAvailableMembership?.identity.name, + id: nextAvailableMembership?.identity.id + } + }); handlePopUpToggle("identity", false); } catch (err) { console.error(err); @@ -113,14 +134,14 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { reset(); }} > - + {filteredIdentityMembershipOrgs.length ? (
( @@ -197,7 +218,9 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { All identities in your organization have already been added to this project. - + )}