Skip to content

Commit bbc47e6

Browse files
bexsoftBenjamin Perez
andauthored
Added select all to tableWrapper (#1283)
Signed-off-by: Benjamin Perez <benjamin@bexsoft.net> Co-authored-by: Benjamin Perez <benjamin@bexsoft.net>
1 parent 4fb8c2f commit bbc47e6

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -972,14 +972,24 @@ const ListObjects = ({
972972

973973
const sortASC = plSelect.sort(sortListObjects(currentSortField));
974974

975-
let payload = [];
975+
let payload: BucketObject[] | RewindObject[] = [];
976976

977977
if (sortDirection === "ASC") {
978978
payload = sortASC;
979979
} else {
980980
payload = sortASC.reverse();
981981
}
982982

983+
const selectAllItems = () => {
984+
if(selectedObjects.length === payload.length) {
985+
setSelectedObjects([]);
986+
return;
987+
}
988+
989+
const elements = payload.map((item) => item.name);
990+
setSelectedObjects(elements);
991+
};
992+
983993
return (
984994
<React.Fragment>
985995
{shareFileModalOpen && selectedPreview && (
@@ -1210,6 +1220,7 @@ const ListObjects = ({
12101220
currentDirection: sortDirection,
12111221
triggerSort: sortChange,
12121222
}}
1223+
onSelectAll={selectAllItems}
12131224
/>
12141225
</SecureComponent>
12151226
</Grid>

portal-ui/src/screens/Console/Common/TableWrapper/TableWrapper.tsx

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ import ViewColumnIcon from "@mui/icons-material/ViewColumn";
3333
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
3434
import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp";
3535
import TableActionButton from "./TableActionButton";
36+
import CheckboxWrapper from "../FormComponents/CheckboxWrapper/CheckboxWrapper";
3637
import history from "../../../../history";
3738
import {
3839
checkboxIcons,
3940
radioIcons,
4041
} from "../FormComponents/common/styleLibrary";
41-
import CheckboxWrapper from "../FormComponents/CheckboxWrapper/CheckboxWrapper";
4242

4343
//Interfaces for table Items
4444

@@ -103,6 +103,7 @@ interface TableWrapperProps {
103103
infiniteScrollConfig?: IInfiniteScrollConfig;
104104
sortConfig?: ISortConfig;
105105
disabled?: boolean;
106+
onSelectAll?: () => void;
106107
}
107108

108109
const borderColor = "#9c9c9c80";
@@ -226,6 +227,9 @@ const styles = () =>
226227
borderBottom: "#eaeaea 1px solid",
227228
width: "100%",
228229
},
230+
checkAllWrapper: {
231+
marginTop: -16,
232+
},
229233
"@global": {
230234
".rowLine": {
231235
borderBottom: `1px solid ${borderColor}`,
@@ -522,6 +526,7 @@ const TableWrapper = ({
522526
sortConfig,
523527
autoScrollToBottom = false,
524528
disabled = false,
529+
onSelectAll,
525530
}: TableWrapperProps) => {
526531
const [columnSelectorOpen, setColumnSelectorOpen] = useState<boolean>(false);
527532
const [anchorEl, setAnchorEl] = React.useState<any>(null);
@@ -704,7 +709,26 @@ const TableWrapper = ({
704709
>
705710
{hasSelect && (
706711
<Column
707-
headerRenderer={() => <Fragment>Select</Fragment>}
712+
headerRenderer={() => (
713+
<Fragment>
714+
{onSelectAll ? (
715+
<div className={classes.checkAllWrapper}>
716+
<CheckboxWrapper
717+
label={""}
718+
onChange={onSelectAll}
719+
value="all"
720+
id={"selectAll"}
721+
name={"selectAll"}
722+
checked={
723+
selectedItems?.length === records.length
724+
}
725+
/>
726+
</div>
727+
) : (
728+
<Fragment>Select</Fragment>
729+
)}
730+
</Fragment>
731+
)}
708732
dataKey={`select-${idField}`}
709733
width={selectWidth}
710734
disableSort

0 commit comments

Comments
 (0)