From cf5afb14d26e40fdec3372df77002de41ae1e186 Mon Sep 17 00:00:00 2001
From: JesmoDev <26099018+JesmoDev@users.noreply.github.com>
Date: Thu, 2 May 2024 13:21:28 +0200
Subject: [PATCH] entity actions
---
...le-entity-actions-column-layout.element.ts | 34 +++++++++++++++++++
...hook-table-remove-column-layout.element.ts | 19 -----------
.../webhook-table-collection-view.element.ts | 11 +++---
.../webhook/entity-actions/manifests.ts | 18 ++++++++++
.../src/packages/webhook/entity.ts | 1 +
.../src/packages/webhook/manifests.ts | 2 ++
.../webhook/webhook-workspace.context.ts | 9 ++---
7 files changed, 62 insertions(+), 32 deletions(-)
create mode 100644 src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/entity-actions/webhook-table-entity-actions-column-layout.element.ts
delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/remove/webhook-table-remove-column-layout.element.ts
create mode 100644 src/Umbraco.Web.UI.Client/src/packages/webhook/entity-actions/manifests.ts
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/entity-actions/webhook-table-entity-actions-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/entity-actions/webhook-table-entity-actions-column-layout.element.ts
new file mode 100644
index 0000000000..1ab33caa56
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/entity-actions/webhook-table-entity-actions-column-layout.element.ts
@@ -0,0 +1,34 @@
+import type { UmbWebhookDetailModel } from '../../../../../types.js';
+import { html, nothing, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
+import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
+
+@customElement('umb-webhook-table-entity-actions-column-layout')
+export class UmbWebhookTableEntityActionsColumnLayoutElement extends UmbLitElement {
+ @property({ attribute: false })
+ value!: UmbWebhookDetailModel;
+
+ @state()
+ _isOpen = false;
+
+ #onActionExecuted() {
+ this._isOpen = false;
+ }
+
+ render() {
+ return html`
+
+
+
+
+ `;
+ }
+}
+
+declare global {
+ interface HTMLElementTagNameMap {
+ 'umb-webhook-table-entity-actions-column-layout': UmbWebhookTableEntityActionsColumnLayoutElement;
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/remove/webhook-table-remove-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/remove/webhook-table-remove-column-layout.element.ts
deleted file mode 100644
index 7e9095a5ca..0000000000
--- a/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/column-layouts/remove/webhook-table-remove-column-layout.element.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { UmbWebhookDetailModel } from '../../../../../types.js';
-import { html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
-import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
-
-@customElement('umb-webhook-table-remove-column-layout')
-export class UmbWebhookTableRemoveColumnLayoutElement extends UmbLitElement {
- @property()
- value = '';
-
- render() {
- return html` `;
- }
-}
-
-declare global {
- interface HTMLElementTagNameMap {
- 'umb-webhook-table-remove-column-layout': UmbWebhookTableRemoveColumnLayoutElement;
- }
-}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/webhook-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/webhook-table-collection-view.element.ts
index a3eb723f5d..6445b032cd 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/webhook-table-collection-view.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/collection/views/table/webhook-table-collection-view.element.ts
@@ -8,7 +8,7 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import './column-layouts/boolean/webhook-table-boolean-column-layout.element.js';
import './column-layouts/name/webhook-table-name-column-layout.element.js';
-import './column-layouts/remove/webhook-table-remove-column-layout.element.js';
+import './column-layouts/entity-actions/webhook-table-entity-actions-column-layout.element.js';
@customElement('umb-webhook-table-collection-view')
export class UmbWebhookTableCollectionViewElement extends UmbLitElement {
@@ -43,8 +43,8 @@ export class UmbWebhookTableCollectionViewElement extends UmbLitElement {
},
{
name: '',
- alias: 'remove',
- elementName: 'umb-webhook-table-remove-column-layout',
+ alias: 'entityActions',
+ elementName: 'umb-webhook-table-entity-actions-column-layout',
},
];
@@ -68,7 +68,6 @@ export class UmbWebhookTableCollectionViewElement extends UmbLitElement {
}
#createTableItems(webhooks: Array) {
- console.log(webhooks);
this._tableItems = webhooks.map((webhook, index) => {
return {
id: webhook.unique,
@@ -96,8 +95,8 @@ export class UmbWebhookTableCollectionViewElement extends UmbLitElement {
value: webhook.contentTypes,
},
{
- columnAlias: 'remove',
- value: webhook.unique,
+ columnAlias: 'entityActions',
+ value: webhook,
},
],
};
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/entity-actions/manifests.ts
new file mode 100644
index 0000000000..a1aca59471
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/entity-actions/manifests.ts
@@ -0,0 +1,18 @@
+import { UMB_WEBHOOK_DETAIL_REPOSITORY_ALIAS } from '../repository/index.js';
+import { UMB_WEBHOOK_ENTITY_TYPE } from '../entity.js';
+import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
+
+const entityActions: Array = [
+ {
+ type: 'entityAction',
+ kind: 'delete',
+ alias: 'Umb.EntityAction.Webhook.Delete',
+ name: 'Delete Webhook Entity Action',
+ forEntityTypes: [UMB_WEBHOOK_ENTITY_TYPE],
+ meta: {
+ detailRepositoryAlias: UMB_WEBHOOK_DETAIL_REPOSITORY_ALIAS,
+ },
+ },
+];
+
+export const manifests: Array = [...entityActions];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/entity.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/entity.ts
index f78d477122..353554d2eb 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/webhook/entity.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/entity.ts
@@ -1,4 +1,5 @@
export const UMB_WEBHOOK_ENTITY_TYPE = 'webhook';
export const UMB_WEBHOOK_WORKSPACE = 'Umb.Workspace.Webhook';
+export const UMB_WEBHOOK_ROOT_ENTITY_TYPE = 'webhook-root';
export type UmbWebhookEntityType = typeof UMB_WEBHOOK_ENTITY_TYPE;
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/manifests.ts
index cb3308c08e..45be0c12a1 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/webhook/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/manifests.ts
@@ -2,6 +2,7 @@ import { manifests as treeManifests } from './menu-item/manifests.js';
import { manifests as workspaceManifests } from './workspace/manifests.js';
import { manifests as collectionManifests } from './collection/manifests.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
+import { manifests as entityActions } from './entity-actions/manifests.js';
import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
export const manifests: Array = [
@@ -9,6 +10,7 @@ export const manifests: Array = [
...workspaceManifests,
...collectionManifests,
...repositoryManifests,
+ ...entityActions,
{
type: 'modal',
alias: 'Umb.Modal.Webhook.Events',
diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook/webhook-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook/webhook-workspace.context.ts
index e4e00ccec1..032b4835f4 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook/webhook-workspace.context.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook/webhook-workspace.context.ts
@@ -1,4 +1,4 @@
-import type { UmbWebhookDetailModel } from '../../types.js';
+import type { UmbWebhookDetailModel, UmbWebhookEventModel } from '../../types.js';
import { UmbWebhookDetailRepository } from '../../repository/index.js';
import { UmbWebhookWorkspaceEditorElement } from './webhook-workspace-editor.element.js';
import {
@@ -21,7 +21,6 @@ export class UmbWebhookWorkspaceContext
readonly data = this.#data.asObservable();
readonly unique = this.#data.asObservablePart((data) => data?.unique);
- readonly name = this.#data.asObservablePart((data) => data?.name);
readonly routes = new UmbWorkspaceRouteManager(this);
@@ -88,11 +87,7 @@ export class UmbWebhookWorkspaceContext
return this.#data.getValue()?.unique;
}
- setName(name: string) {
- this.#data.update({ name });
- }
-
- setEvents(events: string[]) {
+ setEvents(events: Array) {
this.#data.update({ events });
}