From 5283eb8ce3f9e37aa013e27ad28fe217e421718e Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Tue, 15 Oct 2024 14:29:29 +1100 Subject: [PATCH] Fix duplicate items appearing in selected list (again) (#5377) * Fix duplicate detection in useListSelect * Prevent double invocation of select handler --- ui/v2.5/src/components/List/util.ts | 10 +++++----- ui/v2.5/src/components/Shared/GridCard/GridCard.tsx | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ui/v2.5/src/components/List/util.ts b/ui/v2.5/src/components/List/util.ts index addb5601238..329eba289b0 100644 --- a/ui/v2.5/src/components/List/util.ts +++ b/ui/v2.5/src/components/List/util.ts @@ -229,13 +229,13 @@ export function useListSelect(items: T[]) { function singleSelect(id: string, selected: boolean) { setLastClickedId(id); - // prevent duplicates - if (selected && selectedIds.has(id)) { - return; - } - setItemsSelected((prevSelected) => { if (selected) { + // prevent duplicates + if (prevSelected.some((v) => v.id === id)) { + return prevSelected; + } + const item = items.find((i) => i.id === id); if (item) { return [...prevSelected, item]; diff --git a/ui/v2.5/src/components/Shared/GridCard/GridCard.tsx b/ui/v2.5/src/components/Shared/GridCard/GridCard.tsx index 33aa24e32cd..db35f83f923 100644 --- a/ui/v2.5/src/components/Shared/GridCard/GridCard.tsx +++ b/ui/v2.5/src/components/Shared/GridCard/GridCard.tsx @@ -154,6 +154,7 @@ export const GridCard: React.FC = (props: ICardProps) => { if (props.selecting) { props.onSelectedChanged(!props.selected, shiftKey); event.preventDefault(); + event.stopPropagation(); } }