Merge pull request #2386 from umbraco/v15/feature/emm-menu

Extension Manifest Map: Menu
This commit is contained in:
Niels Lyngsø
2024-10-01 11:55:20 +02:00
committed by GitHub
18 changed files with 77 additions and 60 deletions

View File

@@ -7,10 +7,6 @@ export type * from './external-login-provider-element.interface.js';
export type * from './external-login-provider.extension.js';
export type * from './global-context.extension.js';
export type * from './header-app.extension.js';
export type * from './menu-item-element.interface.js';
export type * from './menu-item-element.interface.js';
export type * from './menu-item.extension.js';
export type * from './menu.extension.js';
export type * from './mfa-login-provider.extension.js';
export type * from './preview-app.extension.js';
export type * from './repository.extension.js';

View File

@@ -1,45 +0,0 @@
import type { UmbMenuItemElement } from './menu-item-element.interface.js';
import type { ManifestWithDynamicConditions, ManifestElement } from '@umbraco-cms/backoffice/extension-api';
export interface ManifestMenuItem
extends ManifestElement<UmbMenuItemElement>,
ManifestWithDynamicConditions<UmbExtensionCondition> {
type: 'menuItem';
meta: MetaMenuItem;
}
export interface MetaMenuItem {
label: string;
menus: Array<string>;
entityType?: string;
icon?: string;
}
export interface ManifestMenuItemTreeKind extends ManifestMenuItem {
type: 'menuItem';
kind: 'tree';
meta: MetaMenuItemTreeKind;
}
export interface MetaMenuItemTreeKind extends MetaMenuItem {
treeAlias: string;
hideTreeRoot?: boolean;
}
export interface ManifestMenuItemLinkKind extends ManifestMenuItem {
type: 'menuItem';
kind: 'link';
meta: MetaMenuItemLinkKind;
}
export interface MetaMenuItemLinkKind extends MetaMenuItem {
href: string;
}
export type UmbMenuItemExtensions = ManifestMenuItem | ManifestMenuItemTreeKind | ManifestMenuItemLinkKind;
declare global {
interface UmbExtensionManifestMap {
UmbMenuItemExtensions: UmbMenuItemExtensions;
}
}

View File

@@ -1 +1,2 @@
export * from './menu-item-default.element.js';
export * from './link/index.js';

View File

@@ -0,0 +1 @@
export * from './types.js';

View File

@@ -1,6 +1,7 @@
import type { UmbMenuItemElement } from '../../../menu-item-element.interface.js';
import type { ManifestMenuItemLinkKind } from './types.js';
import { customElement, html, property } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { ManifestMenuItemLinkKind, UmbMenuItemElement } from '@umbraco-cms/backoffice/extension-registry';
const elementName = 'umb-link-menu-item';
@customElement(elementName)

View File

@@ -0,0 +1,17 @@
import type { ManifestMenuItem, MetaMenuItem } from '../../../menu-item.extension.js';
export interface ManifestMenuItemLinkKind extends ManifestMenuItem {
type: 'menuItem';
kind: 'link';
meta: MetaMenuItemLinkKind;
}
export interface MetaMenuItemLinkKind extends MetaMenuItem {
href: string;
}
declare global {
interface UmbExtensionManifestMap {
umbLinkMenuItemKind: ManifestMenuItemLinkKind;
}
}

View File

