@@ -315,6 +315,38 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
315315 setFocusKey ( newKey ) ;
316316 } ;
317317
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+
318350 const handleKeyDown = ( e : React . KeyboardEvent ) => {
319351 const { code } = e ;
320352
@@ -381,25 +413,7 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
381413 // Backspace
382414 case 'Backspace' :
383415 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 ) ;
403417 break ;
404418 }
405419 }
@@ -454,9 +468,7 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
454468 onBlur = { ( ) => {
455469 setFocusKey ( undefined ) ;
456470 } }
457- onMouseDown = { ( ) => {
458- setIsMouse ( true ) ;
459- } }
471+ onMouseDown = { e => handleMouseDown ( key , e ) }
460472 onMouseUp = { ( ) => {
461473 setIsMouse ( false ) ;
462474 } }
0 commit comments