1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from 'react';
6 import { CustomStyleRulesCallback } from 'common/custom-theme';
7 import { WithStyles } from '@mui/styles';
8 import withStyles from '@mui/styles/withStyles';
9 import { DefaultViewDataProps, DefaultView } from 'components/default-view/default-view';
10 import { ArvadosTheme } from 'common/custom-theme';
11 import { DetailsIcon } from 'components/icon/icon';
13 type CssRules = 'classRoot';
15 const styles: CustomStyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
17 marginTop: theme.spacing(4),
18 marginBottom: theme.spacing(4),
21 type DataTableDefaultViewDataProps = Partial<Pick<DefaultViewDataProps, 'icon' | 'messages' | 'filtersApplied'>>;
22 type DataTableDefaultViewProps = DataTableDefaultViewDataProps & WithStyles<CssRules>;
24 export const DataTableDefaultView = withStyles(styles)(
25 ({ classes, ...props }: DataTableDefaultViewProps) => {
26 const icon = props.icon || DetailsIcon;
27 const filterWarning: string[] = props.filtersApplied ? ['Filters are applied to the data.'] : [];
28 const messages = filterWarning.concat(props.messages || ['No items found']);
29 return <DefaultView {...classes} {...{ icon, messages }} />;