From 87e3e3851093038817431f7f4eda35fc174d98f0 Mon Sep 17 00:00:00 2001 From: Tom Gallacher Date: Thu, 19 Jan 2017 13:58:46 +0000 Subject: [PATCH] Moving Breadcrumb to a component --- frontend/src/components/breadcrumb/index.js | 100 ++++++++++++++++++++ frontend/src/components/section/index.js | 72 ++------------ 2 files changed, 109 insertions(+), 63 deletions(-) create mode 100644 frontend/src/components/breadcrumb/index.js diff --git a/frontend/src/components/breadcrumb/index.js b/frontend/src/components/breadcrumb/index.js new file mode 100644 index 00000000..d02ea708 --- /dev/null +++ b/frontend/src/components/breadcrumb/index.js @@ -0,0 +1,100 @@ +const Container = require('@ui/components/container'); +const PropTypes = require('@root/prop-types'); +const React = require('react'); +const ReactRouter = require('react-router'); +const Styled = require('styled-components'); +const flatten = require('lodash.flatten'); +const fns = require('@ui/shared/functions'); + +const { + remcalc +} = fns; + +const { + default: styled +} = Styled; + +// Main Contonent Wrapper Styles +const StyledDiv = styled.div` + background-color: #FAFAFA; + height: ${remcalc(91)}; + border-bottom: solid ${remcalc(1)} #d8d8d8; +`; + +const BreadcrumbA = styled.a` + text-decoration: none !important; +`; + +const BreadcrumbSpan = styled.span` + color: #646464; +`; + +const H1 = styled.h1` + margin: 0 0 0 0; + padding-top: ${remcalc(31)}; + padding-bottom: ${remcalc(31)}; +`; + +const { + Link +} = ReactRouter; + +function getNameLink(name) { + return flatten(name.map((part, i) => { + if (!part.name) { + return null; + } + + const link = ( + + { + ({ + href, + onClick, + }) => + + {part.name} + + } + + ); + + const key = `${part.pathname}${i}`; + const slash = ( + / + ); + + return (i === 0) ? link : [ + slash, + link + ]; + })); +} + +const Breadcrumb = ({ + children, + links = [], + name = [] +}) => { + return ( + + +

+ {getNameLink(name)} +

+
+
+ ); +}; + +Breadcrumb.propTypes = { + children: React.PropTypes.node, + links: React.PropTypes.arrayOf(PropTypes.link), + name: React.PropTypes.arrayOf(PropTypes.link) +}; + +module.exports = Breadcrumb; diff --git a/frontend/src/components/section/index.js b/frontend/src/components/section/index.js index beae6895..848aa4be 100644 --- a/frontend/src/components/section/index.js +++ b/frontend/src/components/section/index.js @@ -1,30 +1,11 @@ -const flatten = require('lodash.flatten'); const React = require('react'); const ReactIntl = require('react-intl'); -const Styled = require('styled-components'); const ReactRouter = require('react-router'); -const H1 = require('@ui/components/base-elements').H1; const Li = require('@ui/components/horizontal-list/li'); const PropTypes = require('@root/prop-types'); const Ul = require('@ui/components/horizontal-list/ul'); -const fns = require('@ui/shared/functions'); - -const { - default: styled -} = Styled; - -const BreadcrumbA = styled.a` - text-decoration: none !important; -`; - -const BreadcrumbSpan = styled.span` - color: #646464; -`; - -const { - remcalc -} = fns; +const Breadcrumb = require('@components/breadcrumb'); const { FormattedMessage @@ -34,11 +15,12 @@ const { Link } = ReactRouter; -const Section = ({ - children, - links = [], - name = [] -}) => { +const Section = (props) => { + const { + children, + links = [], + } = props; + const navLinks = links.map((link) => (
  • @@ -47,44 +29,9 @@ const Section = ({
  • )); - const nameLinks = flatten(name.map((part, i) => { - if (!part.name) { - return null; - } - - const link = ( - - { - ({ - href, - onClick, - }) => - - {part.name} - - } - - ); - - const slash = ( - / - ); - - return (i === 0) ? link : [ - slash, - link - ]; - })); - return (
    -

    - {nameLinks} -

    +
      {navLinks}
    @@ -95,8 +42,7 @@ const Section = ({ Section.propTypes = { children: React.PropTypes.node, - links: React.PropTypes.arrayOf(PropTypes.link), - name: React.PropTypes.arrayOf(PropTypes.link) + links: React.PropTypes.arrayOf(PropTypes.link) }; module.exports = Section;