From daf2e18cd2aa19a103a5a12800b93ffe0ebf4f43 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Jan 2025 15:55:43 +0100 Subject: [PATCH] get unique from context --- ...-references-workspace-view-info.element.ts | 48 ++++++++++++++----- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/info-app/document-references-workspace-view-info.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/info-app/document-references-workspace-view-info.element.ts index 0928d889d3..682d54114c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/info-app/document-references-workspace-view-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/reference/info-app/document-references-workspace-view-info.element.ts @@ -1,5 +1,5 @@ import { UmbDocumentReferenceRepository } from '../repository/index.js'; -import { css, customElement, html, nothing, property, repeat, state, when } from '@umbraco-cms/backoffice/external/lit'; +import { css, customElement, html, nothing, repeat, state, when } from '@umbraco-cms/backoffice/external/lit'; import { isDefaultReference, isDocumentReference, isMediaReference } from '@umbraco-cms/backoffice/relations'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -7,16 +7,11 @@ import { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/rou import { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/workspace'; import type { UmbReferenceModel } from '@umbraco-cms/backoffice/relations'; import type { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui'; +import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../../constants.js'; +import type { UmbEntityUnique } from '@umbraco-cms/backoffice/entity'; @customElement('umb-document-references-workspace-info-app') export class UmbDocumentReferencesWorkspaceInfoAppElement extends UmbLitElement { - #itemsPerPage = 10; - - #referenceRepository = new UmbDocumentReferenceRepository(this); - - @property() - documentUnique = ''; - @state() private _editDocumentPath = ''; @@ -29,6 +24,11 @@ export class UmbDocumentReferencesWorkspaceInfoAppElement extends UmbLitElement @state() private _items?: Array = []; + #itemsPerPage = 10; + #referenceRepository = new UmbDocumentReferenceRepository(this); + #documentUnique?: UmbEntityUnique; + #workspaceContext?: typeof UMB_DOCUMENT_WORKSPACE_CONTEXT.TYPE; + constructor() { super(); @@ -40,15 +40,41 @@ export class UmbDocumentReferencesWorkspaceInfoAppElement extends UmbLitElement .observeRouteBuilder((routeBuilder) => { this._editDocumentPath = routeBuilder({}); }); + + this.consumeContext(UMB_DOCUMENT_WORKSPACE_CONTEXT, (context) => { + this.#workspaceContext = context; + this.#observeDocumentUnique(); + }); } - protected override firstUpdated(): void { - this.#getReferences(); + #observeDocumentUnique() { + this.observe( + this.#workspaceContext?.unique, + (unique) => { + if (!unique) { + this.#documentUnique = undefined; + this._items = []; + return; + } + + if (this.#documentUnique === unique) { + return; + } + + this.#documentUnique = unique; + this.#getReferences(); + }, + 'umbReferencesDocumentUniqueObserver', + ); } async #getReferences() { + if (!this.#documentUnique) { + throw new Error('Document unique is required'); + } + const { data } = await this.#referenceRepository.requestReferencedBy( - this.documentUnique, + this.#documentUnique, (this._currentPage - 1) * this.#itemsPerPage, this.#itemsPerPage, );