web: migrate banner to sidebar
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
09cd8f8f63
commit
31fc4d1cb9
|
@ -1,27 +0,0 @@
|
||||||
import { customElement, CSSResult, html, LitElement, property, TemplateResult } from "lit-element";
|
|
||||||
import PFBase from "@patternfly/patternfly/patternfly-base.css";
|
|
||||||
import PFFlex from "@patternfly/patternfly/layouts/Flex/flex.css";
|
|
||||||
import PFBanner from "@patternfly/patternfly/components/Banner/banner.css";
|
|
||||||
import AKGlobal from "../authentik.css";
|
|
||||||
|
|
||||||
@customElement("ak-banner")
|
|
||||||
export class Banner extends LitElement {
|
|
||||||
|
|
||||||
@property()
|
|
||||||
level = "pf-m-warning";
|
|
||||||
|
|
||||||
static get styles(): CSSResult[] {
|
|
||||||
return [PFBase, PFBanner, PFFlex, AKGlobal];
|
|
||||||
}
|
|
||||||
|
|
||||||
render(): TemplateResult {
|
|
||||||
return html`<div class="pf-c-banner ${this.level} pf-m-sticky">
|
|
||||||
<div class="pf-l-flex pf-m-justify-content-center pf-m-justify-content-space-between-on-lg pf-m-nowrap" style="height: 100%;">
|
|
||||||
<div class="pf-u-display-none pf-u-display-block-on-lg">
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -19,7 +19,6 @@ export class Sidebar extends LitElement {
|
||||||
css`
|
css`
|
||||||
:host {
|
:host {
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
}
|
||||||
.pf-c-nav__link.pf-m-current::after,
|
.pf-c-nav__link.pf-m-current::after,
|
||||||
.pf-c-nav__link.pf-m-current:hover::after,
|
.pf-c-nav__link.pf-m-current:hover::after,
|
||||||
|
|
|
@ -21,6 +21,13 @@ export class SidebarItem extends LitElement {
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
}
|
}
|
||||||
|
:host([highlight]) .pf-c-nav__item {
|
||||||
|
background-color: var(--ak-accent);
|
||||||
|
margin: 16px;
|
||||||
|
}
|
||||||
|
:host([highlight]) .pf-c-nav__item .pf-c-nav__link {
|
||||||
|
padding-left: 0.5rem;
|
||||||
|
}
|
||||||
.pf-c-nav__link.pf-m-current::after,
|
.pf-c-nav__link.pf-m-current::after,
|
||||||
.pf-c-nav__link.pf-m-current:hover::after,
|
.pf-c-nav__link.pf-m-current:hover::after,
|
||||||
.pf-c-nav__item.pf-m-current:not(.pf-m-expanded) .pf-c-nav__link::after {
|
.pf-c-nav__item.pf-m-current:not(.pf-m-expanded) .pf-c-nav__link::after {
|
||||||
|
@ -75,6 +82,12 @@ export class SidebarItem extends LitElement {
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
isActive = false;
|
isActive = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean })
|
||||||
|
isAbsoluteLink?: boolean;
|
||||||
|
|
||||||
|
@property({ type: Boolean })
|
||||||
|
highlight?: boolean;
|
||||||
|
|
||||||
parent?: SidebarItem;
|
parent?: SidebarItem;
|
||||||
|
|
||||||
get childItems(): SidebarItem[] {
|
get childItems(): SidebarItem[] {
|
||||||
|
@ -159,9 +172,15 @@ export class SidebarItem extends LitElement {
|
||||||
</li>`;
|
</li>`;
|
||||||
}
|
}
|
||||||
return html`<li class="pf-c-nav__item">
|
return html`<li class="pf-c-nav__item">
|
||||||
<a href="#${this.path}" class="pf-c-nav__link ${this.isActive ? "pf-m-current" : ""}">
|
${this.path ? html`
|
||||||
<slot name="label"></slot>
|
<a href="${this.isAbsoluteLink ? '' : '#'}${this.path}" class="pf-c-nav__link ${this.isActive ? "pf-m-current" : ""}">
|
||||||
</a>
|
<slot name="label"></slot>
|
||||||
|
</a>
|
||||||
|
` : html`
|
||||||
|
<span class="pf-c-nav__link">
|
||||||
|
<slot name="label"></slot>
|
||||||
|
</span>
|
||||||
|
`}
|
||||||
</li>`;
|
</li>`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ export const PasswordManagerPrefill: {
|
||||||
totp: undefined,
|
totp: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
declare module "Intl" {
|
declare module Intl {
|
||||||
class ListFormat {
|
class ListFormat {
|
||||||
constructor(locale: string, args: { [key: string]: string });
|
constructor(locale: string, args: { [key: string]: string });
|
||||||
public format: (items: string[]) => string;
|
public format: (items: string[]) => string;
|
||||||
|
|
|
@ -13,7 +13,6 @@ import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css";
|
||||||
import "../elements/router/RouterOutlet";
|
import "../elements/router/RouterOutlet";
|
||||||
import "../elements/messages/MessageContainer";
|
import "../elements/messages/MessageContainer";
|
||||||
import "../elements/notifications/NotificationDrawer";
|
import "../elements/notifications/NotificationDrawer";
|
||||||
import "../elements/Banner";
|
|
||||||
import "../elements/sidebar/Sidebar";
|
import "../elements/sidebar/Sidebar";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
import { EVENT_NOTIFICATION_TOGGLE, EVENT_SIDEBAR_TOGGLE, VERSION } from "../constants";
|
import { EVENT_NOTIFICATION_TOGGLE, EVENT_SIDEBAR_TOGGLE, VERSION } from "../constants";
|
||||||
|
@ -54,28 +53,6 @@ export class AdminInterface extends LitElement {
|
||||||
|
|
||||||
render(): TemplateResult {
|
render(): TemplateResult {
|
||||||
return html`
|
return html`
|
||||||
${until(new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve().then(version => {
|
|
||||||
if (version.versionCurrent !== VERSION) {
|
|
||||||
return html`<ak-banner>
|
|
||||||
${t`A newer version of the frontend is available.`}
|
|
||||||
<button @click=${() => { window.location.reload(true); }}>
|
|
||||||
${t`Reload`}
|
|
||||||
</button>
|
|
||||||
</ak-banner>`;
|
|
||||||
}
|
|
||||||
return html``;
|
|
||||||
}))}
|
|
||||||
${until(me().then((u) => {
|
|
||||||
if (u.original) {
|
|
||||||
return html`<ak-banner>
|
|
||||||
${t`You're currently impersonating ${u.user.username}.`}
|
|
||||||
<a href=${`/-/impersonation/end/?back=${window.location.pathname}%23${window.location.hash}`}>
|
|
||||||
${t`Stop impersonation`}
|
|
||||||
</a>
|
|
||||||
</ak-banner>`;
|
|
||||||
}
|
|
||||||
return html``;
|
|
||||||
}))}
|
|
||||||
<div class="pf-c-page">
|
<div class="pf-c-page">
|
||||||
<ak-sidebar class="pf-c-page__sidebar ${this.sidebarOpen ? "pf-m-expanded" : "pf-m-collapsed"}">
|
<ak-sidebar class="pf-c-page__sidebar ${this.sidebarOpen ? "pf-m-expanded" : "pf-m-collapsed"}">
|
||||||
${this.renderSidebarItems()}
|
${this.renderSidebarItems()}
|
||||||
|
@ -104,6 +81,22 @@ export class AdminInterface extends LitElement {
|
||||||
return me().then(u => u.user.isSuperuser || false);
|
return me().then(u => u.user.isSuperuser || false);
|
||||||
};
|
};
|
||||||
return html`
|
return html`
|
||||||
|
${until(new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve().then(version => {
|
||||||
|
if (version.versionCurrent !== VERSION) {
|
||||||
|
return html`<ak-sidebar-item ?highlight=${true}>
|
||||||
|
<span slot="label">${t`A newer version of the frontend is available.`}</span>
|
||||||
|
</ak-sidebar-item>`;
|
||||||
|
}
|
||||||
|
return html``;
|
||||||
|
}))}
|
||||||
|
${until(me().then((u) => {
|
||||||
|
if (u.original) {
|
||||||
|
return html`<ak-sidebar-item ?highlight=${true} ?isAbsoluteLink=${true} path=${`/-/impersonation/end/?back=${window.location.pathname}%23${window.location.hash}`}>
|
||||||
|
<span slot="label">${t`You're currently impersonating ${u.user.username}. Click to stop.`}</span>
|
||||||
|
</ak-sidebar-item>`;
|
||||||
|
}
|
||||||
|
return html``;
|
||||||
|
}))}
|
||||||
<ak-sidebar-item path="/library">
|
<ak-sidebar-item path="/library">
|
||||||
<span slot="label">${t`Library`}</span>
|
<span slot="label">${t`Library`}</span>
|
||||||
</ak-sidebar-item>
|
</ak-sidebar-item>
|
||||||
|
|
|
@ -32,7 +32,7 @@ msgstr "6 digits, widely compatible"
|
||||||
msgid "8 digits, not compatible with apps like Google Authenticator"
|
msgid "8 digits, not compatible with apps like Google Authenticator"
|
||||||
msgstr "8 digits, not compatible with apps like Google Authenticator"
|
msgstr "8 digits, not compatible with apps like Google Authenticator"
|
||||||
|
|
||||||
#: src/interfaces/Interface.ts
|
#: src/interfaces/AdminInterface.ts
|
||||||
msgid "A newer version of the frontend is available."
|
msgid "A newer version of the frontend is available."
|
||||||
msgstr "A newer version of the frontend is available."
|
msgstr "A newer version of the frontend is available."
|
||||||
|
|
||||||
|
@ -1286,14 +1286,6 @@ msgstr "Email address"
|
||||||
msgid "Email info:"
|
msgid "Email info:"
|
||||||
msgstr "Email info:"
|
msgstr "Email info:"
|
||||||
|
|
||||||
#: src/flows/stages/identification/IdentificationStage.ts
|
|
||||||
msgid "Email or username"
|
|
||||||
msgstr "Email or username"
|
|
||||||
|
|
||||||
#: src/flows/stages/identification/IdentificationStage.ts
|
|
||||||
msgid "Email, UPN or username"
|
|
||||||
msgstr "Email, UPN or username"
|
|
||||||
|
|
||||||
#: src/pages/stages/prompt/PromptForm.ts
|
#: src/pages/stages/prompt/PromptForm.ts
|
||||||
msgid "Email: Text field with Email type."
|
msgid "Email: Text field with Email type."
|
||||||
msgstr "Email: Text field with Email type."
|
msgstr "Email: Text field with Email type."
|
||||||
|
@ -2935,10 +2927,6 @@ msgstr "Regular expressions for which authentication is not required. Each new l
|
||||||
msgid "Related"
|
msgid "Related"
|
||||||
msgstr "Related"
|
msgstr "Related"
|
||||||
|
|
||||||
#: src/interfaces/Interface.ts
|
|
||||||
msgid "Reload"
|
|
||||||
msgstr "Reload"
|
|
||||||
|
|
||||||
#: src/pages/stages/user_logout/UserLogoutStageForm.ts
|
#: src/pages/stages/user_logout/UserLogoutStageForm.ts
|
||||||
msgid "Remove the user from the current session."
|
msgid "Remove the user from the current session."
|
||||||
msgstr "Remove the user from the current session."
|
msgstr "Remove the user from the current session."
|
||||||
|
@ -3416,10 +3404,6 @@ msgstr "Status: Disabled"
|
||||||
msgid "Status: Enabled"
|
msgid "Status: Enabled"
|
||||||
msgstr "Status: Enabled"
|
msgstr "Status: Enabled"
|
||||||
|
|
||||||
#: src/interfaces/Interface.ts
|
|
||||||
msgid "Stop impersonation"
|
|
||||||
msgstr "Stop impersonation"
|
|
||||||
|
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/stages/email/EmailStageForm.ts
|
#: src/pages/stages/email/EmailStageForm.ts
|
||||||
msgid "Subject"
|
msgid "Subject"
|
||||||
|
@ -4529,9 +4513,9 @@ msgstr "Yes"
|
||||||
msgid "You can only select providers that match the type of the outpost."
|
msgid "You can only select providers that match the type of the outpost."
|
||||||
msgstr "You can only select providers that match the type of the outpost."
|
msgstr "You can only select providers that match the type of the outpost."
|
||||||
|
|
||||||
#: src/interfaces/Interface.ts
|
#: src/interfaces/AdminInterface.ts
|
||||||
msgid "You're currently impersonating {0}."
|
msgid "You're currently impersonating {0}. Click to stop."
|
||||||
msgstr "You're currently impersonating {0}."
|
msgstr "You're currently impersonating {0}. Click to stop."
|
||||||
|
|
||||||
#: src/pages/stages/password/PasswordStageForm.ts
|
#: src/pages/stages/password/PasswordStageForm.ts
|
||||||
msgid "authentik Builtin Database"
|
msgid "authentik Builtin Database"
|
||||||
|
|
|
@ -1278,14 +1278,6 @@ msgstr ""
|
||||||
msgid "Email info:"
|
msgid "Email info:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#:
|
|
||||||
msgid "Email or username"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#:
|
|
||||||
msgid "Email, UPN or username"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#:
|
#:
|
||||||
msgid "Email: Text field with Email type."
|
msgid "Email: Text field with Email type."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2927,10 +2919,6 @@ msgstr ""
|
||||||
msgid "Related"
|
msgid "Related"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#:
|
|
||||||
msgid "Reload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#:
|
#:
|
||||||
msgid "Remove the user from the current session."
|
msgid "Remove the user from the current session."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3408,10 +3396,6 @@ msgstr ""
|
||||||
msgid "Status: Enabled"
|
msgid "Status: Enabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#:
|
|
||||||
msgid "Stop impersonation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#:
|
#:
|
||||||
#:
|
#:
|
||||||
msgid "Subject"
|
msgid "Subject"
|
||||||
|
@ -4516,7 +4500,7 @@ msgid "You can only select providers that match the type of the outpost."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#:
|
#:
|
||||||
msgid "You're currently impersonating {0}."
|
msgid "You're currently impersonating {0}. Click to stop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#:
|
#:
|
||||||
|
|
Reference in New Issue