@@ -315,6 +315,38 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
315
315
setFocusKey ( newKey ) ;
316
316
} ;
317
317
318
+ const handleRemoveTab = ( removalTabKey : string , e : React . MouseEvent | React . KeyboardEvent ) => {
319
+ const removeIndex = enabledTabs . indexOf ( removalTabKey ) ;
320
+ const removeTab = tabs . find ( tab => tab . key === removalTabKey ) ;
321
+ const removable = getRemovable (
322
+ removeTab ?. closable ,
323
+ removeTab ?. closeIcon ,
324
+ editable ,
325
+ removeTab ?. disabled ,
326
+ ) ;
327
+
328
+ if ( removable ) {
329
+ e . preventDefault ( ) ;
330
+ e . stopPropagation ( ) ;
331
+ editable . onEdit ( 'remove' , { key : removalTabKey , event : e } ) ;
332
+
333
+ // when remove last tab, focus previous tab
334
+ if ( removeIndex === enabledTabs . length - 1 ) {
335
+ onOffset ( - 1 ) ;
336
+ } else {
337
+ onOffset ( 1 ) ;
338
+ }
339
+ }
340
+ } ;
341
+
342
+ const handleMouseDown = ( key : string , e : React . MouseEvent ) => {
343
+ setIsMouse ( true ) ;
344
+ // Middle mouse button
345
+ if ( e . button === 1 ) {
346
+ handleRemoveTab ( key , e ) ;
347
+ }
348
+ } ;
349
+
318
350
const handleKeyDown = ( e : React . KeyboardEvent ) => {
319
351
const { code } = e ;
320
352
@@ -381,25 +413,7 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
381
413
// Backspace
382
414
case 'Backspace' :
383
415
case 'Delete' : {
384
- const removeIndex = enabledTabs . indexOf ( focusKey ) ;
385
- const removeTab = tabs . find ( tab => tab . key === focusKey ) ;
386
- const removable = getRemovable (
387
- removeTab ?. closable ,
388
- removeTab ?. closeIcon ,
389
- editable ,
390
- removeTab ?. disabled ,
391
- ) ;
392
- if ( removable ) {
393
- e . preventDefault ( ) ;
394
- e . stopPropagation ( ) ;
395
- editable . onEdit ( 'remove' , { key : focusKey , event : e } ) ;
396
- // when remove last tab, focus previous tab
397
- if ( removeIndex === enabledTabs . length - 1 ) {
398
- onOffset ( - 1 ) ;
399
- } else {
400
- onOffset ( 1 ) ;
401
- }
402
- }
416
+ handleRemoveTab ( focusKey , e ) ;
403
417
break ;
404
418
}
405
419
}
@@ -454,9 +468,7 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
454
468
onBlur = { ( ) => {
455
469
setFocusKey ( undefined ) ;
456
470
} }
457
- onMouseDown = { ( ) => {
458
- setIsMouse ( true ) ;
459
- } }
471
+ onMouseDown = { e => handleMouseDown ( key , e ) }
460
472
onMouseUp = { ( ) => {
461
473
setIsMouse ( false ) ;
462
474
} }
0 commit comments