// @flow import * as React from 'react'; import { observer, inject } from 'mobx-react'; import styled from 'styled-components'; import { ArchiveIcon, HomeIcon, EditIcon, SearchIcon, StarredIcon, PlusIcon, } from 'outline-icons'; import Flex from 'shared/components/Flex'; import Modal from 'components/Modal'; import Invite from 'scenes/Invite'; import AccountMenu from 'menus/AccountMenu'; import Sidebar from './Sidebar'; import Scrollable from 'components/Scrollable'; import Section from './components/Section'; import Collections from './components/Collections'; import SidebarLink from './components/SidebarLink'; import HeaderBlock from './components/HeaderBlock'; import Bubble from './components/Bubble'; import AuthStore from 'stores/AuthStore'; import DocumentsStore from 'stores/DocumentsStore'; import UiStore from 'stores/UiStore'; import { observable } from 'mobx'; type Props = { auth: AuthStore, documents: DocumentsStore, ui: UiStore, }; @observer class MainSidebar extends React.Component { @observable inviteModalOpen: boolean = false; componentDidMount() { this.props.documents.fetchDrafts(); } handleCreateCollection = () => { this.props.ui.setActiveModal('collection-new'); }; handleInviteModalOpen = () => { this.inviteModalOpen = true; }; handleInviteModalClose = () => { this.inviteModalOpen = false; }; render() { const { auth, documents } = this.props; const { user, team } = auth; if (!user || !team) return null; const draftDocumentsCount = documents.drafts.length; return ( } />
} exact={false} label="Home" /> } label="Search" exact={false} /> } exact={false} label="Starred" /> } label={ Drafts{draftDocumentsCount > 0 && ( )} } active={ documents.active ? !documents.active.publishedAt : undefined } />
} exact={false} label="Archive" active={ documents.active ? documents.active.isArchived : undefined } /> {user.isAdmin && ( } label="Invite people…" /> )}
); } } const Drafts = styled(Flex)` height: 24px; `; export default inject('documents', 'auth', 'ui')(MainSidebar);