X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/e046567a3f6fd8bec3113cec513d4a125054caf0..36c18f380e2a31b532fbdd94208b559bef8d900f:/src/components/breadcrumbs/breadcrumbs.tsx diff --git a/src/components/breadcrumbs/breadcrumbs.tsx b/src/components/breadcrumbs/breadcrumbs.tsx index cfcfd407..71796661 100644 --- a/src/components/breadcrumbs/breadcrumbs.tsx +++ b/src/components/breadcrumbs/breadcrumbs.tsx @@ -2,65 +2,91 @@ // // 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 { ResourceBreadcrumb } from 'store/breadcrumbs/breadcrumbs-actions'; +import { ResourcesState } from 'store/resources/resources'; export interface Breadcrumb { label: string; + icon?: IconType; } -interface BreadcrumbsProps { - items: Breadcrumb[]; - 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" | "icon" | "frozenIcon"; -type CssRules = "item" | "currentItem" | "label"; +const styles: StyleRulesCallback = theme => ({ + item: { + opacity: 0.6 + }, + currentItem: { + opacity: 1 + }, + label: { + textTransform: "none" + }, + icon: { + fontSize: 20, + color: grey["600"], + marginRight: '10px', + }, + frozenIcon: { + fontSize: 20, + color: grey["600"], + marginLeft: '10px', + }, +}); -const styles: StyleRulesCallback = theme => { - return { - item: { - opacity: 0.6 - }, - currentItem: { - opacity: 1 - }, - label: { - textTransform: "none" - } - }; -}; - -export default withStyles(styles)(Breadcrumbs); +export interface BreadcrumbsProps { + items: ResourceBreadcrumb[]; + resources: ResourcesState; + onClick: (breadcrumb: ResourceBreadcrumb) => void; + onContextMenu: (event: React.MouseEvent, breadcrumb: ResourceBreadcrumb) => void; +} +export const Breadcrumbs = withStyles(styles)( + ({ classes, onClick, onContextMenu, items, resources }: BreadcrumbsProps & WithStyles) => + + { + items.map((item, index) => { + const isLastItem = index === items.length - 1; + const isFirstItem = index === 0; + const Icon = item.icon || (() => (null)); + return ( + + {isFirstItem ? null : } + + + + {!isLastItem && } + + ); + }) + } + +);