@@ -311,6 +311,38 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
311311 setFocusKey ( newKey ) ;
312312 } ;
313313
314+ const handleRemoveTab = ( removalTabKey : string , e : React . MouseEvent | React . KeyboardEvent ) => {
315+ const removeIndex = enabledTabs . indexOf ( removalTabKey ) ;
316+ const removeTab = tabs . find ( tab => tab . key === removalTabKey ) ;
317+ const removable = getRemovable (
318+ removeTab ?. closable ,
319+ removeTab ?. closeIcon ,
320+ editable ,
321+ removeTab ?. disabled ,
322+ ) ;
323+
324+ if ( removable ) {
325+ e . preventDefault ( ) ;
326+ e . stopPropagation ( ) ;
327+ editable . onEdit ( 'remove' , { key : removalTabKey , event : e } ) ;
328+
329+ // when remove last tab, focus previous tab
330+ if ( removeIndex === enabledTabs . length - 1 ) {
331+ onOffset ( - 1 ) ;
332+ } else {
333+ onOffset ( 1 ) ;
334+ }
335+ }
336+ } ;
337+
338+ const handleMouseDown = ( key : string , e : React . MouseEvent ) => {
339+ setIsMouse ( true ) ;
340+ // Middle mouse button
341+ if ( e . button === 1 ) {
342+ handleRemoveTab ( key , e ) ;
343+ }
344+ } ;
345+
314346 const handleKeyDown = ( e : React . KeyboardEvent ) => {
315347 const { code } = e ;
316348
@@ -377,25 +409,7 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
377409 // Backspace
378410 case 'Backspace' :
379411 case 'Delete' : {
380- const removeIndex = enabledTabs . indexOf ( focusKey ) ;
381- const removeTab = tabs . find ( tab => tab . key === focusKey ) ;
382- const removable = getRemovable (
383- removeTab ?. closable ,
384- removeTab ?. closeIcon ,
385- editable ,
386- removeTab ?. disabled ,
387- ) ;
388- if ( removable ) {
389- e . preventDefault ( ) ;
390- e . stopPropagation ( ) ;
391- editable . onEdit ( 'remove' , { key : focusKey , event : e } ) ;
392- // when remove last tab, focus previous tab
393- if ( removeIndex === enabledTabs . length - 1 ) {
394- onOffset ( - 1 ) ;
395- } else {
396- onOffset ( 1 ) ;
397- }
398- }
412+ handleRemoveTab ( focusKey , e ) ;
399413 break ;
400414 }
401415 }
@@ -449,9 +463,7 @@ const TabNavList = React.forwardRef<HTMLDivElement, TabNavListProps>((props, ref
449463 onBlur = { ( ) => {
450464 setFocusKey ( undefined ) ;
451465 } }
452- onMouseDown = { ( ) => {
453- setIsMouse ( true ) ;
454- } }
466+ onMouseDown = { e => handleMouseDown ( key , e ) }
455467 onMouseUp = { ( ) => {
456468 setIsMouse ( false ) ;
457469 } }
0 commit comments