2016-02-09 01:07:12 +03:00
|
|
|
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-02-09 01:07:12 +03:00
|
|
|
|
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-02-09 01:07:12 +03:00
|
|
|
|
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-02-09 01:07:12 +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>
|
|
|
|
);
|
2016-02-09 01:07:12 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
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'])
|
2016-02-09 01:07:12 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
NavDrawer.defaultProps = {
|
2016-04-10 21:45:37 +03:00
|
|
|
active: false,
|
|
|
|
className: '',
|
|
|
|
scrollY: false,
|
|
|
|
width: 'normal'
|
2016-02-09 01:07:12 +03:00
|
|
|
};
|
|
|
|
|
2016-05-29 20:59:17 +03:00
|
|
|
export default themr(LAYOUT)(NavDrawer);
|
|
|
|
export { NavDrawer };
|