From f66751668a49cc797801d6faa3dba324e170c4a0 Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Thu, 7 May 2026 15:03:38 +1000 Subject: [PATCH] fix: paginate and search member/group pickers (#2768) --- .../organisation-group-create-dialog.tsx | 36 +++--- .../dialogs/team-group-create-dialog.tsx | 62 ++++------ .../dialogs/team-member-create-dialog.tsx | 60 ++++----- ...ganisation-groups-multiselect-combobox.tsx | 115 ++++++++++++++++++ ...anisation-members-multiselect-combobox.tsx | 112 +++++++++++++++++ .../o.$orgUrl.settings.groups.$id.tsx | 47 ++++--- .../organisations/manage-organisation.spec.ts | 28 +++-- packages/prisma/seed/large-team-seed.ts | 69 +++++++++++ .../find-organisation-groups.ts | 23 +++- .../find-organisation-groups.types.ts | 6 + .../find-organisation-members.ts | 18 +++ .../find-organisation-members.types.ts | 6 + .../server/team-router/create-team-groups.ts | 24 +++- .../server/team-router/create-team-members.ts | 52 +++++++- 14 files changed, 522 insertions(+), 136 deletions(-) create mode 100644 apps/remix/app/components/general/organisation-groups-multiselect-combobox.tsx create mode 100644 apps/remix/app/components/general/organisation-members-multiselect-combobox.tsx create mode 100644 packages/prisma/seed/large-team-seed.ts diff --git a/apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx b/apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx index 4f80b318a..e350ff78f 100644 --- a/apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx +++ b/apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx @@ -34,7 +34,6 @@ import { FormMessage, } from '@documenso/ui/primitives/form/form'; import { Input } from '@documenso/ui/primitives/input'; -import { MultiSelectCombobox } from '@documenso/ui/primitives/multi-select-combobox'; import { Select, SelectContent, @@ -44,6 +43,11 @@ import { } from '@documenso/ui/primitives/select'; import { useToast } from '@documenso/ui/primitives/use-toast'; +import { + type OrganisationMemberOption, + OrganisationMembersMultiSelectCombobox, +} from '~/components/general/organisation-members-multiselect-combobox'; + export type OrganisationGroupCreateDialogProps = { trigger?: React.ReactNode; } & Omit; @@ -64,6 +68,7 @@ export const OrganisationGroupCreateDialog = ({ const { toast } = useToast(); const [open, setOpen] = useState(false); + const [selectedMembers, setSelectedMembers] = useState([]); const organisation = useCurrentOrganisation(); const form = useForm({ @@ -77,13 +82,6 @@ export const OrganisationGroupCreateDialog = ({ const { mutateAsync: createOrganisationGroup } = trpc.organisation.group.create.useMutation(); - const { data: membersFindResult, isLoading: isLoadingMembers } = - trpc.organisation.member.find.useQuery({ - organisationId: organisation.id, - }); - - const members = membersFindResult?.data ?? []; - const onFormSubmit = async ({ name, organisationRole, @@ -119,6 +117,7 @@ export const OrganisationGroupCreateDialog = ({ useEffect(() => { form.reset(); + setSelectedMembers([]); }, [open, form]); return ( @@ -178,7 +177,7 @@ export const OrganisationGroupCreateDialog = ({