import { css } from '@emotion/css'; import React, { FC, ChangeEvent, FormEvent } from 'react'; import { GrafanaTheme2, SelectableValue } from '@grafana/data'; import { config } from '@grafana/runtime'; import { HorizontalGroup, RadioButtonGroup, Checkbox, InlineSwitch, useStyles2 } from '@grafana/ui'; import { SortPicker } from 'app/core/components/Select/SortPicker'; import { TagFilter } from 'app/core/components/TagFilter/TagFilter'; import { SearchSrv } from 'app/core/services/search_srv'; import { DashboardQuery, SearchLayout } from '../types'; export const layoutOptions = [ { value: SearchLayout.Folders, icon: 'folder', ariaLabel: 'View by folders' }, { value: SearchLayout.List, icon: 'list-ul', ariaLabel: 'View as list' }, ]; const searchSrv = new SearchSrv(); interface Props { onLayoutChange: (layout: SearchLayout) => void; setShowPreviews: (newValue: boolean) => void; onSortChange: (value: SelectableValue) => void; onStarredFilterChange?: (event: FormEvent) => void; onTagFilterChange: (tags: string[]) => void; query: DashboardQuery; showStarredFilter?: boolean; hideLayout?: boolean; showPreviews?: boolean; } export const ActionRow: FC = ({ onLayoutChange, setShowPreviews, onSortChange, onStarredFilterChange = () => {}, onTagFilterChange, query, showStarredFilter, hideLayout, showPreviews, }) => { const styles = useStyles2(getStyles); const previewsEnabled = config.featureToggles.dashboardPreviews; return (
{!hideLayout ? ( ) : null} {previewsEnabled && ( ) => setShowPreviews(ev.target.checked)} transparent /> )}
{showStarredFilter && (
)}
); }; ActionRow.displayName = 'ActionRow'; export const getStyles = (theme: GrafanaTheme2) => { return { actionRow: css` display: none; ${theme.breakpoints.up('md')} { display: flex; justify-content: space-between; align-items: center; padding-bottom: ${theme.spacing(2)}; width: 100%; } `, rowContainer: css` margin-right: ${theme.spacing(1)}; `, checkboxWrapper: css` label { line-height: 1.2; } `, }; };