add warning box if the unpublish modal encounters tracked references

This commit is contained in:
Jacob Overgaard
2024-03-15 09:36:04 +01:00
parent 6173cfefd6
commit f33d0b120d

View File

@@ -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);
}
`,
];
}