diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/umb-backoffice-header.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/umb-backoffice-header.element.ts index afca13b0cc..809ae3cacf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/umb-backoffice-header.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/umb-backoffice-header.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, LitElement } from 'lit'; import { customElement, state } from 'lit/decorators.js'; - +import { when } from 'lit/directives/when.js'; import { getUserSections } from '../api/fetcher'; @customElement('umb-backoffice-header') @@ -74,8 +74,35 @@ export class UmbBackofficeHeader extends LitElement { @state() private _open = false; + // TODO: these should come from all registered sections @state() - private _sections: Array = ['Content', 'Media', 'Members', 'Settings', 'Packages']; + private _sections: Array = [ + { + type: 'section', + alias: 'Umb.Section.Content', + name: 'Content' + }, + { + type: 'section', + alias: 'Umb.Section.Media', + name: 'Media' + }, + { + type: 'section', + alias: 'Umb.Section.Members', + name: 'Members' + }, + { + type: 'section', + alias: 'Umb.Section.Settings', + name: 'Settings' + }, + { + type: 'section', + alias: 'Umb.Section.Packages', + name: 'Packages' + } + ]; @state() private _activeSection: string = this._sections[0]; @@ -84,10 +111,10 @@ export class UmbBackofficeHeader extends LitElement { private _availableSections: string[] = []; @state() - private _visibleSections: Array = ['Content', 'Media', 'Members']; + private _visibleSections: Array = []; @state() - private _extraSections: Array = ['Settings', 'Packages']; + private _extraSections: Array = []; private _handleMore(e: MouseEvent) { e.stopPropagation(); @@ -121,7 +148,28 @@ export class UmbBackofficeHeader extends LitElement { const { data } = await getUserSections({}); this._availableSections = data.sections; - this._visibleSections = data.sections; + this._visibleSections = this._sections.filter(section => this._availableSections.includes(section.alias)).map(section => section.name); + } + + private _renderExtraSections() { + return when(this._extraSections.length > 0, () => html` + + + + + + + + + + `); } render() { @@ -133,33 +181,13 @@ export class UmbBackofficeHeader extends LitElement {
- ${this._visibleSections.map( - (section) => html` - - ` - )} - - - - - - - - - - + ${this._visibleSections.map((section) => html` + + `)} + ${this._renderExtraSections()}
diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers.ts index 758e28925d..412fa3b6d6 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers.ts @@ -67,7 +67,7 @@ export const handlers = [ return res( ctx.status(200), ctx.json({ - sections: ['Content', 'Media', 'Members', 'Settings', 'Packages'] + sections: ['Umb.Section.Content', 'Umb.Section.Media', 'Umb.Section.Settings'] } as components['schemas']['AllowedSectionsResponse']), ); }),