From 27a49a9457ba7b15cab57e51346e9c8881df749c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Gu=CC=88ell=20Segarra?= Date: Tue, 15 Oct 2024 12:33:07 +0200 Subject: [PATCH] fix: clear selected rows when a refresh is done Fixes: https://github.com/gisce/webclient/issues/1289 --- src/widgets/views/SearchTreeInfinite.tsx | 29 ++++++++++++------------ 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/widgets/views/SearchTreeInfinite.tsx b/src/widgets/views/SearchTreeInfinite.tsx index 2693ced6f..bdb87debe 100644 --- a/src/widgets/views/SearchTreeInfinite.tsx +++ b/src/widgets/views/SearchTreeInfinite.tsx @@ -93,15 +93,6 @@ function SearchTreeInfiniteComp(props: SearchTreeInfiniteProps, ref: any) { const { t } = useLocale(); - useImperativeHandle(ref, () => ({ - refreshResults: () => { - currentSearchParamsString.current = undefined; - tableRef?.current?.refresh(); - }, - getFields: () => treeView?.fields, - getDomain: () => domain, - })); - const containerRef = useRef(null); const availableHeight = useAvailableHeight({ elementRef: containerRef, @@ -145,12 +136,10 @@ function SearchTreeInfiniteComp(props: SearchTreeInfiniteProps, ref: any) { typeof prevNameSearch.current === "string" && nameSearch !== prevNameSearch.current) ) { - setSelectedRowItems?.([]); setSearchParams?.([]); setSearchValues?.({}); tableRef.current?.unselectAll(); - currentSearchParamsString.current = undefined; - tableRef.current?.refresh(); + refresh(); } prevNameSearch.current = nameSearch; // eslint-disable-next-line react-hooks/exhaustive-deps @@ -316,6 +305,7 @@ function SearchTreeInfiniteComp(props: SearchTreeInfiniteProps, ref: any) { parentContext, setActionViewResults, setSearchQuery, + setTotalItemsActionView, treeOoui, treeView, ], @@ -532,14 +522,25 @@ function SearchTreeInfiniteComp(props: SearchTreeInfiniteProps, ref: any) { prevSearchVisibleRef.current && !searchVisible; if (searchParamsChanged && searchVisibleChangedToFalse) { - currentSearchParamsString.current = undefined; - tableRef.current?.refresh(); + refresh(); } prevSearchParamsRef.current = searchParams; prevSearchVisibleRef.current = searchVisible; }, [searchParams, searchVisible]); + const refresh = useCallback(() => { + setSelectedRowItems?.([]); + currentSearchParamsString.current = undefined; + tableRef?.current?.refresh(); + }, [setSelectedRowItems]); + + useImperativeHandle(ref, () => ({ + refreshResults: refresh, + getFields: () => treeView?.fields, + getDomain: () => domain, + })); + return (