From 0c3e9fb83218752bb358d3d32d8880c885f5b02a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 30 Sep 2025 14:47:26 +0200 Subject: [PATCH] 16.3 Hotfix: remove status entry when removing item (#20316) * Add removeStatus method to repository manager Introduces a removeStatus method to UmbRepositoryItemsManager, allowing removal of a status by its unique identifier. * Remove item status on picker input removal Calls removeStatus on the item manager when an item is removed from the picker input selection to ensure its status is updated accordingly. --- .../src/packages/core/picker-input/picker-input.context.ts | 1 + .../src/packages/core/repository/repository-items.manager.ts | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts index c345fd22d4..de943aa88a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker-input/picker-input.context.ts @@ -133,6 +133,7 @@ export class UmbPickerInputContext< #removeItem(unique: string) { const newSelection = this.getSelection().filter((value) => value !== unique); this.setSelection(newSelection); + this.#itemManager.removeStatus(unique); this.getHostElement().dispatchEvent(new UmbChangeEvent()); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/repository/repository-items.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/repository/repository-items.manager.ts index 6e3121f680..cf227b3cf2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/repository/repository-items.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/repository/repository-items.manager.ts @@ -124,6 +124,11 @@ export class UmbRepositoryItemsManager exte return this.#items.asObservablePart((items) => items.find((item) => this.#getUnique(item) === unique)); } + removeStatus(unique: string) { + const newStatuses = this.#statuses.getValue().filter((status) => status.unique !== unique); + this.#statuses.setValue(newStatuses); + } + async getItemByUnique(unique: string) { // TODO: Make an observeOnce feature, to avoid this amount of code: [NL] const ctrl = this.observe(this.itemByUnique(unique), () => {}, null);