From b4220a4d80ec93ab720bac729c8267df377b8d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 31 Oct 2025 10:52:10 +0100 Subject: [PATCH] Collection children: A slim navigation of collection children + higher take above target (#20641) * enforce update of children when collection * only load one above and below collection children * take 50 above a target for default experience * revert reset target * remove old impl --- .../core/tree/tree-item/tree-item-children.manager.ts | 8 +++++++- .../core/tree/tree-item/tree-item-expansion.manager.ts | 6 ------ .../tree/tree-item/document-tree-item.context.ts | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-children.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-children.manager.ts index 164abc3c07..381dadae9b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-children.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-children.manager.ts @@ -188,6 +188,12 @@ export class UmbTreeItemChildrenManager< * @memberof UmbTreeItemChildrenManager */ public async loadChildren(): Promise { + const target = this.targetPagination.getBaseTarget(); + /* If a new target is set we only want to reload children if the new target isn’t among the already loaded items. */ + if (target && this.isChildLoaded(target)) { + return; + } + return this.#loadChildren(); } @@ -244,7 +250,7 @@ export class UmbTreeItemChildrenManager< ? this.targetPagination.getNumberOfCurrentItemsBeforeBaseTarget() : this.#takeBeforeTarget !== undefined ? this.#takeBeforeTarget - : 5, + : this.targetPagination.getTakeSize(), takeAfter: reload ? this.targetPagination.getNumberOfCurrentItemsAfterBaseTarget() : this.#takeAfterTarget !== undefined diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-expansion.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-expansion.manager.ts index ce620ec08f..4c09f36325 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-expansion.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-item/tree-item-expansion.manager.ts @@ -94,12 +94,6 @@ export class UmbTreeItemTargetExpansionManager< return; } - /* If a new target is set we only want to reload children if the new target isn’t among the already loaded items. */ - const targetIsLoaded = this.#childrenManager.isChildLoaded(target); - if (target && targetIsLoaded) { - return; - } - // If we already have children and the target didn't change then we don't have to load new children const isNewTarget = target !== currentBaseTarget; if (isExpanded && this.#childrenManager.hasLoadedChildren() && !isNewTarget) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.context.ts index 29cbc3d63b..2c78868133 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.context.ts @@ -40,7 +40,7 @@ export class UmbDocumentTreeItemContext extends UmbDefaultTreeItemContext< this.hasCollection, (hasCollection) => { if (hasCollection) { - this._treeItemChildrenManager.setTargetTakeSize(2, 2); + this._treeItemChildrenManager.setTargetTakeSize(1, 1); this.observe( this.hasActiveDescendant,