diff --git a/public/app/features/browse-dashboards/components/BrowseFilters.tsx b/public/app/features/browse-dashboards/components/BrowseFilters.tsx
index 34fec506496..43e64d57cc2 100644
--- a/public/app/features/browse-dashboards/components/BrowseFilters.tsx
+++ b/public/app/features/browse-dashboards/components/BrowseFilters.tsx
@@ -10,7 +10,6 @@ export function BrowseFilters() {
return (
diff --git a/public/app/features/search/state/SearchStateManager.test.ts b/public/app/features/search/state/SearchStateManager.test.ts
index 702c1fba586..547ceaf9f42 100644
--- a/public/app/features/search/state/SearchStateManager.test.ts
+++ b/public/app/features/search/state/SearchStateManager.test.ts
@@ -64,6 +64,8 @@ describe('SearchStateManager', () => {
sort: 'alpha-asc',
}));
const stm = getSearchStateManager();
+ // Set list layout since folders layout implies sort to be undefined
+ stm.onLayoutChange(SearchLayout.List);
stm.initStateFromUrl();
// Verify that they have been set
diff --git a/public/app/features/search/state/SearchStateManager.ts b/public/app/features/search/state/SearchStateManager.ts
index 33f9f7524cb..6f0478537e9 100644
--- a/public/app/features/search/state/SearchStateManager.ts
+++ b/public/app/features/search/state/SearchStateManager.ts
@@ -35,6 +35,14 @@ export const defaultQueryParams: SearchQueryParams = {
layout: null,
};
+const getLocalStorageLayout = () => {
+ const selectedLayout = localStorage.getItem(SEARCH_SELECTED_LAYOUT);
+ if (selectedLayout === SearchLayout.List) {
+ return SearchLayout.List;
+ } else {
+ return SearchLayout.Folders;
+ }
+};
export class SearchStateManager extends StateManagerBase {
updateLocation = debounce((query) => locationService.partial(query, true), 300);
doSearchWithDebounce = debounce(() => this.doSearch(), 300);
@@ -50,9 +58,16 @@ export class SearchStateManager extends StateManagerBase {
stateFromUrl.layout = SearchLayout.List;
}
+ const layout = getLocalStorageLayout();
+ const prevSort = localStorage.getItem(SEARCH_SELECTED_SORT) ?? undefined;
+ const sort = layout === SearchLayout.List ? stateFromUrl.sort || prevSort : null;
+
stateManager.setState({
...initialState,
...stateFromUrl,
+ layout,
+ sort: sort ?? initialState.sort,
+ prevSort,
folderUid: folderUid,
eventTrackingNamespace: folderUid ? 'manage_dashboards' : 'dashboard_search',
});
@@ -174,7 +189,14 @@ export class SearchStateManager extends StateManagerBase {
};
hasSearchFilters() {
- return this.state.query || this.state.tag.length || this.state.starred || this.state.panel_type || this.state.sort;
+ return (
+ this.state.query ||
+ this.state.tag.length ||
+ this.state.starred ||
+ this.state.panel_type ||
+ this.state.sort ||
+ this.state.layout === SearchLayout.List
+ );
}
getSearchQuery() {