From 6d2da94f8a1bd2b80b548f6484e94173c4627adb Mon Sep 17 00:00:00 2001 From: Fred Carlsen Date: Wed, 12 Dec 2018 16:06:31 +0100 Subject: Fix header link active state --- packages/website/ts/@next/components/button.tsx | 29 ++++++++++++++++++++++++- packages/website/ts/@next/components/header.tsx | 8 +++---- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/website/ts/@next/components/button.tsx b/packages/website/ts/@next/components/button.tsx index 5d44f1ce5..3c22f705e 100644 --- a/packages/website/ts/@next/components/button.tsx +++ b/packages/website/ts/@next/components/button.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link as ReactRouterLink } from 'react-router-dom'; +import { Link as ReactRouterLink, NavLink as ReactRouterNavLink } from 'react-router-dom'; import styled from 'styled-components'; import { BREAKPOINTS } from 'ts/@next/components/layout'; @@ -86,6 +86,33 @@ Link.defaultProps = { isTransparent: true, }; +export const NavLink: React.ReactNode = (props: ButtonInterface) => { + const { + children, + href, + isWithArrow, + } = props; + const Component = Button.withComponent(ReactRouterNavLink); + + return ( + + {children} + + { isWithArrow && + + + + } + + ); +}; + +NavLink.defaultProps = { + isTransparent: true, +}; + // Added this, & + & doesnt really work since we switch with element types... export const ButtonWrap = styled.div` button + button, diff --git a/packages/website/ts/@next/components/header.tsx b/packages/website/ts/@next/components/header.tsx index 3d9f2055c..6e9616e21 100644 --- a/packages/website/ts/@next/components/header.tsx +++ b/packages/website/ts/@next/components/header.tsx @@ -5,7 +5,7 @@ import styled, { withTheme } from 'styled-components'; import { colors } from 'ts/style/colors'; -import { Button, Link } from 'ts/@next/components/button'; +import { Button, Link, NavLink } from 'ts/@next/components/button'; import { DropdownDevelopers } from 'ts/@next/components/dropdowns/dropdown_developers'; import { DropdownProducts } from 'ts/@next/components/dropdowns/dropdown_products'; import { Dropdown } from 'ts/@next/components/dropdowns/mock'; @@ -89,13 +89,13 @@ class HeaderBase extends React.Component { return ( - {link.text} - + {link.dropdownComponent && @@ -169,7 +169,7 @@ const StyledHeader = styled(Section.withComponent('header'))` } `; -const NavLink = styled(Link).attrs({ +const StyledNavLink = styled(NavLink).attrs({ activeStyle: { opacity: 1 }, })` opacity: 0.5; -- cgit v1.2.3