diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts
deleted file mode 100644
index 7362cf82cb..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-// TODO: align menu items and tree items
-@customElement('umb-document-types-sidebar-menu-item')
-export class UmbDocumentTypesSidebarMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
-
- ${this._renderTree ? html`` : nothing}
-
- `;
- }
-}
-
-export default UmbDocumentTypesSidebarMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-document-types-sidebar-menu-item': UmbDocumentTypesSidebarMenuItemElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts
index cdbdf67653..6267868b06 100644
--- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts
@@ -1,14 +1,15 @@
-import type { ManifestMenuItem } from '@umbraco-cms/models';
+import type { ManifestTypes } from '@umbraco-cms/models';
-const menuItem: ManifestMenuItem = {
+const menuItem: ManifestTypes = {
type: 'menuItem',
+ kind: 'Umb.Kind.Tree',
alias: 'Umb.MenuItem.MediaTypes',
name: 'Media Types Menu Item',
weight: 20,
- loader: () => import('./media-types-menu-item.element'),
meta: {
label: 'Media Types',
icon: 'umb:folder',
+ treeAlias: 'Umb.Tree.MediaTypes',
},
conditions: {
menus: ['Umb.Menu.Settings'],
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts
deleted file mode 100644
index f4c95d9248..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-@customElement('umb-media-types-menu-item')
-export class UmbMediaTypesMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
- ${this._renderTree ? html`` : nothing}
- `;
- }
-}
-
-export default UmbMediaTypesMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-media-types-menu-item': UmbMediaTypesMenuItemElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts
index e9880b658f..d8ec4611da 100644
--- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts
@@ -1,14 +1,15 @@
-import type { ManifestMenuItem } from '@umbraco-cms/models';
+import type { ManifestTypes } from '@umbraco-cms/models';
-const menuItem: ManifestMenuItem = {
+const menuItem: ManifestTypes = {
type: 'menuItem',
+ kind: 'Umb.Kind.Tree',
alias: 'Umb.MenuItem.MemberGroups',
name: 'Member Groups Menu Item',
weight: 800,
- loader: () => import('./member-groups-menu-item.element'),
meta: {
label: 'Member Groups',
icon: 'umb:folder',
+ treeAlias: 'Umb.Tree.MemberGroups',
},
conditions: {
menus: ['Umb.Menu.Members'],
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts
deleted file mode 100644
index 2a215bad63..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-@customElement('umb-member-groups-menu-item')
-export class UmbMemberGroupsMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
- ${this._renderTree ? html`` : nothing}
- `;
- }
-}
-
-export default UmbMemberGroupsMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-member-groups-menu-item': UmbMemberGroupsMenuItemElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts
index 02c64aa21a..66a50d0d98 100644
--- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts
@@ -1,14 +1,15 @@
-import type { ManifestMenuItem } from '@umbraco-cms/models';
+import type { ManifestTypes } from '@umbraco-cms/models';
-const menuItem: ManifestMenuItem = {
+const menuItem: ManifestTypes = {
type: 'menuItem',
+ kind: 'Umb.Kind.Tree',
alias: 'Umb.MenuItem.MemberTypes',
name: 'Member Types Menu Item',
weight: 30,
- loader: () => import('./member-types-menu-item.element'),
meta: {
label: 'Member Types',
icon: 'umb:folder',
+ treeAlias: 'Umb.Tree.MemberTypes',
},
conditions: {
menus: ['Umb.Menu.Settings'],
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts
deleted file mode 100644
index d1bcb90473..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-@customElement('umb-member-types-menu-item')
-export class UmbMemberTypesMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
- ${this._renderTree ? html`` : nothing}
- `;
- }
-}
-
-export default UmbMemberTypesMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-member-types-menu-item': UmbMemberTypesMenuItemElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts
index 375f8a5ac5..5ecad97b1a 100644
--- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts
@@ -1,15 +1,16 @@
-import type { ManifestMenuItem } from '@umbraco-cms/models';
+import type { ManifestTypes } from '@umbraco-cms/models';
-const menuItem: ManifestMenuItem = {
+const menuItem: ManifestTypes = {
type: 'menuItem',
+ kind: 'Umb.Kind.Tree',
alias: 'Umb.MenuItem.Members',
name: 'Members Menu Item',
weight: 400,
- loader: () => import('./members-menu-item.element'),
meta: {
label: 'Members',
icon: 'umb:folder',
entityType: 'member',
+ treeAlias: 'Umb.Tree.Members',
},
conditions: {
menus: ['Umb.Menu.Members'],
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts
deleted file mode 100644
index 2d89af68e8..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-@customElement('umb-members-menu-item')
-export class UmbMembersMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
- ${this._renderTree ? html`` : nothing}
- `;
- }
-}
-
-export default UmbMembersMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-members-menu-item': UmbMembersMenuItemElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts
deleted file mode 100644
index 47ad62cf81..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-@customElement('umb-data-types-menu-item')
-export class UmbDataTypesMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
- ${this._renderTree ? html`` : nothing}
- `;
- }
-}
-
-export default UmbDataTypesMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-data-types-menu-item': UmbDataTypesMenuItemElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts
index 75408bab4d..0b633f5894 100644
--- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts
@@ -1,15 +1,16 @@
-import type { ManifestMenuItem } from '@umbraco-cms/models';
+import type { ManifestTypes } from '@umbraco-cms/models';
-const menuItem: ManifestMenuItem = {
+const menuItem: ManifestTypes = {
type: 'menuItem',
+ kind: 'Umb.Kind.Tree',
alias: 'Umb.MenuItem.DataTypes',
name: 'Data Types Menu Item',
weight: 40,
- loader: () => import('./data-types-menu-item.element'),
meta: {
label: 'Data Types',
icon: 'umb:folder',
entityType: 'data-type',
+ treeAlias: 'Umb.Tree.DataTypes',
},
conditions: {
menus: ['Umb.Menu.Settings'],
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts
index 6ae9d7ce71..9c76e7ee90 100644
--- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts
@@ -1,15 +1,16 @@
-import type { ManifestMenuItem } from '@umbraco-cms/models';
+import type { ManifestTypes } from '@umbraco-cms/models';
-const menuItem: ManifestMenuItem = {
+const menuItem: ManifestTypes = {
type: 'menuItem',
+ kind: 'Umb.Kind.Tree',
alias: 'Umb.MenuItem.Templates',
name: 'Templates Menu Item',
weight: 40,
- loader: () => import('./templates-menu-item.element'),
meta: {
label: 'Templates',
icon: 'umb:folder',
entityType: 'template',
+ treeAlias: 'Umb.Tree.Templates',
},
conditions: {
menus: ['Umb.Menu.Templating'],
diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts
deleted file mode 100644
index b596857303..0000000000
--- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { html, nothing } from 'lit';
-import { customElement, state } from 'lit/decorators.js';
-import { UmbLitElement } from '@umbraco-cms/element';
-
-@customElement('umb-templates-menu-item')
-export class UmbTemplatesMenuItemElement extends UmbLitElement {
- @state()
- private _renderTree = false;
-
- private _onShowChildren() {
- this._renderTree = true;
- }
-
- private _onHideChildren() {
- this._renderTree = false;
- }
-
- // TODO: check if root has children before settings the has-children attribute
- // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)?
- // TODO: can we make this reusable?
- render() {
- return html`
- ${this._renderTree ? html`` : nothing}
- `;
- }
-}
-
-export default UmbTemplatesMenuItemElement;
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-templates-menu-item': UmbTemplatesMenuItemElement;
- }
-}