diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts index b82d830ac4..e4e8a75b15 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts @@ -1,5 +1,6 @@ import { UmbDocumentVariantState, type UmbDocumentVariantOptionModel } from '../../types.js'; import { UmbDocumentTrackedReferenceRepository } from '../../tracked-reference/index.js'; +import { UMB_DOCUMENT_CONFIGURATION_CONTEXT } from '../../global-contexts/index.js'; import type { UmbDocumentUnpublishModalData, UmbDocumentUnpublishModalValue, @@ -25,6 +26,9 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement< @state() _hasTrackedReferences = false; + @state() + _hasUnpublishPermission = true; + firstUpdated() { this.#configureSelectionManager(); this.#getTrackedReferences(); @@ -69,11 +73,23 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement< if (!data) return; this._hasTrackedReferences = data.total > 0; + + // If there are tracked references, we also want to check if we are allowed to unpublish the document: + if (this._hasTrackedReferences) { + const documentConfigurationContext = await this.getContext(UMB_DOCUMENT_CONFIGURATION_CONTEXT); + this._hasUnpublishPermission = + (await documentConfigurationContext.getDocumentConfiguration())?.disableUnpublishWhenReferenced === false ?? + true; + } } #submit() { - this.value = { selection: this.#selectionManager.getSelection() }; - this.modalContext?.submit(); + if (this._hasUnpublishPermission) { + this.value = { selection: this.#selectionManager.getSelection() }; + this.modalContext?.submit(); + return; + } + this.modalContext?.reject(); } #close() { @@ -118,6 +134,7 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<