css changes
[arvados-workbench2.git] / src / components / subprocess-filter / subprocess-filter.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import * as React from 'react';
6 import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
7 import { ArvadosTheme } from '~/common/custom-theme';
8 import { Typography, Switch } from '@material-ui/core';
9
10 type CssRules = 'container' | 'label' | 'value' | 'switch';
11
12 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
13     container: {
14         display: 'flex',
15     },
16     label: {
17         width: '86px',
18         color: theme.palette.grey["500"],
19         textAlign: 'right',
20     },
21     value: {
22         width: '24px',
23         paddingLeft: theme.spacing.unit,
24     },
25     switch: {
26         height: '20px',
27         '& span:first-child': {
28             height: '18px'
29         }
30     }
31 });
32
33 export interface SubprocessFilterDataProps {
34     label: string;
35     value: number;
36     checked?: boolean;
37     key?: string;
38     onToggle?: () => void;
39 }
40
41 type SubprocessFilterProps = SubprocessFilterDataProps & WithStyles<CssRules>;
42
43 export const SubprocessFilter = withStyles(styles)(
44     ({ classes, label, value, key, checked, onToggle }: SubprocessFilterProps) =>
45         <div className={classes.container} >
46             <Typography component="span" className={classes.label}>{label}:</Typography>
47             <Typography component="span" className={classes.value}>{value}</Typography>
48             {onToggle && <Switch classes={{ root: classes.switch }}
49                 checked={checked}
50                 onChange={onToggle}
51                 value={key}
52                 color="primary" />
53             }
54         </div>
55 );