Skip to content

Commit 371fb88

Browse files
authored
fix(ui5-radiobutton): fix single selection within group (#355)
1 parent dcd64a9 commit 371fb88

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

packages/main/src/RadioButtonGroup.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,10 @@ class RadioButtonGroup {
154154
static enforceSingleSelection(radioBtn, groupName) {
155155
const selectedRadio = this.getSelectedRadioFromGroup(groupName);
156156

157-
if (!selectedRadio) {
158-
return;
159-
}
160-
161157
if (radioBtn.selected) {
162-
if (radioBtn !== selectedRadio) {
158+
if (!selectedRadio) {
159+
this.selectedRadios.set(groupName, radioBtn);
160+
} else if (radioBtn !== selectedRadio) {
163161
this._deselectRadio(selectedRadio);
164162
this.selectedRadios.set(groupName, radioBtn);
165163
}

packages/main/test/sap/ui/webcomponents/main/pages/RadioButton.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ <h1>ui5-radiobutton</h1>
5050
<ui5-title>Group of states</ui5-title>
5151
<ui5-label id="lblRadioGroup"></ui5-label>
5252
<ui5-label id="lblEventCounter"></ui5-label>
53-
<ui5-radiobutton id="groupRb7" text="None selected" value-state="None" selected name="GroupB"></ui5-radiobutton>
54-
<ui5-radiobutton id="groupRb8" text="Warning" value-state="Warning" name="GroupB"></ui5-radiobutton>
55-
<ui5-radiobutton id="groupRb9"text="Error" value-state="Error" name="GroupB"></ui5-radiobutton>
53+
<ui5-radiobutton id="groupRb7" text="None selected" value-state="None" name="GroupB"></ui5-radiobutton>
54+
<ui5-radiobutton id="groupRb8" text="Warning" value-state="Warning" selected name="GroupB"></ui5-radiobutton>
55+
<ui5-radiobutton id="groupRb9"text="Error" value-state="Error" selected name="GroupB"></ui5-radiobutton>
5656
<ui5-radiobutton id="groupRb10" text="Default selected" value-state="None" selected name="GroupB"></ui5-radiobutton>
5757
<ui5-radiobutton id="groupRb11" text="Other group selected" value-state="None" selected name="GroupBB"></ui5-radiobutton>
5858
</div>

packages/main/test/specs/RadioButton.spec.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,15 @@ describe("RadioButton general interaction", () => {
9292
});
9393

9494
it("tests single selection within group, even if multiple radios are set as selected", () => {
95-
// radio with property selected=true, but not selected
96-
const radioButtonNotSelected = browser.findElementDeep("#groupRb7 >>> .sapMRb");
95+
// radios with property selected=true, but not selected
96+
const radioButtonNotSelected1 = browser.findElementDeep("#groupRb8 >>> .sapMRb");
97+
const radioButtonNotSelected2 = browser.findElementDeep("#groupRb9 >>> .sapMRb");
9798

9899
// radio with property selected=true and actually selected as subsequent
99100
const radioButtonActuallySelected = browser.findElementDeep("#groupRb10 >>> .sapMRb");
100101

101-
assert.ok(!radioButtonNotSelected.hasClass("sapMRbSel"), "The radio is not selected as following one selected");
102+
assert.ok(!radioButtonNotSelected1.hasClass("sapMRbSel"), "The radio is not selected as the last one is selected");
103+
assert.ok(!radioButtonNotSelected2.hasClass("sapMRbSel"), "The radio is not selected as the last one is selected");
102104
assert.ok(radioButtonActuallySelected.hasClass("sapMRbSel"), 'The correct radio is selected');
103105
});
104106

0 commit comments

Comments
 (0)