// @flow import { observer } from "mobx-react"; import { EditIcon, SearchIcon, ShapesIcon, HomeIcon, SettingsIcon, } from "outline-icons"; import * as React from "react"; import { DndProvider } from "react-dnd"; import { HTML5Backend } from "react-dnd-html5-backend"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; import Bubble from "components/Bubble"; import Flex from "components/Flex"; import Scrollable from "components/Scrollable"; import Sidebar from "./Sidebar"; import ArchiveLink from "./components/ArchiveLink"; import Collections from "./components/Collections"; import Section from "./components/Section"; import SidebarAction from "./components/SidebarAction"; import SidebarLink from "./components/SidebarLink"; import Starred from "./components/Starred"; import TeamButton from "./components/TeamButton"; import TrashLink from "./components/TrashLink"; import { inviteUser } from "actions/definitions/users"; import useCurrentTeam from "hooks/useCurrentTeam"; import useCurrentUser from "hooks/useCurrentUser"; import useStores from "hooks/useStores"; import AccountMenu from "menus/AccountMenu"; import { homePath, searchUrl, draftsPath, templatesPath, settingsPath, } from "utils/routeHelpers"; function MainSidebar() { const { t } = useTranslation(); const { policies, documents } = useStores(); const team = useCurrentTeam(); const user = useCurrentUser(); React.useEffect(() => { documents.fetchDrafts(); documents.fetchTemplates(); }, [documents]); const [dndArea, setDndArea] = React.useState(); const handleSidebarRef = React.useCallback((node) => setDndArea(node), []); const html5Options = React.useMemo(() => ({ rootElement: dndArea }), [ dndArea, ]); const can = policies.abilities(team.id); return ( {dndArea && ( {(props) => ( )}
} exact={false} label={t("Home")} /> } label={t("Search")} exact={false} /> {can.createDocument && ( } label={ {t("Drafts")} } active={ documents.active ? !documents.active.publishedAt && !documents.active.isDeleted && !documents.active.isTemplate : undefined } /> )}
{can.createDocument && ( <> } exact={false} label={t("Templates")} active={ documents.active ? documents.active.isTemplate && !documents.active.isDeleted && !documents.active.isArchived : undefined } /> )} } exact={false} label={t("Settings")} />
)}
); } const Drafts = styled(Flex)` height: 24px; `; export default observer(MainSidebar);