add warning box if the unpublish modal encounters tracked references
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { UmbDocumentVariantState, type UmbDocumentVariantOptionModel } from '../../types.js';
|
||||
import { UmbDocumentTrackedReferenceRepository } from '../../tracked-reference/index.js';
|
||||
import type {
|
||||
UmbDocumentUnpublishModalData,
|
||||
UmbDocumentUnpublishModalValue,
|
||||
@@ -16,12 +17,17 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
|
||||
UmbDocumentUnpublishModalValue
|
||||
> {
|
||||
#selectionManager = new UmbSelectionManager<string>(this);
|
||||
#trackedReferencesRepository = new UmbDocumentTrackedReferenceRepository(this);
|
||||
|
||||
@state()
|
||||
_options: Array<UmbDocumentVariantOptionModel> = [];
|
||||
|
||||
@state()
|
||||
_hasTrackedReferences = false;
|
||||
|
||||
firstUpdated() {
|
||||
this.#configureSelectionManager();
|
||||
this.#getTrackedReferences();
|
||||
}
|
||||
|
||||
async #configureSelectionManager() {
|
||||
@@ -46,6 +52,25 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
|
||||
this.#selectionManager.setSelection(selected);
|
||||
}
|
||||
|
||||
async #getTrackedReferences() {
|
||||
if (!this.data?.documentUnique) return;
|
||||
|
||||
const { data, error } = await this.#trackedReferencesRepository.requestTrackedReference(
|
||||
this.data?.documentUnique,
|
||||
0,
|
||||
1,
|
||||
);
|
||||
|
||||
if (error) {
|
||||
console.error(error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data) return;
|
||||
|
||||
this._hasTrackedReferences = data.total > 0;
|
||||
}
|
||||
|
||||
#submit() {
|
||||
this.value = { selection: this.#selectionManager.getSelection() };
|
||||
this.modalContext?.submit();
|
||||
@@ -76,10 +101,18 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
|
||||
${this.data?.documentUnique
|
||||
? html`
|
||||
<umb-document-tracked-reference-table
|
||||
id="trackedReferences"
|
||||
id="tracked-references"
|
||||
unique=${this.data?.documentUnique}></umb-document-tracked-reference-table>
|
||||
`
|
||||
: nothing}
|
||||
${this._hasTrackedReferences
|
||||
? html`<uui-box id="tracked-references-warning">
|
||||
<umb-localize key="references_unpublishWarning">
|
||||
This item or its descendants is being referenced. Unpublishing can lead to broken links on your website.
|
||||
Please take the appropriate actions.
|
||||
</umb-localize>
|
||||
</uui-box>`
|
||||
: nothing}
|
||||
|
||||
<div slot="actions">
|
||||
<uui-button label=${this.localize.term('general_close')} @click=${this.#close}></uui-button>
|
||||
@@ -101,9 +134,15 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
|
||||
max-width: 90vw;
|
||||
}
|
||||
|
||||
#trackedReferences {
|
||||
#tracked-references {
|
||||
--uui-table-cell-padding: 0;
|
||||
}
|
||||
|
||||
#tracked-references-warning {
|
||||
margin-top: 1rem;
|
||||
background-color: var(--uui-color-danger);
|
||||
color: var(--uui-color-danger-contrast);
|
||||
}
|
||||
`,
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user