import { Component, linkEvent } from "inferno"; import { PersonView, Site, SiteAggregates } from "lemmy-js-client"; import { mdToHtml } from "../../markdown"; import { I18NextService } from "../../services"; import { Badges } from "../common/badges"; import { BannerIconHeader } from "../common/banner-icon-header"; import { Icon } from "../common/icon"; import { PersonListing } from "../person/person-listing"; interface SiteSidebarProps { site: Site; showLocal: boolean; counts?: SiteAggregates; admins?: PersonView[]; isMobile?: boolean; } interface SiteSidebarState { collapsed: boolean; } export class SiteSidebar extends Component { state: SiteSidebarState = { collapsed: false, }; constructor(props: any, context: any) { super(props, context); } render() { return (
{this.siteName()} {!this.state.collapsed && ( )}
{!this.state.collapsed && (
{this.siteInfo()}
)}
); } siteName() { return ( <>
{this.props.site.name}
{!this.props.isMobile && ( )} ); } siteInfo() { const site = this.props.site; return (
{site.description &&
{site.description}
} {site.sidebar && this.siteSidebar(site.sidebar)} {this.props.counts && } {this.props.admins && this.admins(this.props.admins)}
); } siteSidebar(sidebar: string) { return (
); } admins(admins: PersonView[]) { return ( ); } handleCollapseSidebar(i: SiteSidebar) { i.setState({ collapsed: !i.state.collapsed }); } }