From 8da770c3d71e6b60fb977fad46c4ebded4644618 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 4 Sep 2026 07:11:28 -0700 Subject: [PATCH] Fix: enure emit parent tag when re-added --- .../common/input/tags/tags.component.spec.ts | 15 +++++++++++++++ .../common/input/tags/tags.component.ts | 1 + 2 files changed, 16 insertions(+) diff --git a/src-ui/src/app/components/common/input/tags/tags.component.spec.ts b/src-ui/src/app/components/common/input/tags/tags.component.spec.ts index 054a79394..b252cecb1 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.spec.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.spec.ts @@ -207,6 +207,21 @@ describe('TagsComponent', () => { expect(component.value).toEqual([2, 1]) }) + it('should propagate parents added via ng-select selection', () => { + const parent: Tag = { id: 1, name: 'parent' } + const child: Tag = { id: 2, name: 'child', parent: 1 } + component.tags = [parent, child] + fixture.detectChanges() + let propagated: number[] + component.registerOnChange((value: number[]) => (propagated = value)) + + component.value = [] + component.select.select(component.select.itemsList.findItem(child.id)) + + expect(component.value).toEqual([2, 1]) + expect(propagated).toEqual([2, 1]) + }) + it('should not duplicate parents when adding sibling nested tags', () => { const root: Tag = { id: 1, name: 'root' } const parent: Tag = { id: 2, name: 'parent', parent: 1 } diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index c0672eaea..20a489841 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -173,6 +173,7 @@ export class TagsComponent implements OnInit, ControlValueAccessor { if (parent && !this.value.includes(parent.id)) { this.value = [...this.value, parent.id] this.onAdd(parent) + this.onChange(this.value) // re-emit for ng-select } } }