From 3effeb7e314c5fd9ac4902a71dc44b18e97723b4 Mon Sep 17 00:00:00 2001 From: wrigh393 Date: Thu, 17 Dec 2020 15:04:13 -0500 Subject: [PATCH] Refactored sorting to its own component --- src/components/ItemTable/ItemTable.js | 60 ++++++++----------- .../ItemTableSortButtons.js | 31 ++++++++++ .../ItemTableSortButtons.md | 0 .../ItemTableSortButtons.js/index.js | 3 + 4 files changed, 60 insertions(+), 34 deletions(-) create mode 100644 src/components/ItemTableSortButtons.js/ItemTableSortButtons.js create mode 100644 src/components/ItemTableSortButtons.js/ItemTableSortButtons.md create mode 100644 src/components/ItemTableSortButtons.js/index.js diff --git a/src/components/ItemTable/ItemTable.js b/src/components/ItemTable/ItemTable.js index 65c6cf2..e547b78 100644 --- a/src/components/ItemTable/ItemTable.js +++ b/src/components/ItemTable/ItemTable.js @@ -1,17 +1,16 @@ import React, { useState } from "react"; import PropTypes from "prop-types"; import { useTable, useFilters, useFlexLayout, useSortBy } from "react-table"; -import { Table, TableBody, TableCell, TableHead, TableRow, TableContainer, Grid, ButtonGroup, IconButton, makeStyles, useTheme } from "@material-ui/core"; +import { Table, TableBody, TableCell, TableHead, TableRow, TableContainer, Grid, makeStyles, useTheme } from "@material-ui/core"; import { useHistory } from "react-router-dom"; import RelativeTime from "react-relative-time"; -import ItemTableFilter from "../ItemTableFilter/" -import { ArrowDownward, ArrowUpward } from "@material-ui/icons"; - +import ItemTableFilter from "../ItemTableFilter/"; +import ItemtTableSortButtons from "../ItemTableSortButtons.js"; export default function ItemTable({ data, rowCanBeSelected }) { - const [selectedRow, setSelectedRow] = useState({ queue: null, number: null}); + const [selectedRow, setSelectedRow] = useState({ queue: null, number: null }); - const theme = useTheme(); + const theme = useTheme(); const useStyles = makeStyles({ // Fully visible for active icons activeSortIcon: { @@ -74,7 +73,12 @@ export default function ItemTable({ data, rowCanBeSelected }) { return ( - +
{headerGroups.map(headerGroup => ( @@ -86,32 +90,20 @@ export default function ItemTable({ data, rowCanBeSelected }) { {column.render("Filter")} - - { - const isSortedAsc = column.isSorted && !column.isSortedDesc; - isSortedAsc ? column.clearSortBy() : column.toggleSortBy(false) - })} - > - - - { - const isSortedDesc = column.isSorted && column.isSortedDesc; - isSortedDesc ? column.clearSortBy() : column.toggleSortBy(true) - })} - > - - - + { + const isSortedAsc = column.isSorted && !column.isSortedDesc; + isSortedAsc ? column.clearSortBy() : column.toggleSortBy(false); + }} + onClickDesc={_ => { + const isSortedDesc = column.isSorted && column.isSortedDesc; + isSortedDesc ? column.clearSortBy() : column.toggleSortBy(true) + }} + colorAsc={column.isSorted && column.isSortedDesc === false ? "secondary" : "default"} + colorDesc={column.isSorted && column.isSortedDesc ? "secondary" : "default"} + columnSortAscProps={column.getSortByToggleProps()} + columnSortDescProps={column.getSortByToggleProps(column.isSortedDesc)} + /> @@ -136,7 +128,7 @@ export default function ItemTable({ data, rowCanBeSelected }) { classes={{ root: (isSelected && rowCanBeSelected) ? classes.rowSelected : classes.bandedRows }} {...row.getRowProps()} > {row.cells.map(cell => ( - diff --git a/src/components/ItemTableSortButtons.js/ItemTableSortButtons.js b/src/components/ItemTableSortButtons.js/ItemTableSortButtons.js new file mode 100644 index 0000000..f7c6cd8 --- /dev/null +++ b/src/components/ItemTableSortButtons.js/ItemTableSortButtons.js @@ -0,0 +1,31 @@ +import React from 'react'; +import PropTypes from "prop-types"; +import { ButtonGroup, IconButton } from "@material-ui/core"; +import { ArrowDownward, ArrowUpward } from "@material-ui/icons"; + +export default function ItemTableSortButtons({ onClickAsc, onClickDesc, colorAsc, colorDesc, columnSortAscProps, columnSortDescProps }) { + return ( + + + + + + + + + ) +} + + diff --git a/src/components/ItemTableSortButtons.js/ItemTableSortButtons.md b/src/components/ItemTableSortButtons.js/ItemTableSortButtons.md new file mode 100644 index 0000000..e69de29 diff --git a/src/components/ItemTableSortButtons.js/index.js b/src/components/ItemTableSortButtons.js/index.js new file mode 100644 index 0000000..390adb0 --- /dev/null +++ b/src/components/ItemTableSortButtons.js/index.js @@ -0,0 +1,3 @@ +import ItemtTableSortButtons from './ItemTableSortButtons' + +export default ItemtTableSortButtons; \ No newline at end of file