X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/528b1f4623fa22d956b8ac1652833fc375a0bfc1..6aaf65540506d590fa826b08166c050b924a99ff:/src/components/breadcrumbs/breadcrumbs.tsx diff --git a/src/components/breadcrumbs/breadcrumbs.tsx b/src/components/breadcrumbs/breadcrumbs.tsx index 33ff33ae..444ac75e 100644 --- a/src/components/breadcrumbs/breadcrumbs.tsx +++ b/src/components/breadcrumbs/breadcrumbs.tsx @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { Button, Grid, StyleRulesCallback, WithStyles } from '@material-ui/core'; +import { Button, Grid, StyleRulesCallback, WithStyles, Typography, Tooltip } from '@material-ui/core'; import ChevronRightIcon from '@material-ui/icons/ChevronRight'; import { withStyles } from '@material-ui/core'; @@ -11,60 +11,52 @@ export interface Breadcrumb { label: string; } -interface BreadcrumbsProps { +type CssRules = "item" | "currentItem" | "label"; + +const styles: StyleRulesCallback = theme => ({ + item: { + opacity: 0.6 + }, + currentItem: { + opacity: 1 + }, + label: { + textTransform: "none" + } +}); + +export interface BreadcrumbsProps { items: Breadcrumb[]; - onClick: (breadcrumb: Breadcrumb) => any; + onClick: (breadcrumb: Breadcrumb) => void; + onContextMenu: (event: React.MouseEvent, breadcrumb: Breadcrumb) => void; } -const Breadcrumbs: React.SFC> = (props) => { - const { classes, onClick, items } = props; - return - { - getInactiveItems(items).map((item, index) => ( +export const Breadcrumbs = withStyles(styles)( + ({ classes, onClick, onContextMenu, items }: BreadcrumbsProps & WithStyles) => + + { + items.map((item, index) => { + const isLastItem = index === items.length - 1; + return ( - - + + + + {!isLastItem && } - )) - } - { - getActiveItem(items).map((item, index) => ( - - )) - } - ; -}; - -const getInactiveItems = (items: Breadcrumb[]) => { - return items.slice(0, -1); -}; - -const getActiveItem = (items: Breadcrumb[]) => { - return items.slice(-1); -}; - -type CssRules = 'inactiveItem'; - -const styles: StyleRulesCallback = theme => { - const { unit } = theme.spacing; - return { - inactiveItem: { - opacity: 0.6 - } - }; -}; - -export default withStyles(styles)(Breadcrumbs); - + ); + }) + } + +);