1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { withStyles, WithStyles, StyleRulesCallback, List, ListItem, ListItemText } from '@material-ui/core';
7 import { ArvadosTheme } from '~/common/custom-theme';
9 type CssRules = 'root' | 'listItem' | 'listItemText';
11 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
16 paddingLeft: theme.spacing.unit,
17 paddingRight: theme.spacing.unit * 2,
20 fontSize: '0.8125rem',
21 color: theme.palette.grey["900"]
25 export interface SearchBarRecentQueriesActionProps {
26 onSearch: (searchValue: string) => void;
27 loadRecentQueries: () => string[];
30 type SearchBarRecentQueriesProps = SearchBarRecentQueriesActionProps & WithStyles<CssRules>;
32 export const SearchBarRecentQueries = withStyles(styles)(
33 ({ classes, onSearch, loadRecentQueries }: SearchBarRecentQueriesProps) =>
34 <List component="nav" className={classes.root}>
35 {loadRecentQueries().map((query, index) =>
36 <ListItem button key={index} className={classes.listItem}>
37 <ListItemText disableTypography
39 onClick={() => onSearch(query)}
40 className={classes.listItemText} />