Parcourir la source

Fix an issue with frozen column count and unhiding. (#11929) (#11932)

* Fix an issue with frozen column count and unhiding.

Unhiding logic should take into account that there can be hidden frozen
columns that are not the column currently getting shown.
tags/8.10.3^0
Anna Koskinen il y a 4 ans
Parent
révision
d58be4ef41
Aucun compte lié à l'adresse e-mail de l'auteur

+ 3
- 1
client/src/main/java/com/vaadin/client/widgets/Grid.java Voir le fichier

@@ -5336,7 +5336,9 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,
int escalatorFrozenColumns = grid.escalator
.getColumnConfiguration().getFrozenColumnCount();
if (gridFrozenColumns > escalatorFrozenColumns
&& escalatorFrozenColumns == columnIndex) {
&& escalatorFrozenColumns == columnIndex
&& grid.getColumns()
.indexOf(this) < gridFrozenColumns) {
grid.escalator.getColumnConfiguration()
.setFrozenColumnCount(++escalatorFrozenColumns);
}

+ 40
- 0
uitest/src/main/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozen.java Voir le fichier

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

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Component;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Label;

public class GridUnhideColumnsWithFrozen extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
Grid<Integer> grid = new Grid<>();
for (int i = 0; i < 15; i++) {
String columnId = String.valueOf(i);
Grid.Column<Integer, Component> column = addColumn(grid, columnId);
column.setHidable(true);
if (i == 3 || i == 4) {
column.setHidden(true);
}
column.setCaption(columnId);
column.setId(columnId);
}
grid.setFrozenColumnCount(4);
grid.setItems(0);
addComponent(grid);
}

private Grid.Column<Integer, Component> addColumn(Grid<Integer> grid,
String columnId) {
return grid.addComponentColumn(i -> new Label(columnId));
}

@Override
protected String getTestDescription() {
return "Columns 0-3 have been set frozen, unhiding column 4 before column 3"
+ " should not make column 4 frozen.";
}

}

+ 38
- 0
uitest/src/test/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozenTest.java Voir le fichier

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

import static org.junit.Assert.assertEquals;

import java.util.List;

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

import com.vaadin.testbench.elements.GridElement;
import com.vaadin.tests.tb3.SingleBrowserTest;

public class GridUnhideColumnsWithFrozenTest extends SingleBrowserTest {

@Test
public void visibleFrozenColumnCount() {
openTestURL();

GridElement grid = $(GridElement.class).first();
List<WebElement> frozen = grid.getHeader()
.findElements(By.className("frozen"));
assertEquals("Unexpected frozen column count before unhiding", 3,
frozen.size());

grid.findElement(By.className("v-grid-sidebar-button")).click();
List<WebElement> hidden = findElement(
By.className("v-grid-sidebar-content"))
.findElements(By.className("hidden"));
assertEquals("Unexpected amount of hidden columns", 2, hidden.size());
assertEquals("Unexpected hidden column", "4", hidden.get(1).getText());
hidden.get(1).click();

frozen = grid.getHeader().findElements(By.className("frozen"));
assertEquals("Unexpected frozen column count after unhiding", 3,
frozen.size());
}
}

Chargement…
Annuler
Enregistrer