diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice-main.element.ts index 8dcbc9c0b6..5730dfcf74 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice-main.element.ts @@ -12,6 +12,7 @@ import { UmbExtensionManifest, UmbManifestSectionMeta } from '../core/extension' // TODO: lazy load these. How to we handle dynamic import of our typescript file? import '../content/content-section.element'; import '../media/media-section.element'; +import '../settings/settings-section.element'; @defineElement('umb-backoffice-main') export class UmbBackofficeMain extends UmbContextConsumerMixin(LitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/settings/settings-section.element.ts b/src/Umbraco.Web.UI.Client/src/settings/settings-section.element.ts new file mode 100644 index 0000000000..66fec54866 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/settings/settings-section.element.ts @@ -0,0 +1,55 @@ +import { html, LitElement } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { Subscription } from 'rxjs'; +import { UmbContextConsumerMixin } from '../core/context'; +import { UmbExtensionManifest, UmbExtensionRegistry } from '../core/extension'; + +@customElement('umb-settings-section') +export class UmbSettingsSection extends UmbContextConsumerMixin(LitElement) { + @state() + private _extensions: Array> = []; + + private _extensionRegistry?: UmbExtensionRegistry; + private _extensionsSubscription?: Subscription; + + constructor () { + super(); + + this.consumeContext('umbExtensionRegistry', (_instance: UmbExtensionRegistry) => { + this._extensionRegistry = _instance; + + this._extensionsSubscription?.unsubscribe(); + + this._extensionsSubscription = this._extensionRegistry.extensions.subscribe(extensions => { + this._extensions = [...extensions]; + }); + }); + } + + disconnectedCallback(): void { + super.disconnectedCallback(); + this._extensionsSubscription?.unsubscribe(); + } + + render() { + return html` + + + + Type + Name + Alias + + + ${ this._extensions.map(extension => html` + + ${ extension.type } + ${ extension.name } + ${ extension.alias } + + `)} + + + ` + } +} \ No newline at end of file