Skip to content

Commit

Permalink
fix: Table columns sorter a11y experience (ant-design#35269)
Browse files Browse the repository at this point in the history
* Make table sortable columns focusable and keyboard accessible.

* Fix typo.

* Change focus style for sortable table column header from broken outline to color text.

* Update snapshots.

* Change order to fix lint error.

* Add unit test to test sorting with keypress.

* Update components/table/hooks/useSorter.tsx

* chore: improve code style

* style: use focus-visible

* fix: test case

* test: update snapshot

Co-authored-by: Katsiaryna Pustakhod <Katsiaryna_Pustakhod@epam.com>
  • Loading branch information
afc163 and kpustakhod committed Apr 27, 2022
1 parent 45a1902 commit 5a6b3cc
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22867,6 +22867,7 @@ exports[`ConfigProvider components Table configProvider 1`] = `
<tr>
<th
class="config-table-cell config-table-column-has-sorters"
tabindex="0"
>
<div
class="config-table-filter-column"
Expand Down Expand Up @@ -23147,6 +23148,7 @@ exports[`ConfigProvider components Table configProvider componentSize large 1`]
<tr>
<th
class="config-table-cell config-table-column-has-sorters"
tabindex="0"
>
<div
class="config-table-filter-column"
Expand Down Expand Up @@ -23427,6 +23429,7 @@ exports[`ConfigProvider components Table configProvider componentSize middle 1`]
<tr>
<th
class="config-table-cell config-table-column-has-sorters"
tabindex="0"
>
<div
class="config-table-filter-column"
Expand Down Expand Up @@ -23707,6 +23710,7 @@ exports[`ConfigProvider components Table configProvider virtual and dropdownMatc
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -23987,6 +23991,7 @@ exports[`ConfigProvider components Table normal 1`] = `
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -24267,6 +24272,7 @@ exports[`ConfigProvider components Table prefixCls 1`] = `
<tr>
<th
class="prefix-Table-cell prefix-Table-column-has-sorters"
tabindex="0"
>
<div
class="prefix-Table-filter-column"
Expand Down
12 changes: 12 additions & 0 deletions components/table/__tests__/Table.sorter.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,18 @@ describe('Table.sorter', () => {
expect(getNameColumn().prop('aria-sort')).toEqual('descending');
});

it('sort records with keydown', () => {
const wrapper = mount(createTable());

// ascend
wrapper.find('.ant-table-column-sorters').simulate('keydown', { keyCode: 13 });
expect(renderedNames(wrapper)).toEqual(['Jack', 'Jerry', 'Lucy', 'Tom']);

// descend
wrapper.find('.ant-table-column-sorters').simulate('keydown', { keyCode: 13 });
expect(renderedNames(wrapper)).toEqual(['Tom', 'Lucy', 'Jack', 'Jerry']);
});

describe('can be controlled by sortOrder', () => {
it('single', () => {
const wrapper = mount(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ exports[`Table.sorter renders sorter icon correctly 1`] = `
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -98,6 +99,7 @@ exports[`Table.sorter should support defaultOrder in Column 1`] = `
<th
aria-sort="ascending"
class="ant-table-cell ant-table-column-sort ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down
16 changes: 16 additions & 0 deletions components/table/__tests__/__snapshots__/demo-extend.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ exports[`renders ./components/table/demo/ajax.md extend context correctly 1`] =
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -1516,6 +1517,7 @@ exports[`renders ./components/table/demo/custom-filter-panel.md extend context c
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -3205,6 +3207,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -3514,6 +3517,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -7454,6 +7458,7 @@ exports[`renders ./components/table/demo/filter-in-tree.md extend context correc
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -8273,6 +8278,7 @@ exports[`renders ./components/table/demo/filter-search.md extend context correct
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -12145,6 +12151,7 @@ exports[`renders ./components/table/demo/grouping-columns.md extend context corr
<th
class="ant-table-cell ant-table-column-has-sorters"
rowspan="3"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -13250,6 +13257,7 @@ exports[`renders ./components/table/demo/head.md extend context correctly 1`] =
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -13713,6 +13721,7 @@ exports[`renders ./components/table/demo/head.md extend context correctly 1`] =
<th
aria-sort="descending"
class="ant-table-cell ant-table-column-sort ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -14574,6 +14583,7 @@ exports[`renders ./components/table/demo/multiple-sorter.md extend context corre
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -14657,6 +14667,7 @@ exports[`renders ./components/table/demo/multiple-sorter.md extend context corre
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -14740,6 +14751,7 @@ exports[`renders ./components/table/demo/multiple-sorter.md extend context corre
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -17420,6 +17432,7 @@ Array [
<tr>
<th
class="ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -17724,6 +17737,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -17807,6 +17821,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -18347,6 +18362,7 @@ exports[`renders ./components/table/demo/resizable-column.md extend context corr
</th>
<th
class="ant-table-cell ant-table-column-has-sorters react-resizable"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down
16 changes: 16 additions & 0 deletions components/table/__tests__/__snapshots__/demo.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ exports[`renders ./components/table/demo/ajax.md correctly 1`] = `
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -1134,6 +1135,7 @@ exports[`renders ./components/table/demo/custom-filter-panel.md correctly 1`] =
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -2714,6 +2716,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -2811,6 +2814,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -5773,6 +5777,7 @@ exports[`renders ./components/table/demo/filter-in-tree.md correctly 1`] = `
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -6118,6 +6123,7 @@ exports[`renders ./components/table/demo/filter-search.md correctly 1`] = `
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -9316,6 +9322,7 @@ exports[`renders ./components/table/demo/grouping-columns.md correctly 1`] = `
<th
class="ant-table-cell ant-table-column-has-sorters"
rowspan="3"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -10281,6 +10288,7 @@ exports[`renders ./components/table/demo/head.md correctly 1`] = `
<tr>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -10355,6 +10363,7 @@ exports[`renders ./components/table/demo/head.md correctly 1`] = `
<th
aria-sort="descending"
class="ant-table-cell ant-table-column-sort ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -11004,6 +11013,7 @@ exports[`renders ./components/table/demo/multiple-sorter.md correctly 1`] = `
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -11063,6 +11073,7 @@ exports[`renders ./components/table/demo/multiple-sorter.md correctly 1`] = `
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -11122,6 +11133,7 @@ exports[`renders ./components/table/demo/multiple-sorter.md correctly 1`] = `
</th>
<th
class="ant-table-cell ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -13662,6 +13674,7 @@ Array [
<tr>
<th
class="ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -13754,6 +13767,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down Expand Up @@ -13813,6 +13827,7 @@ Array [
</th>
<th
class="ant-table-cell ant-table-cell-ellipsis ant-table-column-has-sorters"
tabindex="0"
>
<div
class="ant-table-filter-column"
Expand Down Expand Up @@ -14141,6 +14156,7 @@ exports[`renders ./components/table/demo/resizable-column.md correctly 1`] = `
</th>
<th
class="ant-table-cell ant-table-column-has-sorters react-resizable"
tabindex="0"
>
<div
class="ant-table-column-sorters"
Expand Down

0 comments on commit 5a6b3cc

Please sign in to comment.