From 49dc10da19bab6ab4e9dc15b7f708bb2d4ce6cc1 Mon Sep 17 00:00:00 2001 From: EvansA Date: Wed, 7 Sep 2022 16:43:46 +0300 Subject: [PATCH] Fix: Prevent sample groups from collapsing (#2101) --- .../sidebar/sample-queries/SampleQueries.tsx | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/app/views/sidebar/sample-queries/SampleQueries.tsx b/src/app/views/sidebar/sample-queries/SampleQueries.tsx index c0bcfea86..72df6189a 100644 --- a/src/app/views/sidebar/sample-queries/SampleQueries.tsx +++ b/src/app/views/sidebar/sample-queries/SampleQueries.tsx @@ -1,10 +1,10 @@ import { Announced, DetailsList, DetailsRow, FontSizes, FontWeights, getId, getTheme, - GroupHeader, IColumn, Icon, IDetailsRowStyles, Link, MessageBar, MessageBarType, SearchBox, + GroupHeader, IColumn, Icon, IDetailsRowStyles, IGroup, Link, MessageBar, MessageBarType, SearchBox, SelectionMode, Spinner, SpinnerSize, styled, TooltipHost } from '@fluentui/react'; -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState, useRef } from 'react'; import { FormattedMessage } from 'react-intl'; import { useDispatch, useSelector } from 'react-redux'; @@ -33,18 +33,19 @@ import { setSampleQuery } from '../../../services/actions/query-input-action-cre import { translateMessage } from '../../../utils/translate-messages'; import { NoResultsFound } from '../sidebar-utils/SearchResult'; -const unstyledSampleQueries = (sampleProps?: ISampleQueriesProps): JSX.Element => { +const UnstyledSampleQueries = (sampleProps?: ISampleQueriesProps): JSX.Element => { const [selectedQuery, setSelectedQuery] = useState(null) const { authToken, profile, samples } = useSelector((state: IRootState) => state); const tokenPresent = authToken.token; const [sampleQueries, setSampleQueries] = useState(samples.queries); + const [groups, setGroups] = useState([]); + const [searchStarted, setSearchStarted] = useState(false); const dispatch = useDispatch(); const currentTheme = getTheme(); const { error, pending } = samples; - const groups = generateGroupsFromList(sampleQueries, 'category'); const classProps = { styles: sampleProps!.styles, @@ -52,6 +53,8 @@ const unstyledSampleQueries = (sampleProps?: ISampleQueriesProps): JSX.Element = }; const classes = classNames(classProps); + const shouldGenerateGroups = useRef(true); + useEffect(() => { if (samples.queries.length === 0) { dispatch(fetchSamples()); @@ -60,7 +63,18 @@ const unstyledSampleQueries = (sampleProps?: ISampleQueriesProps): JSX.Element = } }, [samples.queries, tokenPresent]) + useEffect(() => { + if (shouldGenerateGroups.current) { + setGroups(generateGroupsFromList(sampleQueries, 'category')); + if(groups && groups.length > 0){ + shouldGenerateGroups.current = false; + } + } + }, [sampleQueries, searchStarted]); + const searchValueChanged = (_event: any, value?: string): void => { + shouldGenerateGroups.current = true; + setSearchStarted(searchStatus => !searchStatus); const { queries } = samples; const filteredQueries = value ? performSearch(queries, value) : queries; setSampleQueries(filteredQueries); @@ -283,15 +297,7 @@ const unstyledSampleQueries = (sampleProps?: ISampleQueriesProps): JSX.Element = return
; } - if (selectedQuery) { - const index = groups.findIndex(k => k.key === selectedQuery.category); - if (index > 0) { - groups[index].isCollapsed = false; - groups[0].isCollapsed = true; - } - } - - if (pending) { + if (pending && groups.length === 0) { return (