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 }); }