quick extensions overview

This commit is contained in:
Mads Rasmussen
2022-05-25 17:07:15 +02:00
parent 27dcf78c96
commit a4dff35652
2 changed files with 56 additions and 0 deletions

View File

@@ -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) {

View File

@@ -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<UmbExtensionManifest<any>> = [];
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`
<uui-box headline="Extensions">
<uui-table>
<uui-table-head>
<uui-table-head-cell>Type</uui-table-head-cell>
<uui-table-head-cell>Name</uui-table-head-cell>
<uui-table-head-cell>Alias</uui-table-head-cell>
</uui-table-head>
${ this._extensions.map(extension => html`
<uui-table-row>
<uui-table-cell>${ extension.type }</uui-table-cell>
<uui-table-cell>${ extension.name }</uui-table-cell>
<uui-table-cell>${ extension.alias }</uui-table-cell>
</uui-table-row>
`)}
</uui-table>
</uui-box>
`
}
}