All files / components/HeroBanner HeroBanner.js

55.56% Statements 5/9
0% Branches 0/2
66.67% Functions 2/3
50% Lines 4/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                  1x   1x             1x                     1x                                              
// @flow
 
import Button from "components/buttons/Button"
import { CSSTransition } from "react-transition-group"
import { type ComponentProps } from "."
import Content from "components/Content"
import React from "react"
import { Wrapper } from "./styled"
 
const Y_OFFSET = -70
 
const HeroBanner = ({
  buttonText,
  lineOne,
  lineTwo,
  link,
  show
}: ComponentProps): React$Node => {
  const onScrollTo = (id: string) => () => {
    const element = document.getElementById(id)
 
    if (element) {
      const yPosition =
        element.getBoundingClientRect().top + window.pageYOffset + Y_OFFSET
 
      window.scrollTo({ behavior: "smooth", top: yPosition })
    }
  }
 
  return (
    <CSSTransition
      classNames="hero-banner"
      in={show}
      mountOnEnter
      timeout={1000}
      unmountOnExit
    >
      <Wrapper>
        <Content content={lineOne} />
        <Content content={lineTwo} />
 
        <Button
          isHome
          label={buttonText}
          onClick={onScrollTo(link)}
        />
      </Wrapper>
    </CSSTransition>
  )
}
 
export default HeroBanner