소스 검색

Add aria-sort to Grid (#10007)

This adds basic support for aria-sort for Grid (https://www.w3.org/TR/wai-aria-1.1/#aria-sort).

- aria-sort is not added, if the column is not sortable
- aria-sort="none" is added, if the column is sortable but currently not sorted
- aria-sort="ascending" is added, if the column is sorted by asc
- aria-sort="descending" is added, if the column is sorted by desc
- aria-sort="other" is added, if more than 1 column is sorted, currently there is no aria-sort-order
tags/8.2.0.alpha2
Knoobie 6 년 전
부모
커밋
4c2963ac4e

+ 6
- 2
client/src/main/java/com/vaadin/client/widgets/Grid.java 파일 보기

@@ -5998,6 +5998,7 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,

if (sortable) {
cellElement.addClassName("sortable");
cellElement.setAttribute("aria-sort", "none");
}

if (!sortable || sortingOrder == null) {
@@ -6007,16 +6008,18 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,

if (SortDirection.ASCENDING == sortingOrder.getDirection()) {
cellElement.addClassName("sort-asc");
cellElement.setAttribute("aria-sort", "ascending");
} else {
cellElement.addClassName("sort-desc");
cellElement.setAttribute("aria-sort", "descending");
}

int sortIndex = Grid.this.getSortOrder().indexOf(sortingOrder);
if (sortIndex > -1 && Grid.this.getSortOrder().size() > 1) {
// Show sort order indicator if column is
// sorted and other sorted columns also exists.
cellElement.setAttribute("sort-order",
String.valueOf(sortIndex + 1));
cellElement.setAttribute("sort-order", String.valueOf(sortIndex + 1));
cellElement.setAttribute("aria-sort", "other");
}

if (!sortedBefore) {
@@ -6058,6 +6061,7 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,
private void cleanup(FlyweightCell cell) {
Element cellElement = cell.getElement();
cellElement.removeAttribute("sort-order");
cellElement.removeAttribute("aria-sort");
cellElement.removeClassName("sort-desc");
cellElement.removeClassName("sort-asc");
cellElement.removeClassName("sortable");

+ 8
- 0
uitest/src/test/java/com/vaadin/tests/components/grid/GridSortIndicatorTest.java 파일 보기

@@ -35,18 +35,26 @@ public class GridSortIndicatorTest extends SingleBrowserTest {
Assert.assertTrue("First column should be sorted ascending",
grid.getHeaderCell(0, 0).getAttribute("class")
.contains("sort-asc"));
Assert.assertEquals("First column should have aria-sort other", "other",
grid.getHeaderCell(0, 0).getAttribute("aria-sort"));
Assert.assertEquals("First column should be first in sort order", "1",
grid.getHeaderCell(0, 0).getAttribute("sort-order"));
Assert.assertTrue("Second column should be sorted ascending",
grid.getHeaderCell(0, 1).getAttribute("class")
.contains("sort-asc"));
Assert.assertEquals("Second column should have aria-sort other", "other",
grid.getHeaderCell(0, 1).getAttribute("aria-sort"));
Assert.assertEquals("Second column should be also sorted", "2",
grid.getHeaderCell(0, 1).getAttribute("sort-order"));

$(ButtonElement.class).caption("Sort first").first().click();
Assert.assertEquals("First column should have aria-sort ascending", "ascending",
grid.getHeaderCell(0, 0).getAttribute("aria-sort"));
Assert.assertTrue("First column should be sorted ascending",
grid.getHeaderCell(0, 0).getAttribute("class")
.contains("sort-asc"));
Assert.assertEquals("Second column should have aria-sort none", "none",
grid.getHeaderCell(0, 1).getAttribute("aria-sort"));
Assert.assertFalse("Second column should not be sorted",
grid.getHeaderCell(0, 1).getAttribute("class")
.contains("sort-asc"));

Loading…
취소
저장