Example Docs: Add menu item examples (#20910)

Add menu item registration examples

Introduces example implementations for registering action, link, and entity menu items in the backoffice. Includes manifests and API to demonstrate how to extend the menu system.
This commit is contained in:
Mads Rasmussen
2025-11-24 17:32:53 +01:00
committed by GitHub
parent 3d90fffccd
commit fd5077d823
7 changed files with 81 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
# Menu Item Example
This example demonstrates how to register a Menu Item.
The example includes:
- Action Menu Item Registration
- Link Menu Item Registration
- Entity Menu Item Registration

View File

@@ -0,0 +1,17 @@
import { UmbMenuItemActionApiBase } from '@umbraco-cms/backoffice/menu';
/**
* Example menu item action API
* This action will log "Hello world" to the console when executed.
*/
export class ExampleActionMenuItemApi extends UmbMenuItemActionApiBase<never> {
/**
* This method is executed when the menu item is clicked
*/
override async execute() {
console.log('Hello world');
}
}
// Declare an `api` export so the Extension Registry can initialize this class
export { ExampleActionMenuItemApi as api };

View File

@@ -0,0 +1,16 @@
import { UMB_CONTENT_MENU_ALIAS } from '@umbraco-cms/backoffice/document';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'menuItem',
kind: 'action',
alias: 'Example.MenuItem.Action',
name: 'Example Action Menu Item',
api: () => import('./action-menu-item.api.js'),
meta: {
label: 'Example Action Menu Item',
icon: 'icon-hammer',
menus: [UMB_CONTENT_MENU_ALIAS],
},
},
];

View File

@@ -0,0 +1,15 @@
import { UMB_CONTENT_MENU_ALIAS } from '@umbraco-cms/backoffice/document';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'menuItem',
alias: 'Example.MenuItem.Entity',
name: 'Example Entity Menu Item',
meta: {
label: 'Example Entity Menu Item',
icon: 'icon-wand',
entityType: 'example-entity-type',
menus: [UMB_CONTENT_MENU_ALIAS],
},
},
];

View File

@@ -0,0 +1,5 @@
import { manifests as actionManifests } from './action/manifests.js';
import { manifests as entityManifests } from './entity/manifests.js';
import { manifests as linkManifests } from './link/manifests.js';
export const manifests = [...actionManifests, ...entityManifests, ...linkManifests];

View File

@@ -0,0 +1,16 @@
import { UMB_CONTENT_MENU_ALIAS } from '@umbraco-cms/backoffice/document';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'menuItem',
kind: 'link',
alias: 'Example.MenuItem.ExternalLink',
name: 'Example External Link Menu Item',
meta: {
label: 'Example Link Menu Item',
icon: 'icon-link',
href: 'https://',
menus: [UMB_CONTENT_MENU_ALIAS],
},
},
];

View File

@@ -0,0 +1,3 @@
#Tree Menu Item
See the Tree Example of how to register a tree and use it as a menu item in the sidebar.