import React from 'react';
import { toggleDropdown } from '../../services/common-functions';
import PropTypes from 'prop-types';
class HeaderBar extends React.Component {
pushMenu() {
const body = document.body;
if (body.clientWidth > 786) {
toggleDropdown(body, 'sidebar-collapse');
} else {
toggleDropdown(body, 'sidebar-open');
}
}
getLogo(logoType = 'main') {
const logoClass = logoType !== 'mini' ? 'logo-lg' : 'logo-mini';
const logoFile = logoType !== 'mini' ? this.props.clientLogo : this.props.clientLogoMini;
const altLogo = logoType !== 'mini' ? this.props.clientName : this.props.clientNameAbbr;
return (
<span className={logoClass} style={{ height: '100%', position: 'relative' }}>
{logoFile ? <img src={logoFile} alt="The Brand." style={{ maxWidth: '90%', maxHeight: '90%', width: 'auto', height: 'auto' }} /> : altLogo}
</span>
);
}
render() {
const logo = this.getLogo();
const logoMini = this.props.clientNameAbbr || this.props.clientLogoMini ? this.getLogo('mini') : '';
return (
<header className="main-header">
<a
className="logo"
href={this.props.logoLink}
onClick={this.props.onLogoClick ? e => {
e.preventDefault();
e.stopPropagation();
this.props.onLogoClick();
} : () => {}}
>
{logoMini}
{logo}
</a>
<nav className="navbar navbar-static-top" role="navigation">
<a className="sidebar-toggle" data-toggle="offcanvas" role="button" onClick={this.pushMenu}>
<span className="sr-only">Toggle navigation</span>
</a>
<div className="navbar-custom-menu">
<ul className="nav navbar-nav">
{this.props.children}
</ul>
</div>
</nav>
</header>
);
}
}
HeaderBar.propTypes = {
clientName: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element
]),
clientNameAbbr: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element
]),
clientLogo: PropTypes.string,
clientLogoMini: PropTypes.string,
logoLink: PropTypes.string,
onLogoClick: PropTypes.func
};
HeaderBar.defaultProps = {
clientName: <span><b>Admin</b>LTE</span>,
clientNameAbbr: <span><b>A</b>LT</span>,
clientLogo: '',
clientLogoMini: ''
};
export default HeaderBar;
|