From ee555b6676096b299bc96d49ce7ceda759ddf776 Mon Sep 17 00:00:00 2001 From: Josh Black Date: Tue, 13 Nov 2018 09:28:48 -0600 Subject: [PATCH] fix(DataTable): update sort order to go ASC -> DESC -> NONE (#1535) * fix(DataTable): update sort order to go ASC -> DESC -> NONE * fix(data-table): update Rort -> Sort Co-Authored-By: joshblack * fix(data-table): update Rort -> Sort Co-Authored-By: joshblack * feat(data-table): add aria-sort property to TableHeader --- src/components/DataTable/TableHeader.js | 26 ++++++--- .../DataTable/__tests__/DataTable-test.js | 6 +-- .../__snapshots__/DataTable-test.js.snap | 54 ++++++++++--------- .../getDerivedStateFromProps-test.js | 2 +- .../DataTable/state/__tests__/sorting-test.js | 28 +++++----- src/components/DataTable/state/sorting.js | 10 ++-- .../DataTable/tools/__tests__/sorting-test.js | 8 +-- src/components/DataTable/tools/sorting.js | 4 +- 8 files changed, 79 insertions(+), 59 deletions(-) diff --git a/src/components/DataTable/TableHeader.js b/src/components/DataTable/TableHeader.js index 1511239503c0..36a33ec976c7 100644 --- a/src/components/DataTable/TableHeader.js +++ b/src/components/DataTable/TableHeader.js @@ -12,16 +12,29 @@ const translationKeys = { const translateWithId = (key, { sortDirection, isSortHeader, sortStates }) => { if (key === translationKeys.iconDescription) { if (isSortHeader) { - const order = - sortDirection === sortStates.DESC ? 'descending' : 'ascending'; - return `Sort rows by this header in ${order} order`; + // When transitioning, we know that the sequence of states is as follows: + // NONE -> ASC -> DESC -> NONE + if (sortDirection === sortStates.NONE) { + return 'Sort rows by this header in ascending order'; + } + if (sortDirection === sortStates.ASC) { + return 'Sort rows by this header in descending order'; + } + + return 'Unsort rows by this header'; } - return `Sort rows by this header in descending order`; + return 'Sort rows by this header in ascending order'; } return ''; }; +const sortDirections = { + [sortStates.NONE]: 'none', + [sortStates.ASC]: 'ascending', + [sortStates.DESC]: 'descending', +}; + const TableHeader = ({ className: headerClassName, children, @@ -46,11 +59,12 @@ const TableHeader = ({ 'bx--table-sort-v2--active': isSortHeader && sortDirection !== sortStates.NONE, 'bx--table-sort-v2--ascending': - isSortHeader && sortDirection === sortStates.ASC, + isSortHeader && sortDirection === sortStates.DESC, }); + const ariaSort = !isSortHeader ? 'none' : sortDirections[sortDirection]; return ( - +