X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/a3f3b01052abf62ac96bb841747a657268498ad0..cc70636e87a68db6a6af296a924e66e78578280a:/src/components/breadcrumbs/breadcrumbs.tsx diff --git a/src/components/breadcrumbs/breadcrumbs.tsx b/src/components/breadcrumbs/breadcrumbs.tsx index 4868e137..301f3041 100644 --- a/src/components/breadcrumbs/breadcrumbs.tsx +++ b/src/components/breadcrumbs/breadcrumbs.tsx @@ -2,68 +2,106 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; +import React from 'react'; import { Button, Grid, StyleRulesCallback, WithStyles, Typography, Tooltip } from '@material-ui/core'; import ChevronRightIcon from '@material-ui/icons/ChevronRight'; import { withStyles } from '@material-ui/core'; +import { IllegalNamingWarning } from '../warning/warning'; +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; + uuid: string; } -interface BreadcrumbsProps { +type CssRules = "item" | "label" | "icon" | "frozenIcon"; + +const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ + item: { + borderRadius: '16px', + height: '32px', + backgroundColor: theme.customs.colors.grey300, + '&.parentItem': { + backgroundColor: `${theme.customs.colors.grey300}99`, + }, + '&:hover': { + backgroundColor: theme.customs.colors.grey400, + }, + '&.parentItem:hover': { + backgroundColor: `${theme.customs.colors.grey400}99`, + }, + }, + label: { + textTransform: "none", + paddingRight: '3px', + paddingLeft: '3px', + lineHeight: '1.4', + }, + icon: { + fontSize: 20, + 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; } -const Breadcrumbs: React.SFC> = ({ classes, onClick, onContextMenu, items }) => { - return - { - items.map((item, index) => { - const isLastItem = index === items.length - 1; - return ( - - - - - { - !isLastItem && - } - - ); - }) - } - ; -}; - -type CssRules = "item" | "currentItem" | "label"; - -const styles: StyleRulesCallback = theme => { - const { unit } = theme.spacing; - return { - item: { - opacity: 0.6 - }, - currentItem: { - opacity: 1 - }, - label: { - textTransform: "none" - } - }; -}; - -export default withStyles(styles)(Breadcrumbs); - + className={classes.label}> + {item.label} + + { + (resources[item.uuid] as any)?.frozenByUuid ? : null + } + + + {!isLastItem && } + + ); + }) + } + +);