From bbc47e6e110d35787007a4d4d06699924c8d182e Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Thu, 2 Dec 2021 15:05:50 -0600 Subject: [PATCH] Added select all to tableWrapper (#1283) Signed-off-by: Benjamin Perez Co-authored-by: Benjamin Perez --- .../Objects/ListObjects/ListObjects.tsx | 13 ++++++++- .../Common/TableWrapper/TableWrapper.tsx | 28 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index 3551e1190..b6c0f0ec6 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -972,7 +972,7 @@ const ListObjects = ({ const sortASC = plSelect.sort(sortListObjects(currentSortField)); - let payload = []; + let payload: BucketObject[] | RewindObject[] = []; if (sortDirection === "ASC") { payload = sortASC; @@ -980,6 +980,16 @@ const ListObjects = ({ payload = sortASC.reverse(); } + const selectAllItems = () => { + if(selectedObjects.length === payload.length) { + setSelectedObjects([]); + return; + } + + const elements = payload.map((item) => item.name); + setSelectedObjects(elements); + }; + return ( {shareFileModalOpen && selectedPreview && ( @@ -1210,6 +1220,7 @@ const ListObjects = ({ currentDirection: sortDirection, triggerSort: sortChange, }} + onSelectAll={selectAllItems} /> diff --git a/portal-ui/src/screens/Console/Common/TableWrapper/TableWrapper.tsx b/portal-ui/src/screens/Console/Common/TableWrapper/TableWrapper.tsx index 1974c889f..b5d67ef4e 100644 --- a/portal-ui/src/screens/Console/Common/TableWrapper/TableWrapper.tsx +++ b/portal-ui/src/screens/Console/Common/TableWrapper/TableWrapper.tsx @@ -33,12 +33,12 @@ import ViewColumnIcon from "@mui/icons-material/ViewColumn"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp"; import TableActionButton from "./TableActionButton"; +import CheckboxWrapper from "../FormComponents/CheckboxWrapper/CheckboxWrapper"; import history from "../../../../history"; import { checkboxIcons, radioIcons, } from "../FormComponents/common/styleLibrary"; -import CheckboxWrapper from "../FormComponents/CheckboxWrapper/CheckboxWrapper"; //Interfaces for table Items @@ -103,6 +103,7 @@ interface TableWrapperProps { infiniteScrollConfig?: IInfiniteScrollConfig; sortConfig?: ISortConfig; disabled?: boolean; + onSelectAll?: () => void; } const borderColor = "#9c9c9c80"; @@ -226,6 +227,9 @@ const styles = () => borderBottom: "#eaeaea 1px solid", width: "100%", }, + checkAllWrapper: { + marginTop: -16, + }, "@global": { ".rowLine": { borderBottom: `1px solid ${borderColor}`, @@ -522,6 +526,7 @@ const TableWrapper = ({ sortConfig, autoScrollToBottom = false, disabled = false, + onSelectAll, }: TableWrapperProps) => { const [columnSelectorOpen, setColumnSelectorOpen] = useState(false); const [anchorEl, setAnchorEl] = React.useState(null); @@ -704,7 +709,26 @@ const TableWrapper = ({ > {hasSelect && ( Select} + headerRenderer={() => ( + + {onSelectAll ? ( +
+ +
+ ) : ( + Select + )} +
+ )} dataKey={`select-${idField}`} width={selectWidth} disableSort