diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-action/workspace-action.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-action/workspace-action.element.ts index b8c54fd857..6820fb9b66 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-action/workspace-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-action/workspace-action.element.ts @@ -1,7 +1,7 @@ import { UmbWorkspaceAction } from './index.js'; -import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, property, state, query } from '@umbraco-cms/backoffice/external/lit'; import { UUITextStyles } from '@umbraco-cms/backoffice/external/uui'; -import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; +import type { UUIButtonElement, UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { ManifestWorkspaceAction } from '@umbraco-cms/backoffice/extension-registry'; @@ -34,19 +34,28 @@ export class UmbWorkspaceActionElement extends UmbLitElement { #api?: UmbWorkspaceAction; private async _onClick() { - if (!this.#api) return; - await this.#api.execute(); + this._buttonState = 'waiting'; + + try { + if (!this.#api) throw new Error('No api defined'); + await this.#api.execute(); + this._buttonState = 'success'; + } catch (error) { + this._buttonState = 'failed'; + } + this.dispatchEvent(new UmbExecutedEvent()); } render() { return html` + .state=${this._buttonState}> `; }