File tree Expand file tree Collapse file tree
web-app/src/screens/Console Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -287,13 +287,19 @@ const Account = () => {
287287 customEmptyMessage = { t ( "There are no Access Keys yet." ) }
288288 columns = { accountTableColumns ( t ) }
289289 onSelect = { ( e ) => selectSAs ( e , setSelectedSAs , selectedSAs ) }
290- onSelectAll = { ( ) =>
290+ onSelectAll = { ( ) => {
291+ // Toggle the visible rows only; selections hidden by the
292+ // current filter are preserved.
293+ const visible = filteredRecords . map ( ( r ) => `${ r . accessKey } ` ) ;
294+ const allVisible =
295+ visible . length > 0 &&
296+ visible . every ( ( v ) => selectedSAs . includes ( v ) ) ;
291297 setSelectedSAs (
292- selectedSAs . length === filteredRecords . length
293- ? [ ]
294- : filteredRecords . map ( ( r ) => ` ${ r . accessKey } ` ) ,
295- )
296- }
298+ allVisible
299+ ? selectedSAs . filter ( ( v ) => ! visible . includes ( v ) )
300+ : Array . from ( new Set ( [ ... selectedSAs , ... visible ] ) ) ,
301+ ) ;
302+ } }
297303 selectedItems = { selectedSAs }
298304 isLoading = { loading }
299305 records = { filteredRecords }
Original file line number Diff line number Diff line change @@ -222,13 +222,14 @@ const AddEvent = ({
222222 idField = { "value" }
223223 records = { events }
224224 onSelect = { handleClick }
225- onSelectAll = { ( ) =>
225+ onSelectAll = { ( ) => {
226+ const allSelected =
227+ events . length > 0 &&
228+ events . every ( ( ev ) => selectedEvents . includes ( ev . value ) ) ;
226229 setSelectedEvents (
227- selectedEvents . length === events . length
228- ? [ ]
229- : events . map ( ( ev ) => ev . value ) ,
230- )
231- }
230+ allSelected ? [ ] : events . map ( ( ev ) => ev . value ) ,
231+ ) ;
232+ } }
232233 selectedItems = { selectedEvents }
233234 noBackground
234235 customPaperHeight = { "260px" }
Original file line number Diff line number Diff line change @@ -325,13 +325,25 @@ const Groups = () => {
325325 }
326326 onSelectAll = {
327327 deleteGroup || getGroup
328- ? ( ) =>
328+ ? ( ) => {
329+ const allVisible =
330+ filteredRecords . length > 0 &&
331+ filteredRecords . every ( ( g ) =>
332+ checkedGroups . includes ( g ) ,
333+ ) ;
329334 setCheckedGroups (
330- checkedGroups . length ===
331- filteredRecords . length
332- ? [ ]
333- : [ ...filteredRecords ] ,
334- )
335+ allVisible
336+ ? checkedGroups . filter (
337+ ( g ) => ! filteredRecords . includes ( g ) ,
338+ )
339+ : Array . from (
340+ new Set ( [
341+ ...checkedGroups ,
342+ ...filteredRecords ,
343+ ] ) ,
344+ ) ,
345+ ) ;
346+ }
335347 : undefined
336348 }
337349 records = { filteredRecords }
Original file line number Diff line number Diff line change @@ -117,13 +117,17 @@ const UsersSelectors = ({
117117 < DataTable
118118 columns = { [ { label : t ( "Access Key" ) , elementKey : "accessKey" } ] }
119119 onSelect = { selectionChanged }
120- onSelectAll = { ( ) =>
120+ onSelectAll = { ( ) => {
121+ const visible = filteredRecords . map ( ( r ) => `${ r . accessKey } ` ) ;
122+ const allVisible =
123+ visible . length > 0 &&
124+ visible . every ( ( v ) => selUsers . includes ( v ) ) ;
121125 setSelectedUsers (
122- selUsers . length === filteredRecords . length
123- ? [ ]
124- : filteredRecords . map ( ( r ) => ` ${ r . accessKey } ` ) ,
125- )
126- }
126+ allVisible
127+ ? selUsers . filter ( ( v ) => ! visible . includes ( v ) )
128+ : Array . from ( new Set ( [ ... selUsers , ... visible ] ) ) ,
129+ ) ;
130+ } }
127131 selectedItems = { selUsers }
128132 isLoading = { loading }
129133 records = { filteredRecords }
Original file line number Diff line number Diff line change @@ -114,15 +114,19 @@ const PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {
114114 < DataTable
115115 columns = { [ { label : t ( "Policy" ) , elementKey : "name" } ] }
116116 onSelect = { selectionChanged }
117- onSelectAll = { ( ) =>
117+ onSelectAll = { ( ) => {
118+ const visible = filteredRecords . map ( ( r ) => `${ r . name } ` ) ;
119+ const allVisible =
120+ visible . length > 0 &&
121+ visible . every ( ( v ) => currentPolicies . includes ( v ) ) ;
118122 dispatch (
119123 setSelectedPolicies (
120- currentPolicies . length === filteredRecords . length
121- ? [ ]
122- : filteredRecords . map ( ( r ) => ` ${ r . name } ` ) ,
124+ allVisible
125+ ? currentPolicies . filter ( ( v ) => ! visible . includes ( v ) )
126+ : Array . from ( new Set ( [ ... currentPolicies , ... visible ] ) ) ,
123127 ) ,
124- )
125- }
128+ ) ;
129+ } }
126130 selectedItems = { currentPolicies }
127131 isLoading = { loading }
128132 records = { filteredRecords }
Original file line number Diff line number Diff line change @@ -350,14 +350,25 @@ const ListUsers = () => {
350350 }
351351 onSelectAll = {
352352 addUserToGroup || deleteUser
353- ? ( ) =>
353+ ? ( ) => {
354+ const visible = filteredRecords . map (
355+ ( r ) => `${ r . accessKey } ` ,
356+ ) ;
357+ const allVisible =
358+ visible . length > 0 &&
359+ visible . every ( ( v ) =>
360+ checkedUsers . includes ( v ) ,
361+ ) ;
354362 setCheckedUsers (
355- checkedUsers . length === filteredRecords . length
356- ? [ ]
357- : filteredRecords . map (
358- ( r ) => `${ r . accessKey } ` ,
363+ allVisible
364+ ? checkedUsers . filter (
365+ ( v ) => ! visible . includes ( v ) ,
366+ )
367+ : Array . from (
368+ new Set ( [ ...checkedUsers , ...visible ] ) ,
359369 ) ,
360- )
370+ ) ;
371+ }
361372 : undefined
362373 }
363374 selectedItems = { checkedUsers }
Original file line number Diff line number Diff line change @@ -256,13 +256,16 @@ const UserServiceAccountsPanel = ({
256256 customEmptyMessage = { t ( "There are no Access Keys yet." ) }
257257 columns = { accountTableColumns ( t ) }
258258 onSelect = { ( e ) => selectSAs ( e , setSelectedSAs , selectedSAs ) }
259- onSelectAll = { ( ) =>
259+ onSelectAll = { ( ) => {
260+ const visible = records . map ( ( r ) => `${ r . accessKey } ` ) ;
261+ const allVisible =
262+ visible . length > 0 && visible . every ( ( v ) => selectedSAs . includes ( v ) ) ;
260263 setSelectedSAs (
261- selectedSAs . length === records . length
262- ? [ ]
263- : records . map ( ( r ) => ` ${ r . accessKey } ` ) ,
264- )
265- }
264+ allVisible
265+ ? selectedSAs . filter ( ( v ) => ! visible . includes ( v ) )
266+ : Array . from ( new Set ( [ ... selectedSAs , ... visible ] ) ) ,
267+ ) ;
268+ } }
266269 selectedItems = { selectedSAs }
267270 isLoading = { loading }
268271 records = { records }
You can’t perform that action at this time.
0 commit comments