15768: fixed selectAll-after-sort bug Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa...
authorLisa Knox <lisaknox83@gmail.com>
Tue, 9 May 2023 16:15:48 +0000 (12:15 -0400)
committerLisa Knox <lisaknox83@gmail.com>
Tue, 9 May 2023 16:15:48 +0000 (12:15 -0400)
src/components/data-table/data-table.tsx

index 7f0e93ca632090d2a1fb7d356bbd70e43db43d77..66242de56bfeafb3e2de689075eb285463895e4a 100644 (file)
@@ -147,9 +147,11 @@ export const DataTable = withStyles(styles)(
             const { checkedList } = this.state;
             if (!arraysAreCongruent(prevProps.items, items)) {
                 this.state.isSelected = false;
+                toggleMSToolbar(false);
                 this.initializeCheckedList(items);
             }
             if (prevState.checkedList !== checkedList) {
+                console.log(this.isAnySelected());
                 toggleMSToolbar(this.isAnySelected() ? true : false);
                 window.localStorage.setItem('selectedRows', JSON.stringify(checkedList));
             }
@@ -179,6 +181,7 @@ export const DataTable = withStyles(styles)(
         ];
 
         initializeCheckedList = (uuids: any[]): void => {
+            console.log('INIT LIIST');
             const { checkedList } = this.state;
             uuids.forEach((uuid) => {
                 if (!checkedList.hasOwnProperty(uuid)) {
@@ -202,6 +205,7 @@ export const DataTable = withStyles(styles)(
 
         isAnySelected = (): boolean => {
             const { checkedList } = this.state;
+            if (!Object.keys(checkedList).length) return false;
             for (const key in checkedList) {
                 if (checkedList[key] === true) return true;
             }
@@ -222,11 +226,13 @@ export const DataTable = withStyles(styles)(
 
         handleSelectAll = (): void => {
             const { checkedList } = this.state;
-            const newCheckedList = { ...checkedList };
-            for (const key in newCheckedList) {
-                newCheckedList[key] = true;
+            if (Object.keys(checkedList).length) {
+                const newCheckedList = { ...checkedList };
+                for (const key in newCheckedList) {
+                    newCheckedList[key] = true;
+                }
+                this.setState({ isSelected: true, checkedList: newCheckedList });
             }
-            this.setState({ isSelected: true, checkedList: newCheckedList });
         };
 
         handleSelectNone = (): void => {
@@ -240,11 +246,13 @@ export const DataTable = withStyles(styles)(
 
         handleInvertSelect = (): void => {
             const { checkedList } = this.state;
-            const newCheckedList = { ...checkedList };
-            for (const key in newCheckedList) {
-                newCheckedList[key] = !checkedList[key];
+            if (Object.keys(checkedList).length) {
+                const newCheckedList = { ...checkedList };
+                for (const key in newCheckedList) {
+                    newCheckedList[key] = !checkedList[key];
+                }
+                this.setState({ checkedList: newCheckedList, isSelected: this.isAllSelected(newCheckedList) });
             }
-            this.setState({ checkedList: newCheckedList, isSelected: this.isAllSelected(newCheckedList) });
         };
 
         render() {