Browse Source

Removed outdated spacer height update from removal process. (#11861)

* Removed outdated spacer height update from removal process.

Fixes #11856
tags/8.10.0.beta1
Anna Koskinen 4 years ago
parent
commit
376131e16b

+ 0
- 2
client/src/main/java/com/vaadin/client/widgets/Grid.java View File

@@ -3901,8 +3901,6 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,
setParent(detailsWidget, null);
spacerElement.removeAllChildren();
if (getHeightMode() == HeightMode.UNDEFINED) {
// update spacer height
escalator.getBody().setSpacer(spacer.getRow(), 0);
setHeightByRows(getEscalator().getBody().getRowCount());
}
}

+ 76
- 0
uitest/src/main/java/com/vaadin/tests/components/grid/GridDetailsAndUndefinedHeight.java View File

@@ -0,0 +1,76 @@
package com.vaadin.tests.components.grid;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import java.util.stream.IntStream;

import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.grid.HeightMode;
import com.vaadin.tests.components.AbstractReindeerTestUI;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.SelectionMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;

public class GridDetailsAndUndefinedHeight extends AbstractReindeerTestUI {

@Override
protected void setup(VaadinRequest request) {
ArrayList<Person> itemsCollection = new ArrayList<>();

final Grid<Person> grid = new Grid<Person>() {
@Override
public void setItems(Collection<Person> items) {
itemsCollection.clear();
itemsCollection.addAll(items);
super.setItems(items);
}
};
addComponent(grid);

grid.addColumn(Person::getFirstName);
grid.addColumn(Person::getLastName);
grid.addColumn(Person::getEmail);

grid.setItems(IntStream.range(0, 5).mapToObj(this::createPerson));

grid.setWidthFull();
grid.setHeightMode(HeightMode.UNDEFINED);

grid.setSelectionMode(SelectionMode.SINGLE);

grid.addSelectionListener(event -> {
itemsCollection
.forEach(item -> grid.setDetailsVisible(item, false));
final Set<Person> selections = event.getAllSelectedItems();
if (!selections.isEmpty()) {
Person selection = selections.iterator().next();
grid.setDetailsVisible(selection, true);
grid.scrollTo(itemsCollection.indexOf(selection));
}
});
grid.setDetailsGenerator(person -> new VerticalLayout(
new Label("Details " + itemsCollection.indexOf(person))));
}

private Person createPerson(int index) {
Person person = new Person();
person.setFirstName("cell " + index + " 0");
person.setLastName("cell " + index + " 1");
person.setEmail("cell " + index + " 2");
return person;
}

@Override
protected String getTestDescription() {
return "Second selection should successfully close "
+ "the details row from the first selection.";
}

@Override
protected Integer getTicketNumber() {
return 11856;
}
}

+ 39
- 0
uitest/src/test/java/com/vaadin/tests/components/grid/GridDetailsAndUndefinedHeightTest.java View File

@@ -0,0 +1,39 @@
package com.vaadin.tests.components.grid;

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Test;
import org.openqa.selenium.WebElement;

import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class GridDetailsAndUndefinedHeightTest extends MultiBrowserTest {

@Test
public void changingSelectionClosesOldDetails() {
openTestURL();
GridElement grid = $(GridElement.class).first();
grid.getCell(4, 0).click();
waitForElementPresent(By.className("v-grid-spacer"));

List<WebElement> spacers = grid
.findElements(By.className("v-grid-spacer"));
assertEquals("Unexpected amount of details rows", 1, spacers.size());
assertEquals("Unexpected details row contents", "Details 4",
spacers.get(0).findElement(By.className("v-label")).getText());

// change selection
grid.getCell(3, 0).click();

spacers = grid.findElements(By.className("v-grid-spacer"));
assertEquals("Unexpected amount of details rows", 1, spacers.size());
assertEquals("Unexpected details row contents", "Details 3",
spacers.get(0).findElement(By.className("v-label")).getText());

}

}

Loading…
Cancel
Save