react-toolbox/components/layout/NavDrawer.js

64 lines
2.1 KiB
JavaScript
Raw Normal View History

import React from 'react';
2016-04-10 21:45:37 +03:00
import classnames from 'classnames';
2016-05-22 19:11:27 +03:00
import { themr } from 'react-css-themr';
2016-05-29 20:59:17 +03:00
import { LAYOUT } from '../identifiers.js';
2016-05-22 19:11:27 +03:00
const NavDrawer = ({ active, children, className, onOverlayClick, permanentAt, pinned, scrollY, theme, width }) => {
const rootClasses = classnames([theme.navDrawer], {
2016-05-22 20:35:18 +03:00
[theme[permanentAt + 'Permanent']]: permanentAt,
2016-05-22 19:11:27 +03:00
[theme.wide]: (width === 'wide'),
[theme.active]: active,
[theme.pinned]: pinned
}, className);
2016-05-22 19:11:27 +03:00
const drawerClasses = classnames(theme.drawerContent, {
[theme.scrollY]: scrollY
2016-04-10 21:45:37 +03:00
});
2016-04-10 21:45:37 +03:00
return (
2016-05-22 19:11:27 +03:00
<div data-react-toolbox='nav-drawer' className={rootClasses} onClick={onOverlayClick}>
<div data-react-toolbox='nav-drawer-scrim' className={theme.scrim}>
2016-04-10 21:45:37 +03:00
<aside data-react-toolbox='nav-drawer-content' className={drawerClasses}>
2016-05-22 19:11:27 +03:00
{children}
2016-04-10 21:45:37 +03:00
</aside>
</div>
</div>
);
};
NavDrawer.propTypes = {
2016-04-10 21:45:37 +03:00
active: React.PropTypes.bool,
children: React.PropTypes.any,
className: React.PropTypes.string,
onOverlayClick: React.PropTypes.func,
permanentAt: React.PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl', 'xxxl']),
pinned: React.PropTypes.bool,
scrollY: React.PropTypes.bool,
2016-05-22 19:11:27 +03:00
theme: React.PropTypes.shape({
active: React.PropTypes.string.isRequired,
drawerContent: React.PropTypes.string.isRequired,
lgPermanent: React.PropTypes.string.isRequired,
mdPermanent: React.PropTypes.string.isRequired,
navDrawer: React.PropTypes.string.isRequired,
pinned: React.PropTypes.string.isRequired,
scrim: React.PropTypes.string.isRequired,
scrollY: React.PropTypes.string.isRequired,
smPermanent: React.PropTypes.string.isRequired,
wide: React.PropTypes.string.isRequired,
xlPermanent: React.PropTypes.string.isRequired,
xxlPermanent: React.PropTypes.string.isRequired,
xxxlPermanent: React.PropTypes.string.isRequired
}),
2016-04-10 21:45:37 +03:00
width: React.PropTypes.oneOf(['normal', 'wide'])
};
NavDrawer.defaultProps = {
2016-04-10 21:45:37 +03:00
active: false,
className: '',
scrollY: false,
width: 'normal'
};
2016-05-29 20:59:17 +03:00
export default themr(LAYOUT)(NavDrawer);
export { NavDrawer };