add entity action list element

This commit is contained in:
Mads Rasmussen
2023-02-02 22:07:08 +01:00
parent 34d28e7d4f
commit f1bc8c73c3
3 changed files with 60 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
import { html } from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import { UmbLitElement } from '@umbraco-cms/element';
import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api';
import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models';
import { map } from 'rxjs';
@customElement('umb-entity-action-list')
class UmbEntityActionListElement extends UmbLitElement {
private _entityType = '';
@property({ type: String, attribute: 'entity-type' })
public get entityType() {
return this._entityType;
}
public set entityType(value) {
const oldValue = this._entityType;
this._entityType = value;
if (oldValue !== this._entityType) {
this.#observeEntityActions();
this.requestUpdate('entityType', oldValue);
}
}
@property({ type: String })
public unique?: string;
@state()
private _entityActions?: Array<ManifestEntityAction>;
#observeEntityActions() {
// TODO: filter on entity type
this.observe(
umbExtensionsRegistry.extensionsOfType('entityAction').pipe(
map((extensions) => {
return extensions.filter((extension) => extension.meta.entityType === this.entityType);
})
),
(actions) => {
this._entityActions = actions;
}
);
}
render() {
return html`
${this._entityActions?.map(
(manifest) => html`<umb-entity-action .unique=${this.unique} .manifest=${manifest}></umb-entity-action>`
)}
`;
}
}
declare global {
interface HTMLElementTagNameMap {
'umb-entity-action-list': UmbEntityActionListElement;
}
}

View File

@@ -15,3 +15,6 @@ import './section/section.element';
import './tree/tree.element';
import './workspace/workspace-content/workspace-content.element';
import './workspace/workspace-action-menu/workspace-action-menu.element';
import './entity-action/entity-action.element';
import './entity-action/entity-action-list.element';