19504: Allow breadcrumbs to collapse to icons instead of wrapping
authorStephen Smith <stephen@curii.com>
Wed, 7 Dec 2022 23:46:59 +0000 (18:46 -0500)
committerStephen Smith <stephen@curii.com>
Thu, 8 Dec 2022 04:46:59 +0000 (23:46 -0500)
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>

src/components/breadcrumbs/breadcrumbs.tsx
src/views-components/main-content-bar/main-content-bar.tsx

index 1d4b7b272ab3d311e662e9c2bf0526b7be5f7e92..c887727e184ce5bd63c5d8dc8975f45d34fa6db3 100644 (file)
@@ -19,12 +19,13 @@ export interface Breadcrumb {
     uuid: string;
 }
 
-type CssRules = "item" | "label" | "icon" | "frozenIcon";
+type CssRules = "item" | "label" | "buttonLabel" | "icon" | "frozenIcon";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     item: {
         borderRadius: '16px',
         height: '32px',
+        minWidth: '36px',
         color: theme.customs.colors.grey700,
         '&.parentItem': {
             color: `${theme.palette.primary.main}`,
@@ -36,6 +37,10 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         paddingLeft: '3px',
         lineHeight: '1.4',
     },
+    buttonLabel: {
+        overflow: 'hidden',
+        justifyContent: 'flex-start',
+    },
     icon: {
         fontSize: 20,
         color: grey["600"],
@@ -57,7 +62,7 @@ export interface BreadcrumbsProps {
 
 export const Breadcrumbs = withStyles(styles)(
     ({ classes, onClick, onContextMenu, items, resources }: BreadcrumbsProps & WithStyles<CssRules>) =>
-    <Grid container data-cy='breadcrumbs' alignItems="center">
+    <Grid container data-cy='breadcrumbs' alignItems="center" wrap="nowrap">
     {
         items.map((item, index) => {
             const isLastItem = index === items.length - 1;
@@ -78,6 +83,9 @@ export const Breadcrumbs = withStyles(styles)(
                                 isLastItem ? null : 'parentItem',
                                 classes.item
                             )}
+                            classes={{
+                                label: classes.buttonLabel
+                            }}
                             color="inherit"
                             onClick={() => onClick(item)}
                             onContextMenu={event => onContextMenu(event, item)}>
index 5c1bec903096a5e6d7a18f28f85daf793d479d0f..3f4de301f2b465e59ea94e01c25116a23bba9257 100644 (file)
@@ -15,12 +15,15 @@ import RefreshButton from "components/refresh-button/refresh-button";
 import { loadSidePanelTreeProjects } from "store/side-panel-tree/side-panel-tree-actions";
 import { Dispatch } from "redux";
 
-type CssRules = 'mainBar' | 'infoTooltip';
+type CssRules = 'mainBar' | 'breadcrumbContainer' | 'infoTooltip';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     mainBar: {
         flexWrap: 'nowrap',
     },
+    breadcrumbContainer: {
+        overflow: 'hidden',
+    },
     infoTooltip: {
         marginTop: '-10px',
         marginLeft: '10px',
@@ -65,7 +68,7 @@ const mapDispatchToProps = () => (dispatch: Dispatch) => ({
 export const MainContentBar = connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(
     (props: MainContentBarProps & WithStyles<CssRules> & any) =>
         <Toolbar><Grid container className={props.classes.mainBar}>
-            <Grid container item xs alignItems="center">
+            <Grid container item xs alignItems="center" className={props.classes.breadcrumbContainer}>
                 <Breadcrumbs />
             </Grid>
             <Grid item>