X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/65ad44ac98393e9e7a7f3da8732b536fc051cf51..cf895a44aa0b2a175bc70056ce0bf1c66cb8192f:/src/components/breadcrumbs/breadcrumbs.tsx diff --git a/src/components/breadcrumbs/breadcrumbs.tsx b/src/components/breadcrumbs/breadcrumbs.tsx index c081c314..baf84d1d 100644 --- a/src/components/breadcrumbs/breadcrumbs.tsx +++ b/src/components/breadcrumbs/breadcrumbs.tsx @@ -7,41 +7,64 @@ import { Button, Grid, StyleRulesCallback, WithStyles, Typography, Tooltip } fro import ChevronRightIcon from '@material-ui/icons/ChevronRight'; import { withStyles } from '@material-ui/core'; import { IllegalNamingWarning } from '../warning/warning'; -import { IconType, LockIcon } from 'components/icon/icon'; +import { IconType, FreezeIcon } from 'components/icon/icon'; import grey from '@material-ui/core/colors/grey'; +import { ResourcesState } from 'store/resources/resources'; +import classNames from 'classnames'; +import { ArvadosTheme } from 'common/custom-theme'; export interface Breadcrumb { label: string; icon?: IconType; - isFrozen?: boolean; + uuid: string; } -type CssRules = "item" | "currentItem" | "label" | "icon"; +type CssRules = "item" | "chevron" | "label" | "buttonLabel" | "icon" | "frozenIcon"; -const styles: StyleRulesCallback = theme => ({ +const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ item: { - opacity: 0.6 + borderRadius: '16px', + height: '32px', + minWidth: '36px', + color: theme.customs.colors.grey700, + '&.parentItem': { + color: `${theme.palette.primary.main}`, + }, }, - currentItem: { - opacity: 1 + chevron: { + color: grey["600"], }, label: { - textTransform: "none" + textTransform: "none", + paddingRight: '3px', + paddingLeft: '3px', + lineHeight: '1.4', + }, + buttonLabel: { + overflow: 'hidden', + justifyContent: 'flex-start', }, icon: { fontSize: 20, - color: grey["600"] + color: grey["600"], + marginRight: '5px', + }, + frozenIcon: { + fontSize: 20, + color: grey["600"], + marginLeft: '3px', }, }); export interface BreadcrumbsProps { items: Breadcrumb[]; + resources: ResourcesState; onClick: (breadcrumb: Breadcrumb) => void; onContextMenu: (event: React.MouseEvent, breadcrumb: Breadcrumb) => void; } export const Breadcrumbs = withStyles(styles)( - ({ classes, onClick, onContextMenu, items }: BreadcrumbsProps & WithStyles) => + ({ classes, onClick, onContextMenu, items, resources }: BreadcrumbsProps & WithStyles) => { items.map((item, index) => { @@ -59,23 +82,29 @@ export const Breadcrumbs = withStyles(styles)( : isLastItem ? 'breadcrumb-last' : false} + className={classNames( + isLastItem ? null : 'parentItem', + classes.item + )} + classes={{ + label: classes.buttonLabel + }} color="inherit" - className={isLastItem ? classes.currentItem : classes.item} onClick={() => onClick(item)} onContextMenu={event => onContextMenu(event, item)}> - { - item.isFrozen ? : null - } {item.label} + { + (resources[item.uuid] as any)?.frozenByUuid ? : null + } - {!isLastItem && } + {!isLastItem && } ); })