UNPKG

@rocketsofawesome/mirage

Version:

[Live Demo of the Pattern Library](https://rocketsofawesome.github.io/mirage/)

79 lines (67 loc) 1.55 kB
import React, { Component } from 'react' import PropTypes from 'prop-types' import styled, { withTheme } from 'styled-components' import { Default, DesktopNavigation, Laptop, Mobile, MobileNavigation } from 'SRC' class BaseHeader extends Component { constructor (props) { super(props) this.header = null } setMargin = () => { const { setMargin, theme: { basePxSize } } = this.props const remHeight = (this.header.clientHeight / basePxSize) setMargin(remHeight) } componentDidMount () { this.setMargin() } componentDidUpdate () { this.setMargin() } render () { const { above, below, className, desktopProps, mobileProps, ...props } = this.props return ( <div className={className} ref={(element) => { this.header = element }} {...props}> {above} <Default displayTarget={'belowMobileNav'}> <MobileNavigation {...mobileProps} /> </Default> <Default displayTarget={'aboveMobileNav'}> <DesktopNavigation {...desktopProps} /> </Default> {below} </div> ) } } const Header = styled(BaseHeader)` position: ${props => props.position}; z-index: 2; width: 100%; ` Header.propTypes = { className: PropTypes.string, above: PropTypes.node, below: PropTypes.node, desktopProps: PropTypes.object, mobileProps: PropTypes.object } Header.defaultProps = { position: 'fixed', setMargin: () => {} } /** @component */ export default withTheme(Header)