only render header app if menu has items
This commit is contained in:
committed by
Niels Lyngsø
parent
fcba9ca442
commit
3bb99d1832
@@ -1,8 +1,9 @@
|
|||||||
import { UMB_HELP_MENU_ALIAS } from '../menu/index.js';
|
import { UMB_HELP_MENU_ALIAS } from '../menu/index.js';
|
||||||
import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';
|
import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';
|
||||||
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
|
import { css, html, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit';
|
||||||
import { UmbHeaderAppButtonElement } from '@umbraco-cms/backoffice/components';
|
import { UmbHeaderAppButtonElement } from '@umbraco-cms/backoffice/components';
|
||||||
import type { ManifestMenu } from '@umbraco-cms/backoffice/extension-registry';
|
import { umbExtensionsRegistry, type ManifestMenu } from '@umbraco-cms/backoffice/extension-registry';
|
||||||
|
import { UmbExtensionsManifestInitializer } from '@umbraco-cms/backoffice/extension-api';
|
||||||
|
|
||||||
const elementName = 'umb-help-header-app';
|
const elementName = 'umb-help-header-app';
|
||||||
@customElement(elementName)
|
@customElement(elementName)
|
||||||
@@ -10,6 +11,24 @@ export class UmbHelpHeaderAppElement extends UmbHeaderAppButtonElement {
|
|||||||
@state()
|
@state()
|
||||||
private _popoverOpen = false;
|
private _popoverOpen = false;
|
||||||
|
|
||||||
|
@state()
|
||||||
|
private _helpMenuHasMenuItems = false;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
new UmbExtensionsManifestInitializer(
|
||||||
|
this,
|
||||||
|
umbExtensionsRegistry,
|
||||||
|
'menuItem',
|
||||||
|
(manifest) => manifest.meta.menus.includes(UMB_HELP_MENU_ALIAS),
|
||||||
|
(menuItems) => {
|
||||||
|
const manifests = menuItems.map((menuItem) => menuItem.manifest);
|
||||||
|
this._helpMenuHasMenuItems = manifests.length > 0;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#onPopoverToggle(event: ToggleEvent) {
|
#onPopoverToggle(event: ToggleEvent) {
|
||||||
// TODO: This ignorer is just neede for JSON SCHEMA TO WORK, As its not updated with latest TS jet.
|
// TODO: This ignorer is just neede for JSON SCHEMA TO WORK, As its not updated with latest TS jet.
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
@@ -18,11 +37,21 @@ export class UmbHelpHeaderAppElement extends UmbHeaderAppButtonElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override render() {
|
override render() {
|
||||||
|
return html` ${this.#renderButton()} ${this.#renderPopover()} `;
|
||||||
|
}
|
||||||
|
|
||||||
|
#renderButton() {
|
||||||
|
if (!this._helpMenuHasMenuItems) return nothing;
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<uui-button popovertarget="help-menu-popover" look="primary" label="help" compact>
|
<uui-button popovertarget="help-menu-popover" look="primary" label="help" compact>
|
||||||
<uui-icon name="icon-help-alt"></uui-icon>
|
<uui-icon name="icon-help-alt"></uui-icon>
|
||||||
</uui-button>
|
</uui-button>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
#renderPopover() {
|
||||||
|
return html`
|
||||||
<uui-popover-container id="help-menu-popover" @toggle=${this.#onPopoverToggle}>
|
<uui-popover-container id="help-menu-popover" @toggle=${this.#onPopoverToggle}>
|
||||||
<umb-popover-layout>
|
<umb-popover-layout>
|
||||||
<uui-scroll-container>
|
<uui-scroll-container>
|
||||||
|
|||||||
Reference in New Issue
Block a user