@@ -1,7 +1,8 @@
import type { UmbMenuItemElement } from '../../menu-item-element.interface.js';
import type { ManifestMenuItem } from '../../menu-item.extension.js';
import { customElement, html, property, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UMB_SECTION_CONTEXT } from '@umbraco-cms/backoffice/section';
import type { ManifestMenuItem, UmbMenuItemElement } from '@umbraco-cms/backoffice/extension-registry';
@customElement('umb-menu-item-default')
export class UmbMenuItemDefaultElement extends UmbLitElement implements UmbMenuItemElement {

View File

@@ -1,4 +1,4 @@
import type { ManifestMenu } from '@umbraco-cms/backoffice/extension-registry';
import type { ManifestMenu } from '../../menu.extension.js';
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import { UmbDeepState } from '@umbraco-cms/backoffice/observable-api';

View File

@@ -1,5 +1,6 @@
import type { ManifestMenu } from '../../menu.extension.js';
import type { ManifestMenuItem } from '../../menu-item.extension.js';
import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit';
import type { ManifestMenu, ManifestMenuItem } from '@umbraco-cms/backoffice/extension-registry';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import '../menu-item/menu-item-default.element.js';

View File

@@ -2,5 +2,8 @@ export * from './components/index.js';
export * from './menu-tree-structure-workspace-context-base.js';
export * from './menu-variant-tree-structure-workspace-context-base.js';
export * from './types.js';
export type * from './menu-item-element.interface.js';
export type * from './menu-item.extension.js';
export type * from './menu.extension.js';
export type { UmbMenuStructureWorkspaceContext } from './menu-structure-workspace-context.interface.js';

View File

@@ -0,0 +1,22 @@
import type { UmbMenuItemElement } from './menu-item-element.interface.js';
import type { ManifestWithDynamicConditions, ManifestElement } from '@umbraco-cms/backoffice/extension-api';
export interface ManifestMenuItem
extends ManifestElement<UmbMenuItemElement>,
ManifestWithDynamicConditions<UmbExtensionCondition> {
type: 'menuItem';
meta: MetaMenuItem;
}
export interface MetaMenuItem {
label: string;
menus: Array<string>;
entityType?: string;
icon?: string;
}
declare global {
interface UmbExtensionManifestMap {
umbMenuItem: ManifestMenuItem;
}
}

View File

@@ -1,9 +1,10 @@
import type { ManifestSectionSidebarAppBaseMenu, ManifestSectionSidebarAppMenuKind } from './types.js';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import { css, html, customElement, property } from '@umbraco-cms/backoffice/external/lit';
import type { ManifestMenu, UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { ManifestMenu } from '../menu.extension.js';
// TODO: Move to separate file:
const manifest: UmbExtensionManifestKind = {

View File

@@ -1 +1,2 @@
export * from './tree-menu-item-default.element.js';
export * from './types.js';

View File

@@ -1,11 +1,9 @@
import type { ManifestMenuItemTreeKind } from './types.js';
import { html, nothing, customElement, property } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type {
ManifestMenuItemTreeKind,
UmbExtensionManifestKind,
UmbMenuItemElement,
} from '@umbraco-cms/backoffice/extension-registry';
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
import type { UmbMenuItemElement } from '@umbraco-cms/backoffice/menu';
// TODO: Move to separate file:
const manifest: UmbExtensionManifestKind = {

View File

@@ -0,0 +1,18 @@
import type { ManifestMenuItem, MetaMenuItem } from '@umbraco-cms/backoffice/menu';
export interface ManifestMenuItemTreeKind extends ManifestMenuItem {
type: 'menuItem';
kind: 'tree';
meta: MetaMenuItemTreeKind;
}
export interface MetaMenuItemTreeKind extends MetaMenuItem {
treeAlias: string;
hideTreeRoot?: boolean;
}
declare global {
interface UmbExtensionManifestMap {
umbTreeMenuItemKind: ManifestMenuItemTreeKind;
}
}

View File

@@ -2,7 +2,8 @@ import { UMB_HELP_MENU_ALIAS } from '../menu/index.js';
import type { CSSResultGroup } 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 { umbExtensionsRegistry, type ManifestMenu } from '@umbraco-cms/backoffice/extension-registry';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
import type { ManifestMenu } from '@umbraco-cms/backoffice/menu';
import { UmbExtensionsManifestInitializer } from '@umbraco-cms/backoffice/extension-api';
const elementName = 'umb-help-header-app';