add entity action list element
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user