mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* remove code outside of the topnav feature flag * delete NavBar folder * remove topnav toggle from backend * restructure AppChrome folder * fix utils mock * fix applinks tests * remove tests since they're covered in e2e * fix 1 of the approotpage tests * Fix another dashboardpage test * remove reverse portalling + test for plugins using deprecated onNavChanged method * kick drone * handle correlations
41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import React, { useCallback } from 'react';
|
||
|
||
import { SelectableValue } from '@grafana/data';
|
||
import PageActionBar from 'app/core/components/PageActionBar/PageActionBar';
|
||
import { StoreState, useSelector, useDispatch } from 'app/types';
|
||
|
||
import { getDataSourcesSearchQuery, getDataSourcesSort, setDataSourcesSearchQuery, setIsSortAscending } from '../state';
|
||
|
||
const ascendingSortValue = 'alpha-asc';
|
||
const descendingSortValue = 'alpha-desc';
|
||
|
||
const sortOptions = [
|
||
// We use this unicode 'en dash' character (U+2013), because it looks nicer
|
||
// than simple dash in this context. This is also used in the response of
|
||
// the `sorting` endpoint, which is used in the search dashboard page.
|
||
{ label: 'Sort by A–Z', value: ascendingSortValue },
|
||
{ label: 'Sort by Z–A', value: descendingSortValue },
|
||
];
|
||
|
||
export function DataSourcesListHeader() {
|
||
const dispatch = useDispatch();
|
||
const setSearchQuery = useCallback((q: string) => dispatch(setDataSourcesSearchQuery(q)), [dispatch]);
|
||
const searchQuery = useSelector(({ dataSources }: StoreState) => getDataSourcesSearchQuery(dataSources));
|
||
|
||
const setSort = useCallback(
|
||
(sort: SelectableValue) => dispatch(setIsSortAscending(sort.value === ascendingSortValue)),
|
||
[dispatch]
|
||
);
|
||
const isSortAscending = useSelector(({ dataSources }: StoreState) => getDataSourcesSort(dataSources));
|
||
|
||
const sortPicker = {
|
||
onChange: setSort,
|
||
value: isSortAscending ? ascendingSortValue : descendingSortValue,
|
||
getSortOptions: () => Promise.resolve(sortOptions),
|
||
};
|
||
|
||
return (
|
||
<PageActionBar searchQuery={searchQuery} setSearchQuery={setSearchQuery} key="action-bar" sortPicker={sortPicker} />
|
||
);
|
||
}
|