Browse Source

fix(dashboard): Clear search condition on release dropdown close (#37395)

Clear search to re-populate the dorpdown.
Shruthi 2 years ago
parent
commit
4ba01d6201

+ 5 - 0
static/app/views/dashboardsV2/releasesSelectControl.tsx

@@ -28,6 +28,10 @@ function ReleasesSelectControl({
   const {releases, loading, onSearch} = useReleases();
   const [activeReleases, setActiveReleases] = useState<string[]>(selectedReleases);
 
+  function resetSearch() {
+    onSearch('');
+  }
+
   useEffect(() => {
     setActiveReleases(selectedReleases);
   }, [selectedReleases]);
@@ -62,6 +66,7 @@ function ReleasesSelectControl({
       }
       onChange={opts => setActiveReleases(opts.map(opt => opt.value))}
       onClose={() => {
+        resetSearch();
         handleChangeFilter?.({[DashboardFilterKeys.RELEASE]: activeReleases});
       }}
       value={activeReleases}

+ 16 - 1
tests/js/spec/views/dashboardsV2/releasesSelectControl.spec.tsx

@@ -69,6 +69,21 @@ describe('Dashboards > ReleasesSelectControl', function () {
     userEvent.click(screen.getByText('All Releases'));
     userEvent.type(screen.getByText('Search\u2026'), 'se');
 
-    await waitFor(() => expect(mockOnSearch).toBeCalled());
+    await waitFor(() => expect(mockOnSearch).toBeCalledWith('se'));
+  });
+
+  it('resets search on close', async function () {
+    const mockOnSearch = jest.fn();
+    renderReleasesSelect(mockOnSearch);
+
+    expect(screen.getByText('All Releases')).toBeInTheDocument();
+
+    userEvent.click(screen.getByText('All Releases'));
+    userEvent.type(screen.getByText('Search\u2026'), 'se');
+
+    await waitFor(() => expect(mockOnSearch).toBeCalledWith('se'));
+
+    userEvent.click(document.body);
+    await waitFor(() => expect(mockOnSearch).toBeCalledWith(''));
   });
 });