mirror of
https://github.com/haiwen/seahub.git
synced 2025-07-14 23:46:49 +00:00
63 lines
2.0 KiB
JavaScript
63 lines
2.0 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import classnames from 'classnames';
|
|
import MediaQuery from 'react-responsive';
|
|
import Logo from './logo';
|
|
import MainSideNav from './main-side-nav';
|
|
import MainSideNavFolded from './main-side-nav-folded';
|
|
import { SIDE_PANEL_FOLDED_WIDTH } from '../constants';
|
|
|
|
const propTypes = {
|
|
isSidePanelClosed: PropTypes.bool,
|
|
currentTab: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
onCloseSidePanel: PropTypes.func,
|
|
tabItemClick: PropTypes.func,
|
|
children: PropTypes.object,
|
|
style: PropTypes.object,
|
|
eventBus: PropTypes.object,
|
|
isSidePanelFolded: PropTypes.bool,
|
|
toggleFoldSideNav: PropTypes.func
|
|
};
|
|
|
|
class SidePanel extends React.Component {
|
|
|
|
render() {
|
|
const { children, isSidePanelFolded, style, eventBus } = this.props;
|
|
return (
|
|
<div
|
|
className={classnames('side-panel', { 'side-panel-folded': isSidePanelFolded, 'left-zero': !this.props.isSidePanelClosed })}
|
|
style={isSidePanelFolded ? { flexBasis: SIDE_PANEL_FOLDED_WIDTH } : style}
|
|
>
|
|
<MediaQuery query="(max-width: 767.8px)">
|
|
<div className='side-panel-north'>
|
|
<Logo onCloseSidePanel={this.props.onCloseSidePanel} />
|
|
</div>
|
|
</MediaQuery>
|
|
<div className="side-panel-center">
|
|
{children ? children : null}
|
|
{(!children && !isSidePanelFolded) &&
|
|
<MainSideNav
|
|
tabItemClick={this.props.tabItemClick}
|
|
currentTab={this.props.currentTab}
|
|
isSidePanelFolded={isSidePanelFolded}
|
|
toggleFoldSideNav={this.props.toggleFoldSideNav}
|
|
/>
|
|
}
|
|
{(!children && isSidePanelFolded) &&
|
|
<MainSideNavFolded
|
|
tabItemClick={this.props.tabItemClick}
|
|
currentTab={this.props.currentTab}
|
|
toggleFoldSideNav={this.props.toggleFoldSideNav}
|
|
eventBus={eventBus}
|
|
/>
|
|
}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
SidePanel.propTypes = propTypes;
|
|
|
|
export default SidePanel;
|