add conditions to sidebar apps
This commit is contained in:
@@ -2,10 +2,10 @@ import type { ManifestElement } from './models';
|
||||
|
||||
export interface ManifestSectionSidebarApp extends ManifestElement {
|
||||
type: 'sectionSidebarApp';
|
||||
meta: MetaSectionSidebarApp;
|
||||
conditions: ConditionsSectionSidebarApp;
|
||||
}
|
||||
|
||||
export interface MetaSectionSidebarApp {
|
||||
export interface ConditionsSectionSidebarApp {
|
||||
sections: Array<string>;
|
||||
}
|
||||
|
||||
@@ -13,9 +13,10 @@ export interface MetaSectionSidebarApp {
|
||||
export interface ManifestMenuSectionSidebarApp extends ManifestElement {
|
||||
type: 'menuSectionSidebarApp';
|
||||
meta: MetaMenuSectionSidebarApp;
|
||||
conditions: ConditionsSectionSidebarApp;
|
||||
}
|
||||
|
||||
export interface MetaMenuSectionSidebarApp extends MetaSectionSidebarApp {
|
||||
export interface MetaMenuSectionSidebarApp {
|
||||
label: string;
|
||||
menu: string;
|
||||
}
|
||||
|
||||
@@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = {
|
||||
weight: 100,
|
||||
meta: {
|
||||
label: 'Content',
|
||||
sections: [sectionAlias],
|
||||
menu: 'Umb.Menu.Content',
|
||||
},
|
||||
conditions: {
|
||||
sections: [sectionAlias],
|
||||
},
|
||||
};
|
||||
|
||||
export const manifests = [section, menuSectionSidebarApp];
|
||||
|
||||
@@ -39,9 +39,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = {
|
||||
weight: 100,
|
||||
meta: {
|
||||
label: 'Media',
|
||||
sections: [sectionAlias],
|
||||
menu: 'Umb.Menu.Media',
|
||||
},
|
||||
conditions: {
|
||||
sections: [sectionAlias],
|
||||
},
|
||||
};
|
||||
|
||||
export const manifests = [section, menuSectionSidebarApp, ...dashboards];
|
||||
|
||||
@@ -37,9 +37,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = {
|
||||
weight: 100,
|
||||
meta: {
|
||||
label: 'Members',
|
||||
sections: [sectionAlias],
|
||||
menu: 'Umb.Menu.Members',
|
||||
},
|
||||
conditions: {
|
||||
sections: [sectionAlias],
|
||||
},
|
||||
};
|
||||
|
||||
export const manifests = [section, menuSectionSidebarApp, ...dashboards];
|
||||
|
||||
@@ -6,7 +6,7 @@ const entityActions: Array<ManifestSectionSidebarApp> = [
|
||||
alias: 'Umb.SectionSidebarItem.LanguageSelect',
|
||||
name: 'App Language Select Section Sidebar Item',
|
||||
loader: () => import('./app-language-select.element'),
|
||||
meta: {
|
||||
conditions: {
|
||||
sections: ['Umb.Section.Content'],
|
||||
},
|
||||
},
|
||||
|
||||
@@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = {
|
||||
weight: 100,
|
||||
meta: {
|
||||
label: 'Settings',
|
||||
sections: [sectionAlias],
|
||||
menu: 'Umb.Menu.Settings',
|
||||
},
|
||||
conditions: {
|
||||
sections: [sectionAlias],
|
||||
},
|
||||
};
|
||||
|
||||
export const manifests = [section, menuSectionSidebarApp];
|
||||
|
||||
@@ -16,7 +16,7 @@ export class UmbMenuElement extends UmbLitElement {
|
||||
render() {
|
||||
return html` <umb-extension-slot
|
||||
type="menuItem"
|
||||
.filter=${(items: ManifestMenuItem) => items.meta.menus.includes(this.manifest!.alias)}
|
||||
.filter=${(items: ManifestMenuItem) => items.conditions.menus.includes(this.manifest!.alias)}
|
||||
default-element="umb-menu-item"></umb-extension-slot>`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,9 @@ export class UmbSectionElement extends UmbLitElement {
|
||||
this.observe(
|
||||
umbExtensionsRegistry
|
||||
?.extensionsOfType('menuSectionSidebarApp')
|
||||
.pipe(map((manifests) => manifests.filter((manifest) => manifest.meta.sections.includes(sectionAlias)))),
|
||||
.pipe(
|
||||
map((manifests) => manifests.filter((manifest) => manifest.conditions.sections.includes(sectionAlias)))
|
||||
),
|
||||
(manifests) => {
|
||||
this._menus = manifests;
|
||||
}
|
||||
@@ -198,12 +200,12 @@ export class UmbSectionElement extends UmbLitElement {
|
||||
<umb-extension-slot
|
||||
type="sectionSidebarApp"
|
||||
.filter=${(items: ManifestMenuSectionSidebarApp) =>
|
||||
items.meta.sections.includes(this._sectionAlias || '')}></umb-extension-slot>
|
||||
items.conditions.sections.includes(this._sectionAlias || '')}></umb-extension-slot>
|
||||
|
||||
<umb-extension-slot
|
||||
type="menuSectionSidebarApp"
|
||||
.filter=${(items: ManifestMenuSectionSidebarApp) =>
|
||||
items.meta.sections.includes(this._sectionAlias || '')}
|
||||
items.conditions.sections.includes(this._sectionAlias || '')}
|
||||
default-element="umb-section-sidebar-menu"></umb-extension-slot>
|
||||
</umb-section-sidebar>
|
||||
`
|
||||
|
||||
@@ -16,9 +16,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = {
|
||||
weight: 100,
|
||||
meta: {
|
||||
label: 'Templating',
|
||||
sections: ['Umb.Section.Settings'],
|
||||
menu: 'Umb.Menu.Templating',
|
||||
},
|
||||
conditions: {
|
||||
sections: ['Umb.Section.Settings'],
|
||||
},
|
||||
};
|
||||
|
||||
export const manifests = [menu, menuSectionSidebarApp];
|
||||
|
||||
@@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = {
|
||||
weight: 100,
|
||||
meta: {
|
||||
label: 'Dictionary',
|
||||
sections: [sectionAlias],
|
||||
menu: 'Umb.Menu.Dictionary',
|
||||
},
|
||||
conditions: {
|
||||
sections: [sectionAlias],
|
||||
},
|
||||
};
|
||||
|
||||
const dashboards: Array<ManifestDashboard> = [
|
||||
|
||||
Reference in New Issue
Block a user