From 674730fba2c85c1357c8c85b3a086335f77092e6 Mon Sep 17 00:00:00 2001 From: skrustev Date: Tue, 25 Aug 2026 19:27:29 +0300 Subject: [PATCH 1/2] fix: Fix Combo Change event ChangeType enum not being received. --- .../Blazor/ComboChangeEventArgsDetail.cs | 8 ++--- src/componentsBase/BaseRendererControl.cs | 2 +- tests/IgniteUI.Blazor.Tests/ComboTests.cs | 33 +++++++++++++++++++ 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/components/Blazor/ComboChangeEventArgsDetail.cs b/src/components/Blazor/ComboChangeEventArgsDetail.cs index db3335ea..86d498ed 100644 --- a/src/components/Blazor/ComboChangeEventArgsDetail.cs +++ b/src/components/Blazor/ComboChangeEventArgsDetail.cs @@ -141,7 +141,7 @@ internal override void SerializeCore(RendererSerializer ser) if (IsPropDirty("Items")) { ser.AddArrayProp("items", this._items); } if (IsPropDirty("ChangeType")) - { ser.AddEnumProp("changeType", this._changeType); } + { ser.AddEnumProp("type", this._changeType); } } @@ -155,7 +155,7 @@ protected internal override void ToEventJson(BaseRendererControl control, Dictio if (IsPropDirty("Items")) { args["items"] = ObjectArrayToParam(this._items); } if (IsPropDirty("ChangeType")) - { args["changeType"] = EnumToString(this._changeType); } + { args["type"] = EnumToString(this._changeType); } } @@ -169,8 +169,8 @@ protected internal override void FromEventJson(BaseRendererControl control, Dict { this.NewValue = ReturnToObjectArray(args["newValue"]); } if (args.ContainsKey("items")) { this.Items = ReturnToObjectArray(args["items"]); } - if (args.ContainsKey("changeType")) - { this.ChangeType = StringToEnum(args["changeType"]); } + if (args.ContainsKey("type")) + { this.ChangeType = StringToEnum(args["type"]); } this.SuppressParentNotify = false; } diff --git a/src/componentsBase/BaseRendererControl.cs b/src/componentsBase/BaseRendererControl.cs index 3a5f1988..f6bac19d 100644 --- a/src/componentsBase/BaseRendererControl.cs +++ b/src/componentsBase/BaseRendererControl.cs @@ -2655,7 +2655,7 @@ internal T StringToEnum(Object val) where T : struct } var str = val.ToString(); T ret; - if (Enum.TryParse(str, out ret)) + if (Enum.TryParse(str, true, out ret)) { return ret; } diff --git a/tests/IgniteUI.Blazor.Tests/ComboTests.cs b/tests/IgniteUI.Blazor.Tests/ComboTests.cs index 30528983..6a8763a0 100644 --- a/tests/IgniteUI.Blazor.Tests/ComboTests.cs +++ b/tests/IgniteUI.Blazor.Tests/ComboTests.cs @@ -282,6 +282,39 @@ public void Combo_CaseSensitiveIcon_Property() combo.CaseSensitiveIcon = true; Assert.True(combo.CaseSensitiveIcon); } + + [Fact] + public void Combo_Change_SelectionEvent_HasSelectionChangeType() + { + Interop.PrimeReady(); + IgbComboChangeEventArgs? received = null; + var cut = Render>(ps => ps + .Add(c => c.Data, new[] { _valueItem1, _valueItem2 }) + .Add(c => c.Change, (IgbComboChangeEventArgs args) => received = args)); + + var argsJson = ChangeDetail(UuidRef(Interop, cut, 0), UuidRef(Interop, cut, 0)); + Interop.RaiseEvent(Interop.ContainerIdOf(cut), "Change", argsJson); + + Assert.NotNull(received); + Assert.Equal(ComboChangeType.Selection, received.Detail.ChangeType); + } + + [Fact] + public void Combo_Change_DeselectionEvent_HasDeselectionChangeType() + { + Interop.PrimeReady(); + IgbComboChangeEventArgs? received = null; + var cut = Render>(ps => ps + .Add(c => c.Data, new[] { _valueItem1, _valueItem2 }) + .Add(c => c.Value, new[] { _valueItem1 }) + .Add(c => c.Change, (IgbComboChangeEventArgs args) => received = args)); + + var argsJson = ChangeDetail("", UuidRef(Interop, cut, 0), "deselection"); + Interop.RaiseEvent(Interop.ContainerIdOf(cut), "Change", argsJson); + + Assert.NotNull(received); + Assert.Equal(ComboChangeType.Deselection, received.Detail.ChangeType); + } } // TODO: Mismatched T=int inbound handling (T[])DowncastArray(Detail.NewValue) for From e3001fb40d598a37f2805baf8286eb727973f862 Mon Sep 17 00:00:00 2001 From: skrustev Date: Tue, 25 Aug 2026 19:47:02 +0300 Subject: [PATCH 2/2] fix: Revert ts changeType name for ts serialization. --- src/components/Blazor/ComboChangeEventArgsDetail.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Blazor/ComboChangeEventArgsDetail.cs b/src/components/Blazor/ComboChangeEventArgsDetail.cs index 86d498ed..9216f22a 100644 --- a/src/components/Blazor/ComboChangeEventArgsDetail.cs +++ b/src/components/Blazor/ComboChangeEventArgsDetail.cs @@ -141,7 +141,7 @@ internal override void SerializeCore(RendererSerializer ser) if (IsPropDirty("Items")) { ser.AddArrayProp("items", this._items); } if (IsPropDirty("ChangeType")) - { ser.AddEnumProp("type", this._changeType); } + { ser.AddEnumProp("changeType", this._changeType); } }