@@ -141,6 +141,8 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
141
141
}
142
142
} ) ;
143
143
144
+ const hasBuckets = records . length > 0 ;
145
+
144
146
const selectListBuckets = ( e : React . ChangeEvent < HTMLInputElement > ) => {
145
147
const targetD = e . target ;
146
148
const value = targetD . value ;
@@ -215,10 +217,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
215
217
setSelectedBuckets ( selectAllBuckets ) ;
216
218
} ;
217
219
218
- const canCreateBucket = hasPermission ( "*" , [
219
- IAM_SCOPES . S3_CREATE_BUCKET ,
220
- IAM_SCOPES . S3_STAR_BUCKET ,
221
- ] ) ;
220
+ const canCreateBucket = hasPermission ( "*" , [ IAM_SCOPES . S3_CREATE_BUCKET ] ) ;
222
221
const canListBuckets = hasPermission ( "*" , [ IAM_SCOPES . S3_LIST_BUCKET ] ) ;
223
222
224
223
return (
@@ -245,12 +244,14 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
245
244
< AutoColorIcon marginRight = { 15 } marginTop = { 10 } />
246
245
</ Grid >
247
246
) }
248
- < SearchBox
249
- onChange = { setFilterBuckets }
250
- placeholder = "Search Buckets"
251
- overrideClass = { classes . searchField }
252
- value = { filterBuckets }
253
- />
247
+ { hasBuckets && (
248
+ < SearchBox
249
+ onChange = { setFilterBuckets }
250
+ placeholder = "Search Buckets"
251
+ overrideClass = { classes . searchField }
252
+ value = { filterBuckets }
253
+ />
254
+ ) }
254
255
255
256
< Grid
256
257
item
@@ -268,7 +269,11 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
268
269
< Fragment >
269
270
< TooltipWrapper
270
271
tooltip = {
271
- bulkSelect ? "Unselect Buckets" : "Select Multiple Buckets"
272
+ ! hasBuckets
273
+ ? ""
274
+ : bulkSelect
275
+ ? "Unselect Buckets"
276
+ : "Select Multiple Buckets"
272
277
}
273
278
>
274
279
< Button
@@ -279,13 +284,16 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
279
284
} }
280
285
icon = { < SelectMultipleIcon /> }
281
286
variant = { bulkSelect ? "callAction" : "regular" }
287
+ disabled = { ! hasBuckets }
282
288
/>
283
289
</ TooltipWrapper >
284
290
285
291
{ bulkSelect && (
286
292
< TooltipWrapper
287
293
tooltip = {
288
- selectedBuckets . length === filteredRecords . length
294
+ ! hasBuckets
295
+ ? ""
296
+ : selectedBuckets . length === filteredRecords . length
289
297
? "Unselect All Buckets"
290
298
: "Select All Buckets"
291
299
}
@@ -301,16 +309,18 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
301
309
302
310
< TooltipWrapper
303
311
tooltip = {
304
- selectedBuckets . length === 0
305
- ? bulkSelect
306
- ? "Please select at least one bucket on which to configure Lifecycle"
307
- : "Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle"
308
- : canPutLifecycle
309
- ? "Set Lifecycle"
310
- : permissionTooltipHelper (
312
+ ! hasBuckets
313
+ ? ""
314
+ : ! canPutLifecycle
315
+ ? permissionTooltipHelper (
311
316
IAM_PERMISSIONS [ IAM_ROLES . BUCKET_LIFECYCLE ] ,
312
317
"configure lifecycle for the selected buckets"
313
318
)
319
+ : selectedBuckets . length === 0
320
+ ? bulkSelect
321
+ ? "Please select at least one bucket on which to configure Lifecycle"
322
+ : "Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle"
323
+ : "Set Lifecycle"
314
324
}
315
325
>
316
326
< Button
@@ -324,7 +334,17 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
324
334
/>
325
335
</ TooltipWrapper >
326
336
327
- < TooltipWrapper tooltip = { "Set Replication" } >
337
+ < TooltipWrapper
338
+ tooltip = {
339
+ ! hasBuckets
340
+ ? ""
341
+ : selectedBuckets . length === 0
342
+ ? bulkSelect
343
+ ? "Please select at least one bucket on which to configure Replication"
344
+ : "Use the Select Multiple Buckets button to choose buckets on which to configure Replication"
345
+ : "Set Replication"
346
+ }
347
+ >
328
348
< Button
329
349
id = { "set-replication" }
330
350
onClick = { ( ) => {
@@ -408,7 +428,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
408
428
</ Grid >
409
429
</ Grid >
410
430
) }
411
- { filteredRecords . length === 0 && filterBuckets === "" && (
431
+ { ! hasBuckets && (
412
432
< Grid
413
433
container
414
434
justifyContent = { "center" }
@@ -424,21 +444,23 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
424
444
MinIO uses buckets to organize objects. A bucket is
425
445
similar to a folder or directory in a filesystem, where
426
446
each bucket can hold an arbitrary number of objects.
427
- < br > </ br >
428
- < br > </ br >
429
- { canListBuckets
430
- ? ""
431
- : "In order to view the buckets on this server, you require " +
432
- IAM_SCOPES . S3_LIST_BUCKET +
433
- " permission. Please contact your MinIO administrator to establish this permission." }
447
+ < br />
448
+ { canListBuckets ? (
449
+ ""
450
+ ) : (
451
+ < Fragment >
452
+ < br />
453
+ { permissionTooltipHelper (
454
+ [ IAM_SCOPES . S3_LIST_BUCKET ] ,
455
+ "view the buckets on this server"
456
+ ) }
457
+ < br />
458
+ </ Fragment >
459
+ ) }
434
460
< SecureComponent
435
- scopes = { [
436
- IAM_SCOPES . S3_CREATE_BUCKET ,
437
- IAM_SCOPES . S3_STAR_BUCKET ,
438
- ] }
461
+ scopes = { [ IAM_SCOPES . S3_CREATE_BUCKET ] }
439
462
resource = { CONSOLE_UI_RESOURCE }
440
463
>
441
- < br />
442
464
< br />
443
465
To get started,
444
466
< AButton
0 commit comments