breadcrumbs with inital home-link

This commit is contained in:
Delucse 2020-09-17 14:13:30 +02:00
parent b726f5f42c
commit d70207ea1a
4 changed files with 32 additions and 10 deletions

View File

@ -1,27 +1,49 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import clsx from 'clsx';
import Breadcrumbs from '@material-ui/core/Breadcrumbs'; import { withStyles } from '@material-ui/core/styles';
import MaterialUIBreadcrumbs from '@material-ui/core/Breadcrumbs';
import Typography from '@material-ui/core/Typography'; import Typography from '@material-ui/core/Typography';
class MyBreadcrumbs extends Component { import { faHome } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
const styles = (theme) => ({
home: {
color: theme.palette.secondary.main,
width: '20px !important',
height: '20px',
marginTop: '2px'
},
hover: {
'&:hover': {
color: theme.palette.primary.main
}
}
});
class Breadcrumbs extends Component {
render() { render() {
return ( return (
this.props.content && this.props.content.length > 1 ? this.props.content && this.props.content.length > 0 ?
<Breadcrumbs separator="" style={{marginBottom: '20px'}}> <MaterialUIBreadcrumbs separator="" style={{marginBottom: '20px'}}>
<Link to={'/'} style={{textDecoration: 'none'}}>
<FontAwesomeIcon className={clsx(this.props.classes.home, this.props.classes.hover)} icon={faHome} size="xs"/>
</Link>
{this.props.content.splice(0, this.props.content.length-1).map((content, i) => ( {this.props.content.splice(0, this.props.content.length-1).map((content, i) => (
<Link to={content.link} style={{textDecoration: 'none'}} key={i}> <Link to={content.link} style={{textDecoration: 'none'}} key={i}>
<Typography color="secondary">{content.title}</Typography> <Typography className={this.props.classes.hover} color="secondary">{content.title}</Typography>
</Link> </Link>
))} ))}
<Typography color="textPrimary" style={{overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: '300px'}}> <Typography color="textPrimary" style={{overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: '300px'}}>
{this.props.content.slice(-1)[0].title} {this.props.content.slice(-1)[0].title}
</Typography> </Typography>
</Breadcrumbs> </MaterialUIBreadcrumbs>
: null : null
); );
}; };
} }
export default MyBreadcrumbs; export default withStyles(styles, {withTheme: true})(Breadcrumbs);

View File

@ -11,7 +11,7 @@ class NotFound extends Component {
render() { render() {
return ( return (
<div> <div>
<Breadcrumbs content={[{link: '/', title: 'Home'}, {link: this.props.location.pathname, title: 'Error'}]}/> <Breadcrumbs content={[{link: this.props.location.pathname, title: 'Error'}]}/>
<Typography variant='h4' style={{marginBottom: '5px'}}>Die von Ihnen angeforderte Seite kann nicht gefunden werden.</Typography> <Typography variant='h4' style={{marginBottom: '5px'}}>Die von Ihnen angeforderte Seite kann nicht gefunden werden.</Typography>
<Typography variant='body1'>Die gesuchte Seite wurde möglicherweise entfernt, ihr Name wurde geändert oder sie ist vorübergehend nicht verfügbar.</Typography> <Typography variant='body1'>Die gesuchte Seite wurde möglicherweise entfernt, ihr Name wurde geändert oder sie ist vorübergehend nicht verfügbar.</Typography>
{this.props.button ? {this.props.button ?

View File

@ -46,7 +46,7 @@ class Tutorial extends Component {
<NotFound button={{title: 'Zurück zur Tutorials-Übersicht', link: '/tutorial'}}/> <NotFound button={{title: 'Zurück zur Tutorials-Übersicht', link: '/tutorial'}}/>
: :
<div> <div>
<Breadcrumbs content={[{link: '/', title: 'Home'},{link: '/tutorial', title: 'Tutorial'}, {link: `/tutorial/${currentTutorialId}`, title: tutorial.title}]}/> <Breadcrumbs content={[{link: '/tutorial', title: 'Tutorial'}, {link: `/tutorial/${currentTutorialId}`, title: tutorial.title}]}/>
<StepperHorizontal /> <StepperHorizontal />

View File

@ -54,7 +54,7 @@ class TutorialHome extends Component {
render() { render() {
return ( return (
<div> <div>
<Breadcrumbs content={[{link: '/', title: 'Home'},{link: '/tutorial', title: 'Tutorial'}]}/> <Breadcrumbs content={[{link: '/tutorial', title: 'Tutorial'}]}/>
<h1>Tutorial-Übersicht</h1> <h1>Tutorial-Übersicht</h1>
<Grid container spacing={2}> <Grid container spacing={2}>