Skip to content

Commit eaaff76

Browse files
vnbaaijdannyldj
authored andcommitted
[RadioGroup] Fix keyboard selection (microsoft#2663)
* [RadioGroup] Fix keyboard selection * Fix test
1 parent dc18b36 commit eaaff76

File tree

6 files changed

+31
-23
lines changed

6 files changed

+31
-23
lines changed

examples/Demo/Shared/Microsoft.FluentUI.AspNetCore.Components.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8047,7 +8047,7 @@
80478047
</member>
80488048
<member name="T:Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1">
80498049
<summary>
8050-
Groups child <see cref="T:Microsoft.FluentUI.AspNetCore.Components.FluentRadio`1"/> components.
8050+
Groups child <see cref="T:Microsoft.FluentUI.AspNetCore.Components.FluentRadio`1"/> components.
80518051
</summary>
80528052
</member>
80538053
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1.Orientation">
@@ -8057,7 +8057,7 @@
80578057
</member>
80588058
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1.ChildContent">
80598059
<summary>
8060-
Gets or sets the child content to be rendering inside the <see cref="T:Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1"/>.
8060+
Gets or sets the child content to be rendering inside the <see cref="T:Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1"/>.
80618061
</summary>
80628062
</member>
80638063
<member name="M:Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1.OnParametersSet">

src/Core.Assets/src/index.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,6 @@ export function afterServerStarted(blazor: any) {
109109

110110
export function afterStarted(blazor: Blazor, mode: string) {
111111

112-
blazor.registerCustomEventType('radiogroupclick', {
113-
browserEventName: 'click',
114-
createEventArgs: event => {
115-
if (event.target!._readOnly || event.target!._disabled) {
116-
return null;
117-
}
118-
return {
119-
value: event.target!.value
120-
};
121-
}
122-
});
123-
124112
blazor.registerCustomEventType('checkedchange', {
125113
browserEventName: 'change',
126114
createEventArgs: event => {
@@ -182,6 +170,19 @@ export function afterStarted(blazor: Blazor, mode: string) {
182170
return null;
183171
}
184172
});
173+
174+
blazor.registerCustomEventType('radiogroupchange', {
175+
browserEventName: 'change',
176+
createEventArgs: event => {
177+
if (event.target!.localName == 'fluent-radio-group') {
178+
return {
179+
value: event.target.value,
180+
}
181+
};
182+
return null;
183+
}
184+
});
185+
185186
blazor.registerCustomEventType('selectedchange', {
186187
browserEventName: 'selected-change',
187188
createEventArgs: event => {
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@namespace Microsoft.FluentUI.AspNetCore.Components
1+
@namespace Microsoft.FluentUI.AspNetCore.Components
22
@inherits FluentInputBase<TValue>
33
@typeparam TValue
44
<CascadingValue TValue="FluentRadioContext" Value="_context">
@@ -10,11 +10,10 @@
1010
readonly=@ReadOnly
1111
disabled=@Disabled
1212
name="@_context!.GroupName"
13-
value="@BindConverter.FormatValue(Value?.ToString())"
1413
orientation="@Orientation.ToAttributeValue()"
1514
required="@Required"
16-
@onradiogroupclick="@((e) => CurrentValueAsString = e?.Value?.ToString())"
15+
@onradiogroupchange="HandleChange"
1716
@attributes="AdditionalAttributes">
1817
@ChildContent
1918
</fluent-radio-group>
20-
</CascadingValue>
19+
</CascadingValue>

src/Core/Components/Radio/FluentRadioGroup.razor.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace Microsoft.FluentUI.AspNetCore.Components;
88

99
/// <summary>
10-
/// Groups child <see cref="FluentRadio{TValue}"/> components.
10+
/// Groups child <see cref="FluentRadio{TValue}"/> components.
1111
/// </summary>
1212

1313
[CascadingTypeParameter(nameof(TValue))]
@@ -28,7 +28,7 @@ public FluentRadioGroup()
2828
public Orientation? Orientation { get; set; }
2929

3030
/// <summary>
31-
/// Gets or sets the child content to be rendering inside the <see cref="FluentRadioGroup{TValue}"/>.
31+
/// Gets or sets the child content to be rendering inside the <see cref="FluentRadioGroup{TValue}"/>.
3232
/// </summary>
3333
[Parameter]
3434
public RenderFragment? ChildContent { get; set; }
@@ -62,4 +62,12 @@ protected override void OnParametersSet()
6262
/// <inheritdoc />
6363
protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage)
6464
=> this.TryParseSelectableValueFromString(value, out result, out validationErrorMessage);
65+
66+
private void HandleChange(ChangeEventArgs e)
67+
{
68+
if (CurrentValueAsString != e?.Value?.ToString())
69+
{
70+
CurrentValueAsString = e?.Value?.ToString();
71+
}
72+
}
6573
}

src/Core/Events/EventHandlers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace Microsoft.FluentUI.AspNetCore.Components;
44

55
[EventHandler("oncheckedchange", typeof(CheckboxChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
66
[EventHandler("onswitchcheckedchange", typeof(CheckboxChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
7-
[EventHandler("onradiogroupclick", typeof(ChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
7+
[EventHandler("onradiogroupchange", typeof(ChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
88
[EventHandler("onsliderchange", typeof(ChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
99
[EventHandler("ontabchange", typeof(TabChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
1010
[EventHandler("onselectedchange", typeof(TreeChangeEventArgs), enableStopPropagation: true, enablePreventDefault: true)]
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11

2-
<fluent-radio-group id="xxx" name="xxx" value="False" blazor:onradiogroupclick="1" blazor:elementreference="xxx">
2+
<fluent-radio-group id="xxx" name="xxx" blazor:onradiogroupclick="1" blazor:elementreference="xxx">
33
<b>render me</b>
4-
</fluent-radio-group>
4+
</fluent-radio-group>

0 commit comments

Comments
 (0)