web/admin: add collapse button to sidebar header on mobile viewport
closes #813 Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		@ -1,9 +1,18 @@
 | 
			
		||||
import { css, CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element";
 | 
			
		||||
import PFPage from "@patternfly/patternfly/components/Page/page.css";
 | 
			
		||||
import PFGlobal from "@patternfly/patternfly/patternfly-base.css";
 | 
			
		||||
import PFButton from "@patternfly/patternfly/components/Button/button.css";
 | 
			
		||||
import PFBase from "@patternfly/patternfly/patternfly-base.css";
 | 
			
		||||
import AKGlobal from "../../authentik.css";
 | 
			
		||||
 | 
			
		||||
import { configureSentry } from "../../api/Sentry";
 | 
			
		||||
import { Config } from "authentik-api";
 | 
			
		||||
import { ifDefined } from "lit-html/directives/if-defined";
 | 
			
		||||
import { EVENT_SIDEBAR_TOGGLE } from "../../constants";
 | 
			
		||||
 | 
			
		||||
// If the viewport is wider than MIN_WIDTH, the sidebar
 | 
			
		||||
// is shown besides the content, and not overlayed.
 | 
			
		||||
export const MIN_WIDTH = 1200;
 | 
			
		||||
 | 
			
		||||
export const DefaultConfig: Config = {
 | 
			
		||||
    brandingLogo: " /static/dist/assets/icons/icon_left_brand.svg",
 | 
			
		||||
@ -21,12 +30,15 @@ export class SidebarBrand extends LitElement {
 | 
			
		||||
 | 
			
		||||
    static get styles(): CSSResult[] {
 | 
			
		||||
        return [
 | 
			
		||||
            PFBase,
 | 
			
		||||
            PFGlobal,
 | 
			
		||||
            PFPage,
 | 
			
		||||
            PFButton,
 | 
			
		||||
            AKGlobal,
 | 
			
		||||
            css`
 | 
			
		||||
                :host {
 | 
			
		||||
                    display: flex;
 | 
			
		||||
                    flex-direction: column;
 | 
			
		||||
                    flex-direction: row;
 | 
			
		||||
                    align-items: center;
 | 
			
		||||
                    height: 114px;
 | 
			
		||||
                    min-height: 114px;
 | 
			
		||||
@ -36,19 +48,47 @@ export class SidebarBrand extends LitElement {
 | 
			
		||||
                    padding: 0 .5rem;
 | 
			
		||||
                    height: 42px;
 | 
			
		||||
                }
 | 
			
		||||
                button.pf-c-button.sidebar-trigger {
 | 
			
		||||
                    background-color: transparent;
 | 
			
		||||
                    border-radius: 0px;
 | 
			
		||||
                    height: 100%;
 | 
			
		||||
                    color: var(--ak-dark-foreground);
 | 
			
		||||
                }
 | 
			
		||||
            `,
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    constructor() {
 | 
			
		||||
        super();
 | 
			
		||||
        window.addEventListener("resize", () => {
 | 
			
		||||
            this.requestUpdate();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    firstUpdated(): void {
 | 
			
		||||
        configureSentry(true).then((c) => {this.config = c;});
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render(): TemplateResult {
 | 
			
		||||
        return html` <a href="#/" class="pf-c-page__header-brand-link">
 | 
			
		||||
            <div class="pf-c-brand ak-brand">
 | 
			
		||||
                <img src="${ifDefined(this.config.brandingLogo)}" alt="authentik icon" loading="lazy" />
 | 
			
		||||
            </div>
 | 
			
		||||
        </a>`;
 | 
			
		||||
        return html`
 | 
			
		||||
            ${window.innerWidth <= MIN_WIDTH ? html`
 | 
			
		||||
                <button
 | 
			
		||||
                    class="sidebar-trigger pf-c-button"
 | 
			
		||||
                    @click=${() => {
 | 
			
		||||
                        this.dispatchEvent(
 | 
			
		||||
                            new CustomEvent(EVENT_SIDEBAR_TOGGLE, {
 | 
			
		||||
                                bubbles: true,
 | 
			
		||||
                                composed: true,
 | 
			
		||||
                            })
 | 
			
		||||
                        );
 | 
			
		||||
                    }}>
 | 
			
		||||
                    <i class="fas fa-bars"></i>
 | 
			
		||||
                </button>
 | 
			
		||||
            ` : html``}
 | 
			
		||||
            <a href="#/" class="pf-c-page__header-brand-link">
 | 
			
		||||
                <div class="pf-c-brand ak-brand">
 | 
			
		||||
                    <img src="${ifDefined(this.config.brandingLogo)}" alt="authentik icon" loading="lazy" />
 | 
			
		||||
                </div>
 | 
			
		||||
            </a>`;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user