import "../elements/messages/MessageContainer"; import { css, CSSResult, customElement, html, LitElement, property, TemplateResult, } from "lit-element"; import { me } from "../api/Users"; import { ID_REGEX, SLUG_REGEX, UUID_REGEX } from "../elements/router/Route"; import "./locale"; import "../elements/sidebar/SidebarItem"; import { t } from "@lingui/macro"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; import AKGlobal from "../authentik.css"; import "../elements/router/RouterOutlet"; import "../elements/messages/MessageContainer"; import "../elements/notifications/NotificationDrawer"; import "../elements/sidebar/Sidebar"; import { until } from "lit-html/directives/until"; import { EVENT_API_DRAWER_TOGGLE, EVENT_NOTIFICATION_DRAWER_TOGGLE, EVENT_SIDEBAR_TOGGLE, VERSION, } from "../constants"; import { AdminApi } from "authentik-api"; import { DEFAULT_CONFIG } from "../api/Config"; import { WebsocketClient } from "../common/ws"; @customElement("ak-interface-admin") export class AdminInterface extends LitElement { @property({ type: Boolean }) sidebarOpen = true; @property({ type: Boolean }) notificationOpen = false; @property({ type: Boolean }) apiDrawerOpen = false; ws: WebsocketClient; static get styles(): CSSResult[] { return [ PFBase, PFPage, PFButton, PFDrawer, AKGlobal, css` .pf-c-page__main, .pf-c-drawer__content, .pf-c-page__drawer { z-index: auto !important; } .display-none { display: none; } `, ]; } constructor() { super(); this.ws = new WebsocketClient(); this.ws.connect(); this.sidebarOpen = window.innerWidth >= 1280; window.addEventListener("resize", () => { this.sidebarOpen = window.innerWidth >= 1280; }); window.addEventListener(EVENT_SIDEBAR_TOGGLE, () => { this.sidebarOpen = !this.sidebarOpen; }); window.addEventListener(EVENT_NOTIFICATION_DRAWER_TOGGLE, () => { this.notificationOpen = !this.notificationOpen; }); window.addEventListener(EVENT_API_DRAWER_TOGGLE, () => { this.apiDrawerOpen = !this.apiDrawerOpen; }); } render(): TemplateResult { return html`