Skip to content

Commit 8172d0e

Browse files
fix: remove child radios/checkboxes individually (#2598) (#2600)
Co-authored-by: Tomi Virkki <tomivirkki@users.noreply.github.com>
1 parent 67e9842 commit 8172d0e

6 files changed

Lines changed: 34 additions & 2 deletions

File tree

vaadin-checkbox-flow-parent/vaadin-checkbox-flow-integration-tests/src/main/java/com/vaadin/flow/component/checkbox/tests/RefreshDataProviderPage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class RefreshDataProviderPage extends Div {
3030

3131
public RefreshDataProviderPage() {
3232
CheckboxGroup<String> group = new CheckboxGroup<>();
33+
group.setLabel("Label");
3334
group.setId("group");
3435

3536
List<String> items = new LinkedList<>(Arrays.asList("foo", "bar"));

vaadin-checkbox-flow-parent/vaadin-checkbox-flow-integration-tests/src/test/java/com/vaadin/flow/component/checkbox/tests/RefreshDataProviderPageIT.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,16 @@ public void resetComponentOnDataProviderRefresh() {
4040
Assert.assertEquals("bar", radioButtons.get(0).getText());
4141
Assert.assertEquals("baz", radioButtons.get(1).getText());
4242
}
43+
44+
@Test
45+
public void resetComponentExpectLabel() {
46+
open();
47+
48+
findElement(By.id("reset")).click();
49+
50+
TestBenchElement group = $(TestBenchElement.class).id("group");
51+
String label = group.findElement(By.cssSelector("label[slot='label']"))
52+
.getText();
53+
Assert.assertEquals("Label", label);
54+
}
4355
}

vaadin-checkbox-flow-parent/vaadin-checkbox-flow/src/main/java/com/vaadin/flow/component/checkbox/CheckboxGroup.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,9 @@ private void reset() {
459459
// Cache helper component before removal
460460
Component helperComponent = getHelperComponent();
461461
keyMapper.removeAll();
462-
removeAll();
462+
// Remove all known children (doesn't remove client-side-only children
463+
// such as the label)
464+
getChildren().forEach(this::remove);
463465
clear();
464466

465467
// reinsert helper component

vaadin-radio-button-flow-parent/vaadin-radio-button-flow-integration-tests/src/main/java/com/vaadin/flow/component/radiobutton/tests/RefreshItemsPage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class RefreshItemsPage extends Div {
2929

3030
public RefreshItemsPage() {
3131
RadioButtonGroup<String> group = new RadioButtonGroup<>();
32+
group.setLabel("Label");
3233
group.setId("group");
3334

3435
List<String> items = new LinkedList<>(Arrays.asList("foo", "bar"));

vaadin-radio-button-flow-parent/vaadin-radio-button-flow-integration-tests/src/test/java/com/vaadin/flow/component/radiobutton/tests/RefreshItemsPageIT.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.openqa.selenium.By;
2323

2424
import com.vaadin.tests.AbstractComponentIT;
25+
import com.vaadin.flow.component.radiobutton.testbench.RadioButtonGroupElement;
2526
import com.vaadin.flow.testutil.TestPath;
2627
import com.vaadin.testbench.TestBenchElement;
2728

@@ -40,4 +41,17 @@ public void resetComponentOnItemRefresh() {
4041
Assert.assertEquals("bar", radioButtons.get(0).getText());
4142
Assert.assertEquals("baz", radioButtons.get(1).getText());
4243
}
44+
45+
@Test
46+
public void resetComponentExpectLabel() {
47+
open();
48+
49+
findElement(By.id("reset")).click();
50+
51+
RadioButtonGroupElement group = $(RadioButtonGroupElement.class)
52+
.id("group");
53+
String label = group.findElement(By.cssSelector("label[slot='label']"))
54+
.getText();
55+
Assert.assertEquals("Label", label);
56+
}
4357
}

vaadin-radio-button-flow-parent/vaadin-radio-button-flow/src/main/java/com/vaadin/flow/component/radiobutton/RadioButtonGroup.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,9 @@ private void reset() {
421421
// Cache helper component before removal
422422
Component helperComponent = getHelperComponent();
423423
keyMapper.removeAll();
424-
removeAll();
424+
// Remove all known children (doesn't remove client-side-only children
425+
// such as the label)
426+
getChildren().forEach(this::remove);
425427
clear();
426428

427429
// reinsert helper component

0 commit comments

Comments
 (0)