import React from 'react'; import PropTypes from 'prop-types'; import { Link } from '@reach/router'; import Group from '../models/group'; import { gettext, siteRoot, enableWiki } from '../utils/constants'; import { seafileAPI } from '../utils/seafile-api'; import { Badge } from 'reactstrap'; import { canViewOrg } from '../utils/constants'; const propTypes = { currentTab: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, tabItemClick: PropTypes.func.isRequired, draftCounts: PropTypes.number, }; class MainSideNav extends React.Component { constructor(props) { super(props); this.state = { groupsExtended: false, sharedExtended: false, closeSideBar:false, groupItems: [], }; this.listHeight = 24; //for caculate tabheight this.groupsHeight = 0; this.adminHeight = 0; } grpsExtend = () => { this.setState({ groupsExtended: !this.state.groupsExtended, }); this.loadGroups(); } shExtend = () => { this.setState({ sharedExtended: !this.state.sharedExtended, }); } loadGroups = () => { let _this = this; seafileAPI.listGroups().then(res =>{ let groupList = res.data.map(item => { let group = new Group(item); return group; }) this.groupsHeight = (groupList.length + 1) * _this.listHeight; _this.setState({ groupItems: groupList }); }); } tabItemClick = (param, id) => { this.props.tabItemClick(param, id); } getActiveClass = (tab) => { return this.props.currentTab === tab ? 'active' : ''; } renderSharedGroups() { let style = {height: 0}; if (this.state.groupsExtended) { style = {height: this.groupsHeight}; } return (