diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts new file mode 100644 index 0000000000..82e12e0f89 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts @@ -0,0 +1,10 @@ +import type { ManifestElement } from './models'; + +export interface ManifestMenu extends ManifestElement { + type: 'menu'; + meta: MetaMenu; +} + +export interface MetaMenu { + label: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index e01b4e8766..df31b3dd18 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -12,7 +12,7 @@ import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './pr import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; import type { ManifestSectionSidebarItem } from './section-sidebar-item.models'; -import type { ManifestSidebarMenu } from './sidebar-menu.models'; +import type { ManifestSectionSidebarMenu } from './section-sidebar-menu.models'; import type { ManifestSidebarMenuItem } from './sidebar-menu-item.models'; import type { ManifestTheme } from './theme.models'; import type { ManifestTree } from './tree.models'; @@ -39,7 +39,7 @@ export * from './property-editor.models'; export * from './section-view.models'; export * from './section.models'; export * from './section-sidebar-item.models'; -export * from './sidebar-menu.models'; +export * from './section-sidebar-menu.models'; export * from './sidebar-menu-item.models'; export * from './theme.models'; export * from './tree-item-action.models'; @@ -70,7 +70,7 @@ export type ManifestTypes = | ManifestSection | ManifestSectionSidebarItem | ManifestSectionView - | ManifestSidebarMenu + | ManifestSectionSidebarMenu | ManifestSidebarMenuItem | ManifestTheme | ManifestTree diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts new file mode 100644 index 0000000000..429b2a1a8c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts @@ -0,0 +1,11 @@ +import type { ManifestElement } from './models'; + +export interface ManifestSectionSidebarMenu extends ManifestElement { + type: 'sectionSidebarMenu'; + meta: MetaSectionSidebarMenu; +} + +export interface MetaSectionSidebarMenu { + label: string; + sections: Array; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts deleted file mode 100644 index 4c48bb3be0..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { ManifestElement } from './models'; - -export interface ManifestSidebarMenu extends ManifestElement { - type: 'sidebarMenu'; - meta: MetaSidebarMenu; -} - -export interface MetaSidebarMenu { - label: string; - sections: Array; -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts index 4787f76123..499499e8ca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Content'; @@ -13,8 +13,8 @@ const section: ManifestSection = { }, }; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, @@ -24,4 +24,4 @@ const sidebarMenu: ManifestSidebarMenu = { }, }; -export const manifests = [section, sidebarMenu]; +export const manifests = [section, sectionSidebarMenu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts index 05557e3e1a..aea51e5969 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboardCollection, ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboardCollection, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Media'; @@ -29,15 +29,16 @@ const dashboards: Array = [ }, ]; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Media', - name: 'Media Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Media', + name: 'Media Section Sidebar Menu', weight: 100, meta: { label: 'Media', sections: [sectionAlias], + menu: 'Umb.Menu.Media', }, }; -export const manifests = [section, sidebarMenu, ...dashboards]; +export const manifests = [section, sectionSidebarMenu, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts index aa94eb7b7a..7cf1af267e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard, ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Members'; @@ -28,15 +28,16 @@ const dashboards: Array = [ }, ]; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Members', - name: 'Members Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Members', + name: 'Members Section Sidebar Menu', weight: 100, meta: { label: 'Members', sections: [sectionAlias], + menu: 'Umb.Menu.Members', }, }; -export const manifests = [section, sidebarMenu, ...dashboards]; +export const manifests = [section, sectionSidebarMenu, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts index fa9ce27835..eaebc24e31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Settings'; @@ -13,10 +13,10 @@ const section: ManifestSection = { }, }; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Settings', - name: 'Settings Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Settings', + name: 'Settings Section Sidebar Menu', weight: 100, meta: { label: 'Settings', @@ -24,4 +24,4 @@ const sidebarMenu: ManifestSidebarMenu = { }, }; -export const manifests = [section, sidebarMenu]; +export const manifests = [section, sectionSidebarMenu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts index f355df2597..23cd5688d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestSidebarMenu, ManifestSidebarMenuItem } from '@umbraco-cms/extensions-registry'; +import { ManifestSectionSidebarMenu, ManifestSidebarMenuItem } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import './sidebar-menu-item.element.ts'; @@ -18,7 +18,7 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { ]; @property() - manifest?: ManifestSidebarMenu; + manifest?: ManifestSectionSidebarMenu; render() { // TODO: link to dashboards when clicking on the menu item header diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts index 6b77194c5f..7976ab2d7e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts @@ -5,7 +5,7 @@ import { map } from 'rxjs'; import { IRoutingInfo } from 'router-slot'; import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { ManifestSectionView, ManifestWorkspace, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSectionView, ManifestWorkspace, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -40,7 +40,7 @@ export class UmbSectionElement extends UmbLitElement { private _routes: Array = []; @state() - private _menus?: Array; + private _menus?: Array; @state() private _views?: Array; @@ -84,7 +84,7 @@ export class UmbSectionElement extends UmbLitElement { if (sectionAlias) { this.observe( umbExtensionsRegistry - ?.extensionsOfType('sidebarMenu') + ?.extensionsOfType('sectionSidebarMenu') .pipe(map((manifests) => manifests.filter((manifest) => manifest.meta.sections.includes(sectionAlias)))), (manifests) => { this._menus = manifests; @@ -202,12 +202,12 @@ export class UmbSectionElement extends UmbLitElement { + .filter=${(items: ManifestSectionSidebarMenu) => items.meta.sections.includes(this._sectionAlias || '')}> items.meta.sections.includes(this._sectionAlias || '')} + type="sectionSidebarMenu" + .filter=${(items: ManifestSectionSidebarMenu) => items.meta.sections.includes(this._sectionAlias || '')} default-element="umb-section-sidebar-menu"> ` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts index 5b76467241..ef23bca158 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts @@ -1,14 +1,15 @@ -import type { ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSectionSidebarMenu } from '@umbraco-cms/models'; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Templating', - name: 'Settings Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Templating', + name: 'Templating Section Sidebar Menu', weight: 100, meta: { label: 'Templating', sections: ['Umb.Section.Settings'], + menu: 'Umb.Menu.Templating', }, }; -export const manifests = [sidebarMenu]; +export const manifests = [sectionSidebarMenu];