// @flow import { observer } from "mobx-react"; import { ArchiveIcon, HomeIcon, EditIcon, SearchIcon, StarredIcon, ShapesIcon, TrashIcon, PlusIcon, SettingsIcon, } from "outline-icons"; import * as React from "react"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; import CollectionNew from "scenes/CollectionNew"; import Invite from "scenes/Invite"; import Flex from "components/Flex"; import Modal from "components/Modal"; import Scrollable from "components/Scrollable"; import Sidebar from "./Sidebar"; import Bubble from "./components/Bubble"; import Collections from "./components/Collections"; import HeaderBlock from "./components/HeaderBlock"; import Section from "./components/Section"; import SidebarLink from "./components/SidebarLink"; import useStores from "hooks/useStores"; import AccountMenu from "menus/AccountMenu"; function MainSidebar() { const { t } = useTranslation(); const { policies, auth, documents } = useStores(); const [inviteModalOpen, setInviteModalOpen] = React.useState(false); const [ createCollectionModalOpen, setCreateCollectionModalOpen, ] = React.useState(false); React.useEffect(() => { documents.fetchDrafts(); documents.fetchTemplates(); }, [documents]); const handleCreateCollectionModalOpen = React.useCallback( (ev: SyntheticEvent<>) => { ev.preventDefault(); setCreateCollectionModalOpen(true); }, [] ); const handleCreateCollectionModalClose = React.useCallback( (ev: SyntheticEvent<>) => { ev.preventDefault(); setCreateCollectionModalOpen(false); }, [] ); const handleInviteModalOpen = React.useCallback((ev: SyntheticEvent<>) => { ev.preventDefault(); setInviteModalOpen(true); }, []); const handleInviteModalClose = React.useCallback((ev: SyntheticEvent<>) => { ev.preventDefault(); setInviteModalOpen(false); }, []); const { user, team } = auth; if (!user || !team) return null; const can = policies.abilities(team.id); return ( {(props) => ( )}
} exact={false} label={t("Home")} /> } label={t("Search")} exact={false} /> } exact={false} label={t("Starred")} /> } exact={false} label={t("Templates")} active={documents.active ? documents.active.template : undefined} /> } label={ {t("Drafts")} {documents.totalDrafts > 0 && ( )} } active={ documents.active ? !documents.active.publishedAt && !documents.active.isDeleted && !documents.active.isTemplate : undefined } />
} exact={false} label={t("Archive")} active={ documents.active ? documents.active.isArchived && !documents.active.isDeleted : undefined } /> } exact={false} label={t("Trash")} active={documents.active ? documents.active.isDeleted : undefined} /> } exact={false} label={t("Settings")} /> {can.invite && ( } label={t("Invite people…")} /> )}
); } const Secondary = styled.div` overflow-x: hidden; flex-shrink: 0; `; const Drafts = styled(Flex)` height: 24px; `; export default observer(MainSidebar);