diff --git a/web/src/admin/AdminInterface/index.entrypoint.ts b/web/src/admin/AdminInterface/index.entrypoint.ts
index 6f09c4926431..1cfe1e850580 100644
--- a/web/src/admin/AdminInterface/index.entrypoint.ts
+++ b/web/src/admin/AdminInterface/index.entrypoint.ts
@@ -30,16 +30,15 @@ import {
renderNotificationDrawerPanel,
} from "#elements/notifications/utils";
-import { PageNavMenuToggle } from "#components/ak-page-navbar";
-
import type { AboutModal } from "#admin/AdminInterface/AboutModal";
import Styles from "#admin/AdminInterface/index.entrypoint.css";
import { ROUTES } from "#admin/Routes";
import { CapabilitiesEnum } from "@goauthentik/api";
+import { msg } from "@lit/localize";
import { CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit";
-import { customElement, property, query, state } from "lit/decorators.js";
+import { customElement, eventOptions, property, query, state } from "lit/decorators.js";
import { classMap } from "lit/directives/class-map.js";
import PFButton from "@patternfly/patternfly/components/Button/button.css";
@@ -73,19 +72,30 @@ export class AdminInterface extends WithCapabilitiesConfig(
@query("ak-about-modal")
public aboutModal?: AboutModal;
- @property({ type: Boolean, reflect: true })
+ @property({ type: Boolean, reflect: true, attribute: "sidebar" })
public sidebarOpen = false;
- #onPageNavMenuEvent = (event: PageNavMenuToggle) => {
- this.sidebarOpen = event.open;
+ //#endregion
+
+ //#region Public Methods
+
+ public toggleSidebar = () => {
+ this.sidebarOpen = !this.sidebarOpen;
};
+ //#endregion
+
+ //#region Lifecycle
+
#sidebarMatcher: MediaQueryList;
#sidebarMediaQueryListener = (event: MediaQueryListEvent) => {
this.sidebarOpen = event.matches;
};
- //#endregion
+ @eventOptions({ passive: true })
+ protected routeChangeListener() {
+ this.sidebarOpen = this.#sidebarMatcher.matches;
+ }
@state()
protected drawer: DrawerState = readDrawerParams();
@@ -96,8 +106,6 @@ export class AdminInterface extends WithCapabilitiesConfig(
persistDrawerParams(event.drawer);
};
- //#region Lifecycle
-
constructor() {
configureSentry();
@@ -105,12 +113,8 @@ export class AdminInterface extends WithCapabilitiesConfig(
WebsocketClient.connect();
- this.#sidebarMatcher = window.matchMedia("(min-width: 1200px)");
+ this.#sidebarMatcher = window.matchMedia("(width >= 1200px)");
this.sidebarOpen = this.#sidebarMatcher.matches;
-
- this.addEventListener(PageNavMenuToggle.eventName, this.#onPageNavMenuEvent, {
- passive: true,
- });
}
public connectedCallback() {
@@ -139,7 +143,11 @@ export class AdminInterface extends WithCapabilitiesConfig(
}
}
- render(): TemplateResult {
+ //#endregion
+
+ //#region Rendering
+
+ protected override render(): TemplateResult {
if (!isAPIResultReady(this.session) || !canAccessAdmin(this.session.user)) {
return html`